Change-Id: I0b88058e230b51ae58aa807b208b7dc797299843
Issue-ID: VFC-456
Signed-off-by: ying.yunlong <ying.yunlong@zte.com.cn>
# limitations under the License.
import json
# limitations under the License.
import json
-from lcm.pub.exceptions import NSLCMException
-from rest_framework import status
-from rest_framework.response import Response
-from rest_framework.views import APIView
-from rest_framework import status
-from rest_framework.response import Response
logger = logging.getLogger(__name__)
SCALE_TYPE = ("SCALE_NS", "SCALE_VNF")
scale_vnf_data_mapping = {
logger = logging.getLogger(__name__)
SCALE_TYPE = ("SCALE_NS", "SCALE_VNF")
scale_vnf_data_mapping = {
- "vnfInstanceId":"",
- "scaleByStepData":[
+ "vnfInstanceId": "",
+ "scaleByStepData": [
- "type":"",
- "aspectId":"",
- "numberOfSteps":""
+ "type": "",
+ "aspectId": "",
+ "numberOfSteps": ""
def ignorcase_get(args, key):
if not key:
return ""
def ignorcase_get(args, key):
if not key:
return ""
return args[old_key]
return ""
return args[old_key]
return ""
def mapping_conv(keyword_map, rest_return):
resp_data = {}
for param in keyword_map:
def mapping_conv(keyword_map, rest_return):
resp_data = {}
for param in keyword_map:
resp_data[param] = ignorcase_get(rest_return, param)
return resp_data
resp_data[param] = ignorcase_get(rest_return, param)
return resp_data
def get_vnf_scale_info(filename, ns_instanceId, aspect, step):
json_data = get_json_data(filename)
scale_options = ignorcase_get(json_data, "scale_options")
def get_vnf_scale_info(filename, ns_instanceId, aspect, step):
json_data = get_json_data(filename)
scale_options = ignorcase_get(json_data, "scale_options")
def get_json_data(filename):
f = open(filename)
json_str = f.read()
def get_json_data(filename):
f = open(filename)
json_str = f.read()
def check_scale_list(vnf_scale_list, ns_instanceId, aspect, step):
if vnf_scale_list is None:
def check_scale_list(vnf_scale_list, ns_instanceId, aspect, step):
if vnf_scale_list is None:
- logger.debug("The scaling option[ns=%s, aspect=%s, step=%s] does not exist. Pls check the config file." %(ns_instanceId, aspect, step))
- raise Exception("The scaling option[ns=%s, aspect=%s, step=%s] does not exist. Pls check the config file." %(ns_instanceId, aspect, step))
+ logger.debug("The scaling option[ns=%s, aspect=%s, step=%s] does not exist. Pls check the config file."
+ % (ns_instanceId, aspect, step))
+ raise Exception("The scaling option[ns=%s, aspect=%s, step=%s] does not exist. Pls check the config file."
+ % (ns_instanceId, aspect, step))
else:
return vnf_scale_list
else:
return vnf_scale_list
def set_scaleVnfData_type(vnf_scale_list, scale_type):
logger.debug("vnf_scale_list = %s, type = %s" % (vnf_scale_list, scale_type))
scaleVnfDataList = []
def set_scaleVnfData_type(vnf_scale_list, scale_type):
logger.debug("vnf_scale_list = %s, type = %s" % (vnf_scale_list, scale_type))
scaleVnfDataList = []
logger.debug("scaleVnfDataList = %s" % scaleVnfDataList)
return scaleVnfDataList
logger.debug("scaleVnfDataList = %s" % scaleVnfDataList)
return scaleVnfDataList
def get_vnfInstanceIdByName(name):
return name
def get_vnfInstanceIdByName(name):
return name
def get_vnf_data(filename, ns_instanceId, aspect, step, scale_type):
vnf_scale_list = get_vnf_scale_info(filename, ns_instanceId, aspect, step)
check_scale_list(vnf_scale_list, ns_instanceId, aspect, step)
def get_vnf_data(filename, ns_instanceId, aspect, step, scale_type):
vnf_scale_list = get_vnf_scale_info(filename, ns_instanceId, aspect, step)
check_scale_list(vnf_scale_list, ns_instanceId, aspect, step)
- scaleVnfDataList = set_scaleVnfData_type(vnf_scale_list,scale_type)
+ scaleVnfDataList = set_scaleVnfData_type(vnf_scale_list, scale_type)
logger.debug("scaleVnfDataList = %s" % scaleVnfDataList)
return scaleVnfDataList
logger.debug("scaleVnfDataList = %s" % scaleVnfDataList)
return scaleVnfDataList
- #return Response(data={'error': e.message},status=status.HTTP_204_NO_CONTENT)
- #return Response(data={'success': 'success'},status=status.HTTP_200_OK)
+ # return Response(data={'error': e.message},status=status.HTTP_204_NO_CONTENT)
+ # return Response(data={'success': 'success'},status=status.HTTP_200_OK)
+
def get_and_check_params(scaleNsData, ns_InstanceId):
if scaleNsData is None:
pass
def get_and_check_params(scaleNsData, ns_InstanceId):
if scaleNsData is None:
pass
- #raise NSLCMException("Error! scaleNsData in the request is Empty!")
+ # raise NSLCMException("Error! scaleNsData in the request is Empty!")
scaleNsByStepsData = scaleNsData[0]["scaleNsByStepsData"]
if scaleNsByStepsData is None:
pass
scaleNsByStepsData = scaleNsData[0]["scaleNsByStepsData"]
if scaleNsByStepsData is None:
pass
- #raise NSLCMException("Error! scaleNsByStepsData in the request is Empty!")
+ # raise NSLCMException("Error! scaleNsByStepsData in the request is Empty!")
aspect = scaleNsByStepsData[0]["aspectId"]
numberOfSteps = scaleNsByStepsData[0]["numberOfSteps"]
scale_type = scaleNsByStepsData[0]["scalingDirection"]
aspect = scaleNsByStepsData[0]["aspectId"]
numberOfSteps = scaleNsByStepsData[0]["numberOfSteps"]
scale_type = scaleNsByStepsData[0]["scalingDirection"]
- return ns_InstanceId,aspect,numberOfSteps,scale_type
+ return ns_InstanceId, aspect, numberOfSteps, scale_type
+
def get_scale_vnf_data(scaleNsData, ns_InstanceId):
curdir_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
filename = curdir_path + "/ns/data/scalemapping.json"
logger.debug("filename = %s" % filename)
def get_scale_vnf_data(scaleNsData, ns_InstanceId):
curdir_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
filename = curdir_path + "/ns/data/scalemapping.json"
logger.debug("filename = %s" % filename)
- ns_InstanceId,aspect,numberOfSteps,scale_type = get_and_check_params(scaleNsData, ns_InstanceId)
- return get_vnf_data(filename, ns_InstanceId,aspect,numberOfSteps,scale_type)
+ ns_InstanceId, aspect, numberOfSteps, scale_type = get_and_check_params(scaleNsData, ns_InstanceId)
+ return get_vnf_data(filename, ns_InstanceId, aspect, numberOfSteps, scale_type)
file_path = "TODO:"
deploy_info = activiti.deploy_workflow(file_path)
WFPlanModel(
file_path = "TODO:"
deploy_info = activiti.deploy_workflow(file_path)
WFPlanModel(
- deployed_id=deploy_info["deployedId"],
- process_id=deploy_info["processId"],
+ deployed_id=deploy_info["deployedId"],
+ process_id=deploy_info["processId"],
status=deploy_info["status"],
message=deploy_info["message"],
plan_name="ns_instantiate").save()
status=deploy_info["status"],
message=deploy_info["message"],
plan_name="ns_instantiate").save()
"""
format of input_data
{
"""
format of input_data
{
"nsInstanceId": id of ns instance,
"object_context": json format of nsd,
"object_additionalParamForNs": json format of additional parameters for ns,
"object_additionalParamForVnf": json format of additional parameters for vnf,
"vlCount": int type of VL count,
"vnfCount: int type of VNF count,
"nsInstanceId": id of ns instance,
"object_context": json format of nsd,
"object_additionalParamForNs": json format of additional parameters for ns,
"object_additionalParamForVnf": json format of additional parameters for vnf,
"vlCount": int type of VL count,
"vnfCount: int type of VNF count,
- "sfcCount": int type of SFC count,
+ "sfcCount": int type of SFC count,
"sdnControllerId": uuid of SDN controller
}
"""
"sdnControllerId": uuid of SDN controller
}
"""
create_vl(ns_inst_id, i + 1, nsd_json, ns_param_json)
update_job(job_id, 30, "0", "Start to create VNF")
create_vl(ns_inst_id, i + 1, nsd_json, ns_param_json)
update_job(job_id, 30, "0", "Start to create VNF")
- jobs = [create_vnf(ns_inst_id, i + 1, vnf_param_json) for i in range(vnf_count)]
+ jobs = [create_vnf(ns_inst_id, i + 1, vnf_param_json) for i in range(vnf_count)]
wait_until_jobs_done(job_id, jobs)
[confirm_vnf_status(inst_id) for inst_id, _, _ in jobs]
update_job(job_id, 70, "0", "Start to create SFC")
g_jobs_status[job_id] = [1 for i in range(sfc_count)]
wait_until_jobs_done(job_id, jobs)
[confirm_vnf_status(inst_id) for inst_id, _, _ in jobs]
update_job(job_id, 70, "0", "Start to create SFC")
g_jobs_status[job_id] = [1 for i in range(sfc_count)]
- jobs = [create_sfc(ns_inst_id, i + 1, nsd_json, sdnc_id) for i in range(sfc_count)]
+ jobs = [create_sfc(ns_inst_id, i + 1, nsd_json, sdnc_id) for i in range(sfc_count)]
wait_until_jobs_done(job_id, jobs)
[confirm_sfc_status(inst_id) for inst_id, _, _ in jobs]
wait_until_jobs_done(job_id, jobs)
[confirm_sfc_status(inst_id) for inst_id, _, _ in jobs]
def post_deal(ns_inst_id, status):
def post_deal(ns_inst_id, status):
- uri = "api/nslcm/v1/ns/{nsInstanceId}/postdeal".format(nsInstanceId=ns_inst_id)
+ uri = "api/nslcm/v1/ns/{nsInstanceId}/postdeal".format(nsInstanceId=ns_inst_id)
data = json.JSONEncoder().encode({
"status": status
})
data = json.JSONEncoder().encode({
"status": status
})
"errcode": errcode,
"desc": desc
})
"errcode": errcode,
"desc": desc
})
- restcall.req_by_msb(uri, "POST", data)
+ restcall.req_by_msb(uri, "POST", data)
class JobWaitThread(Thread):
"""
class JobWaitThread(Thread):
"""
"""
def __init__(self, inst_id, job_id, ns_job_id, index):
Thread.__init__(self)
"""
def __init__(self, inst_id, job_id, ns_job_id, index):
Thread.__init__(self)
"processId": "4"
}
mock_upload_by_msb.return_value = [0, json.JSONEncoder().encode(res_data), '202']
"processId": "4"
}
mock_upload_by_msb.return_value = [0, json.JSONEncoder().encode(res_data), '202']
- response = self.client.post("/api/nslcm/v1/workflow",
- {"filePath": os.path.abspath(__file__)}, format='json')
+ response = self.client.post("/api/nslcm/v1/workflow",
+ {"filePath": os.path.abspath(__file__)}, format='json')
self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.content)
self.assertEqual(1, len(WFPlanModel.objects.filter(deployed_id="3")))
self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.content)
self.assertEqual(1, len(WFPlanModel.objects.filter(deployed_id="3")))
"processId": "5"
}), '202']
WFPlanModel(deployed_id="1", process_id="2", status="3", message="4").save()
"processId": "5"
}), '202']
WFPlanModel(deployed_id="1", process_id="2", status="3", message="4").save()
- response = self.client.post("/api/nslcm/v1/workflow",
- {"filePath": os.path.abspath(__file__), "forceDeploy": "True"}, format='json')
+ response = self.client.post("/api/nslcm/v1/workflow",
+ {"filePath": os.path.abspath(__file__), "forceDeploy": "True"}, format='json')
self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.content)
self.assertEqual(0, len(WFPlanModel.objects.filter(deployed_id="1")))
self.assertEqual(1, len(WFPlanModel.objects.filter(deployed_id="4")))
def test_deploy_workflow_when_already_deployed(self):
WFPlanModel(deployed_id="1", process_id="2", status="3", message="4").save()
self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.content)
self.assertEqual(0, len(WFPlanModel.objects.filter(deployed_id="1")))
self.assertEqual(1, len(WFPlanModel.objects.filter(deployed_id="4")))
def test_deploy_workflow_when_already_deployed(self):
WFPlanModel(deployed_id="1", process_id="2", status="3", message="4").save()
- response = self.client.post("/api/nslcm/v1/workflow",
- {"filePath": os.path.abspath(__file__)}, format='json')
+ response = self.client.post("/api/nslcm/v1/workflow",
+ {"filePath": os.path.abspath(__file__)}, format='json')
self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.content)
self.assertEqual({'msg': 'Already deployed.'}, json.loads(response.content))
self.assertEqual(status.HTTP_202_ACCEPTED, response.status_code, response.content)
self.assertEqual({'msg': 'Already deployed.'}, json.loads(response.content))
"progress": 100,
"statusDescription": "ok"
}}), '200'],
"progress": 100,
"statusDescription": "ok"
}}), '200'],
- "api/nslcm/v1/jobs/{jobId}".format(jobId=job_id):
+ "api/nslcm/v1/jobs/{jobId}".format(jobId=job_id):
- "api/nslcm/v1/ns/{nsInstanceId}/postdeal".format(nsInstanceId=ns_inst_id):
+ "api/nslcm/v1/ns/{nsInstanceId}/postdeal".format(nsInstanceId=ns_inst_id):
return Response(data={'msg': 'Already deployed.'}, status=status.HTTP_202_ACCEPTED)
deploy_info = activiti.deploy_workflow(file_path)
WFPlanModel(
return Response(data={'msg': 'Already deployed.'}, status=status.HTTP_202_ACCEPTED)
deploy_info = activiti.deploy_workflow(file_path)
WFPlanModel(
- deployed_id=deploy_info["deployedId"],
- process_id=deploy_info["processId"],
+ deployed_id=deploy_info["deployedId"],
+ process_id=deploy_info["processId"],
status=deploy_info["status"],
message=deploy_info["message"],
plan_name="ns_instantiate").save()
status=deploy_info["status"],
message=deploy_info["message"],
plan_name="ns_instantiate").save()