aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFu Jinhua <fu.jinhua@zte.com.cn>2018-10-15 09:30:08 +0000
committerGerrit Code Review <gerrit@onap.org>2018-10-15 09:30:08 +0000
commite36ba50b4665a716aab3051c59e7569356e1ae20 (patch)
treeab23f6f6a879b7683b52301bae2bd2f2264eafd0
parentb0e5a1c326a3e85a000ed3fe237ff9b9e5b88c16 (diff)
parente55a91f6c983c417d76e253857450dc10f32161c (diff)
Merge "add lcm Async task in workflow"
-rw-r--r--lcm/workflows/graphflow/task/lcm_async_rest_task.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/lcm/workflows/graphflow/task/lcm_async_rest_task.py b/lcm/workflows/graphflow/task/lcm_async_rest_task.py
new file mode 100644
index 00000000..2e3b6061
--- /dev/null
+++ b/lcm/workflows/graphflow/task/lcm_async_rest_task.py
@@ -0,0 +1,56 @@
+# Copyright 2018 ZTE Corporation.
+#
+# 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.
+
+import logging
+import json
+from lcm.workflows.graphflow.task.async_rest_task import ASyncRestTask
+from lcm.pub.utils import restcall
+
+logger = logging.getLogger(__name__)
+
+
+class LcmASyncRestTask(ASyncRestTask):
+
+ METHOD_GET_JOB_STATUS = "status"
+
+ def __init__(self, *args):
+ super(LcmASyncRestTask, self).__init__(*args)
+ self.job_url = "/api/nslcm/v1/jobs/%s"
+
+ def call_rest(self, url, method, content=None):
+ ret = restcall.req_by_msb(url, method, content)
+ return ret[2], json.JSONDecoder().decode(ret[1])
+
+ def get_ext_status(self):
+ job_id = self.parse_job_id()
+ logger.debug("get_ext_status %s", self.key)
+ job_status = None
+ if job_id:
+ url = "/api/nslcm/v1/jobs/%s" % job_id
+ status, job_result = self.call_rest(url, self.GET)
+ if status in self.STATUS_OK:
+ progress = job_result["responseDescriptor"]["progress"]
+ if progress == 100:
+ job_status = self.FINISHED
+ elif progress == 255:
+ job_status = self.ERROR
+ else:
+ job_status = self.PROCESSING
+ return job_status
+
+ def parse_job_id(self):
+ if self.output:
+ return self.output["jobId"] if "jobId" in self.output else None
+ else:
+ return None