aboutsummaryrefslogtreecommitdiffstats
path: root/moon_engine/moon_engine/api/wrapper/api/pipeline.py
diff options
context:
space:
mode:
Diffstat (limited to 'moon_engine/moon_engine/api/wrapper/api/pipeline.py')
-rw-r--r--moon_engine/moon_engine/api/wrapper/api/pipeline.py100
1 files changed, 100 insertions, 0 deletions
diff --git a/moon_engine/moon_engine/api/wrapper/api/pipeline.py b/moon_engine/moon_engine/api/wrapper/api/pipeline.py
new file mode 100644
index 00000000..19b9578a
--- /dev/null
+++ b/moon_engine/moon_engine/api/wrapper/api/pipeline.py
@@ -0,0 +1,100 @@
+# Software Name: MOON
+
+# Version: 5.4
+
+# SPDX-FileCopyrightText: Copyright (c) 2018-2020 Orange and its contributors
+# SPDX-License-Identifier: Apache-2.0
+
+# This software is distributed under the 'Apache License 2.0',
+# the text of which is available at 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+# or see the "LICENSE" file for more details.
+
+
+"""Pipeline API"""
+import hug
+from moon_utilities.auth_functions import api_key_authentication
+from moon_engine import orchestration_driver
+from moon_utilities.security_functions import validate_input
+from moon_engine.api import configuration
+from moon_cache.cache import Cache
+
+CACHE = Cache.getInstance(manager_url=configuration.get_configuration("manager_url"),
+ incremental=configuration.get_configuration("incremental_updates"),
+ manager_api_key=configuration.get_configuration("api_token"))
+
+
+class Pipeline(object):
+ """
+ Endpoint for pipelines requests
+ """
+
+ @staticmethod
+ @hug.local()
+ @hug.get("/pipelines", requires=api_key_authentication)
+ @hug.get("/pipeline/{uuid}", requires=api_key_authentication)
+ def get(uuid: hug.types.uuid=None, authed_user: hug.directives.user=None):
+ """Retrieve all pipelines
+
+ :param uuid: uuid of the pipeline
+ :param authed_user: the name of the authenticated user
+ :return: {
+ "pipeline_id1": {
+ "name": "...",
+ "description": "... (optional)",
+ }
+ }
+ """
+ uuid = str(uuid).replace("-", "")
+ orchestration_driver.init()
+ data = orchestration_driver.PipelineManager.get_pipelines(moon_user_id=authed_user,
+ pipeline_id=uuid)
+ return {"pipelines": data}
+
+ @staticmethod
+ @hug.local()
+ @hug.put("/pipeline/{uuid}", requires=api_key_authentication)
+ def put(uuid: hug.types.uuid, body: validate_input("name"),
+ authed_user: hug.directives.user = None):
+ """
+ Ask for the creation of a new pipeline
+ :param uuid: uuid of the pipeline
+ :param body: body of the request
+ :param authed_user: the name of the authenticated user
+ :return: {
+ "name": "my_pdp",
+ "description": "...",
+ "vim_project_id": "an existing ID",
+ "security_pipelines": ["an existing policy ID", ],
+ "slave": ["name of a slave", ]
+ }
+ """
+ uuid = str(uuid).replace("-", "")
+ orchestration_driver.init()
+ data = orchestration_driver.PipelineManager.add_pipeline(moon_user_id=authed_user,
+ pipeline_id=uuid,
+ data=body)
+ CACHE.add_pipeline(uuid, data)
+ return {"pipelines": data}
+
+ @staticmethod
+ @hug.local()
+ @hug.delete("/pipeline/{uuid}", requires=api_key_authentication)
+ def delete(uuid: hug.types.uuid, authed_user: hug.directives.user = None):
+ """
+ Ask for the deletion of a new pipeline
+ :param uuid: uuid of the pipeline
+ :param authed_user: the name of the authenticated user
+ :return: {
+ "name": "my_pdp",
+ "description": "...",
+ "vim_project_id": "an existing ID",
+ "security_pipelines": ["an existing policy ID", ],
+ "slave": ["name of a slave", ]
+ }
+ """
+ uuid = str(uuid).replace("-", "")
+ orchestration_driver.init()
+ orchestration_driver.PipelineManager.delete_pipeline(moon_user_id=authed_user,
+ pipeline_id=uuid)
+ CACHE.delete_pipeline(uuid)
+ return True