Merge "Fix Instantiate rollback not deleting glance image"

This commit is contained in:
Zuul
2023-08-30 21:27:07 +00:00
committed by Gerrit Code Review
3 changed files with 41 additions and 2 deletions

View File

@@ -404,3 +404,12 @@ class LocalNfvo(object):
fields.PackageUsageStateType.NOT_IN_USE)
self._update_vnf_pkg_usage_state(context, inst.vnfdId,
fields.PackageUsageStateType.IN_USE)
elif lcmocc.operation == v2_fields.LcmOperationType.INSTANTIATE:
if (lcmocc.operationState ==
v2_fields.LcmOperationStateType.ROLLED_BACK):
vim_info = inst_utils.select_vim_info(inst.vimConnectionInfo)
if vim_info is None:
# never happen. just for code consistency.
return
if vim_info.vimType == 'ETSINFV.OPENSTACK_KEYSTONE.V_3':
self._glance_delete_images(vim_info, inst.id)

View File

@@ -230,7 +230,7 @@ class VnfLcmErrorHandlingTest(test_vnflcm_basic_common.CommonVnfLcmTest):
self.check_resp_body(lcmocc, expected_attrs)
# 9. Delete VNF instance
resp, body = self.delete_vnf_instance(inst_id)
resp, body = self.exec_lcm_operation(self.delete_vnf_instance, inst_id)
self.assertEqual(204, resp.status_code)
self.check_resp_headers_in_delete(resp)

View File

@@ -690,7 +690,7 @@ class TestLocalNfvo(base.BaseTestCase):
@mock.patch.object(local_nfvo.LocalNfvo, '_glance_delete_images')
@mock.patch.object(local_nfvo.LocalNfvo, '_update_vnf_pkg_usage_state')
def test_recv_lcmocc_notification(self, mock_delete_image, mock_update):
def test_recv_lcmocc_notification(self, mock_update, mock_delete_image):
# terminate-processing
req_inst = objects.InstantiateVnfRequest.from_dict(_inst_req_example)
@@ -729,6 +729,7 @@ class TestLocalNfvo(base.BaseTestCase):
}
lcmocc.operationState = fields.LcmOperationStateType.COMPLETED
self.local_nfvo.recv_lcmocc_notification(self.context, lcmocc, inst)
self.assertEqual(1, mock_delete_image.call_count)
# change_vnfpkg-processing
req = objects.ChangeCurrentVnfPkgRequest.from_dict(
@@ -754,3 +755,32 @@ class TestLocalNfvo(base.BaseTestCase):
self.local_nfvo.inst_vnfd_id = {inst.id: req.vnfdId}
lcmocc.operationState = fields.LcmOperationStateType.COMPLETED
self.local_nfvo.recv_lcmocc_notification(self.context, lcmocc, inst)
# instantiate-rolled_back
req_inst = objects.InstantiateVnfRequest.from_dict(_inst_req_example)
inst = objects.VnfInstanceV2(
# required fields
id=uuidutils.generate_uuid(),
vnfdId=SAMPLE_VNFD_ID,
vnfProvider='provider',
vnfProductName='product name',
vnfSoftwareVersion='software version',
vnfdVersion='vnfd version',
instantiationState='NOT_INSTANTIATED',
vimConnectionInfo=req_inst.vimConnectionInfo,
)
lcmocc = objects.VnfLcmOpOccV2(
# required fields
id=uuidutils.generate_uuid(),
operationState=fields.LcmOperationStateType.ROLLED_BACK,
stateEnteredTime=datetime.utcnow(),
startTime=datetime.utcnow(),
vnfInstanceId=inst.id,
operation=fields.LcmOperationType.INSTANTIATE,
isAutomaticInvocation=False,
isCancelPending=False,
operationParams=req_inst)
mock_delete_image.reset_mock()
self.local_nfvo.recv_lcmocc_notification(self.context, lcmocc, inst)
self.assertEqual(1, mock_delete_image.call_count)