Ejemplo n.º 1
0
    def list(self, limit=None, marker=None):
        # pylint:disable=protected-access
        if self.provider._keystone_version == 3:
            os_regions = [
                OpenStackRegion(self.provider, region)
                for region in self.provider.keystone.regions.list()
            ]
            return ClientPagedResultList(self.provider,
                                         os_regions,
                                         limit=limit,
                                         marker=marker)
        else:
            # Keystone v3 onwards supports directly listing regions
            # but for v2, this convoluted method is necessary.
            regions = (
                endpoint.get('region') or endpoint.get('region_id')
                for svc in self.provider.keystone.service_catalog.get_data()
                for endpoint in svc.get('endpoints', []))
            regions = set(region for region in regions if region)
            os_regions = [
                OpenStackRegion(self.provider, region) for region in regions
            ]

            return ClientPagedResultList(self.provider,
                                         os_regions,
                                         limit=limit,
                                         marker=marker)
Ejemplo n.º 2
0
    def test_client_paged_result_list(self):
        objects = self.objects

        # A list with limit=2 and marker=None
        results = ClientPagedResultList(self.provider, objects, 2, None)
        self.assertListEqual(results, list(itertools.islice(objects, 2)))
        self.assertEqual(results.marker, objects[1].id)
        self.assertTrue(results.is_truncated)
        self.assertTrue(results.supports_total)
        self.assertEqual(results.total_results, 4)
        self.assertEqual(results.data, objects)

        # A list with limit=2 and marker=2
        results = ClientPagedResultList(self.provider, objects, 2, 2)
        self.assertListEqual(results, list(itertools.islice(objects, 2, 4)))
        self.assertEqual(results.marker, None)
        self.assertFalse(results.is_truncated)
        self.assertTrue(results.supports_total)
        self.assertEqual(results.total_results, 4)
        self.assertEqual(results.data, objects)

        # A list with limit=2 and marker=3
        results = ClientPagedResultList(self.provider, objects, 2, 3)
        self.assertListEqual(results, list(itertools.islice(objects, 3, 4)))
        self.assertFalse(results.is_truncated)
        self.assertEqual(results.marker, None)
        self.assertEqual(results.data, objects)

        self.assertFalse(
            results.supports_server_paging, "Client paged result"
            " lists should return False for server paging.")
Ejemplo n.º 3
0
    def list(self, limit=None, marker=None):
        firewalls = [
            OpenStackVMFirewall(self.provider, fw)
            for fw in self.provider.os_conn.network.security_groups()]

        return ClientPagedResultList(self.provider, firewalls,
                                     limit=limit, marker=marker)
Ejemplo n.º 4
0
 def list(self, limit=None, marker=None):
     routers = self.provider.vpc_conn.get_all_route_tables()
     aws_routers = [AWSRouter(self.provider, r) for r in routers]
     return ClientPagedResultList(self.provider,
                                  aws_routers,
                                  limit=limit,
                                  marker=marker)
Ejemplo n.º 5
0
    def find(self, name, limit=None, marker=None):
        objects = [obj for obj in self if obj.name == name]

        return ClientPagedResultList(self._provider,
                                     objects,
                                     limit=limit,
                                     marker=marker)
Ejemplo n.º 6
0
 def list(self, limit=None, marker=None):
     floating_ips = [AzureFloatingIP(self._provider, floating_ip,
                                     self._network_id)
                     for floating_ip in self._provider.azure_client.
                     list_floating_ips()]
     return ClientPagedResultList(self._provider, floating_ips,
                                  limit=limit, marker=marker)
Ejemplo n.º 7
0
 def list(self, limit=None, marker=None):
     routers = self.provider.neutron.list_routers().get('routers')
     os_routers = [OpenStackRouter(self.provider, r) for r in routers]
     return ClientPagedResultList(self.provider,
                                  os_routers,
                                  limit=limit,
                                  marker=marker)
Ejemplo n.º 8
0
 def find(self, name, limit=None, marker=None):
     sgs = [self.provider.os_conn.network.find_security_group(name)]
     results = [OpenStackVMFirewall(self.provider, sg) for sg in sgs if sg]
     return ClientPagedResultList(self.provider,
                                  results,
                                  limit=limit,
                                  marker=marker)
Ejemplo n.º 9
0
 def find(self, name, limit=None, marker=None):
     networks = [OpenStackNetwork(self.provider, network)
                 for network in self.provider.neutron.list_networks(
                     name=name)
                 .get('networks') if network]
     return ClientPagedResultList(self.provider, networks,
                                  limit=limit, marker=marker)
Ejemplo n.º 10
0
 def list(self, limit=None, marker=None):
     log.debug("OpenStack listing of all current internet gateways")
     igl = [OpenStackInternetGateway(self._provider, n)
            for n in self._provider.networking.networks
            if n.external and self._check_fip_connectivity(n)]
     return ClientPagedResultList(self._provider, igl, limit=limit,
                                  marker=marker)
Ejemplo n.º 11
0
    def list(self, limit=None, marker=None, collection=None, **kwargs):
        """
        List a set of resources.

        :type  collection: ``ResourceCollection``
        :param collection: Boto resource collection object corresponding to the
                           current resource. See http://boto3.readthedocs.io/
                           en/latest/guide/collections.html
        """
        limit = limit or self.provider.config.default_result_limit
        collection = collection or self.boto_collection.filter(**kwargs)
        pag_type, resume_token, boto_objs = self._make_query(
            collection, limit, marker)
        # Wrap in CB objects.
        results = [self.cb_resource(self.provider, obj) for obj in boto_objs]

        if pag_type == 'server':
            log.debug("Using server pagination.")
            return ServerPagedResultList(
                is_truncated=True if resume_token else False,
                marker=resume_token if resume_token else None,
                supports_total=False,
                data=results)
        else:
            log.debug("Did not received a resume token, will page in client"
                      " if necessary.")
            return ClientPagedResultList(self.provider,
                                         results,
                                         limit=limit,
                                         marker=marker)
Ejemplo n.º 12
0
 def list(self, network=None, zone=None, limit=None, marker=None):
     """
     If the zone is not given, we list all subnetworks, in all regions.
     """
     filter = None
     if network is not None:
         network = (network if isinstance(network, GCENetwork) else
                    self.provider.networking.networks.get(network))
         filter = 'network eq %s' % network.resource_url
     region_names = []
     if zone:
         region_names.append(self._zone_to_region_name(zone))
     else:
         for r in self.provider.compute.regions:
             region_names.append(r.name)
     subnets = []
     for region_name in region_names:
         response = (self.provider.gce_compute.subnetworks().list(
             project=self.provider.project_name,
             region=region_name,
             filter=filter).execute())
         for subnet in response.get('items', []):
             subnets.append(GCESubnet(self.provider, subnet))
     return ClientPagedResultList(self.provider,
                                  subnets,
                                  limit=limit,
                                  marker=marker)
Ejemplo n.º 13
0
 def list(self, limit=None, marker=None):
     fips = [OpenStackFloatingIP(self._provider, fip)
             for fip in self._provider.os_conn.network.ips(
                 floating_network_id=self.gateway.id
             )]
     return ClientPagedResultList(self._provider, fips,
                                  limit=limit, marker=marker)
Ejemplo n.º 14
0
 def list(self, limit=None, marker=None):
     regions = [
         AWSRegion(self.provider, region) for region in
         self.provider.ec2_conn.meta.client.describe_regions()
         .get('Regions', [])]
     return ClientPagedResultList(self.provider, regions,
                                  limit=limit, marker=marker)
Ejemplo n.º 15
0
 def list(self, limit=None, marker=None):
     vm_types = [
         AWSVMType(self.provider, vm_type) for vm_type in self.instance_data
     ]
     return ClientPagedResultList(self.provider,
                                  vm_types,
                                  limit=limit,
                                  marker=marker)
Ejemplo n.º 16
0
 def find(self, name, limit=None, marker=None):
     filtr = {'tag:Name': name}
     routers = self.provider.vpc_conn.get_all_route_tables(filters=filtr)
     aws_routers = [AWSRouter(self.provider, r) for r in routers]
     return ClientPagedResultList(self.provider,
                                  aws_routers,
                                  limit=limit,
                                  marker=marker)
Ejemplo n.º 17
0
 def find(self, **kwargs):
     obj_list = self
     filters = ['name']
     matches = cb_helpers.generic_find(filters, kwargs, obj_list)
     return ClientPagedResultList(self._provider,
                                  list(matches),
                                  limit=None,
                                  marker=None)
Ejemplo n.º 18
0
 def list(self, network=None, limit=None, marker=None):
     """
     List subnets
     """
     return ClientPagedResultList(self.provider,
                                  self._list_subnets(network),
                                  limit=limit,
                                  marker=marker)
Ejemplo n.º 19
0
 def list(self, limit=None, marker=None):
     networks = [
         AWSNetwork(self.provider, network)
         for network in self.provider.vpc_conn.get_all_vpcs()
     ]
     return ClientPagedResultList(self.provider,
                                  networks,
                                  limit=limit,
                                  marker=marker)
Ejemplo n.º 20
0
 def list(self, limit=None, marker=None):
     regions = [
         AWSRegion(self.provider, region)
         for region in self.provider.ec2_conn.get_all_regions()
     ]
     return ClientPagedResultList(self.provider,
                                  regions,
                                  limit=limit,
                                  marker=marker)
Ejemplo n.º 21
0
 def list(self, limit=None, marker=None):
     routes = [
         AzureRouter(self.provider, route)
         for route in self.provider.azure_client.list_route_tables()
     ]
     return ClientPagedResultList(self.provider,
                                  routes,
                                  limit=limit,
                                  marker=marker)
Ejemplo n.º 22
0
 def find(self, limit=None, marker=None, **kwargs):
     """
     GCE networks are global. There is at most one network with a given
     name.
     """
     obj_list = self
     filters = ['name', 'label']
     matches = cb_helpers.generic_find(filters, kwargs, obj_list)
     return ClientPagedResultList(self._provider, list(matches))
Ejemplo n.º 23
0
 def list(self, limit=None, marker=None):
     """
            List all snapshots.
     """
     snaps = [
         AzureSnapshot(self.provider, obj)
         for obj in self.provider.azure_client.list_snapshots()
     ]
     return ClientPagedResultList(self.provider, snaps, limit, marker)
Ejemplo n.º 24
0
 def list(self, limit=None, marker=None):
     regions = [
         AzureRegion(self.provider, region)
         for region in self.provider.azure_client.list_locations()
     ]
     return ClientPagedResultList(self.provider,
                                  regions,
                                  limit=limit,
                                  marker=marker)
Ejemplo n.º 25
0
 def find(self, name, limit=None, marker=None):
     """
     Get all security groups associated with your account.
     """
     sgs = self.provider.nova.security_groups.findall(name=name)
     results = [OpenStackSecurityGroup(self.provider, sg)
                for sg in sgs]
     return ClientPagedResultList(self.provider, results,
                                  limit=limit, marker=marker)
Ejemplo n.º 26
0
 def find(self, name, limit=None, marker=None):
     """
     Searches in bucket names for a substring.
     """
     buckets = [bucket for bucket in self if name in bucket.name]
     return ClientPagedResultList(self.provider,
                                  buckets,
                                  limit=limit,
                                  marker=marker)
Ejemplo n.º 27
0
 def find(self, name, limit=None, marker=None):
     """
     Searches for a key pair by a given list of attributes.
     """
     keypairs = self.provider.nova.keypairs.findall(name=name)
     results = [OpenStackKeyPair(self.provider, kp)
                for kp in keypairs]
     return ClientPagedResultList(self.provider, results,
                                  limit=limit, marker=marker)
Ejemplo n.º 28
0
 def list(self, limit=None, marker=None):
     # Filter out firewall rules with priority < 3500 because values
     # between 3500 and 4096 are assumed to be owned by cloudbridge
     # default rules.
     # pylint:disable=protected-access
     rules = [AzureVMFirewallRule(self.firewall, rule) for rule
              in self.firewall._vm_firewall.security_rules
              if rule.priority < 3500]
     return ClientPagedResultList(self._provider, rules,
                                  limit=limit, marker=marker)
Ejemplo n.º 29
0
 def list(self, limit=None, marker=None):
     """
     List all volumes.
     """
     azure_vols = self.provider.azure_client.list_disks()
     cb_vols = [AzureVolume(self.provider, vol) for vol in azure_vols]
     return ClientPagedResultList(self.provider,
                                  cb_vols,
                                  limit=limit,
                                  marker=marker)
Ejemplo n.º 30
0
 def list(self, limit=None, marker=None):
     """
     List all volumes.
     """
     aws_vols = self.provider.ec2_conn.get_all_volumes()
     cb_vols = [AWSVolume(self.provider, vol) for vol in aws_vols]
     return ClientPagedResultList(self.provider,
                                  cb_vols,
                                  limit=limit,
                                  marker=marker)