aboutsummaryrefslogtreecommitdiffstats
path: root/moon_engine/moon_engine/orchestration_driver.py
diff options
context:
space:
mode:
Diffstat (limited to 'moon_engine/moon_engine/orchestration_driver.py')
-rw-r--r--moon_engine/moon_engine/orchestration_driver.py100
1 files changed, 100 insertions, 0 deletions
diff --git a/moon_engine/moon_engine/orchestration_driver.py b/moon_engine/moon_engine/orchestration_driver.py
new file mode 100644
index 00000000..85ca436d
--- /dev/null
+++ b/moon_engine/moon_engine/orchestration_driver.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.
+
+
+import logging
+from moon_engine.api import configuration
+from moon_engine.api.orchestration import pipeline
+
+logger = logging.getLogger("moon.engine.orchestration_driver")
+
+
+PipelineManager = None
+
+
+class Driver:
+
+ def __init__(self, driver_name, engine_name):
+ self.name = driver_name
+ self.plug = configuration.get_orchestration_driver()
+ self.driver = self.plug.Connector(driver_name, engine_name)
+
+
+class PipelineDriver(Driver):
+
+ def __init__(self, driver_name, engine_name):
+ super(PipelineDriver, self).__init__(driver_name, engine_name)
+ self.engine = engine_name
+
+ def update_pipeline(self, pipeline_id, data):
+ """Update a pipeline
+
+ :param pipeline_id: the ID of the pipeline
+ :param data: a dictionary {
+ "name": "the name of the pipeline",
+ "description": "the description of the pipeline",
+ "wrapper": {"url": "http://127.0.0.1:20000"},
+ # "wrapper": {"url": "local"} # if the pipeline should be configured inside the wrapper
+ "plugins": ["moon_engine.plugins.authz", ] # the first plugin is the default
+ }
+ :return: the pipeline updated
+ """
+ raise NotImplementedError() # pragma: no cover
+
+ def delete_pipeline(self, pipeline_id):
+ """Delete the pipeline
+
+ :param pipeline_id: the ID of the pipeline
+ :return: True if the pipeline has been deleted
+ """
+ raise NotImplementedError() # pragma: no cover
+
+ def add_pipeline(self, pipeline_id=None, data=None):
+ """Create a new pipeline
+
+ :param pipeline_id: (optional) the ID of the pipeline to create
+ :param data: a dictionary {
+ "name": "the name of the pipeline",
+ "description": "the description of the pipeline",
+ "wrapper": {"url": "http://127.0.0.1:20000"},
+ # "wrapper": {"url": "local"} # if the pipeline should be configured inside the wrapper
+ "plugins": ["moon_engine.plugins.authz", ] # the first plugin is the default
+ }
+ :return: the pipeline created
+ """
+ raise NotImplementedError() # pragma: no cover
+
+ def get_pipelines(self, pipeline_id=None):
+ """List one or more pipelines
+
+ :param pipeline_id: (optional) the ID of the pipeline to list
+ :return: a list of one or more pipelines
+ """
+ raise NotImplementedError() # pragma: no cover
+
+ def get_pipeline_api_key(self, pipeline_id):
+ """Returns the api key of the pipeline with id pipeline_id
+
+ :param pipeline_id: the ID of the pipeline to list
+ :return: The api key of the pipeline
+ """
+ raise NotImplementedError() # pragma: no cover
+
+
+def init():
+ global PipelineManager
+
+ logger.info("Initializing driver")
+ conf = configuration.get_configuration("orchestration")
+
+ PipelineManager = pipeline.PipelineManager(
+ PipelineDriver(conf['driver'], conf.get('url'))
+ )