Пример #1
0
class ExtVirtualLinkData(base.TackerObject):
    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'id':
        fields.StringField(nullable=False),
        'resource_id':
        fields.StringField(nullable=False),
        'ext_cps':
        fields.ListOfObjectsField('VnfExtCpData', nullable=True, default=[]),
        'ext_link_ports':
        fields.ListOfObjectsField('ExtLinkPortData', nullable=True,
                                  default=[]),
    }

    @classmethod
    def obj_from_primitive(cls, primitive, context):
        if 'tacker_object.name' in primitive:
            obj_ext_virt_link = super(ExtVirtualLinkData,
                                      cls).obj_from_primitive(
                                          primitive, context)
        else:
            if 'ext_cps' in primitive.keys():
                obj_data = [
                    VnfExtCpData.obj_from_primitive(ext_cp, context)
                    for ext_cp in primitive.get('ext_cps', [])
                ]
                primitive.update({'ext_cps': obj_data})

            if 'ext_link_ports' in primitive.keys():
                obj_data = [
                    ExtLinkPortData.obj_from_primitive(ext_link_port_data,
                                                       context)
                    for ext_link_port_data in primitive.get(
                        'ext_link_ports', [])
                ]
                primitive.update({'ext_link_ports': obj_data})

            obj_ext_virt_link = ExtVirtualLinkData._from_dict(primitive)

        return obj_ext_virt_link

    @classmethod
    def _from_dict(cls, data_dict):
        id = data_dict.get('id')
        resource_id = data_dict.get('resource_id')
        ext_cps = data_dict.get('ext_cps', [])
        ext_link_ports = data_dict.get('ext_link_ports', [])

        obj = cls(id=id,
                  resource_id=resource_id,
                  ext_cps=ext_cps,
                  ext_link_ports=ext_link_ports)
        return obj
Пример #2
0
class VimAssets(base.TackerObject):

    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'compute_resource_flavours':
        fields.ListOfObjectsField('VimComputeResourceFlavour',
                                  nullable=True,
                                  default=[]),
        'software_images':
        fields.ListOfObjectsField('VimSoftwareImage',
                                  nullable=True,
                                  default=[])
    }

    @classmethod
    def obj_from_primitive(cls, primitive, context):
        if 'tacker_object.name' in primitive:
            obj_vim_assets = super(VimAssets,
                                   cls).obj_from_primitive(primitive, context)
        else:
            if 'compute_resource_flavours' in primitive.keys():
                obj_data = [
                    VimComputeResourceFlavour._from_dict(flavour) for flavour
                    in primitive.get('compute_resource_flavours', [])
                ]
                primitive.update({'compute_resource_flavours': obj_data})

            if 'software_images' in primitive.keys():
                obj_data = [
                    VimSoftwareImage._from_dict(img)
                    for img in primitive.get('software_images', [])
                ]
                primitive.update({'software_images': obj_data})
            obj_vim_assets = VimAssets._from_dict(primitive)

        return obj_vim_assets

    @classmethod
    def _from_dict(cls, data_dict):
        compute_resource_flavours = data_dict.get('compute_resource_flavours',
                                                  [])
        software_images = data_dict.get('software_images', [])

        obj = cls(compute_resource_flavours=compute_resource_flavours,
                  software_images=software_images)
        return obj
Пример #3
0
class VnfDeploymentFlavoursList(ovoo_base.ObjectListBase, base.TackerObject):

    VERSION = '1.0'

    fields = {
        'objects': fields.ListOfObjectsField('VnfDeploymentFlavour')
    }
Пример #4
0
class VnfExtCpData(base.TackerObject):
    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'cpd_id': fields.StringField(nullable=False),
        'cp_config': fields.ListOfObjectsField(
            'VnfExtCpConfig', nullable=True, default=[]),
    }

    @classmethod
    def obj_from_primitive(cls, primitive, context):
        if 'tacker_object.name' in primitive:
            obj_vnf_ext_cp_data = super(VnfExtCpData, cls).obj_from_primitive(
                primitive, context)
        else:
            if 'cp_config' in primitive.keys():
                obj_data = [VnfExtCpConfig.obj_from_primitive(
                    vnf_ext_cp_conf, context)
                    for vnf_ext_cp_conf in primitive.get('cp_config', [])]
                primitive.update({'cp_config': obj_data})

            obj_vnf_ext_cp_data = VnfExtCpData._from_dict(primitive)

        return obj_vnf_ext_cp_data

    @classmethod
    def _from_dict(cls, data_dict):
        cpd_id = data_dict.get('cpd_id')
        cp_config = data_dict.get('cp_config', [])

        obj = cls(cpd_id=cpd_id, cp_config=cp_config)
        return obj
Пример #5
0
class IpOverEthernetAddressData(base.TackerObject):

    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'mac_address': fields.StringField(nullable=True, default=None),
        'ip_addresses': fields.ListOfObjectsField('IpAddress', nullable=True,
            default=[]),
    }

    @classmethod
    def obj_from_primitive(cls, primitive, context):
        if 'tacker_object.name' in primitive:
            ip_over_ethernet = super(
                IpOverEthernetAddressData, cls).obj_from_primitive(
                primitive, context)
        else:
            if 'ip_addresses' in primitive.keys():
                obj_data = [IpAddress._from_dict(
                    ip_address) for ip_address in primitive.get(
                        'ip_addresses', [])]
                primitive.update({'ip_addresses': obj_data})

            ip_over_ethernet = IpOverEthernetAddressData._from_dict(primitive)

        return ip_over_ethernet

    @classmethod
    def _from_dict(cls, data_dict):
        mac_address = data_dict.get('mac_address')
        ip_addresses = data_dict.get('ip_addresses', [])
        obj = cls(mac_address=mac_address, ip_addresses=ip_addresses)
        return obj
class HealVnfRequest(base.TackerObject):

    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'cause': fields.StringField(),
        'additional_params':
        fields.ListOfObjectsField('HealVnfAdditionalParams')
    }
Пример #7
0
class VnfResourceList(ovoo_base.ObjectListBase, base.TackerObject):

    VERSION = '1.0'

    fields = {'objects': fields.ListOfObjectsField('VnfResource')}

    @base.remotable_classmethod
    def get_by_vnf_instance_id(cls, context, vnf_instance_id):
        db_vnf_resources = _vnf_resource_list(context, vnf_instance_id)
        return _make_vnf_resources_list(context, cls(), db_vnf_resources)
Пример #8
0
class VnfList(ovoo_base.ObjectListBase, base.TackerObject):

    VERSION = '1.0'

    fields = {'objects': fields.ListOfObjectsField('VNF')}

    @base.remotable_classmethod
    def vnf_index_list(cls, id, context):
        # get vnf_instance data
        expected_attrs = ["vnf_attribute", "vnfd"]
        db_vnf = _vnf_get(context, id, columns_to_join=expected_attrs)
        return db_vnf
Пример #9
0
class VnfInstanceList(ovoo_base.ObjectListBase, base.TackerObject):

    VERSION = '1.0'

    fields = {'objects': fields.ListOfObjectsField('VnfInstance')}

    @base.remotable_classmethod
    def get_all(cls, context, expected_attrs=None):
        expected_attrs = ["instantiated_vnf_info"]
        db_vnf_instances = _vnf_instance_list(context,
                                              columns_to_join=expected_attrs)
        return _make_vnf_instance_list(context, cls(), db_vnf_instances,
                                       expected_attrs)
Пример #10
0
class VnfDeploymentFlavoursList(ovoo_base.ObjectListBase, base.TackerObject):

    VERSION = '1.0'

    fields = {
        'objects': fields.ListOfObjectsField('VnfDeploymentFlavour')
    }

    def to_dict(self, include_fields=None):
        software_images = list()
        for deployment_flavour in self.objects:
            images = deployment_flavour.to_dict(include_fields=include_fields)
            if images:
                software_images.extend(images)

        return software_images
Пример #11
0
class VnfPackagesList(ovoo_base.ObjectListBase, base.TackerObject):

    VERSION = '1.0'

    fields = {'objects': fields.ListOfObjectsField('VnfPackage')}

    @base.remotable_classmethod
    def get_all(cls, context, expected_attrs=None):
        db_vnf_packages = _vnf_package_list(context,
                                            columns_to_join=expected_attrs)
        return _make_vnf_packages_list(context, cls(), db_vnf_packages,
                                       expected_attrs)

    @base.remotable_classmethod
    def get_by_filters(cls, context, read_deleted=None, filters=None):
        db_vnf_packages = _vnf_package_list_by_filters(
            context, read_deleted=read_deleted, filters=filters)
        return _make_vnf_packages_list(context, cls(), db_vnf_packages)
Пример #12
0
class VnfInstanceList(ovoo_base.ObjectListBase, base.TackerObject):

    VERSION = '1.0'

    fields = {'objects': fields.ListOfObjectsField('VnfInstance')}

    @base.remotable_classmethod
    def get_all(cls, context, expected_attrs=None):
        expected_attrs = ["instantiated_vnf_info"]
        db_vnf_instances = _vnf_instance_list(context,
                                              columns_to_join=expected_attrs)
        return _make_vnf_instance_list(context, cls(), db_vnf_instances,
                                       expected_attrs)

    @base.remotable_classmethod
    def get_by_filters(cls, context, filters=None, expected_attrs=None):
        expected_attrs = ["instantiated_vnf_info"]
        db_vnf_instances = _vnf_instance_list_by_filter(
            context, columns_to_join=expected_attrs, filters=filters)

        return _make_vnf_instance_list(context, cls(), db_vnf_instances,
                                       expected_attrs)

    @base.remotable_classmethod
    def vnf_instance_list(cls, vnfd_id, context):
        # get vnf_instance data
        expected_attrs = ["instantiated_vnf_info"]
        db_vnf_instances = _vnf_instance_get(context,
                                             vnfd_id,
                                             columns_to_join=expected_attrs)

        vnf_instance_cls = VnfInstance
        vnf_instance_data = ""
        vnf_instance_obj = vnf_instance_cls._from_db_object(
            context,
            vnf_instance_cls(context),
            db_vnf_instances,
            expected_attrs=expected_attrs)
        vnf_instance_data = vnf_instance_obj

        return vnf_instance_data
Пример #13
0
class HealVnfRequest(base.TackerObject):

    # Version 1.0: Initial version
    # Version 1.1: Added vnf_instance_id
    VERSION = '1.1'

    fields = {
        'vnfc_instance_id':
        fields.ListOfStringsField(nullable=True, default=[]),
        'cause':
        fields.StringField(nullable=True, default=None),
        'additional_params':
        fields.ListOfObjectsField('HealVnfAdditionalParams', default=[])
    }

    def obj_make_compatible(self, primitive, target_version):
        super(HealVnfRequest,
              self).obj_make_compatible(primitive, target_version)
        target_version = versionutils.convert_version_to_tuple(target_version)
        if target_version < (1, 1) and 'vnfc_instance_id' in primitive:
            del primitive['vnfc_instance_id']
Пример #14
0
class VnfExtCpConfig(base.TackerObject):
    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'cp_instance_id':
        fields.StringField(nullable=True, default=None),
        'link_port_id':
        fields.StringField(nullable=True, default=None),
        'cp_protocol_data':
        fields.ListOfObjectsField('CpProtocolData', nullable=True, default=[]),
    }

    @classmethod
    def obj_from_primitive(cls, primitive, context):
        if 'tacker_object.name' in primitive:
            obj_ext_cp_config = super(VnfExtCpConfig, cls).obj_from_primitive(
                primitive, context)
        else:
            if 'cp_protocol_data' in primitive.keys():
                obj_data = [
                    CpProtocolData.obj_from_primitive(cp_protocol, context)
                    for cp_protocol in primitive.get('cp_protocol_data', [])
                ]
                primitive.update({'cp_protocol_data': obj_data})

            obj_ext_cp_config = VnfExtCpConfig._from_dict(primitive)

        return obj_ext_cp_config

    @classmethod
    def _from_dict(cls, data_dict):
        cp_instance_id = data_dict.get('cp_instance_id')
        link_port_id = data_dict.get('link_port_id')
        cp_protocol_data = data_dict.get('cp_protocol_data', [])

        obj = cls(cp_instance_id=cp_instance_id,
                  link_port_id=link_port_id,
                  cp_protocol_data=cp_protocol_data)
        return obj
Пример #15
0
class VnfcResourceInfo(base.TackerObject, base.TackerPersistentObject):
    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'id':
        fields.StringField(nullable=False),
        'vdu_id':
        fields.StringField(nullable=False),
        'compute_resource':
        fields.ObjectField('ResourceHandle', nullable=False),
        'storage_resource_ids':
        fields.ListOfStringsField(nullable=True, default=[]),
        'vnfc_cp_info':
        fields.ListOfObjectsField('VnfcCpInfo', nullable=True, default=[]),
        'metadata':
        fields.DictOfStringsField(nullable=True, default={})
    }

    @classmethod
    def obj_from_primitive(cls, primitive, context):
        if 'tacker_object.name' in primitive:
            vnfc_resource_info = super(VnfcResourceInfo,
                                       cls).obj_from_primitive(
                                           primitive, context)
        else:
            if 'compute_resource' in primitive.keys():
                obj_data = ResourceHandle._from_dict(
                    primitive.get('compute_resource'))
                primitive.update({'compute_resource': obj_data})

            if 'vnfc_cp_info' in primitive.keys():
                obj_data = [
                    VnfcCpInfo.obj_from_primitive(vnfc_cp_info, context)
                    for vnfc_cp_info in primitive.get('vnfc_cp_info', [])
                ]
                primitive.update({'vnfc_cp_info': obj_data})

            vnfc_resource_info = VnfcResourceInfo._from_dict(primitive)

        return vnfc_resource_info

    @classmethod
    def _from_dict(cls, data_dict):
        id = data_dict.get('id')
        vdu_id = data_dict.get('vdu_id')
        compute_resource = data_dict.get('compute_resource')
        storage_resource_ids = data_dict.get('storage_resource_ids', [])
        vnfc_cp_info = data_dict.get('vnfc_cp_info', [])
        metadata = data_dict.get('metadata', {})

        obj = cls(id=id,
                  vdu_id=vdu_id,
                  compute_resource=compute_resource,
                  storage_resource_ids=storage_resource_ids,
                  vnfc_cp_info=vnfc_cp_info,
                  metadata=metadata)

        return obj

    def to_dict(self):
        data = {
            'id': self.id,
            'vdu_id': self.vdu_id,
            'compute_resource': self.compute_resource.to_dict(),
            'storage_resource_ids': self.storage_resource_ids
        }

        if self.vnfc_cp_info:
            vnfc_cp_info_list = []
            for vnfc_cp_info in self.vnfc_cp_info:
                vnfc_cp_info_list.append(vnfc_cp_info.to_dict())

            data.update({'vnfc_cp_info': vnfc_cp_info_list})

        return data
Пример #16
0
class VnfExtCpInfo(base.TackerObject, base.TackerObjectDictCompat,
                   base.TackerPersistentObject):

    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'id':
        fields.StringField(nullable=False),
        'cpd_id':
        fields.StringField(nullable=False),
        'cp_protocol_info':
        fields.ListOfObjectsField('CpProtocolInfo', nullable=False,
                                  default=[]),
        'ext_link_port_id':
        fields.StringField(nullable=True, default=None),
        'associated_vnfc_cp_id':
        fields.StringField(nullable=False)
    }

    @classmethod
    def obj_from_primitive(cls, primitive, context):
        if 'tacker_object.name' in primitive:
            obj_ext_cp_info = super(VnfExtCpInfo, cls).obj_from_primitive(
                primitive, context)
        else:
            if 'cp_protocol_info' in primitive.keys():
                obj_data = [
                    CpProtocolInfo.obj_from_primitive(ext_cp, context)
                    for ext_cp in primitive.get('cp_protocol_info', [])
                ]
                primitive.update({'cp_protocol_info': obj_data})

            obj_ext_cp_info = VnfExtCpInfo._from_dict(primitive)

        return obj_ext_cp_info

    @classmethod
    def _from_dict(cls, data_dict):
        id = data_dict.get('id')
        cpd_id = data_dict.get('cpd_id')
        cp_protocol_info = data_dict.get('cp_protocol_info', [])
        ext_link_port_id = data_dict.get('ext_link_port_id')
        associated_vnfc_cp_id = data_dict.get('associated_vnfc_cp_id')

        obj = cls(id=id,
                  cpd_id=cpd_id,
                  cp_protocol_info=cp_protocol_info,
                  ext_link_port_id=ext_link_port_id,
                  associated_vnfc_cp_id=associated_vnfc_cp_id)
        return obj

    def to_dict(self):
        data = {
            'id': self.id,
            'cpd_id': self.cpd_id,
            'ext_link_port_id': self.ext_link_port_id,
            'associated_vnfc_cp_id': self.associated_vnfc_cp_id
        }

        cp_protocol_info_list = []
        for cp_protocol_info in self.cp_protocol_info:
            cp_protocol_info_list.append(cp_protocol_info.to_dict())

        data.update({'cp_protocol_info': cp_protocol_info_list})

        return data
Пример #17
0
class InstantiateVnfRequest(base.TackerObject):
    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'flavour_id': fields.StringField(nullable=False),
        'instantiation_level_id': fields.StringField(nullable=True,
                                                     default=None),
        'ext_managed_virtual_links': fields.ListOfObjectsField(
            'ExtManagedVirtualLinkData', nullable=True, default=[]),
        'vim_connection_info': fields.ListOfObjectsField(
            'VimConnectionInfo', nullable=True, default=[]),
        'ext_virtual_links': fields.ListOfObjectsField(
            'ExtVirtualLinkData', nullable=True, default=[]),
        'additional_params': fields.DictOfStringsField(nullable=True,
            default={}),
    }

    @classmethod
    def obj_from_primitive(cls, primitive, context):
        if 'tacker_object.name' in primitive:
            obj_instantiate_vnf_req = super(
                InstantiateVnfRequest, cls).obj_from_primitive(
                primitive, context)
        else:
            if 'ext_managed_virtual_links' in primitive.keys():
                obj_data = [ExtManagedVirtualLinkData._from_dict(
                    ext_manage) for ext_manage in primitive.get(
                    'ext_managed_virtual_links', [])]
                primitive.update({'ext_managed_virtual_links': obj_data})

            if 'vim_connection_info' in primitive.keys():
                obj_data = [objects.VimConnectionInfo._from_dict(
                    vim_conn) for vim_conn in primitive.get(
                    'vim_connection_info', [])]
                primitive.update({'vim_connection_info': obj_data})

            if 'ext_virtual_links' in primitive.keys():
                obj_data = [ExtVirtualLinkData.obj_from_primitive(
                    ext_vir_link, context) for ext_vir_link in primitive.get(
                    'ext_virtual_links', [])]
                primitive.update({'ext_virtual_links': obj_data})
            obj_instantiate_vnf_req = InstantiateVnfRequest._from_dict(
                primitive)

        return obj_instantiate_vnf_req

    @classmethod
    def _from_dict(cls, data_dict):
        flavour_id = data_dict.get('flavour_id')
        instantiation_level_id = data_dict.get('instantiation_level_id')
        ext_managed_virtual_links = data_dict.get('ext_managed_virtual_links',
                                                  [])
        vim_connection_info = data_dict.get('vim_connection_info', [])
        ext_virtual_links = data_dict.get('ext_virtual_links', [])
        additional_params = data_dict.get('additional_params', {})

        return cls(flavour_id=flavour_id,
        instantiation_level_id=instantiation_level_id,
        ext_managed_virtual_links=ext_managed_virtual_links,
        vim_connection_info=vim_connection_info,
        ext_virtual_links=ext_virtual_links,
        additional_params=additional_params)

    @classmethod
    def from_vnf_instance(cls, vnf_instance):

        vnf_instantiated_info = vnf_instance.instantiated_vnf_info

        # Vim connection info
        vim_connection_info = _get_vim_connection_info(vnf_instance)

        # Flavour id
        flavour_id = vnf_instantiated_info.flavour_id

        # Instantiation level
        instantiation_level_id = vnf_instantiated_info.instantiation_level_id

        # Externally managed virtual links
        ext_managed_virtual_links = _get_ext_managed_virtual_links(
            vnf_instantiated_info)

        # External virtual links
        ext_virtual_links = _get_ext_virtual_link_data(vnf_instantiated_info)

        additional_params = vnf_instantiated_info.additional_params

        instantiate_vnf_request = cls(flavour_id=flavour_id,
            instantiation_level_id=instantiation_level_id,
            ext_managed_virtual_links=ext_managed_virtual_links,
            vim_connection_info=vim_connection_info,
            ext_virtual_links=ext_virtual_links,
            additional_params=additional_params)

        return instantiate_vnf_request
Пример #18
0
class VnfInstance(base.TackerObject, base.TackerPersistentObject,
                  base.TackerObjectDictCompat):

    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'id':
        fields.UUIDField(nullable=False),
        'vnf_instance_name':
        fields.StringField(nullable=True),
        'vnf_instance_description':
        fields.StringField(nullable=True),
        'instantiation_state':
        fields.VnfInstanceStateField(
            nullable=False, default=fields.VnfInstanceState.NOT_INSTANTIATED),
        'task_state':
        fields.StringField(nullable=True, default=None),
        'vnfd_id':
        fields.StringField(nullable=False),
        'vnf_provider':
        fields.StringField(nullable=False),
        'vnf_product_name':
        fields.StringField(nullable=False),
        'vnf_software_version':
        fields.StringField(nullable=False),
        'vnfd_version':
        fields.StringField(nullable=False),
        'vim_connection_info':
        fields.ListOfObjectsField('VimConnectionInfo',
                                  nullable=True,
                                  default=[]),
        'tenant_id':
        fields.StringField(nullable=False),
        'instantiated_vnf_info':
        fields.ObjectField('InstantiatedVnfInfo', nullable=True, default=None),
        'vnf_pkg_id':
        fields.StringField(nullable=False),
        'vnf_metadata':
        fields.DictOfStringsField(nullable=True, default={})
    }

    ALL_ATTRIBUTES = {
        'id': ('id', "string", 'VnfInstance'),
        'vnfInstanceName': ('vnf_instance_name', 'string', 'VnfInstance'),
        'vnfInstanceDescription':
        ('vnf_instance_description', 'string', 'VnfInstance'),
        'instantiationState': ('instantiation_state', 'string', 'VnfInstance'),
        'taskState': ('task_state', 'string', 'VnfInstance'),
        'vnfdId': ('vnfd_id', 'string', 'VnfInstance'),
        'vnfProvider': ('vnf_provider', 'string', 'VnfInstance'),
        'vnfProductName': ('vnf_product_name', 'string', 'VnfInstance'),
        'vnfSoftwareVersion':
        ('vnf_software_version', 'string', 'VnfInstance'),
        'vnfdVersion': ('vnfd_version', 'string', 'VnfInstance'),
        'tenantId': ('tenant_id', 'string', 'VnfInstance'),
        'vnfPkgId': ('vnf_pkg_id', 'string', 'VnfInstance'),
        'vimConnectionInfo/*': ('vim_connection_info', 'key_value_pair', {
            "key_column": "key",
            "value_column": "value",
            "model": "VnfInstance"
        }),
        'metadata/*': ('vnf_metadata', 'key_value_pair', {
            "key_column": "key",
            "value_column": "value",
            "model": "VnfInstance"
        }),
    }

    ALL_ATTRIBUTES.update(
        vnf_instantiated_info.InstantiatedVnfInfo.ALL_ATTRIBUTES)

    FLATTEN_ATTRIBUTES = utils.flatten_dict(ALL_ATTRIBUTES.copy())

    def __init__(self, context=None, **kwargs):
        super(VnfInstance, self).__init__(context, **kwargs)
        self.obj_set_defaults()

    @staticmethod
    def _from_db_object(context,
                        vnf_instance,
                        db_vnf_instance,
                        expected_attrs=None):

        special_fields = ["instantiated_vnf_info", "vim_connection_info"]
        for key in vnf_instance.fields:
            if key in special_fields:
                continue

            setattr(vnf_instance, key, db_vnf_instance[key])

        VnfInstance._load_instantiated_vnf_info_from_db_object(
            context, vnf_instance, db_vnf_instance)

        vim_connection_info = db_vnf_instance['vim_connection_info']
        vim_connection_list = [
            objects.VimConnectionInfo.obj_from_primitive(vim_info, context)
            for vim_info in vim_connection_info
        ]
        vnf_instance.vim_connection_info = vim_connection_list

        vnf_instance._context = context
        vnf_instance.obj_reset_changes()

        return vnf_instance

    @staticmethod
    def _load_instantiated_vnf_info_from_db_object(context, vnf_instance,
                                                   db_vnf_instance):
        if db_vnf_instance['instantiated_vnf_info']:
            inst_vnf_info = \
                objects.InstantiatedVnfInfo.obj_from_db_obj(context,
                        db_vnf_instance['instantiated_vnf_info'])
            vnf_instance.instantiated_vnf_info = inst_vnf_info

    @base.remotable
    def create(self):
        if self.obj_attr_is_set('id'):
            raise exceptions.ObjectActionError(action='create',
                                               reason=_('already created'))
        updates = self.obj_get_changes()

        if 'id' not in updates:
            updates['id'] = uuidutils.generate_uuid()
            self.id = updates['id']

        db_vnf_instance = _vnf_instance_create(self._context, updates)
        expected_attrs = ["instantiated_vnf_info"]
        self._from_db_object(self._context,
                             self,
                             db_vnf_instance,
                             expected_attrs=expected_attrs)

    @base.remotable
    def save(self):
        context = self._context

        updates = {}
        changes = self.obj_what_changed()

        for field in self.fields:
            if (self.obj_attr_is_set(field)
                    and isinstance(self.fields[field], fields.ObjectField)):
                try:
                    getattr(self, '_save_%s' % field)(context)
                except AttributeError:
                    LOG.exception('No save handler for %s', field)
            elif (self.obj_attr_is_set(field) and isinstance(
                    self.fields[field], fields.ListOfObjectsField)):
                field_list = getattr(self, field)
                updates[field] = [obj.obj_to_primitive() for obj in field_list]
            elif field in changes:
                updates[field] = self[field]

        expected_attrs = ["instantiated_vnf_info"]
        db_vnf_instance = _vnf_instance_update(self._context,
                                               self.id,
                                               updates,
                                               columns_to_join=expected_attrs)
        self._from_db_object(self._context, self, db_vnf_instance)

    def _save_instantiated_vnf_info(self, context):
        if self.instantiated_vnf_info:
            with self.instantiated_vnf_info.obj_alternate_context(context):
                self.instantiated_vnf_info.save()

    @base.remotable
    def destroy(self, context):
        if not self.obj_attr_is_set('id'):
            raise exceptions.ObjectActionError(action='destroy',
                                               reason='no uuid')

        _destroy_vnf_instance(context, self.id)

    def to_dict(self):
        data = {
            'id': self.id,
            'vnf_instance_name': self.vnf_instance_name,
            'vnf_instance_description': self.vnf_instance_description,
            'instantiation_state': self.instantiation_state,
            'vnfd_id': self.vnfd_id,
            'vnf_provider': self.vnf_provider,
            'vnf_product_name': self.vnf_product_name,
            'vnf_software_version': self.vnf_software_version,
            'vnf_pkg_id': self.vnf_pkg_id,
            'vnfd_version': self.vnfd_version,
            'vnf_metadata': self.vnf_metadata
        }

        if (self.instantiation_state == fields.VnfInstanceState.INSTANTIATED
                and self.instantiated_vnf_info):
            data.update({
                'instantiated_vnf_info':
                self.instantiated_vnf_info.to_dict()
            })

            vim_connection_info_list = []
            for vim_connection_info in self.vim_connection_info:
                vim_connection_info_list.append(vim_connection_info.to_dict())
            data.update({'vim_connection_info': vim_connection_info_list})

        return data

    @base.remotable_classmethod
    def get_by_id(cls, context, id):
        expected_attrs = ["instantiated_vnf_info"]
        db_vnf_instance = _vnf_instance_get_by_id(
            context, id, columns_to_join=expected_attrs)
        return cls._from_db_object(context,
                                   cls(),
                                   db_vnf_instance,
                                   expected_attrs=expected_attrs)
Пример #19
0
class InstantiatedVnfInfo(base.TackerObject, base.TackerObjectDictCompat,
                          base.TackerPersistentObject):

    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'flavour_id':
        fields.StringField(nullable=False),
        'vnf_instance_id':
        fields.UUIDField(nullable=False),
        'scale_status':
        fields.ListOfObjectsField('ScaleInfo', nullable=True, default=[]),
        'ext_cp_info':
        fields.ListOfObjectsField('VnfExtCpInfo', nullable=False),
        'ext_virtual_link_info':
        fields.ListOfObjectsField('ExtVirtualLinkInfo',
                                  nullable=True,
                                  default=[]),
        'ext_managed_virtual_link_info':
        fields.ListOfObjectsField('ExtManagedVirtualLinkInfo',
                                  nullable=True,
                                  default=[]),
        'vnfc_resource_info':
        fields.ListOfObjectsField('VnfcResourceInfo',
                                  nullable=True,
                                  default=[]),
        'vnf_virtual_link_resource_info':
        fields.ListOfObjectsField('VnfVirtualLinkResourceInfo',
                                  nullable=True,
                                  default=[]),
        'virtual_storage_resource_info':
        fields.ListOfObjectsField('VirtualStorageResourceInfo',
                                  nullable=True,
                                  default=[]),
        'vnfc_info':
        fields.ListOfObjectsField('VnfcInfo', nullable=True, default=[]),
        'vnf_state':
        fields.VnfOperationalStateTypeField(
            nullable=False, default=fields.VnfOperationalStateType.STOPPED),
        'instance_id':
        fields.StringField(nullable=True, default=None),
        'instantiation_level_id':
        fields.StringField(nullable=True, default=None),
        'additional_params':
        fields.DictOfStringsField(nullable=True, default={})
    }

    ALL_ATTRIBUTES = {
        'instantiatedInfo': {
            'flavourId': ('id', 'string', 'VnfInstantiatedInfo'),
            'vnfInstanceId':
            ('vnf_instance_id', 'string', 'VnfInstantiatedInfo'),
            'vnfState': ('vnf_state', 'string', 'VnfInstantiatedInfo'),
            'instanceId': ('instance_id', 'string', 'VnfInstantiatedInfo'),
            'instantiationLevelId':
            ('instantiation_level_id', 'string', 'VnfInstantiatedInfo'),
            'extCpInfo/*': ('ext_cp_info', 'key_value_pair', {
                "key_column": "key",
                "value_column": "value",
                "model": "VnfInstantiatedInfo"
            }),
            'extVirtualLinkInfo/*':
            ('ext_virtual_link_info', 'key_value_pair', {
                "key_column": "key",
                "value_column": "value",
                "model": "VnfInstantiatedInfo"
            }),
            'extManagedVirtualLinkInfo/*':
            ('ext_managed_virtual_link_info', 'key_value_pair', {
                "key_column": "key",
                "value_column": "value",
                "model": "VnfInstantiatedInfo"
            }),
            'vnfcResourceInfo/*': ('vnfc_resource_info', 'key_value_pair', {
                "key_column": "key",
                "value_column": "value",
                "model": "VnfInstantiatedInfo"
            }),
            'vnfVirtualLinkResourceInfo/*': ('vnf_virtual_link_resource_info',
                                             'key_value_pair', {
                                                 "key_column": "key",
                                                 "value_column": "value",
                                                 "model": "VnfInstantiatedInfo"
                                             }),
            'virtualStorageResourceInfo/*': ('virtual_storage_resource_info',
                                             'key_value_pair', {
                                                 "key_column": "key",
                                                 "value_column": "value",
                                                 "model": "VnfInstantiatedInfo"
                                             }),
            'additionalParams/*': ('additional_params', 'key_value_pair', {
                "key_column": "key",
                "value_column": "value",
                "model": "VnfInstantiatedInfo"
            }),
            'vnfcInfo/*': ('vnfc_info', 'key_value_pair', {
                "key_column": "key",
                "value_column": "value",
                "model": "VnfInstantiatedInfo"
            }),
        }
    }

    FLATTEN_ATTRIBUTES = utils.flatten_dict(ALL_ATTRIBUTES.copy())

    @staticmethod
    def _from_db_object(context, inst_vnf_info, db_inst_vnf_info):

        special_fields = [
            'scale_status', 'ext_cp_info', 'ext_virtual_link_info',
            'ext_managed_virtual_link_info', 'vnfc_resource_info',
            'vnf_virtual_link_resource_info', 'virtual_storage_resource_info',
            'vnfc_info'
        ]
        for key in inst_vnf_info.fields:
            if key in special_fields:
                continue

            setattr(inst_vnf_info, key, db_inst_vnf_info.get(key))

        scale_status = db_inst_vnf_info['scale_status']
        scale_status_list = [
            ScaleInfo.obj_from_primitive(scale, context)
            for scale in scale_status
        ]
        inst_vnf_info.scale_status = scale_status_list

        ext_cp_info = db_inst_vnf_info['ext_cp_info']
        ext_cp_info_list = [
            VnfExtCpInfo.obj_from_primitive(ext_cp, context)
            for ext_cp in ext_cp_info
        ]
        inst_vnf_info.ext_cp_info = ext_cp_info_list

        vnfc_resource_info = db_inst_vnf_info['vnfc_resource_info']
        vnfc_resource_info_list = [
            VnfcResourceInfo.obj_from_primitive(vnfc_resource, context)
            for vnfc_resource in vnfc_resource_info
        ]
        inst_vnf_info.vnfc_resource_info = vnfc_resource_info_list

        storage_res_info = db_inst_vnf_info['virtual_storage_resource_info']
        storage_res_info_list = [
            VirtualStorageResourceInfo.obj_from_primitive(
                storage_resource, context)
            for storage_resource in storage_res_info
        ]
        inst_vnf_info.virtual_storage_resource_info = storage_res_info_list

        ext_virtual_link_info = db_inst_vnf_info['ext_virtual_link_info']
        ext_vl_info_list = [
            ExtVirtualLinkInfo.obj_from_primitive(ext_vl_info, context)
            for ext_vl_info in ext_virtual_link_info
        ]
        inst_vnf_info.ext_virtual_link_info = ext_vl_info_list

        ext_mng_vl_info = db_inst_vnf_info['ext_managed_virtual_link_info']
        ext_managed_vl_info_list = [
            ExtManagedVirtualLinkInfo.obj_from_primitive(
                ext_managed_vl_info, context)
            for ext_managed_vl_info in ext_mng_vl_info
        ]
        inst_vnf_info.ext_managed_virtual_link_info = ext_managed_vl_info_list

        vnf_vl_resource_info = db_inst_vnf_info[
            'vnf_virtual_link_resource_info']
        vnf_vl_info_list = [
            VnfVirtualLinkResourceInfo.obj_from_primitive(
                vnf_vl_info, context) for vnf_vl_info in vnf_vl_resource_info
        ]
        inst_vnf_info.vnf_virtual_link_resource_info = vnf_vl_info_list

        vnfc_info = db_inst_vnf_info['vnfc_info']
        vnfc_info_list = [
            VnfcInfo.obj_from_primitive(vnfc, context) for vnfc in vnfc_info
        ]
        inst_vnf_info.vnfc_info = vnfc_info_list

        inst_vnf_info._context = context
        inst_vnf_info.obj_reset_changes()
        return inst_vnf_info

    @base.remotable
    def save(self):
        updates = {}
        changes = self.obj_what_changed()

        for field in self.fields:
            if (self.obj_attr_is_set(field) and isinstance(
                    self.fields[field], fields.ListOfObjectsField)):
                field_list = getattr(self, field)
                updates[field] = [obj.obj_to_primitive() for obj in field_list]
            elif field in changes:
                updates[field] = self[field]

        vnf_info = _instantiate_vnf_info_update(self._context,
                                                self.vnf_instance_id, updates)
        self._from_db_object(self._context, self, vnf_info)

        self.obj_reset_changes()

    @classmethod
    def obj_from_primitive(cls, primitive, context):
        if 'tacker_object.name' in primitive:
            instantiate_vnf_info = super(InstantiatedVnfInfo,
                                         cls).obj_from_primitive(
                                             primitive, context)
        else:
            if 'scale_status' in primitive.keys():
                obj_data = [
                    ScaleInfo.obj_from_primitive(scale, context)
                    for scale in primitive.get('scale_status', [])
                ]
                primitive.update({'scale_status': obj_data})

            if 'ext_cp_info' in primitive.keys():
                obj_data = [
                    VnfExtCpInfo.obj_from_primitive(vnf_ext_cp, context)
                    for vnf_ext_cp in primitive.get('ext_cp_info', [])
                ]
                primitive.update({'ext_cp_info': obj_data})

            if 'ext_virtual_link_info' in primitive.keys():
                obj_data = [
                    ExtVirtualLinkInfo.obj_from_primitive(
                        ext_virtual_link, context)
                    for ext_virtual_link in primitive.get(
                        'ext_virtual_link_info', [])
                ]
                primitive.update({'ext_virtual_link_info': obj_data})

            if 'ext_managed_virtual_link_info' in primitive.keys():
                obj_data = [
                    ExtManagedVirtualLinkInfo.obj_from_primitive(
                        ext_managed_v_link, context)
                    for ext_managed_v_link in primitive.get(
                        'ext_managed_virtual_link_info', [])
                ]
                primitive.update({'ext_managed_virtual_link_info': obj_data})

            if 'vnfc_resource_info' in primitive.keys():
                obj_data = [
                    VnfcResourceInfo.obj_from_primitive(
                        vnf_resource_info, context)
                    for vnf_resource_info in primitive.get(
                        'vnfc_resource_info', [])
                ]
                primitive.update({'vnfc_resource_info': obj_data})

            if 'vnf_virtual_link_resource_info' in primitive.keys():
                obj_data = [
                    VnfVirtualLinkResourceInfo.obj_from_primitive(
                        vnf_v_link_resource, context)
                    for vnf_v_link_resource in primitive.get(
                        'vnf_virtual_link_resource_info', [])
                ]
                primitive.update({'vnf_virtual_link_resource_info': obj_data})

            if 'virtual_storage_resource_info' in primitive.keys():
                obj_data = [
                    VirtualStorageResourceInfo.obj_from_primitive(
                        virtual_storage_info, context)
                    for virtual_storage_info in primitive.get(
                        'virtual_storage_resource_info', [])
                ]
                primitive.update({'virtual_storage_resource_info': obj_data})

            if 'vnfc_info' in primitive.keys():
                obj_data = [
                    VnfcInfo.obj_from_primitive(vnfc_info, context)
                    for vnfc_info in primitive.get('vnfc_info', [])
                ]
                primitive.update({'vnfc_info': obj_data})

            instantiate_vnf_info = \
                InstantiatedVnfInfo._from_dict(primitive)

        return instantiate_vnf_info

    @classmethod
    def obj_from_db_obj(cls, context, db_obj):
        return cls._from_db_object(context, cls(), db_obj)

    @classmethod
    def _from_dict(cls, data_dict):
        flavour_id = data_dict.get('flavour_id')
        scale_status = data_dict.get('scale_status', [])
        ext_cp_info = data_dict.get('ext_cp_info', [])
        ext_virtual_link_info = data_dict.get('ext_virtual_link_info', [])
        ext_managed_virtual_link_info = data_dict.get(
            'ext_managed_virtual_link_info', [])
        vnfc_resource_info = data_dict.get('vnfc_resource_info', [])
        vnf_virtual_link_resource_info = data_dict.get(
            'vnf_virtual_link_resource_info', [])
        virtual_storage_resource_info = data_dict.get(
            'virtual_storage_resource_info', [])
        vnf_state = data_dict.get('vnf_state')
        instantiation_level_id = data_dict.get('instantiation_level_id')
        additional_params = data_dict.get('additional_params', {})
        vnfc_info = data_dict.get('vnfc_info', [])

        obj = cls(
            flavour_id=flavour_id,
            scale_status=scale_status,
            ext_cp_info=ext_cp_info,
            ext_virtual_link_info=ext_virtual_link_info,
            ext_managed_virtual_link_info=ext_managed_virtual_link_info,
            vnfc_resource_info=vnfc_resource_info,
            vnf_virtual_link_resource_info=vnf_virtual_link_resource_info,
            virtual_storage_resource_info=virtual_storage_resource_info,
            vnfc_info=vnfc_info,
            vnf_state=vnf_state,
            instantiation_level_id=instantiation_level_id,
            additional_params=additional_params)
        return obj

    def to_dict(self):
        data = {'flavour_id': self.flavour_id, 'vnf_state': self.vnf_state}

        if self.scale_status:
            scale_status_list = []
            for scale_status in self.scale_status:
                scale_status_list.append(scale_status.to_dict())

            data.update({'scale_status': scale_status_list})

        ext_cp_info_list = []
        for ext_cp_info in self.ext_cp_info:
            ext_cp_info_list.append(ext_cp_info.to_dict())

        data.update({'ext_cp_info': ext_cp_info_list})

        if self.ext_virtual_link_info:
            exp_virt_link_info_list = []
            for exp_virt_link_info in self.ext_virtual_link_info:
                exp_virt_link_info_list.append(exp_virt_link_info.to_dict())
            data.update({'ext_virtual_link_info': exp_virt_link_info_list})

        if self.ext_managed_virtual_link_info:
            ext_managed_virt_info_list = []
            for exp_managed_virt_link_info in \
                    self.ext_managed_virtual_link_info:
                info = exp_managed_virt_link_info.to_dict()
                ext_managed_virt_info_list.append(info)
            data.update(
                {'ext_managed_virtual_link_info': ext_managed_virt_info_list})

        if self.vnfc_resource_info:
            vnfc_resource_info_list = []
            for vnfc_resource_info in self.vnfc_resource_info:
                vnfc_resource_info_list.append(vnfc_resource_info.to_dict())

            data.update({'vnfc_resource_info': vnfc_resource_info_list})

        if self.vnf_virtual_link_resource_info:
            virt_link_info = []
            for vnf_virtual_link_resource_info in \
                    self.vnf_virtual_link_resource_info:
                info = vnf_virtual_link_resource_info.to_dict()
                virt_link_info.append(info)

            data.update({'vnf_virtual_link_resource_info': virt_link_info})

        if self.virtual_storage_resource_info:
            virtual_storage_resource_info_list = []
            for virtual_storage_resource_info in \
                    self.virtual_storage_resource_info:
                info = virtual_storage_resource_info.to_dict()
                virtual_storage_resource_info_list.append(info)

            data.update({
                'virtual_storage_resource_info':
                virtual_storage_resource_info_list
            })

        if self.vnfc_info:
            vnfc_info = []
            for vnfc in self.vnfc_info:
                info = vnfc.to_dict()
                vnfc_info.append(info)

            data.update({'vnfc_info': vnfc_info})

        data.update({'additional_params': self.additional_params})

        return data

    def reinitialize(self):
        # Reinitialize vnf to non instantiated state.
        self.scale_status = []
        self.ext_cp_info = []
        self.ext_virtual_link_info = []
        self.ext_managed_virtual_link_info = []
        self.vnfc_resource_info = []
        self.vnf_virtual_link_resource_info = []
        self.virtual_storage_resource_info = []
        self.instance_id = None
        self.vnf_state = fields.VnfOperationalStateType.STOPPED
        self.vnfc_info = []

    @base.remotable
    def destroy(self, context):
        if not self.obj_attr_is_set('vnf_instance_id'):
            raise exceptions.ObjectActionError(action='destroy',
                                               reason='no uuid')

        _destroy_instantiated_vnf_info(context, self.vnf_instance_id)
Пример #20
0
 class MyList(base.TackerObject):
     fields = {'objects': fields.ListOfObjectsField('MyObjElement')}
Пример #21
0
class ExtVirtualLinkInfo(base.TackerObject, base.TackerPersistentObject):
    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'id':
        fields.StringField(nullable=False),
        'resource_handle':
        fields.ObjectField('ResourceHandle', nullable=False),
        'ext_link_ports':
        fields.ListOfObjectsField('ExtLinkPortInfo', nullable=True,
                                  default=[]),
    }

    @classmethod
    def obj_from_primitive(cls, primitive, context):
        if 'tacker_object.name' in primitive:
            obj_ext_virt_link = super(ExtVirtualLinkInfo,
                                      cls).obj_from_primitive(
                                          primitive, context)
        else:
            if 'resource_handle' in primitive.keys():
                obj_data = ResourceHandle._from_dict(
                    primitive.get('resource_handle'))
                primitive.update({'resource_handle': obj_data})

            if 'ext_link_ports' in primitive.keys():
                obj_data = [
                    ExtLinkPortInfo.obj_from_primitive(ext_link_port_info,
                                                       context)
                    for ext_link_port_info in primitive.get(
                        'ext_link_ports', [])
                ]
                primitive.update({'ext_link_ports': obj_data})

            obj_ext_virt_link = ExtVirtualLinkInfo._from_dict(primitive)

        return obj_ext_virt_link

    @classmethod
    def _from_dict(cls, data_dict):
        id = data_dict.get('id', '')
        resource_handle = data_dict.get('resource_handle')
        ext_link_ports = data_dict.get('ext_link_ports', [])

        obj = cls(id=id,
                  resource_handle=resource_handle,
                  ext_link_ports=ext_link_ports)
        return obj

    def to_dict(self):
        data = {
            'id': self.id,
            'resource_handle': self.resource_handle.to_dict()
        }

        if self.ext_link_ports:
            ext_link_ports = []
            for ext_link_port in self.ext_link_ports:
                ext_link_ports.append(ext_link_port.to_dict())

            data.update({'ext_link_ports': ext_link_ports})

        return data
Пример #22
0
class ResourceChanges(base.TackerObject, base.TackerPersistentObject):
    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'affected_vnfcs':
        fields.ListOfObjectsField('AffectedVnfc', nullable=True),
        'affected_virtual_links':
        fields.ListOfObjectsField('AffectedVirtualLink', nullable=True),
        'affected_virtual_storages':
        fields.ListOfObjectsField('AffectedVirtualStorage', nullable=True)
    }

    @classmethod
    def obj_from_primitive(cls, primitive, context):
        if 'tacker_object.name' in primitive:
            resource_changes = super(ResourceChanges, cls).obj_from_primitive(
                primitive, context)
        else:
            rs_dict = jsonutils.loads(primitive)
            if rs_dict.get('affected_vnfcs'):
                obj_data = [
                    AffectedVnfc._from_dict(affected_vnfc)
                    for affected_vnfc in rs_dict.get('affected_vnfcs', [])
                ]
                rs_dict.update({'affected_vnfcs': obj_data})
            if rs_dict.get('affected_virtual_links'):
                obj_data = [
                    AffectedVirtualLink._from_dict(affected_virtual_link)
                    for affected_virtual_link in rs_dict.get(
                        'affected_virtual_links', [])
                ]
                rs_dict.update({'affected_virtual_links': obj_data})
            if rs_dict.get('affected_virtual_storages'):
                obj_data = [
                    AffectedVirtualStorage._from_dict(affected_virtual_storage)
                    for affected_virtual_storage in rs_dict.get(
                        'affected_virtual_storages', [])
                ]
                rs_dict.update({'affected_virtual_storages': obj_data})
            resource_changes = ResourceChanges._from_dict(rs_dict)

        return resource_changes

    @classmethod
    def _from_dict(cls, data_dict):
        affected_vnfcs = data_dict.get('affected_vnfcs')
        affected_virtual_links = data_dict.get('affected_virtual_links')
        affected_virtual_storages = data_dict.get('affected_virtual_storages')

        obj = cls(affected_vnfcs=affected_vnfcs,
                  affected_virtual_links=affected_virtual_links,
                  affected_virtual_storages=affected_virtual_storages)

        return obj

    def to_dict(self):
        data = {}
        if self.affected_vnfcs:
            affected_vnfcs_list = []
            for affected_vnfc in self.affected_vnfcs:
                affected_vnfcs_list.append(affected_vnfc.to_dict())

            data.update({'affected_vnfcs': affected_vnfcs_list})
        if self.affected_virtual_links:
            affected_virtual_links_list = []
            for affected_virtual_link in self.affected_virtual_links:
                affected_virtual_links_list.append(
                    affected_virtual_link.to_dict())

            data.update(
                {'affected_virtual_links': affected_virtual_links_list})
        if self.affected_virtual_storages:
            affected_virtual_storages_list = []
            for affected_virtual_storage in self.affected_virtual_storages:
                affected_virtual_storages_list.append(
                    affected_virtual_storage.to_dict())

            data.update(
                {'affected_virtual_storages': affected_virtual_storages_list})
        return data
Пример #23
0
class VnfInfoModifications(base.TackerObject, base.TackerPersistentObject):
    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'vnf_instance_name':
        fields.StringField(nullable=True),
        'vnf_instance_description':
        fields.StringField(nullable=True),
        'vim_connection_info':
        fields.ListOfObjectsField('VimConnectionInfo',
                                  nullable=True,
                                  default=[]),
        'vim_connection_info_delete_ids':
        fields.ListOfStringsField(nullable=True, default=[]),
        'vnf_pkg_id':
        fields.StringField(nullable=True, default=None),
        'vnfd_id':
        fields.StringField(nullable=True),
        'vnf_provider':
        fields.StringField(nullable=True),
        'vnf_product_name':
        fields.StringField(nullable=True),
        'vnf_software_version':
        fields.StringField(nullable=True),
        'vnfd_version':
        fields.StringField(nullable=True)
    }

    @classmethod
    def obj_from_primitive(cls, primitive, context):
        if 'tacker_object.name' in primitive:
            vnf_info_modifications = super(VnfInfoModifications,
                                           cls).obj_from_primitive(
                                               primitive, context)
        else:
            if 'vim_connection_info' in primitive.keys():
                obj_data = [
                    objects.VimConnectionInfo._from_dict(vim_conn)
                    for vim_conn in primitive.get('vim_connection_info', [])
                ]
                primitive.update({'vim_connection_info': obj_data})
            vnf_info_modifications = VnfInfoModifications._from_dict(primitive)

        return vnf_info_modifications

    @classmethod
    def _from_dict(cls, data_dict):
        vnf_instance_name = data_dict.get('vnf_instance_name')
        vnf_instance_description = data_dict.get('vnf_instance_description')
        vim_connection_info = data_dict.get('vim_connection_info', [])
        vim_connection_info_delete_ids = data_dict.get(
            'vim_connection_info_delete_ids')
        vnf_pkg_id = data_dict.get('vnf_pkg_id')
        vnfd_id = data_dict.get('vnfd_id')
        vnf_provider = data_dict.get('vnf_provider')
        vnf_product_name = data_dict.get('vnf_product_name')
        vnf_software_version = data_dict.get('vnf_software_version')
        vnfd_version = data_dict.get('vnfd_version')

        obj = cls(
            vnf_instance_name=vnf_instance_name,
            vnf_instance_description=vnf_instance_description,
            vim_connection_info=vim_connection_info,
            vim_connection_info_delete_ids=vim_connection_info_delete_ids,
            vnf_pkg_id=vnf_pkg_id,
            vnfd_id=vnfd_id,
            vnf_provider=vnf_provider,
            vnf_product_name=vnf_product_name,
            vnf_software_version=vnf_software_version,
            vnfd_version=vnfd_version)

        return obj

    def to_dict(self):
        return {
            'vnf_instance_name': self.vnf_instance_name,
            'vnf_instance_description': self.vnf_instance_description,
            'vim_connection_info': self.vim_connection_info,
            'vim_connection_info_delete_ids':
            self.vim_connection_info_delete_ids,
            'vnf_pkg_id': self.vnf_pkg_id,
            'vnfd_id': self.vnfd_id,
            'vnf_provider': self.vnf_provider,
            'vnf_product_name': self.vnf_product_name,
            'vnf_software_version': self.vnf_software_version,
            'vnfd_version': self.vnfd_version
        }
class VnfSoftwareImagesList(ovoo_base.ObjectListBase, base.TackerObject):

    VERSION = '1.0'

    fields = {'objects': fields.ListOfObjectsField('VnfSoftwareImage')}
Пример #25
0
class PlacementConstraint(base.TackerObject):

    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'affinity_or_anti_affinity':
        fields.StringField(nullable=False),
        'scope':
        fields.StringField(nullable=False),
        'resource':
        fields.ListOfObjectsField('ConstraintResourceRef',
                                  nullable=False,
                                  default=[]),
        'fallback_best_effort':
        fields.BooleanField(nullable=False),
    }

    @classmethod
    def obj_from_primitive(cls, primitive, context):
        if 'tacker_object.name' in primitive:
            obj_placement_constraint = super(PlacementConstraint,
                                             cls).obj_from_primitive(
                                                 primitive, context)
        else:
            if 'resource' in primitive.keys():
                obj_data = [
                    ConstraintResourceRef._from_dict(add_rsc)
                    for add_rsc in primitive.get('resource', [])
                ]
                primitive.update({'resource': obj_data})
            obj_placement_constraint = PlacementConstraint._from_dict(
                primitive)

        return obj_placement_constraint

    @classmethod
    def _from_dict(cls, data_dict):
        affinity_or_anti_affinity = data_dict.get('affinity_or_anti_affinity')
        scope = data_dict.get('scope')
        resource = data_dict.get('resource')
        fallback_best_effort = data_dict.get('fallback_best_effort')

        obj = cls(affinity_or_anti_affinity=affinity_or_anti_affinity,
                  scope=scope,
                  resource=resource,
                  fallback_best_effort=fallback_best_effort)
        return obj

    def to_dict(self):
        data = {
            'affinity_or_anti_affinity': self.affinity_or_anti_affinity,
            'scope': self.scope,
            'fallback_best_effort': self.fallback_best_effort
        }
        if self.resource:
            resource_list = []
            for rsc in self.resource:
                resource_list.append(rsc.to_dict())

            data.update({'resource': resource_list})
        return data
Пример #26
0
class GrantRequest(base.TackerObject):

    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'vnf_instance_id':
        fields.StringField(nullable=False),
        'vnf_lcm_op_occ_id':
        fields.StringField(nullable=False),
        'vnfd_id':
        fields.StringField(nullable=False),
        'flavour_id':
        fields.StringField(nullable=True),
        'operation':
        fields.StringField(nullable=False),
        'is_automatic_invocation':
        fields.BooleanField(nullable=False, default=False),
        'add_resources':
        fields.ListOfObjectsField('ResourceDefinition',
                                  nullable=True,
                                  default=[]),
        'remove_resources':
        fields.ListOfObjectsField('ResourceDefinition',
                                  nullable=True,
                                  default=[]),
        'placement_constraints':
        fields.ListOfObjectsField('PlacementConstraint',
                                  nullable=True,
                                  default=[]),
        '_links':
        fields.ObjectField('Links', nullable=False)
    }

    @classmethod
    def obj_from_primitive(cls, primitive, context):
        if 'tacker_object.name' in primitive:
            obj_grant_req = super(GrantRequest,
                                  cls).obj_from_primitive(primitive, context)
        else:
            if 'add_resources' in primitive.keys():
                obj_data = [
                    ResourceDefinition._from_dict(add_rsc)
                    for add_rsc in primitive.get('add_resources', [])
                ]
                primitive.update({'add_resources': obj_data})
            if 'remove_resources' in primitive.keys():
                obj_data = [
                    ResourceDefinition._from_dict(remove_rsc)
                    for remove_rsc in primitive.get('remove_resources', [])
                ]
                primitive.update({'add_resources': obj_data})
            if 'placement_constraints' in primitive.keys():
                obj_data = [
                    PlacementConstraint._from_dict(place)
                    for place in primitive.get('placement_constraints', [])
                ]
                primitive.update({'add_resources': obj_data})
            obj_grant_req = GrantRequest._from_dict(primitive)

        return obj_grant_req

    @classmethod
    def _from_dict(cls, data_dict):
        vnf_instance_id = data_dict.get('vnf_instance_id')
        vnf_lcm_op_occ_id = data_dict.get('vnf_lcm_op_occ_id')
        vnfd_id = data_dict.get('vnfd_id')
        flavour_id = data_dict.get('flavour_id')
        operation = data_dict.get('operation')
        is_automatic_invocation = data_dict.get('is_automatic_invocation')
        add_resources = data_dict.get('add_resources', [])
        remove_resources = data_dict.get('remove_resources', [])
        placement_constraints = data_dict.get('placement_constraints', [])
        links = data_dict.get('_links')

        obj = cls(vnf_instance_id=vnf_instance_id,
                  vnf_lcm_op_occ_id=vnf_lcm_op_occ_id,
                  vnfd_id=vnfd_id,
                  flavour_id=flavour_id,
                  operation=operation,
                  is_automatic_invocation=is_automatic_invocation,
                  add_resources=add_resources,
                  remove_resources=remove_resources,
                  placement_constraints=placement_constraints,
                  _links=links)
        return obj

    def to_dict(self):
        data = {
            'vnf_instance_id': self.vnf_instance_id,
            'vnf_lcm_op_occ_id': self.vnf_lcm_op_occ_id,
            'vnfd_id': self.vnfd_id,
            'flavour_id': self.flavour_id,
            'operation': self.operation,
            'is_automatic_invocation': self.is_automatic_invocation,
            '_links': self._links.to_dict()
        }
        if self.add_resources:
            add_resources_list = []
            for add_resource in self.add_resources:
                add_resources_list.append(add_resource.to_dict())

            data.update({'add_resources': add_resources_list})
        if self.remove_resources:
            remove_resources_list = []
            for remove_resource in self.remove_resources:
                remove_resources_list.append(remove_resource.to_dict())

            data.update({'remove_resources': remove_resources_list})
        if self.placement_constraints:
            placement_constraints_list = []
            for placement_constraint in self.placement_constraints:
                placement_constraints_list.append(
                    placement_constraint.to_dict())

            data.update({'placement_constraints': placement_constraints_list})
        return data

    def to_request_body(self):
        req_dict = self.to_dict()
        req_dict = utils.convert_snakecase_to_camelcase(req_dict)
        return jsonutils.dumps(req_dict).replace('Links', '_links')
Пример #27
0
class Grant(base.TackerObject):

    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'id':
        fields.StringField(nullable=False),
        'vnf_instance_id':
        fields.StringField(nullable=False),
        'vnf_lcm_op_occ_id':
        fields.StringField(nullable=False),
        'vim_connections':
        fields.ListOfObjectsField('VimConnectionInfo',
                                  nullable=True,
                                  default=[]),
        'zones':
        fields.ListOfObjectsField('ZoneInfo', nullable=True, default=[]),
        'add_resources':
        fields.ListOfObjectsField('GrantInfo', nullable=True, default=[]),
        'remove_resources':
        fields.ListOfObjectsField('GrantInfo', nullable=True, default=[]),
        'vim_assets':
        fields.ObjectField('VimAssets', nullable=True)
    }

    @classmethod
    def obj_from_primitive(cls, primitive, context):
        if 'tacker_object.name' in primitive:
            obj_grant = super(Grant,
                              cls).obj_from_primitive(primitive, context)
        else:
            if 'vim_connections' in primitive.keys():
                obj_data = [
                    objects.VimConnectionInfo._from_dict(vim_conn)
                    for vim_conn in primitive.get('vim_connections', [])
                ]
                primitive.update({'vim_connections': obj_data})

            if 'zones' in primitive.keys():
                obj_data = [
                    ZoneInfo._from_dict(zone)
                    for zone in primitive.get('zones', [])
                ]
                primitive.update({'zones': obj_data})

            if 'add_resources' in primitive.keys():
                obj_data = [
                    GrantInfo._from_dict(add_rsc)
                    for add_rsc in primitive.get('add_resources', [])
                ]
                primitive.update({'add_resources': obj_data})
            if 'remove_resources' in primitive.keys():
                obj_data = [
                    GrantInfo._from_dict(remove_rsc)
                    for remove_rsc in primitive.get('remove_resources', [])
                ]
                primitive.update({'remove_resources': obj_data})
            if 'vim_assets' in primitive.keys():
                obj_data = VimAssets.obj_from_primitive(
                    primitive.get('vim_assets'), context)
                primitive.update({'vim_assets': obj_data})

            obj_grant = Grant._from_dict(primitive)

        return obj_grant

    @classmethod
    def _from_dict(cls, data_dict):
        id = data_dict.get('id')
        vnf_instance_id = data_dict.get('vnf_instance_id')
        vnf_lcm_op_occ_id = data_dict.get('vnf_lcm_op_occ_id')
        vim_connections = data_dict.get('vim_connections', [])
        zones = data_dict.get('zones', [])
        add_resources = data_dict.get('add_resources', [])
        remove_resources = data_dict.get('remove_resources', [])
        vim_assets = data_dict.get('vim_assets')

        obj = cls(id=id,
                  vnf_instance_id=vnf_instance_id,
                  vnf_lcm_op_occ_id=vnf_lcm_op_occ_id,
                  vim_connections=vim_connections,
                  zones=zones,
                  add_resources=add_resources,
                  remove_resources=remove_resources,
                  vim_assets=vim_assets)
        return obj
Пример #28
0
class ExtManagedVirtualLinkInfo(base.TackerObject,
                                base.TackerPersistentObject):
    # Version 1.0: Initial version
    VERSION = '1.0'

    fields = {
        'id':
        fields.StringField(nullable=False),
        'vnf_virtual_link_desc_id':
        fields.StringField(nullable=False),
        'network_resource':
        fields.ObjectField('ResourceHandle', nullable=False),
        'vnf_link_ports':
        fields.ListOfObjectsField('VnfLinkPortInfo', nullable=True,
                                  default=[]),
    }

    @classmethod
    def obj_from_primitive(cls, primitive, context):
        if 'tacker_object.name' in primitive:
            obj_ext_managed_virt_link = super(ExtManagedVirtualLinkInfo,
                                              cls).obj_from_primitive(
                                                  primitive, context)
        else:
            if 'network_resource' in primitive.keys():
                obj_data = ResourceHandle._from_dict(
                    primitive.get('network_resource'))
                primitive.update({'network_resource': obj_data})

            if 'vnf_link_ports' in primitive.keys():
                obj_data = [
                    VnfLinkPortInfo.obj_from_primitive(vnf_link_port, context)
                    for vnf_link_port in primitive.get('vnf_link_ports', [])
                ]
                primitive.update({'vnf_link_ports': obj_data})

            obj_ext_managed_virt_link = ExtManagedVirtualLinkInfo._from_dict(
                primitive)

        return obj_ext_managed_virt_link

    @classmethod
    def _from_dict(cls, data_dict):
        id = data_dict.get('id')
        vnf_virtual_link_desc_id = data_dict.get('vnf_virtual_link_desc_id')
        network_resource = data_dict.get('network_resource')
        vnf_link_ports = data_dict.get('vnf_link_ports', [])

        obj = cls(id=id,
                  vnf_virtual_link_desc_id=vnf_virtual_link_desc_id,
                  network_resource=network_resource,
                  vnf_link_ports=vnf_link_ports)
        return obj

    def to_dict(self):
        data = {
            'id': self.id,
            'vnf_virtual_link_desc_id': self.vnf_virtual_link_desc_id,
            'network_resource': self.network_resource.to_dict()
        }

        if self.vnf_link_ports:
            vnf_link_ports = []
            for vnf_link_port in self.vnf_link_ports:
                vnf_link_ports.append(vnf_link_port.to_dict())

            data.update({'vnf_link_ports': vnf_link_ports})

        return data