diff options
Diffstat (limited to 'azure/aria/aria-rest-server/src')
9 files changed, 319 insertions, 0 deletions
diff --git a/azure/aria/aria-rest-server/src/main/python/aria-rest/LICENSE b/azure/aria/aria-rest-server/src/main/python/aria-rest/LICENSE new file mode 100644 index 0000000..48bef24 --- /dev/null +++ b/azure/aria/aria-rest-server/src/main/python/aria-rest/LICENSE @@ -0,0 +1,18 @@ +# +# ============LICENSE_START=================================================== +# Copyright (c) 2018 Amdocs. All rights reserved. +# =================================================================== +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy +# of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. +# ============LICENSE_END==================================================== +# + diff --git a/azure/aria/aria-rest-server/src/main/python/aria-rest/__init__.py b/azure/aria/aria-rest-server/src/main/python/aria-rest/__init__.py new file mode 100644 index 0000000..adb446c --- /dev/null +++ b/azure/aria/aria-rest-server/src/main/python/aria-rest/__init__.py @@ -0,0 +1,19 @@ + +# +# ============LICENSE_START=================================================== +# Copyright (c) 2018 Amdocs. All rights reserved. +# =================================================================== +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy +# of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. +# ============LICENSE_END==================================================== +# + diff --git a/azure/aria/aria-rest-server/src/main/python/aria-rest/aria_rest/__init__.py b/azure/aria/aria-rest-server/src/main/python/aria-rest/aria_rest/__init__.py new file mode 100644 index 0000000..adb446c --- /dev/null +++ b/azure/aria/aria-rest-server/src/main/python/aria-rest/aria_rest/__init__.py @@ -0,0 +1,19 @@ + +# +# ============LICENSE_START=================================================== +# Copyright (c) 2018 Amdocs. All rights reserved. +# =================================================================== +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy +# of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. +# ============LICENSE_END==================================================== +# + diff --git a/azure/aria/aria-rest-server/src/main/python/aria-rest/aria_rest/rest.py b/azure/aria/aria-rest-server/src/main/python/aria-rest/aria_rest/rest.py new file mode 100644 index 0000000..ecddff6 --- /dev/null +++ b/azure/aria/aria-rest-server/src/main/python/aria-rest/aria_rest/rest.py @@ -0,0 +1,90 @@ +# +# ============LICENSE_START=================================================== +# Copyright (c) 2018 Amdocs. All rights reserved. +# =================================================================== +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy +# of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. +# ============LICENSE_END==================================================== +# + +from flask import Flask, request, jsonify +from flask_autodoc.autodoc import Autodoc +from aria import install_aria_extensions +from aria.cli.core import aria +from aria.utils import threading +from aria.orchestrator.workflow_runner import WorkflowRunner +from aria.orchestrator.workflows.executor.dry import DryExecutor +import util + +version_id = "v0" +route_base = "/api/multicloud-azure/" + version_id + "/" +app = Flask("onap-aria-rest") +auto = Autodoc(app) + +execution_state = util.SafeDict() + + +def main(): + install_aria_extensions() + app.run(host='0.0.0.0', port=5000, threaded=True) + + +# start execution +@app.route( + route_base + + "services/<service_id>/executions/<workflow_name>", + methods=['POST']) +@auto.doc() +@aria.pass_model_storage +@aria.pass_resource_storage +@aria.pass_plugin_manager +@aria.pass_logger +def start_execution( + service_id, + workflow_name, + model_storage, + resource_storage, + plugin_manager, + logger): + """ + Start an execution for the specified service + """ + body = request.json or {} + executor = DryExecutor( + ) if 'executor' in body and body['executor'] == 'dry' else None + + inputs = body['inputs'] if 'inputs' in body else None + task_max_attempts = (body['task_max_attempts'] + if 'task_max_attempts' in body else 30) + task_retry_interval = (body['task_retry_interval'] + if 'task_retry_interval' in body else 30) + + runner = WorkflowRunner(model_storage, resource_storage, plugin_manager, + service_id=service_id, + workflow_name=workflow_name, + inputs=inputs, + executor=executor, + task_max_attempts=task_max_attempts, + task_retry_interval=task_retry_interval) + + service = model_storage.service.get(service_id) + tname = '{}_{}_{}'.format(service.name, workflow_name, runner.execution_id) + thread = threading.ExceptionThread(target=runner.execute, + name=tname) + thread.start() + execution_state[str(runner.execution_id)] = [runner, thread] + logger.info("execution {} started".format(runner.execution_id)) + return jsonify({"id": runner.execution_id}), 202 + + +if __name__ == "__main__": + app.run(host='0.0.0.0', port=5000, threaded=True) diff --git a/azure/aria/aria-rest-server/src/main/python/aria-rest/aria_rest/templates/index.html b/azure/aria/aria-rest-server/src/main/python/aria-rest/aria_rest/templates/index.html new file mode 100644 index 0000000..932a6b1 --- /dev/null +++ b/azure/aria/aria-rest-server/src/main/python/aria-rest/aria_rest/templates/index.html @@ -0,0 +1,23 @@ +<!-- +# +# ============LICENSE_START=================================================== +# Copyright (c) 2018 Amdocs. All rights reserved. +# =================================================================== +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy +# of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. +# ============LICENSE_END==================================================== +# +--> + +<body> +<h1>Not Implemented</h1> +</body> diff --git a/azure/aria/aria-rest-server/src/main/python/aria-rest/aria_rest/util.py b/azure/aria/aria-rest-server/src/main/python/aria-rest/aria_rest/util.py new file mode 100644 index 0000000..ecd46b1 --- /dev/null +++ b/azure/aria/aria-rest-server/src/main/python/aria-rest/aria_rest/util.py @@ -0,0 +1,48 @@ +# +# ============LICENSE_START=================================================== +# Copyright (c) 2018 Amdocs. All rights reserved. +# =================================================================== +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy +# of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. +# ============LICENSE_END==================================================== +# + + +import threading + + +def make_template_name(user, template_name): + return "{}.{}".format(user, template_name) + + +class SafeDict(dict): + def __init__(self, *args): + self._lockobj = threading.Lock() + dict.__init__(self, args) + + def __getitem__(self, key): + try: + self._lockobj.acquire() + val = dict.__getitem__(self, key) + except: + raise + finally: + self._lockobj.release() + + def __setitem__(self, key, value): + try: + self._lockobj.acquire() + dict.__setitem__(self, key, value) + except: + raise + finally: + self._lockobj.release() diff --git a/azure/aria/aria-rest-server/src/main/python/aria-rest/rest.py b/azure/aria/aria-rest-server/src/main/python/aria-rest/rest.py new file mode 100644 index 0000000..c0858bf --- /dev/null +++ b/azure/aria/aria-rest-server/src/main/python/aria-rest/rest.py @@ -0,0 +1,57 @@ +# +# ============LICENSE_START=================================================== +# Copyright (c) 2018 Amdocs. All rights reserved. +# =================================================================== +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy +# of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. +# ============LICENSE_END==================================================== +# + +from flask import Flask, render_template +from aria.exceptions import AriaException + +version_id = "0.1" +route_base = "/api/" + version_id + "/" +app = Flask("onap-aria-rest") + +@app.route("/") +def index(): + return render_template('index.html') + + +@app.route(route_base + "templates/", methods = ['GET']) +def list_templates(): + +@app.route(route_base + "templates/<template_id>", methods = ['POST']) +def install_template( template_id ): + + # GET CSAR FROM SDC + + # DEPLOY CSAR + + # UPDATE A&AI? + + return "template {} instantiated" + +@app.route(route_base + "templates/<template_id>", methods = ['DELETE']) +def delete_template( template_id ): + + # RUN UNINSTALL + + # DELETE TEMPLATE + + # UPDATE A&AI? + + return "template {} deleted" + +if __name__ == "__main__": + app.run() diff --git a/azure/aria/aria-rest-server/src/main/python/aria-rest/setup.py b/azure/aria/aria-rest-server/src/main/python/aria-rest/setup.py new file mode 100644 index 0000000..86fd5a0 --- /dev/null +++ b/azure/aria/aria-rest-server/src/main/python/aria-rest/setup.py @@ -0,0 +1,42 @@ +# +# ============LICENSE_START=================================================== +# Copyright (c) 2018 Amdocs. All rights reserved. +# =================================================================== +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy +# of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. +# ============LICENSE_END==================================================== +# + + +from setuptools import setup + +setup( + zip_safe=True, + name='aria-rest', + version='0.1', + author='dewayne', + author_email='dewayne@cloudify.co', + packages=[ + 'aria_rest' + ], + entry_points = { + 'console_scripts' : ['aria-rest=aria_rest.rest:main'] + }, + license='LICENSE', + description='Aria REST API for ONAP', + install_requires=[ + 'distribute', + 'Flask==0.12.2', + 'flask-autodoc==0.1.2', + 'apache-ariatosca==0.2.0' + ] +) diff --git a/azure/aria/aria-rest-server/src/main/python/aria-rest/templates/index.html b/azure/aria/aria-rest-server/src/main/python/aria-rest/templates/index.html new file mode 100644 index 0000000..6d74cfc --- /dev/null +++ b/azure/aria/aria-rest-server/src/main/python/aria-rest/templates/index.html @@ -0,0 +1,3 @@ +<body> +<h1>Not Implemented</h1> +</body> |