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
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
class VnfDeploymentFlavoursList(ovoo_base.ObjectListBase, base.TackerObject): VERSION = '1.0' fields = { 'objects': fields.ListOfObjectsField('VnfDeploymentFlavour') }
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
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') }
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)
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
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)
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
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)
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
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']
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
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
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
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
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)
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)
class MyList(base.TackerObject): fields = {'objects': fields.ListOfObjectsField('MyObjElement')}
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
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
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')}
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
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')
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
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