def _get_device_image_collection(self, marker=None, limit=None, sort_key=None, sort_dir=None, expand=False, resource_url=None): limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.device_image.get_by_uuid( pecan.request.context, marker) deviceimages = pecan.request.dbapi.deviceimages_get_all( limit=limit, marker=marker_obj, sort_key=sort_key, sort_dir=sort_dir) return DeviceImageCollection.convert_with_links(deviceimages, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_tiers_collection(self, uuid, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): if self._from_cluster and not uuid: raise exception.InvalidParameterValue(_( "Cluster id not specified.")) limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.storage_tier.get_by_uuid(pecan.request.context, marker) if self._from_cluster: storage_tiers = pecan.request.dbapi.storage_tier_get_by_cluster( uuid, limit=limit, marker=marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: storage_tiers = pecan.request.dbapi.storage_tier_get_list(limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return StorageTierCollection.convert_with_links( storage_tiers, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_certificates_collection(self, uuid, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.certificate.get_by_uuid( pecan.request.context, marker) certificates = pecan.request.dbapi.certificate_get_list( limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) certificates_c = CertificateCollection.convert_with_links( certificates, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir) return certificates_c
def _get_infras_collection(self, isystem_uuid, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): if self._from_isystems and not isystem_uuid: raise exception.InvalidParameterValue( _("System id not specified.")) limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.infra_network.get_by_uuid( pecan.request.context, marker) infras = pecan.request.dbapi.iinfra_get_list(limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return InfraNetworkCollection.convert_with_links(infras, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_route_collection(self, parent_uuid=None, marker=None, limit=None, sort_key=None, sort_dir=None, expand=False, resource_url=None): limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.route.get_by_uuid( pecan.request.context, marker) if self._parent == "ihosts": routes = pecan.request.dbapi.routes_get_by_host( parent_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif self._parent == "iinterfaces": routes = pecan.request.dbapi.routes_get_by_interface( parent_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: routes = pecan.request.dbapi.routes_get_all( limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return RouteCollection.convert_with_links( routes, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_address_pool_collection(self, parent_uuid, marker=None, limit=None, sort_key=None, sort_dir=None, expand=False, resource_url=None): limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.address_pool.get_by_uuid( pecan.request.context, marker) addrpools = pecan.request.dbapi.address_pools_get_all( limit=limit, marker=marker_obj, sort_key=sort_key, sort_dir=sort_dir) return AddressPoolCollection.convert_with_links(addrpools, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_upgrade_collection(self, marker=None, limit=None, sort_key=None, sort_dir=None, expand=False, resource_url=None): limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.software_upgrade.get_by_uuid( pecan.request.context, marker) upgrades = pecan.request.dbapi.software_upgrade_get_list( limit=limit, marker=marker_obj, sort_key=sort_key, sort_dir=sort_dir) return UpgradeCollection.convert_with_links(upgrades, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_loads_collection(self, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.load.get_by_uuid(pecan.request.context, marker) loads = pecan.request.dbapi.load_get_list(limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return LoadCollection.convert_with_links(loads, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def get_all(self, marker=None, limit=None, sort_key='id', sort_dir='asc'): """Retrieve a list of kubernetes host upgrades.""" limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.kube_host_upgrade.get_by_uuid( pecan.request.context, marker) # Retrieve the host upgrades from the database kube_host_upgrades = pecan.request.dbapi.kube_host_upgrade_get_list( limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) # Get some details about the hosts host_details = self._get_host_details() # Get the dynamic version information cp_versions = self._kube_operator.kube_get_control_plane_versions() kubelet_versions = self._kube_operator.kube_get_kubelet_versions() for upgrade_obj in kube_host_upgrades: self._set_dynamic_versions(upgrade_obj, host_details, cp_versions, kubelet_versions) return KubeHostUpgradeCollection.convert_with_links(kube_host_upgrades, limit, sort_key=sort_key, sort_dir=sort_dir)
def _get_network_collection(self, marker=None, limit=None, sort_key=None, sort_dir=None, expand=False, resource_url=None): limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.network.get_by_uuid(pecan.request.context, marker) networks = pecan.request.dbapi.networks_get_all(limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return NetworkCollection.convert_with_links(networks, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_remoteloggings_collection(self, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.remotelogging.get_by_uuid( pecan.request.context, marker) remoteloggings = pecan.request.dbapi.remotelogging_get_list( limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return RemoteLoggingCollection.convert_with_links(remoteloggings, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_lldp_neighbours_collection(self, uuid, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): if self._from_ihosts and not uuid: raise exception.InvalidParameterValue(_("Host id not specified.")) if self._from_ports and not uuid: raise exception.InvalidParameterValue(_("Port id not specified.")) limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.lldp_neighbour.get_by_uuid( pecan.request.context, marker) if self._from_ihosts: neighbours = pecan.request.dbapi.lldp_neighbour_get_by_host( uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif self._from_ports: neighbours = pecan.request.dbapi.lldp_neighbour_get_by_port( uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: neighbours = pecan.request.dbapi.lldp_neighbour_get_list( limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return LLDPNeighbourCollection.convert_with_links(neighbours, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_controller_fs_collection(self, isystem_uuid, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): if self._from_isystems and not isystem_uuid: raise exception.InvalidParameterValue(_( "System id not specified.")) limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.controller_fs.get_by_uuid( pecan.request.context, marker) if isystem_uuid: controller_fs = pecan.request.dbapi.controller_fs_get_by_isystem( isystem_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: controller_fs = \ pecan.request.dbapi.controller_fs_get_list(limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return ControllerFsCollection.convert_with_links(controller_fs, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_nodes_collection(self, ihost_uuid, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): if self._from_ihosts and not ihost_uuid: raise exception.InvalidParameterValue(_( "Host id not specified.")) limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.node.get_by_uuid(pecan.request.context, marker) if ihost_uuid: nodes = pecan.request.dbapi.inode_get_by_ihost(ihost_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: nodes = pecan.request.dbapi.inode_get_list(limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return NodeCollection.convert_with_links(nodes, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_storage_lvm_collection(self, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.storage_lvm.get_by_uuid( pecan.request.context, marker) lvm_storage_backends = \ pecan.request.dbapi.storage_lvm_get_list( limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return StorageLVMCollection \ .convert_with_links(lvm_storage_backends, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_sdn_controller_collection(self, uuid, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.sdn_controller.get_by_uuid( pecan.request.context, marker) sdn_controllers = pecan.request.dbapi.sdn_controller_get_list( limit, marker_obj, sort_key, sort_dir) return SDNControllerCollection.convert_with_links(sdn_controllers, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_interface_datanetwork_collection( self, parent_uuid=None, marker=None, limit=None, sort_key=None, sort_dir=None, expand=False, resource_url=None): limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.interface_datanetwork.get_by_uuid( pecan.request.context, marker) if self._parent == "ihosts": interface_datanetworks = \ pecan.request.dbapi.interface_datanetwork_get_by_host( parent_uuid, limit=limit, marker=marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif self._parent == "iinterfaces": interface_datanetworks = \ pecan.request.dbapi.interface_datanetwork_get_by_interface( parent_uuid, limit=limit, marker=marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: interface_datanetworks = \ pecan.request.dbapi.interface_datanetwork_get_all( limit=limit, marker=marker_obj, sort_key=sort_key, sort_dir=sort_dir) return InterfaceDataNetworkCollection.convert_with_links( interface_datanetworks, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_isystem_collection(self, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): limit = api_utils.validate_limit(limit) sort_dir = api_utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.system.get_by_uuid(pecan.request.context, marker) isystem = pecan.request.dbapi.isystem_get_list(limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) for i in isystem: i.capabilities['bm_region'] = self.bm_region_get() return SystemCollection.convert_with_links(isystem, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_service_parameter_collection(self, marker=None, limit=None, sort_key=None, sort_dir=None, expand=False, resource_url=None, q=None): limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) kwargs = {} if q is not None: for i in q: if i.op == 'eq': kwargs[i.field] = i.value marker_obj = None if marker: marker_obj = objects.service_parameter.get_by_uuid( pecan.request.context, marker) if q is None: parms = pecan.request.dbapi.service_parameter_get_list( limit=limit, marker=marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: kwargs['limit'] = limit kwargs['sort_key'] = sort_key kwargs['sort_dir'] = sort_dir parms = pecan.request.dbapi.service_parameter_get_all(**kwargs) # Before we can return the service parameter collection, # we need to ensure that the list does not contain any # "protected" service parameters which may need to be # obfuscated. for idx, svc_param in enumerate(parms): service = svc_param['service'] section = svc_param['section'] name = svc_param['name'] if service in service_parameter.SERVICE_PARAMETER_SCHEMA \ and section in service_parameter.SERVICE_PARAMETER_SCHEMA[service]: schema = service_parameter.SERVICE_PARAMETER_SCHEMA[service][ section] if service_parameter.SERVICE_PARAM_PROTECTED in schema: # atleast one parameter is to be protected if name in schema[ service_parameter.SERVICE_PARAM_PROTECTED]: parms[idx][ 'value'] = service_parameter.SERVICE_VALUE_PROTECTION_MASK return ServiceParameterCollection.convert_with_links(parms, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_partitions_collection(self, ihost_uuid, disk_uuid, ipv_uuid, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): if self._from_ihosts and not ihost_uuid: raise exception.InvalidParameterValue(_( "Host id not specified.")) if self._from_idisk and not disk_uuid: raise exception.InvalidParameterValue(_( "Disk id not specified.")) if self._from_ipv and not ipv_uuid: raise exception.InvalidParameterValue(_( "Physical Volume id not specified.")) limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.partition.get_by_uuid( pecan.request.context, marker) partitions = [] if self._from_ihosts and self._from_idisk: partitions = pecan.request.dbapi.partition_get_by_idisk( disk_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif self._from_ihosts: partitions = pecan.request.dbapi.partition_get_by_ihost( ihost_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif self._from_ipv: partitions = pecan.request.dbapi.partition_get_by_ipv( ipv_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) # Only return user created partitions. partitions = [ p for p in partitions if p.type_guid == constants.USER_PARTITION_PHYSICAL_VOLUME] return PartitionCollection.convert_with_links(partitions, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_icommunity_collection(self, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): limit = api_utils.validate_limit(limit) sort_dir = api_utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.community.get_by_uuid(pecan.request.context, marker) icomm = pecan.request.dbapi.icommunity_get_list(limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return CommunityCollection.convert_with_links(icomm, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_lldp_tlvs_collection(self, uuid, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): if self._from_lldp_agents and not uuid: raise exception.InvalidParameterValue( _("LLDP agent id not specified.")) if self._from_lldp_neighbours and not uuid: raise exception.InvalidParameterValue( _("LLDP neighbour id not specified.")) limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.lldp_tlv.get_by_uuid(pecan.request.context, marker) if self._from_lldp_agents: tlvs = pecan.request.dbapi.lldp_tlv_get_by_agent(uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif self._from_lldp_neighbours: tlvs = pecan.request.dbapi.lldp_tlv_get_by_neighbour( uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: tlvs = pecan.request.dbapi.lldp_tlv_get_list(limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return LLDPTLVCollection.convert_with_links(tlvs, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_license_collection(self, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) licenses = license.get_licenses_info() return LicenseCollection.convert_with_links(licenses, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_sensorgroups_collection(self, uuid, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): if self._from_ihosts and not uuid: raise exception.InvalidParameterValue(_("Host id not specified.")) limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.sensorgroup.get_by_uuid( pecan.request.context, marker) if self._from_ihosts: sensorgroups = pecan.request.dbapi.isensorgroup_get_by_ihost( uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: if uuid: sensorgroups = pecan.request.dbapi.isensorgroup_get_by_ihost( uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: sensorgroups = pecan.request.dbapi.isensorgroup_get_list( limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return SensorGroupCollection.convert_with_links(sensorgroups, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_device_label_collection(self, device_uuid, marker=None, limit=None, sort_key=None, sort_dir=None, expand=False, resource_url=None): if self._parent and not device_uuid: raise exception.InvalidParameterValue( _("Device id not specified.")) limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.device_label.get_by_uuid( pecan.request.context, marker) if device_uuid: device_labels = pecan.request.dbapi.device_label_get_by_device( device_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: device_labels = pecan.request.dbapi.device_label_get_list( limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return DeviceLabelCollection.convert_with_links(device_labels, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_cluster_collection(self, parent_uuid, marker=None, limit=None, sort_key=None, sort_dir=None, expand=False, resource_url=None, q=None): limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) kwargs = {} if q is not None: for i in q: if i.op == 'eq': kwargs[i.field] = i.value marker_obj = None if marker: marker_obj = objects.cluster.get_by_uuid(pecan.request.context, marker) clusters = pecan.request.dbapi.clusters_get_list(limit=limit, marker=marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: clusters = pecan.request.dbapi.clusters_get_all(**kwargs) return ClusterCollection.convert_with_links(clusters, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_ports_collection(self, uuid, interface_uuid, node_uuid, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): if self._from_ihosts and not uuid: raise exception.InvalidParameterValue(_( "Host id not specified.")) if self._from_iinterface and not uuid: raise exception.InvalidParameterValue(_( "Interface id not specified.")) if self._from_inode and not uuid: raise exception.InvalidParameterValue(_( "inode id not specified.")) limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.ethernet_port.get_by_uuid( pecan.request.context, marker) if self._from_ihosts: ports = pecan.request.dbapi.ethernet_port_get_by_host( uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif self._from_inode: ports = pecan.request.dbapi.ethernet_port_get_by_numa_node( uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif self._from_iinterface: ports = pecan.request.dbapi.ethernet_port_get_by_interface( uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: if uuid and not interface_uuid: ports = pecan.request.dbapi.ethernet_port_get_by_host( uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif uuid and interface_uuid: # Need ihost_uuid ? ports = pecan.request.dbapi.ethernet_port_get_by_host_interface( uuid, interface_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif interface_uuid: # Need ihost_uuid ? ports = pecan.request.dbapi.ethernet_port_get_by_host_interface( uuid, # None interface_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: ports = pecan.request.dbapi.ethernet_port_get_list( limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return EthernetPortCollection.convert_with_links(ports, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_disks_collection(self, i_uuid, istor_uuid, ipv_uuid, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): if self._from_ihosts and not i_uuid: raise exception.InvalidParameterValue(_("Host id not specified.")) if self._from_istor and not i_uuid: raise exception.InvalidParameterValue( _("Interface id not specified.")) if self._from_ipv and not i_uuid: raise exception.InvalidParameterValue( _("Physical Volume id not specified.")) limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.disk.get_by_uuid(pecan.request.context, marker) if self._from_ihosts: disks = pecan.request.dbapi.idisk_get_by_ihost(i_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif self._from_istor: disks = pecan.request.dbapi.idisk_get_by_istor(i_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif self._from_ipv: disks = pecan.request.dbapi.idisk_get_by_ipv(i_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: if i_uuid and not istor_uuid and not ipv_uuid: disks = pecan.request.dbapi.idisk_get_by_ihost( i_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif i_uuid and istor_uuid: # Need ihost_uuid ? disks = pecan.request.dbapi.idisk_get_by_ihost_istor( i_uuid, istor_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif istor_uuid: # Need ihost_uuid ? disks = pecan.request.dbapi.idisk_get_by_ihost_istor( i_uuid, # None istor_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif i_uuid and ipv_uuid: # Need ihost_uuid ? disks = pecan.request.dbapi.idisk_get_by_ihost_ipv( i_uuid, ipv_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif ipv_uuid: # Need ihost_uuid ? disks = pecan.request.dbapi.idisk_get_by_ihost_ipv( i_uuid, # None ipv_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: disks = pecan.request.dbapi.idisk_get_list(limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return DiskCollection.convert_with_links(disks, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_cpus_collection(self, i_uuid, inode_uuid, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): if self._from_ihosts and not i_uuid: raise exception.InvalidParameterValue(_("Host id not specified.")) if self._from_inode and not i_uuid: raise exception.InvalidParameterValue(_("Node id not specified.")) limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.cpu.get_by_uuid(pecan.request.context, marker) if self._from_ihosts: cpus = pecan.request.dbapi.icpu_get_by_ihost(i_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif self._from_inode: cpus = pecan.request.dbapi.icpu_get_by_inode(i_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: if i_uuid and not inode_uuid: cpus = pecan.request.dbapi.icpu_get_by_ihost(i_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif i_uuid and inode_uuid: # Need ihost_uuid ? cpus = pecan.request.dbapi.icpu_get_by_ihost_inode( i_uuid, inode_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) elif inode_uuid: # Need ihost_uuid ? cpus = pecan.request.dbapi.icpu_get_by_ihost_inode( i_uuid, # None inode_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: cpus = pecan.request.dbapi.icpu_get_list(limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) return CPUCollection.convert_with_links(cpus, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)
def _get_storage_backend_collection(self, isystem_uuid, marker, limit, sort_key, sort_dir, expand=False, resource_url=None): if self._from_isystems and not isystem_uuid: raise exception.InvalidParameterValue( _("System id not specified.")) limit = utils.validate_limit(limit) sort_dir = utils.validate_sort_dir(sort_dir) marker_obj = None if marker: marker_obj = objects.storage_backend.get_by_uuid( pecan.request.context, marker) if isystem_uuid: storage_backends = \ pecan.request.dbapi.storage_backend_get_by_isystem( isystem_uuid, limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) else: storage_backends = \ pecan.request.dbapi.storage_backend_get_list( limit, marker_obj, sort_key=sort_key, sort_dir=sort_dir) # TODO: External backend case for emc_vnx, hpe3par, hpelefthand will be # handled in a separate task # If cinder is not configured yet, calling cinder_has_external_backend() will # timeout. If any of these loosely coupled backend exists, create an external # backend with services set to cinder if external backend is not created yet. # if api_helper.is_svc_enabled(storage_backends, constants.SB_SVC_CINDER): # try: # if pecan.request.rpcapi.cinder_has_external_backend(pecan.request.context): # # # Check if external backend already exists. # need_soft_ext_sb = True # for s_b in storage_backends: # if s_b.backend == constants.SB_TYPE_EXTERNAL: # if s_b.services is None: # s_b.services = [constants.SB_SVC_CINDER] # elif constants.SB_SVC_CINDER not in s_b.services: # s_b.services.append(constants.SB_SVC_CINDER) # need_soft_ext_sb = False # break # # if need_soft_ext_sb: # ext_sb = StorageBackend() # ext_sb.backend = constants.SB_TYPE_EXTERNAL # ext_sb.state = constants.SB_STATE_CONFIGURED # ext_sb.task = constants.SB_TASK_NONE # ext_sb.services = [constants.SB_SVC_CINDER] # storage_backends.extend([ext_sb]) # except Timeout: # LOG.exception("Timeout while getting external backend list!") return StorageBackendCollection\ .convert_with_links(storage_backends, limit, url=resource_url, expand=expand, sort_key=sort_key, sort_dir=sort_dir)