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
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__)
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"])
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,
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)