Ejemplo n.º 1
0
def return_vnf_instance(
        instantiated_state=fields.VnfInstanceState.NOT_INSTANTIATED,
        **updates):

    if instantiated_state == fields.VnfInstanceState.NOT_INSTANTIATED:
        data = _model_non_instantiated_vnf_instance(**updates)
        data['instantiation_state'] = instantiated_state
        vnf_instance_obj = objects.VnfInstance(**data)
    else:
        data = _model_non_instantiated_vnf_instance(**updates)
        data['instantiation_state'] = instantiated_state
        vnf_instance_obj = objects.VnfInstance(**data)
        inst_vnf_info = objects.InstantiatedVnfInfo.obj_from_primitive(
            {
                "ext_cp_info": [],
                'ext_virtual_link_info': [],
                'ext_managed_virtual_link_info': [],
                'vnfc_resource_info': [],
                'vnf_virtual_link_resource_info': [],
                'virtual_storage_resource_info': [],
                "flavour_id": "simple",
                "additional_params": {
                    "key": "value"
                },
                'vnf_state': "STARTED"
            }, None)

        vnf_instance_obj.instantiated_vnf_info = inst_vnf_info

    return vnf_instance_obj
Ejemplo n.º 2
0
    def create(self, request, body):
        context = request.environ['tacker.context']
        context.can(vnf_lcm_policies.VNFLCM % 'create')

        req_body = utils.convert_camelcase_to_snakecase(body)
        vnfd_id = req_body.get('vnfd_id')
        try:
            vnfd = objects.VnfPackageVnfd.get_by_id(request.context, vnfd_id)
        except exceptions.VnfPackageVnfdNotFound as exc:
            raise webob.exc.HTTPBadRequest(explanation=six.text_type(exc))

        vnf_instance = objects.VnfInstance(
            context=request.context,
            vnf_instance_name=req_body.get('vnf_instance_name'),
            vnf_instance_description=req_body.get('vnf_instance_description'),
            vnfd_id=vnfd_id,
            instantiation_state=fields.VnfInstanceState.NOT_INSTANTIATED,
            vnf_provider=vnfd.vnf_provider,
            vnf_product_name=vnfd.vnf_product_name,
            vnf_software_version=vnfd.vnf_software_version,
            vnfd_version=vnfd.vnfd_version,
            vnf_pkg_id=vnfd.package_uuid,
            tenant_id=request.context.project_id,
            vnf_metadata=req_body.get('metadata'))

        vnf_instance.create()
        result = self._view_builder.create(vnf_instance)
        headers = {"location": self._get_vnf_instance_href(vnf_instance)}
        return wsgi.ResponseObject(result, headers=headers)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
    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
            })
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
 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'])
Ejemplo n.º 9
0
    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'])
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
 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)
Ejemplo n.º 12
0
 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))
Ejemplo n.º 13
0
 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()
Ejemplo n.º 14
0
 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'])
Ejemplo n.º 15
0
    def _create_vnf_instance(self, vim_connection_info=None):
        vnf_instance = objects.VnfInstance(
            context=self.context,
            vnf_instance_name="Sample vnf instance name",
            vnf_instance_description="Sample vnf instance description",
            vnfd_id=uuidsentinel.vnfd_id,
            instantiation_state=fields.VnfInstanceState.INSTANTIATED,
            vnf_provider='Company',
            vnf_product_name='Sample VNF',
            vnf_software_version='1.0',
            vnfd_version='1.0',
            tenant_id=uuidsentinel.tenant_id)

        if vim_connection_info:
            vnf_instance.vim_connection_info = vim_connection_info

        return vnf_instance
Ejemplo n.º 16
0
 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)
Ejemplo n.º 17
0
def get_vnf_instance_object(
        instantiated_vnf_info=None,
        instantiation_state=fields.VnfInstanceState.NOT_INSTANTIATED):

    inst_vnf_info = instantiated_vnf_info or get_vnf_instantiated_info()

    vnf_instance = objects.VnfInstance(
        id=uuidsentinel.vnf_instance_id,
        vnf_instance_name="Test-Vnf-Instance",
        vnf_instance_description="vnf instance description",
        instantiation_state=instantiation_state,
        vnfd_id=uuidsentinel.vnfd_id,
        vnf_provider="sample provider",
        vnf_product_name="vnf product name",
        vnf_software_version='1.0',
        vnfd_version="2",
        instantiated_vnf_info=inst_vnf_info)

    return vnf_instance
Ejemplo n.º 18
0
 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})
Ejemplo n.º 19
0
 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)
Ejemplo n.º 20
0
    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()
Ejemplo n.º 21
0
    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})
Ejemplo n.º 22
0
    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
Ejemplo n.º 23
0
def return_vnf_instance(
        instantiated_state=fields.VnfInstanceState.NOT_INSTANTIATED,
        scale_status=None,
        **updates):

    if instantiated_state == fields.VnfInstanceState.NOT_INSTANTIATED:
        data = _model_non_instantiated_vnf_instance(**updates)
        data['instantiation_state'] = instantiated_state
        vnf_instance_obj = objects.VnfInstance(**data)

    elif scale_status:
        data = _model_non_instantiated_vnf_instance(**updates)
        data['instantiation_state'] = instantiated_state
        vnf_instance_obj = objects.VnfInstance(**data)

        get_instantiated_vnf_info = {
            'flavour_id': uuidsentinel.flavour_id,
            'vnf_state': 'STARTED',
            'instance_id': uuidsentinel.instance_id
        }
        instantiated_vnf_info = get_instantiated_vnf_info

        s_status = {"aspect_id": "SP1", "scale_level": 1}
        scale_status = objects.ScaleInfo(**s_status)

        instantiated_vnf_info.update({
            "ext_cp_info": [],
            'ext_virtual_link_info': [],
            'ext_managed_virtual_link_info': [],
            'vnfc_resource_info': [],
            'vnf_virtual_link_resource_info': [],
            'virtual_storage_resource_info': [],
            "flavour_id": "simple",
            "scale_status": [scale_status],
            "vnf_instance_id": "171f3af2-a753-468a-b5a7-e3e048160a79",
            "additional_params": {
                "key": "value"
            },
            'vnf_state': "STARTED"
        })
        info_data = objects.InstantiatedVnfInfo(**instantiated_vnf_info)

        vnf_instance_obj.instantiated_vnf_info = info_data
    else:
        data = _model_non_instantiated_vnf_instance(**updates)
        data['instantiation_state'] = instantiated_state
        vnf_instance_obj = objects.VnfInstance(**data)
        inst_vnf_info = objects.InstantiatedVnfInfo.obj_from_primitive(
            {
                "ext_cp_info": [],
                'ext_virtual_link_info': [],
                'ext_managed_virtual_link_info': [],
                'vnfc_resource_info': [],
                'vnf_virtual_link_resource_info': [],
                'virtual_storage_resource_info': [],
                "flavour_id": "simple",
                "additional_params": {
                    "key": "value"
                },
                'vnf_state': "STARTED"
            }, None)

        vnf_instance_obj.instantiated_vnf_info = inst_vnf_info

    return vnf_instance_obj
Ejemplo n.º 24
0
 def test_destroy_failure_without_id(self):
     vnf_instance_obj = objects.VnfInstance(context=self.context)
     self.assertRaises(exceptions.ObjectActionError,
                       vnf_instance_obj.destroy, self.context)
Ejemplo n.º 25
0
 def test_create_failure_with_id(self):
     vnf_instance_data = fakes.get_vnf_instance_data_with_id(
         self.vnf_package.vnfd_id)
     vnf_instance = objects.VnfInstance(context=self.context,
                                        **vnf_instance_data)
     self.assertRaises(exceptions.ObjectActionError, vnf_instance.create)