def test_ns_terminate_asynchronous_tasks(self, mock_request, mock_sleep): mock_request.side_effect = [ ({ 'status': '200' }, '{"result": "0"}'.encode('utf-8')), ({ 'status': '200' }, '{"jobId": "zzz"}'.encode('utf-8')), ({ 'status': '200' }, '{"responseDescriptor": {"progress": 100, "responseId": 1, ' '"statusDescription": ""}}'.encode('utf-8')), ({ 'status': '200' }, '{"result": "0"}'.encode('utf-8')), ({ 'status': '200' }, '{"result": "0"}'.encode('utf-8')) ] mock_sleep.return_value = None TerminateNsService(self.ns_inst_id, self.job_id, TERMINATE_NS_DICT).run() self.assertEqual( JobModel.objects.filter(jobid=self.job_id).first().progress, JOB_PROGRESS.FINISHED)
def test_ns_terminate_asynchronous_tasks_when_no_new_progress( self, mock_request, mock_sleep): ns_instance_id = 'test_ns_terminate_when_no_new_progress' NSInstModel(id=ns_instance_id).save() NfInstModel(ns_inst_id=ns_instance_id).save() mock_request.side_effect = [ ({ 'status': '200' }, '{"jobId": "zzz"}'.encode('utf-8')), ({ 'status': '200' }, '{}'.encode('utf-8')), ({ 'status': '200' }, '{"responseDescriptor": {"progress": 100, "responseId": 1, ' '"statusDescription": ""}}'.encode('utf-8')) ] mock_sleep.return_value = None job_id = JobUtil.create_job(JOB_TYPE.NS, JOB_ACTION.TERMINATE, ns_instance_id) TerminateNsService(ns_instance_id, job_id, TERMINATE_NS_DICT).run() self.assertEqual( JobModel.objects.filter(jobid=job_id).first().progress, JOB_PROGRESS.FINISHED)
def test_ns_terminate_asynchronous_tasks_with_none(self): ns_instance_id = 'test_ns_terminate_002' job_id = JobUtil.create_job(JOB_TYPE.NS, JOB_ACTION.TERMINATE, ns_instance_id) TerminateNsService(ns_instance_id, job_id, TERMINATE_NS_DICT).run() self.assertEqual( JobModel.objects.filter(jobid=job_id).first().progress, JOB_PROGRESS.FINISHED)
def test_terminate_ns_service(self, mock_call_req): job_id = JobUtil.create_job(JOB_TYPE.NS, JOB_ACTION.TERMINATE, self.ns_inst_id) mock_vals = { "/api/nslcm/v1/ns/ns_vls/1": [0, json.JSONEncoder().encode({"jobId": self.job_id}), '200'], "/api/nslcm/v1/ns/ns_sfcs/1": [0, json.JSONEncoder().encode({"jobId": self.job_id}), '200'], "/api/nslcm/v1/ns/ns_vnfs/1": [0, json.JSONEncoder().encode({}), '200'], "/api/ztevnfmdriver/v1/jobs/" + self.job_id + "&responseId=0": [ 0, json.JSONEncoder().encode({ "jobid": self.job_id, "responsedescriptor": { "progress": "100", "status": JOB_MODEL_STATUS.FINISHED, "responseid": "3", "statusdescription": "creating", "errorcode": "0", "responsehistorylist": [{ "progress": "0", "status": JOB_MODEL_STATUS.PROCESSING, "responseid": "2", "statusdescription": "creating", "errorcode": "0" }] } }), '200' ], "/api/catalog/v1/ns_descriptors/None": [0, json.JSONEncoder().encode({}), '202'], } def side_effect(*args): return mock_vals[args[4]] mock_call_req.side_effect = side_effect req_data = { "terminationType": "FORCEFUL", "gracefulTerminationTimeout": "600" } TerminateNsService(self.ns_inst_id, job_id, req_data).run() nsinst = NSInstModel.objects.get(id=self.ns_inst_id) if nsinst: self.assertTrue(1, 0) else: self.assertTrue(1, 1)
def post(self, request, ns_instance_id): job_id = JobUtil.create_job(JOB_TYPE.NS, JOB_ACTION.TERMINATE, ns_instance_id) logger.debug("Enter TerminateNSView::post %s", request.data) req_serializer = TerminateNsReqSerializer(data=request.data) if not req_serializer.is_valid(): logger.debug("request.data is not valid,error: %s" % req_serializer.errors) raise BadRequestException(req_serializer.errors) termination_time = ignore_case_get(request.data, 'terminationTime') logger.debug("terminationTime is %s" % termination_time) # todo terminationTime terminate_ns_service = TerminateNsService(ns_instance_id, job_id, request.data) terminate_ns_service.start() logger.debug("Location: %s" % terminate_ns_service.occ_id) response = Response(data={'jobId': job_id}, status=status.HTTP_202_ACCEPTED) response["Location"] = NS_OCC_BASE_URI % terminate_ns_service.occ_id logger.debug("Leave TerminateNSView") return response
def post(self, request, ns_instance_id): logger.debug("Enter TerminateNSView::post %s", request.data) req_serializer = _TerminateNsReqSerializer(data=request.data) if not req_serializer.is_valid(): raise BadRequestException(req_serializer.errors) job_id = JobUtil.create_job(JOB_TYPE.NS, JOB_ACTION.TERMINATE, ns_instance_id) time.sleep(2) TerminateNsService(ns_instance_id, job_id, request.data).start() resp_serializer = _NsOperateJobSerializer(data={'jobId': job_id}) if not resp_serializer.is_valid(): raise NSLCMException(resp_serializer.errors) logger.debug("Leave TerminateNSView::post ret=%s", {'jobId': job_id}) return Response(data={'jobId': job_id}, status=status.HTTP_202_ACCEPTED)
def test_ns_terminate_asynchronous_tasks_when_terminate_vnf_failed( self, mock_request, mock_sleep): ns_instance_id = 'test_ns_terminate_when_terminate_vnf_failed' NSInstModel(id=ns_instance_id).save() NfInstModel(ns_inst_id=ns_instance_id).save() mock_request.side_effect = [({ 'status': '404' }, '{"jobId": "zzz"}'.encode('utf-8'))] mock_sleep.return_value = None job_id = JobUtil.create_job(JOB_TYPE.NS, JOB_ACTION.TERMINATE, ns_instance_id) TerminateNsService(ns_instance_id, job_id, TERMINATE_NS_DICT).run() self.assertEqual( JobModel.objects.filter(jobid=job_id).first().progress, JOB_PROGRESS.FINISHED)