|
@@ -0,0 +1,73 @@
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+from __future__ import unicode_literals
|
|
|
+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
|
|
|
+
|
|
|
+'''
|
|
|
+'''
|
|
|
+class DockerResource(Resource):
|
|
|
+ class Meta:
|
|
|
+ allowed_methods = ['get']
|
|
|
+
|
|
|
+ '''
|
|
|
+ '''
|
|
|
+ def prepend_urls(self):
|
|
|
+ return [
|
|
|
+ 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>)/stop%s$' % (self._meta.resource_name, trailing_slash), self.wrap_view('stop_container'), name='api_stop_container'),
|
|
|
+ ]
|
|
|
+
|
|
|
+ '''
|
|
|
+ '''
|
|
|
+ def get_all_images(self, request, **kwargs):
|
|
|
+ self.method_check(request, allowed=self._meta.allowed_methods)
|
|
|
+ self.is_authenticated(request)
|
|
|
+
|
|
|
+ bundle = self.build_bundle(obj=get_all_images(), request=request)
|
|
|
+ return self.create_response(request, bundle.obj)
|
|
|
+
|
|
|
+ '''
|
|
|
+ '''
|
|
|
+ def get_all_containers(self, request, **kwargs):
|
|
|
+ self.method_check(request, allowed=self._meta.allowed_methods)
|
|
|
+ self.is_authenticated(request)
|
|
|
+
|
|
|
+ bundle = self.build_bundle(obj=get_all_containers(), request=request)
|
|
|
+ return self.create_response(request, bundle.obj)
|
|
|
+
|
|
|
+ '''
|
|
|
+ '''
|
|
|
+ def start_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)
|
|
|
+
|
|
|
+ '''
|
|
|
+ '''
|
|
|
+ def stop_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'
|
|
|
+ })
|
|
|
+
|
|
|
+ bundle = self.build_bundle(obj={}, request=request)
|
|
|
+ return self.create_response(request, bundle.obj)
|