|
@@ -4,7 +4,13 @@ from django.conf.urls import url
|
|
|
from django.conf import settings
|
|
|
from tastypie.resources import Resource
|
|
|
from tastypie.utils import trailing_slash
|
|
|
-from api.utils.docker_api import get_all_images, get_all_containers, start_container, stop_container
|
|
|
+from api.utils.docker_api import (
|
|
|
+ get_all_images,
|
|
|
+ get_all_containers,
|
|
|
+ start_container,
|
|
|
+ restart_container,
|
|
|
+ stop_container
|
|
|
+)
|
|
|
|
|
|
'''
|
|
|
'''
|
|
@@ -19,6 +25,7 @@ class DockerResource(Resource):
|
|
|
url(r'^(?P<resource_name>%s)/image/all%s$' % (self._meta.resource_name, trailing_slash), self.wrap_view('get_all_images'), name='api_get_all_images'),
|
|
|
url(r'^(?P<resource_name>%s)/container/all%s$' % (self._meta.resource_name, trailing_slash), self.wrap_view('get_all_containers'), name='api_get_all_containers'),
|
|
|
url(r'^(?P<resource_name>%s)/container/(?P<container_id>)/start%s$' % (self._meta.resource_name, trailing_slash), self.wrap_view('start_container'), name='api_start_container'),
|
|
|
+ url(r'^(?P<resource_name>%s)/container/(?P<container_id>)/restart%s$' % (self._meta.resource_name, trailing_slash), self.wrap_view('restart_container'), name='api_restart_container'),
|
|
|
url(r'^(?P<resource_name>%s)/container/(?P<container_id>)/stop%s$' % (self._meta.resource_name, trailing_slash), self.wrap_view('stop_container'), name='api_stop_container'),
|
|
|
]
|
|
|
|
|
@@ -40,11 +47,9 @@ class DockerResource(Resource):
|
|
|
self.method_check(request, allowed=self._meta.allowed_methods)
|
|
|
self.is_authenticated(request)
|
|
|
|
|
|
- bundle = self.build_bundle(obj={
|
|
|
+ return self.create_response(request, {
|
|
|
'containers': get_all_containers()
|
|
|
- }, request=request)
|
|
|
-
|
|
|
- return self.create_response(request, bundle.obj)
|
|
|
+ })
|
|
|
|
|
|
'''
|
|
|
'''
|
|
@@ -54,13 +59,45 @@ class DockerResource(Resource):
|
|
|
|
|
|
container_id = kwargs.get('container_id', None)
|
|
|
|
|
|
+ if not container_id:
|
|
|
+ return self.create_response(request, {
|
|
|
+ 'error_message': 'container id is required'
|
|
|
+ }, request=request)
|
|
|
+
|
|
|
+ completed = start_container(container_id)
|
|
|
+
|
|
|
+ if not completed:
|
|
|
+ return self.create_response(request, {
|
|
|
+ 'error_message': 'cannot start container %s' % container_id
|
|
|
+ })
|
|
|
+
|
|
|
+ return self.create_response(request, {
|
|
|
+ 'message': 'container %s started' % container_id
|
|
|
+ })
|
|
|
+
|
|
|
+ '''
|
|
|
+ '''
|
|
|
+ def restart_container(self, request, **kwargs):
|
|
|
+ self.method_check(request, allowed=self._meta.allowed_methods)
|
|
|
+ self.is_authenticated(request)
|
|
|
+
|
|
|
+ container_id = kwargs.get('container_id', None)
|
|
|
+
|
|
|
if not container_id:
|
|
|
return self.create_response({
|
|
|
'error_message': 'container id is required'
|
|
|
}, request=request)
|
|
|
|
|
|
- bundle = self.build_bundle(obj={}, request=request)
|
|
|
- return self.create_response(request, bundle.obj)
|
|
|
+ completed = restart_container(container_id)
|
|
|
+
|
|
|
+ if not completed:
|
|
|
+ return self.create_response({
|
|
|
+ 'error_message': 'cannot restart container %s' % container_id
|
|
|
+ })
|
|
|
+
|
|
|
+ return self.create_response(request, {
|
|
|
+ 'message': 'container %s is restarted'
|
|
|
+ })
|
|
|
|
|
|
'''
|
|
|
'''
|
|
@@ -74,6 +111,14 @@ class DockerResource(Resource):
|
|
|
return self.create_response({
|
|
|
'error_message': 'container id is required'
|
|
|
})
|
|
|
+
|
|
|
+ completed = stop_container(container_id)
|
|
|
+
|
|
|
+ if not completed:
|
|
|
+ return self.create_response({
|
|
|
+ 'error_message': 'cannot stop container %s' % container_id
|
|
|
+ })
|
|
|
|
|
|
- bundle = self.build_bundle(obj={}, request=request)
|
|
|
- return self.create_response(request, bundle.obj)
|
|
|
+ return self.create_response(request, {
|
|
|
+ 'message': 'container %s is stoped' % container_id
|
|
|
+ })
|