X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=lcm%2Fns%2Fns_instant.py;h=24a8d31403c44d83233e338de431a23463d8855b;hb=d98391234384e81f07ae1d3c88ec8c10badeab65;hp=b14055599a9ff332f59db461e0d2305bc33f5111;hpb=f0a9202c0115206d5ec952e3c986277392aea294;p=vfc%2Fnfvo%2Flcm.git diff --git a/lcm/ns/ns_instant.py b/lcm/ns/ns_instant.py index b1405559..24a8d314 100644 --- a/lcm/ns/ns_instant.py +++ b/lcm/ns/ns_instant.py @@ -21,9 +21,9 @@ import uuid from rest_framework import status from lcm.pub.database.models import DefPkgMappingModel, ServiceBaseInfoModel, InputParamMappingModel -from lcm.pub.database.models import NSInstModel, NfPackageModel, VNFFGInstModel -from lcm.pub.msapi.catalog import get_process_id, get_download_url_from_catalog -from lcm.pub.msapi.catalog import query_rawdata_from_catalog, get_servicetemplate_id, get_servicetemplate +from lcm.pub.database.models import NSInstModel, NfPackageModel, VNFFGInstModel, WFPlanModel +from lcm.pub.msapi.catalog import get_process_id, query_rawdata_from_catalog +from lcm.pub.msapi.catalog import get_servicetemplate_id, get_servicetemplate from lcm.pub.msapi.wso2bpel import workflow_run from lcm.pub.msapi.extsys import select_vnfm from lcm.pub.utils.jobutil import JobUtil @@ -32,6 +32,8 @@ 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 +from lcm.pub.msapi import activiti +from lcm.pub.msapi import sdc_run_catalog logger = logging.getLogger(__name__) @@ -58,11 +60,16 @@ class InstantNSService(object): location_constraints = [] if 'locationConstraints' in self.req_data: location_constraints = self.req_data['locationConstraints'] - + JobUtil.add_job_status(job_id, 5, 'Start query nsd(%s)' % ns_inst.nspackage_id) - src_plan = query_rawdata_from_catalog(ns_inst.nspackage_id, input_parameters) - dst_plan = toscautil.convert_nsd_model(src_plan["rawData"]) + dst_plan = None + if WORKFLOW_OPTION == "wso2": + src_plan = query_rawdata_from_catalog(ns_inst.nspackage_id, input_parameters) + dst_plan = toscautil.convert_nsd_model(src_plan["rawData"]) + else: + dst_plan = sdc_run_catalog.parse_nsd(ns_inst.nspackage_id, input_parameters) logger.debug('tosca plan dest:%s' % dst_plan) + NSInstModel.objects.filter(id=self.ns_inst_id).update(nsd_model=dst_plan) params_json = json.JSONEncoder().encode(self.req_data["additionalParamForNs"]) @@ -109,13 +116,17 @@ class InstantNSService(object): active_status='--', status=ns_inst.status, creator='--', - create_time=int(time.time()*1000)).save() + create_time=int(time.time() * 1000)).save() - service_tpl = get_servicetemplate(ns_inst.nsd_id) - DefPkgMappingModel(service_id=self.ns_inst_id, - service_def_id=service_tpl['csarId'], - template_name=service_tpl['templateName'], - template_id=service_tpl['serviceTemplateId']).save() + if WORKFLOW_OPTION == "wso2": + service_tpl = get_servicetemplate(ns_inst.nsd_id) + DefPkgMappingModel(service_id=self.ns_inst_id, + service_def_id=service_tpl['csarId'], + template_name=service_tpl['templateName'], + template_id=service_tpl['serviceTemplateId']).save() + else: + # TODO: + pass for key, val in self.req_data['additionalParamForNs'].items(): InputParamMappingModel(service_id=self.ns_inst_id, @@ -148,16 +159,31 @@ class InstantNSService(object): 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' % ( + JobUtil.add_job_status(job_id, 10, 'NS inst(%s) wso2 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_activiti_workflow(self, job_id, plan_input): + plans = WFPlanModel.objects.filter() + if not plans: + raise NSLCMException("No plan is found, you should deploy plan first!") + data = { + "processId": plans[0].process_id, + "params": plan_input + } + ret = activiti.exec_workflow(data) + logger.info("ns-instant(%s) workflow result:%s" % (self.ns_inst_id, ret)) + JobUtil.add_job_status(job_id, 10, 'NS inst(%s) activiti 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_buildin_workflow(self, job_id, plan_input): + JobUtil.add_job_status(job_id, 10, 'NS inst(%s) buildin workflow started.' % + self.ns_inst_id) build_in.run_ns_instantiate(plan_input) return dict(data={'jobId': job_id}, status=status.HTTP_200_OK)