X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=lcm%2Flcm%2Fnf%2Ftests%2Ftest_terminate_vnf.py;h=a64a7f3d2aabc442f6b88903c95f9e4ec734ab6c;hb=89fd50ca268ed9b9ed9904ad578c1416bb81f90d;hp=97330b6cf139d68685b6f754d02f779628f8e7e3;hpb=86af279acebf863b46693e8ba0f2f43013b2b66e;p=vfc%2Fgvnfm%2Fvnflcm.git diff --git a/lcm/lcm/nf/tests/test_terminate_vnf.py b/lcm/lcm/nf/tests/test_terminate_vnf.py index 97330b6c..a64a7f3d 100644 --- a/lcm/lcm/nf/tests/test_terminate_vnf.py +++ b/lcm/lcm/nf/tests/test_terminate_vnf.py @@ -22,10 +22,11 @@ from rest_framework import status from lcm.nf.biz.terminate_vnf import TerminateVnf from lcm.pub.database.models import NfInstModel, JobStatusModel, VmInstModel, NetworkInstModel, SubNetworkInstModel, \ - PortInstModel, FlavourInstModel, StorageInstModel + PortInstModel, FlavourInstModel, StorageInstModel, SubscriptionModel from lcm.pub.utils import restcall from lcm.pub.utils.jobutil import JobUtil from lcm.pub.utils.timeutil import now_time +from lcm.pub.utils.notificationsutil import NotificationsUtil from lcm.pub.vimapi import api @@ -84,6 +85,7 @@ class TestNFTerminate(TestCase): NetworkInstModel.objects.all().delete() SubNetworkInstModel.objects.all().delete() PortInstModel.objects.all().delete() + NfInstModel.objects.all().delete() def assert_job_result(self, job_id, job_progress, job_detail): jobs = JobStatusModel.objects.filter(jobid=job_id, @@ -97,10 +99,49 @@ class TestNFTerminate(TestCase): "terminationType": "GRACEFUL", "gracefulTerminationTimeout": 120 } - NfInstModel(nfinstid='12', nf_name='VNF1').save() + NfInstModel(nfinstid='12', + nf_name='VNF1', + nf_desc="VNF DESC", + vnfdid="1", + netype="XGW", + vendor="ZTE", + vnfSoftwareVersion="V1", + version="V1", + package_id="2", + status='INSTANTIATED').save() mock_run.re.return_value = None response = self.client.post("/api/vnflcm/v1/vnf_instances/12/terminate", data=req_data, format='json') - self.failUnlessEqual(status.HTTP_202_ACCEPTED, response.status_code) + self.failUnlessEqual(status.HTTP_202_ACCEPTED, response.status_code, response.content) + + @mock.patch.object(TerminateVnf, 'run') + def test_terminate_vnf_not_found(self, mock_run): + req_data = { + "terminationType": "GRACEFUL", + "gracefulTerminationTimeout": 120 + } + mock_run.re.return_value = None + response = self.client.post("/api/vnflcm/v1/vnf_instances/567/terminate", data=req_data, format='json') + self.failUnlessEqual(status.HTTP_404_NOT_FOUND, response.status_code, response.content) + + @mock.patch.object(TerminateVnf, 'run') + def test_terminate_vnf_conflict(self, mock_run): + req_data = { + "terminationType": "GRACEFUL", + "gracefulTerminationTimeout": 120 + } + NfInstModel(nfinstid='123', + nf_name='VNF1', + nf_desc="VNF DESC", + vnfdid="1", + netype="XGW", + vendor="ZTE", + vnfSoftwareVersion="V1", + version="V1", + package_id="2", + status='NOT_INSTANTIATED').save() + mock_run.re.return_value = None + response = self.client.post("/api/vnflcm/v1/vnf_instances/123/terminate", data=req_data, format='json') + self.failUnlessEqual(status.HTTP_409_CONFLICT, response.status_code, response.content) def test_terminate_vnf_when_inst_id_not_exist(self): data = { @@ -115,7 +156,8 @@ class TestNFTerminate(TestCase): @mock.patch.object(restcall, 'call_req') @mock.patch.object(api, 'call') - def test_terminate_vnf_success(self, mock_call, mock_call_req): + @mock.patch.object(NotificationsUtil, 'post_notification') + def test_terminate_vnf_success(self, mock_post_notification, mock_call, mock_call_req): NfInstModel.objects.create(nfinstid='1111', nf_name='2222', vnfminstid='1', @@ -131,6 +173,32 @@ class TestNFTerminate(TestCase): vnfConfigurableProperties='todo', localizationLanguage='EN_US', create_time=now_time()) + + SubscriptionModel.objects.create( + subscription_id=str(uuid.uuid4()), + callback_uri='api/gvnfmdriver/v1/vnfs/lifecyclechangesnotification', + auth_info=json.JSONEncoder().encode({ + 'authType': ['BASIC'], + 'paramsBasic': { + 'userName': 'username', + 'password': 'password' + } + }), + notification_types=str([ + 'VnfLcmOperationOccurrenceNotification', + 'VnfIdentifierCreationNotification', + 'VnfIdentifierDeletionNotification' + ]), + operation_types=str(['TERMINATE']), + operation_states=str(['COMPLETED']), + vnf_instance_filter=json.JSONEncoder().encode({ + 'vnfdIds': ['111'], + 'vnfProductsFromProviders': [], + 'vnfInstanceIds': ['1111'], + 'vnfInstanceNames': [], + }) + ) + t1_apply_grant_result = [0, json.JSONEncoder().encode( { "id": "1", @@ -147,6 +215,7 @@ class TestNFTerminate(TestCase): t3_delete_flavor = [0, json.JSONEncoder().encode({"vim_id": "vimid_1"}), '200'] mock_call_req.side_effect = [t1_apply_grant_result, t2_lcm_notify_result, t3_delete_flavor] mock_call.return_value = None + mock_post_notification.return_value = None data = { "terminationType": "FORCEFUL", "gracefulTerminationTimeout": 120