Add the POD API in Orchestrator 97/46397/1
authorThomas Duval <thomas.duval@orange.com>
Sun, 29 Oct 2017 20:14:06 +0000 (21:14 +0100)
committerThomas Duval <thomas.duval@orange.com>
Sun, 29 Oct 2017 20:14:06 +0000 (21:14 +0100)
Change-Id: I98396ec760aa00beb87c60a566ed6b1991fce42e

moonv4/moon_orchestrator/moon_orchestrator/api/pods.py [new file with mode: 0644]

diff --git a/moonv4/moon_orchestrator/moon_orchestrator/api/pods.py b/moonv4/moon_orchestrator/moon_orchestrator/api/pods.py
new file mode 100644 (file)
index 0000000..524f8e4
--- /dev/null
@@ -0,0 +1,108 @@
+# Copyright 2015 Open Platform for NFV Project, Inc. and its contributors
+# This software is distributed under the terms and conditions of the 'Apache-2.0'
+# license which can be found in the file 'LICENSE' in this package distribution
+# or at 'http://www.apache.org/licenses/LICENSE-2.0'.
+
+from flask import request
+from flask_restful import Resource
+from moon_utilities.security_functions import check_auth
+import logging
+
+LOG = logging.getLogger("moon.orchestrator.api.containers")
+
+
+class Pods(Resource):
+    """
+    Endpoint for pdp requests
+    """
+
+    __urls__ = (
+        "/pods",
+        "/pods/",
+        "/pods/<string:uuid>",
+        "/pods/<string:uuid>/",
+    )
+
+    def __init__(self, **kwargs):
+        self.driver = kwargs.get("driver")
+
+    @check_auth
+    def get(self, uuid=None, user_id=None):
+        """Retrieve all pods
+
+        :param uuid: uuid of the pod
+        :param user_id: user ID who do the request
+        :return: {
+            "pod_id1": {
+                "name": "...",
+                "replicas": "...",
+                "description": "...",
+            }
+        }
+        :internal_api: get_pdp
+        """
+        pods = {}
+        LOG.info("pods={}".format(self.driver.get_pods()))
+        for _pod_key, _pod_values in self.driver.get_pods().items():
+            for _pod_value in _pod_values:
+                if _pod_value['namespace'] != "moon":
+                    continue
+                pods[_pod_key] = _pod_value
+        return {"pods": pods}
+
+    @check_auth
+    def post(self, uuid=None, user_id=None):
+        """Create a new pod.
+
+        :param uuid: uuid of the pod (not used here)
+        :param user_id: user ID who do the request
+        :request body: {
+            "name": "...",
+            "description": "...",
+            "type": "plugin_name"
+        }
+        :return: {
+            "pdp_id1": {
+                "name": "...",
+                "replicas": "...",
+                "description": "...",
+            }
+        }
+        """
+        return {"pods": None}
+
+    @check_auth
+    def delete(self, uuid=None, user_id=None):
+        """Delete a pod
+
+        :param uuid: uuid of the pod to delete
+        :param user_id: user ID who do the request
+        :return: {
+            "result": "True or False",
+            "message": "optional message"
+        }
+        """
+        return {"result": True}
+
+    @check_auth
+    def patch(self, uuid=None, user_id=None):
+        """Update a pod
+
+        :param uuid: uuid of the pdp to update
+        :param user_id: user ID who do the request
+        :request body: {
+            "name": "...",
+            "replicas": "...",
+            "description": "...",
+        }
+        :return: {
+            "pod_id1": {
+                "name": "...",
+                "replicas": "...",
+                "description": "...",
+            }
+        }
+        :internal_api: update_pdp
+        """
+        return {"pods": None}
+