def test_terminate_vnf_instance_already_not_instantiated( self, mock_log, mock_package_in_use, mock_get_lock): vnf_package_vnfd = self._create_and_upload_vnf_package() vnf_instance_data = fake_obj.get_vnf_instance_data( vnf_package_vnfd.vnfd_id) mock_package_in_use.return_value = True vnf_instance_data['instantiation_state'] =\ fields.VnfInstanceState.NOT_INSTANTIATED vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() terminate_vnf_req = objects.TerminateVnfRequest( termination_type=fields.VnfInstanceTerminationType.GRACEFUL) self.conductor.terminate(self.context, vnf_instance, terminate_vnf_req) self.vnflcm_driver.terminate_vnf.assert_not_called() mock_package_in_use.assert_not_called() expected_log = ('Terminate action cannot be performed on vnf %(id)s ' 'which is in %(state)s state.') mock_log.error.assert_called_once_with( expected_log, { 'id': vnf_instance.id, 'state': fields.VnfInstanceState.NOT_INSTANTIATED })
def test_save_error(self): vnf_instance_data = fakes.get_vnf_instance_data( self.vnf_package.vnfd_id) vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.id = uuidsentinel.id self.assertRaises(exceptions.VnfInstanceNotFound, vnf_instance.save)
def _create_vnf_instance(self): vnf_instance_data = fakes.get_vnf_instance_data( self.vnf_package_vnfd.vnfd_id) vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() return vnf_instance
def test_destroy(self, mock_vnf_destroy): vnf_instance_data = fakes.get_vnf_instance_data( self.vnf_package.vnfd_id) vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() vnf_instance.destroy(self.context) mock_vnf_destroy.assert_called_with(self.context, vnf_instance.id)
def test_get_all(self): vnf_instance_data = fakes.get_vnf_instance_data( self.vnf_package.vnfd_id) vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() result = objects.VnfInstanceList.get_all(self.context, expected_attrs=None) self.assertTrue(result.objects, list) self.assertTrue(result.objects)
def test_get_by_id(self): vnf_instance_data = fakes.get_vnf_instance_data( self.vnf_package.vnfd_id) vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() vnf_instance_by_id = objects.VnfInstance.get_by_id( self.context, vnf_instance.id) self.compare_obj(vnf_instance, vnf_instance_by_id, allow_missing=['instantiated_vnf_info', 'vim_connection_info'])
def test_update(self, mock_get_by_id): mock_get_by_id.return_value =\ fakes_vnflcm.return_vnf_package_with_deployment_flavour() vnf_instance_data = fakes.get_vnf_instance_data( self.vnf_package.vnfd_id) vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() id = uuidutils.generate_uuid() vnf_lcm_oppccs = fakes.get_lcm_op_occs_data(id, vnf_instance.id) vnf_instance.update(self.context, vnf_lcm_oppccs, self.body_data, self.vnfd_pkg_data, vnf_instance_data['vnfd_id'])
def test_heal_vnf_instance(self, mock_get_lock): vnf_package_vnfd = self._create_and_upload_vnf_package() vnf_instance_data = fake_obj.get_vnf_instance_data( vnf_package_vnfd.vnfd_id) vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() vnf_instance.instantiation_state = \ fields.VnfInstanceState.INSTANTIATED vnf_instance.save() heal_vnf_req = objects.HealVnfRequest(cause="healing request") self.conductor.heal(self.context, vnf_instance, heal_vnf_req) self.vnflcm_driver.heal_vnf.assert_called_once_with( self.context, mock.ANY, heal_vnf_req)
def test_vnf_instance_list_get_by_filters(self): vnf_instance_data = fakes.get_vnf_instance_data( self.vnf_package.vnfd_id) vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() filters = { 'field': 'instantiation_state', 'model': 'VnfInstance', 'value': 'NOT_INSTANTIATED', 'op': '==' } vnf_instance_list = objects.VnfInstanceList.get_by_filters( self.context, filters=filters) self.assertEqual(1, len(vnf_instance_list))
def test_create(self): vnf_instance_data = fakes.get_vnf_instance_data( self.vnf_package.vnfd_id) vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() self.assertTrue(vnf_instance.id) self.assertEqual('NOT_INSTANTIATED', vnf_instance.instantiation_state) self.assertEqual(self.vnf_package.vnfd_id, vnf_instance.vnfd_id) self.assertEqual('test vnf provider', vnf_instance.vnf_provider) self.assertEqual('Sample VNF', vnf_instance.vnf_product_name) self.assertEqual('1.0', vnf_instance.vnf_software_version) self.assertEqual('1.0', vnf_instance.vnfd_version) self.assertEqual(vnf_instance_data.get('tenant_id'), vnf_instance.tenant_id)
def test_save(self, mock_update_vnf): vnf_instance_data = fakes.get_vnf_instance_data( self.vnf_package.vnfd_id) vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() mock_update_vnf.return_value = \ fakes.vnf_instance_model_object(vnf_instance) vnf_instance.vnf_instance_name = 'fake-name' vnf_instance.save() mock_update_vnf.assert_called_with( self.context, vnf_instance.id, { 'vnf_instance_name': 'fake-name', 'vim_connection_info': []}, columns_to_join=['instantiated_vnf_info'])
def test_instantiate_vnf_instance_with_vnf_package_in_use( self, mock_vnf_package_in_use, mock_get_lock): vnf_package_vnfd = self._create_and_upload_vnf_package() vnf_instance_data = fake_obj.get_vnf_instance_data( vnf_package_vnfd.vnfd_id) mock_vnf_package_in_use.return_value = True vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() instantiate_vnf_req = vnflcm_fakes.get_instantiate_vnf_request_obj() self.conductor.instantiate(self.context, vnf_instance, instantiate_vnf_req) self.vnflcm_driver.instantiate_vnf.assert_called_once_with( self.context, mock.ANY, instantiate_vnf_req) mock_vnf_package_in_use.assert_called_once()
def test_instantiate_vnf_instance_failed_with_exception( self, mock_log, mock_is_package_in_use, mock_get_lock): vnf_package_vnfd = self._create_and_upload_vnf_package() vnf_instance_data = fake_obj.get_vnf_instance_data( vnf_package_vnfd.vnfd_id) vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() instantiate_vnf_req = vnflcm_fakes.get_instantiate_vnf_request_obj() mock_is_package_in_use.side_effect = Exception self.conductor.instantiate(self.context, vnf_instance, instantiate_vnf_req) self.vnflcm_driver.instantiate_vnf.assert_called_once_with( self.context, mock.ANY, instantiate_vnf_req) mock_is_package_in_use.assert_called_once() expected_log = 'Failed to update usage_state of vnf package %s' mock_log.error.assert_called_once_with(expected_log, vnf_package_vnfd.package_uuid)
def test_terminate_vnf_instance(self, mock_package_in_use, mock_get_lock): vnf_package_vnfd = self._create_and_upload_vnf_package() vnf_instance_data = fake_obj.get_vnf_instance_data( vnf_package_vnfd.vnfd_id) mock_package_in_use.return_value = True vnf_instance_data['instantiation_state'] =\ fields.VnfInstanceState.INSTANTIATED vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() terminate_vnf_req = objects.TerminateVnfRequest( termination_type=fields.VnfInstanceTerminationType.GRACEFUL) self.conductor.terminate(self.context, vnf_instance, terminate_vnf_req) self.vnflcm_driver.terminate_vnf.assert_called_once_with( self.context, mock.ANY, terminate_vnf_req) mock_package_in_use.assert_called_once()
def test_instantiate_vnf_instance_already_instantiated(self, mock_log, mock_package_in_use, mock_get_lock): vnf_package_vnfd = self._create_and_upload_vnf_package() vnf_instance_data = fake_obj.get_vnf_instance_data( vnf_package_vnfd.vnfd_id) vnf_instance_data['instantiation_state'] =\ fields.VnfInstanceState.INSTANTIATED vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() instantiate_vnf_req = vnflcm_fakes.get_instantiate_vnf_request_obj() self.conductor.instantiate(self.context, vnf_instance, instantiate_vnf_req) self.vnflcm_driver.instantiate_vnf.assert_not_called() mock_package_in_use.assert_not_called() expected_log = 'Vnf instance %(id)s is already in %(state)s state.' mock_log.error.assert_called_once_with(expected_log, {'id': vnf_instance.id, 'state': fields.VnfInstanceState.INSTANTIATED})
def test_terminate_vnf_instance_failed_to_update_usage_state( self, mock_log, mock_is_package_in_use, mock_get_lock): vnf_package_vnfd = self._create_and_upload_vnf_package() vnf_instance_data = fake_obj.get_vnf_instance_data( vnf_package_vnfd.vnfd_id) vnf_instance_data['instantiation_state'] =\ fields.VnfInstanceState.INSTANTIATED vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() terminate_vnf_req = objects.TerminateVnfRequest( termination_type=fields.VnfInstanceTerminationType.GRACEFUL) mock_is_package_in_use.side_effect = Exception self.conductor.terminate(self.context, vnf_instance, terminate_vnf_req) self.vnflcm_driver.terminate_vnf.assert_called_once_with( self.context, mock.ANY, terminate_vnf_req) expected_msg = "Failed to update usage_state of vnf package %s" mock_log.error.assert_called_once_with(expected_msg, vnf_package_vnfd.package_uuid)
def test_heal_vnf_instance_already_not_instantiated(self, mock_log, mock_get_lock): vnf_package_vnfd = self._create_and_upload_vnf_package() vnf_instance_data = fake_obj.get_vnf_instance_data( vnf_package_vnfd.vnfd_id) vnf_instance_data['instantiation_state'] =\ fields.VnfInstanceState.NOT_INSTANTIATED vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() heal_vnf_req = objects.HealVnfRequest(cause="healing request") self.conductor.heal(self.context, vnf_instance, heal_vnf_req) self.vnflcm_driver.heal_vnf.assert_not_called() expected_log = ('Heal action cannot be performed on vnf %(id)s ' 'which is in %(state)s state.') mock_log.error.assert_called_once_with(expected_log, {'id': vnf_instance.id, 'state': fields.VnfInstanceState.NOT_INSTANTIATED})
def _create_vnf_instance(self): vnf_package = objects.VnfPackage(context=self.context, **fakes.vnf_package_data) vnf_package.create() vnf_pack_vnfd = fakes.get_vnf_package_vnfd_data( vnf_package.id, uuidsentinel.vnfd_id) vnf_pack_vnfd_obj = objects.VnfPackageVnfd(context=self.context, **vnf_pack_vnfd) vnf_pack_vnfd_obj.create() vnf_package.vnf_package = "ONBOARDED" vnf_package.save() vnf_instance_data = fakes.get_vnf_instance_data( vnf_pack_vnfd_obj.vnfd_id) vnf_instance = objects.VnfInstance(context=self.context, **vnf_instance_data) vnf_instance.create() return vnf_instance