summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFu Jinhua <fu.jinhua@zte.com.cn>2017-08-25 09:05:33 +0000
committerGerrit Code Review <gerrit@onap.org>2017-08-25 09:05:33 +0000
commitf0a9202c0115206d5ec952e3c986277392aea294 (patch)
treed13356648cefbc535b6654bd4a878c240e89879f
parent5e9aa56b72d04df7389985976935f63318eb75d3 (diff)
parentdd77da29731a867593d3a5a8dbe564b6a0e5542d (diff)
Merge "Add build-in workflow to ns instant"
-rw-r--r--lcm/ns/ns_instant.py44
-rw-r--r--lcm/pub/config/config.py3
2 files changed, 34 insertions, 13 deletions
diff --git a/lcm/ns/ns_instant.py b/lcm/ns/ns_instant.py
index 8f0f1c65..b1405559 100644
--- a/lcm/ns/ns_instant.py
+++ b/lcm/ns/ns_instant.py
@@ -30,6 +30,8 @@ from lcm.pub.utils.jobutil import JobUtil
from lcm.pub.utils import toscautil
from lcm.pub.utils.values import ignore_case_get
from lcm.pub.exceptions import NSLCMException
+from lcm.pub.config.config import WORKFLOW_OPTION
+from lcm.workflows import build_in
logger = logging.getLogger(__name__)
@@ -125,24 +127,40 @@ class InstantNSService(object):
nsinstid=self.ns_inst_id,
endpointnumber=0).save()
- servicetemplate_id = get_servicetemplate_id(ns_inst.nsd_id)
- process_id = get_process_id('init', servicetemplate_id)
- data = {"processId": process_id, "params": {"planInput": plan_input}}
- logger.debug('ns-instant(%s) workflow data:%s' % (self.ns_inst_id, data))
-
- ret = workflow_run(data)
- logger.info("ns-instant(%s) workflow result:%s" % (self.ns_inst_id, ret))
- JobUtil.add_job_status(job_id, 10, 'NS inst(%s) workflow started: %s' % (
- self.ns_inst_id, ret.get('status')))
- if ret.get('status') == 1:
- return dict(data={'jobId': job_id}, status=status.HTTP_200_OK)
- return dict(data={'error': ret['message']}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ if WORKFLOW_OPTION == "wso2":
+ return self.start_wso2_workflow(job_id, ns_inst, plan_input)
+ elif WORKFLOW_OPTION == "activiti":
+ return self.start_activiti_workflow()
+ else:
+ return self.start_buildin_workflow(job_id, plan_input)
+
except Exception as e:
logger.error(traceback.format_exc())
logger.error("ns-instant(%s) workflow error:%s" % (self.ns_inst_id, e.message))
JobUtil.add_job_status(job_id, 255, 'NS instantiation failed: %s' % e.message)
return dict(data={'error': e.message}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
-
+
+ def start_wso2_workflow(self, job_id, ns_inst, plan_input):
+ servicetemplate_id = get_servicetemplate_id(ns_inst.nsd_id)
+ process_id = get_process_id('init', servicetemplate_id)
+ data = {"processId": process_id, "params": {"planInput": plan_input}}
+ logger.debug('ns-instant(%s) workflow data:%s' % (self.ns_inst_id, data))
+
+ ret = workflow_run(data)
+ logger.info("ns-instant(%s) workflow result:%s" % (self.ns_inst_id, ret))
+ JobUtil.add_job_status(job_id, 10, 'NS inst(%s) workflow started: %s' % (
+ self.ns_inst_id, ret.get('status')))
+ if ret.get('status') == 1:
+ return dict(data={'jobId': job_id}, status=status.HTTP_200_OK)
+ return dict(data={'error': ret['message']}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+
+ def start_activiti_workflow(self):
+ pass
+
+ def start_buildin_workflow(self, job_id, plan_input):
+ build_in.run_ns_instantiate(plan_input)
+ return dict(data={'jobId': job_id}, status=status.HTTP_200_OK)
+
def get_vnf_vim_id(self, vim_id, location_constraints, vnfdid):
for location in location_constraints:
if "vnfProfileId" in location and vnfdid == location["vnfProfileId"]:
diff --git a/lcm/pub/config/config.py b/lcm/pub/config/config.py
index f501d338..b5941b72 100644
--- a/lcm/pub/config/config.py
+++ b/lcm/pub/config/config.py
@@ -63,6 +63,9 @@ SDC_PASSWD = "admin"
# [workflow]
DEPLOY_WORKFLOW_WHEN_START = True
+# Support option: activiti/wso2/buildin
+WORKFLOW_OPTION = "activiti"
+