Beispiel #1
0
    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)
Beispiel #3
0
    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
Beispiel #4
0
    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)
Beispiel #5
0
    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)
Beispiel #6
0
    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)
Beispiel #7
0
    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)
Beispiel #8
0
    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)
Beispiel #10
0
    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)
Beispiel #11
0
    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)
Beispiel #12
0
    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)
Beispiel #13
0
    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)
Beispiel #14
0
    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)
Beispiel #15
0
    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)
Beispiel #16
0
    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)
Beispiel #17
0
    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)
Beispiel #18
0
    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)
Beispiel #19
0
    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)
Beispiel #21
0
 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)
Beispiel #22
0
    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)
Beispiel #23
0
    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)
Beispiel #24
0
    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)
Beispiel #25
0
    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)
Beispiel #26
0
    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)
Beispiel #27
0
    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)
Beispiel #28
0
    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)
Beispiel #29
0
    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)