예제 #1
0
 def test_heal_when_healnsdata_and_healvnfdata_parameters_does_not_exist(
         self):
     ns_heal_service = NSHealService(self.nf_inst_id, {}, self.job_id)
     ns_heal_service.run()
     self.assertEqual(
         JobModel.objects.filter(jobid=self.job_id).first().progress,
         JOB_PROGRESS.ERROR)
     self.assertEqual(
         NSLcmOpOccModel.objects.filter(
             id=ns_heal_service.occ_id).first().operation_state, 'FAILED')
예제 #2
0
 def test_heal_ns_thread_when_the_degree_of_healing_does_not_exist(self):
     heal_ns_json = {'healNsData': {'degreeHealing': 'xxx'}}
     ns_heal_service = NSHealService(self.ns_inst_id, heal_ns_json,
                                     self.job_id)
     ns_heal_service.run()
     self.assertEqual(
         JobModel.objects.filter(jobid=self.job_id).first().progress,
         JOB_PROGRESS.ERROR)
     self.assertEqual(
         NSLcmOpOccModel.objects.filter(
             id=ns_heal_service.occ_id).first().operation_state, 'FAILED')
예제 #3
0
 def test_heal_vnf_thread_when_vnfinstanceid_does_not_exist(self):
     heal_vnf_json = {'healVnfData': {'vnfInstanceId': ''}}
     ns_heal_service = NSHealService(self.ns_inst_id, heal_vnf_json,
                                     self.job_id)
     ns_heal_service.run()
     self.assertEqual(
         JobModel.objects.filter(jobid=self.job_id).first().progress,
         JOB_PROGRESS.ERROR)
     self.assertEqual(
         NSLcmOpOccModel.objects.filter(
             id=ns_heal_service.occ_id).first().operation_state, 'FAILED')
예제 #4
0
 def test_heal_ns_thread_when_nf_heal_failed(self, mock_get, mock_sleep,
                                             mock_run):
     mock_run.return_value = None
     mock_sleep.return_value = None
     mock_get.return_value = JobModel(progress=JOB_PROGRESS.ERROR)
     heal_ns_json = HEAL_NS_DICT.copy()
     heal_ns_json['healNsData']['vnfInstanceId'] = self.nf_inst_id
     ns_heal_service = NSHealService(self.ns_inst_id, heal_ns_json,
                                     self.job_id)
     ns_heal_service.run()
     self.assertEqual(
         JobModel.objects.filter(jobid=self.job_id).first().progress,
         JOB_PROGRESS.ERROR)
     self.assertEqual(
         NSLcmOpOccModel.objects.filter(
             id=ns_heal_service.occ_id).first().operation_state, 'FAILED')
예제 #5
0
 def test_heal_ns_thread_when_nsinsts_does_not_exist(self):
     NSInstModel(id='text_nsinsts_does_not_exist',
                 name='ns_name',
                 status='null').save()
     heal_ns_json = HEAL_NS_DICT.copy()
     heal_ns_json['healNsData'][
         'vnfInstanceId'] = 'text_nsinsts_does_not_exist'
     job_id = JobUtil.create_job(JOB_TYPE.NS, JOB_ACTION.HEAL,
                                 'text_nsinsts_does_not_exist')
     ns_heal_service = NSHealService('text_nsinsts_does_not_exist',
                                     heal_ns_json, job_id)
     ns_heal_service.run()
     self.assertEqual(
         JobModel.objects.filter(jobid=job_id).first().progress,
         JOB_PROGRESS.ERROR)
     self.assertEqual(
         NSLcmOpOccModel.objects.filter(
             id=ns_heal_service.occ_id).first().operation_state, 'FAILED')
예제 #6
0
 def test_heal_when_healnsdata_and_healvnfdata_parameters_exist_together(
         self):
     data = {
         'healNsData': {
             'degreeHealing': 'HEAL_RESTORE'
         },
         'healVnfData': {
             'vnfInstanceId': 'default'
         }
     }
     ns_heal_service = NSHealService(self.nf_inst_id, data, self.job_id)
     ns_heal_service.run()
     self.assertEqual(
         JobModel.objects.filter(jobid=self.job_id).first().progress,
         JOB_PROGRESS.ERROR)
     self.assertEqual(
         NSLcmOpOccModel.objects.filter(
             id=ns_heal_service.occ_id).first().operation_state, 'FAILED')
예제 #7
0
    def post(self, request, ns_instance_id):
        logger.debug(
            "Enter HealNSView::post nsInstanceId:%s, request.data:%s" %
            (ns_instance_id, request.data))
        req_serializer = HealNsReqSerializer(data=request.data)
        if not req_serializer.is_valid():
            logger.error("request.data is not valid,error: %s" %
                         req_serializer.errors)
            raise BadRequestException(req_serializer.errors)

        job_id = JobUtil.create_job(JOB_TYPE.NS, JOB_ACTION.HEAL,
                                    ns_instance_id)
        ns_heal_service = NSHealService(ns_instance_id, request.data, job_id)
        ns_heal_service.start()
        response = Response(data={}, status=status.HTTP_202_ACCEPTED)
        logger.debug("Location: %s" % ns_heal_service.occ_id)
        response["Location"] = NS_OCC_BASE_URI % ns_heal_service.occ_id
        logger.debug("Leave NSHealView")
        return response
예제 #8
0
 def test_heal_ns_thread(self, mock_get, mock_sleep, mock_run):
     mock_run.return_value = None
     mock_sleep.return_value = None
     mock_get.return_value = JobModel(progress=JOB_PROGRESS.FINISHED)
     heal_ns_json = HEAL_NS_DICT.copy()
     heal_ns_json['healNsData']['vnfInstanceId'] = self.nf_inst_id
     NSHealService(self.ns_inst_id, heal_ns_json, self.job_id).run()
     self.assertEqual(
         NSInstModel.objects.get(id=self.ns_inst_id).status,
         NS_INST_STATUS.ACTIVE)
예제 #9
0
    def post(self, request, ns_instance_id):
        logger.debug("Enter HealNSView::post %s, %s", ns_instance_id,
                     request.data)
        req_serializer = _HealNsReqSerializer(data=request.data)
        if not req_serializer.is_valid():
            raise BadRequestException(req_serializer.errors)

        job_id = JobUtil.create_job(JOB_TYPE.NS, JOB_ACTION.HEAL,
                                    ns_instance_id)
        NSHealService(ns_instance_id, request.data, job_id).start()

        resp_serializer = _NsOperateJobSerializer(data={'jobId': job_id})
        if not resp_serializer.is_valid():
            raise NSLCMException(resp_serializer.errors)

        logger.debug("Leave HealNSView::post ret=%s", {'jobId': job_id})
        return Response(data={'jobId': job_id},
                        status=status.HTTP_202_ACCEPTED)