Exemplo n.º 1
0
    def take_action(self, parsed_args):
        cloud_regions = openstack.config.loader.OpenStackConfig().\
            get_all_clouds()
        if parsed_args.clouds:
            cloud_regions = filter(lambda c: c.name in parsed_args.clouds,
                                   cloud_regions)
        node_count = int(parsed_args.node_count)
        filters = {
            'status': 'available',
            'available_start_time': str(parsed_args.start_time) if
            parsed_args.start_time else None,
            'available_end_time': str(parsed_args.end_time) if
            parsed_args.end_time else None,
            'resource_type': parsed_args.resource_type,
        }

        available_offers = []
        for c in cloud_regions:
            client = esileapclient.Client(session=c.get_session())
            offers = client.offer.list(filters)
            for offer in offers:
                offer.cloud_region = c
                offer.cloud = c.name
                offer.region = c.config['region_name']
                available_offers += [offer]

        if node_count > len(available_offers):
            raise exceptions.CommandError(
                "ERROR: Not enough offers found")

        offers_to_claim = random.sample(available_offers, node_count)
        leases = []
        for offer in offers_to_claim:
            client = esileapclient.Client(
                session=offer.cloud_region.get_session())
            try:
                lease = client.offer.claim(
                    offer.uuid,
                    **{'start_time': parsed_args.start_time,
                       'end_time': parsed_args.end_time})
                lease.cloud = offer.cloud
                lease.region = offer.region
                leases += [lease]
            except exceptions.CommandError:
                # offer is no longer available during this time range; continue
                # but let user know
                print("Offer %s is no longer available; continuing"
                      % offer.uuid)

        columns = ['cloud', 'region'] + list(LEASE_RESOURCE.fields.keys())
        labels = ['Cloud', 'Region'] + list(LEASE_RESOURCE.fields.values())

        return (labels,
                (oscutils.get_item_properties(s, columns) for s in leases))
Exemplo n.º 2
0
    def take_action(self, parsed_args):
        data = []

        cloud_regions = openstack.config.loader.OpenStackConfig().\
            get_all_clouds()
        if parsed_args.clouds:
            cloud_regions = filter(lambda c: c.name in parsed_args.clouds,
                                   cloud_regions)
        filters = {
            'status':
            parsed_args.status,
            'start_time':
            str(parsed_args.time_range[0]) if parsed_args.time_range else None,
            'end_time':
            str(parsed_args.time_range[1]) if parsed_args.time_range else None,
            'resource_type':
            parsed_args.resource_type,
        }

        for c in cloud_regions:
            client = esileapclient.Client(session=c.get_session())

            leases = client.lease.list(filters)
            for lease in leases:
                lease.cloud = c.name
                lease.region = c.config['region_name']
                data += [lease]

        columns = ['cloud', 'region'] + list(LEASE_RESOURCE.fields.keys())
        labels = ['Cloud', 'Region'] + list(LEASE_RESOURCE.fields.values())

        return (labels, (oscutils.get_item_properties(s, columns)
                         for s in data))
Exemplo n.º 3
0
    def test_client_user_api_version(self, http_client_mock):
        os_esileap_api_version = '1.15'
        session = mock.Mock()

        client.Client(session=session,
                      os_esileap_api_version=os_esileap_api_version)

        http_client_mock.assert_called_once_with(
            session=session, os_esileap_api_version=os_esileap_api_version)
Exemplo n.º 4
0
 def test_client_session_via_kwargs(self, http_client_mock):
     session = mock.Mock()
     client.Client(session=session)
     http_client_mock.assert_called_once_with(
         session, os_esileap_api_version=client.DEFAULT_VER)
Exemplo n.º 5
0
    def test_client_initialized_managers(self, http_client_mock):
        session = mock.Mock()
        cl = client.Client(session=session, os_esileap_api_version='1')

        self.assertIsInstance(cl.offer, client.offer.OfferManager)