Example #1
0
def create_api_assets(cloud, api_client, benchmark_volumes, extra_assets):
    """
    Create our API assets, and return a list of PhysicalAsset, Quantity
    """
    provider = api_client.providers.get_or_create(name=cloud.provider)
    location = api_client.locations.get_or_create(name=cloud.location, provider=provider)

    instance_type = api_client.abstract_assets.get_or_create(name=cloud.instance_type)
    instance = api_client.physical_assets.get_or_create(asset=instance_type, location=location)
    assets = [instance]

    for benchmark_volume in benchmark_volumes:
        for asset in benchmark_volume.assets:
            abstract_asset = api_client.abstract_assets.get_or_create(name=asset)
            physical_asset = api_client.physical_assets.get_or_create(asset=abstract_asset, location=location)
            assets.append(physical_asset)

    for asset in extra_assets:
        abstract_asset = api_client.abstract_assets.get_or_create(name=asset)
        physical_asset = api_client.physical_assets.get_or_create(asset=abstract_asset, location=location)
        assets.append(physical_asset)

    frozen_assets = [freeze_dict(asset) for asset in assets]
    assets_with_count = collections.Counter(frozen_assets).most_common()
    return [(unfreeze_dict(asset), quantity) for asset, quantity in assets_with_count]
Example #2
0
def create_api_assets(cloud, api_client, benchmark_volumes, extra_assets):
    """
    Create our API assets, and return a list of PhysicalAsset, Quantity
    """
    provider = api_client.providers.get_or_create(name=cloud.provider)
    location = api_client.locations.get_or_create(name=cloud.location,
                                                  provider=provider)

    instance_type = api_client.abstract_assets.get_or_create(
        name=cloud.instance_type)
    instance = api_client.physical_assets.get_or_create(asset=instance_type,
                                                        location=location)
    assets = [instance]

    for benchmark_volume in benchmark_volumes:
        for asset in benchmark_volume.assets:
            abstract_asset = api_client.abstract_assets.get_or_create(
                name=asset)
            physical_asset = api_client.physical_assets.get_or_create(
                asset=abstract_asset, location=location)
            assets.append(physical_asset)

    for asset in extra_assets:
        abstract_asset = api_client.abstract_assets.get_or_create(name=asset)
        physical_asset = api_client.physical_assets.get_or_create(
            asset=abstract_asset, location=location)
        assets.append(physical_asset)

    frozen_assets = [freeze_dict(asset) for asset in assets]
    assets_with_count = collections.Counter(frozen_assets).most_common()
    return [(unfreeze_dict(asset), quantity)
            for asset, quantity in assets_with_count]
Example #3
0
 def get_or_create(self, **kwargs):
     key = freeze_dict(kwargs)
     if key not in self.objects:
         return self.create(**kwargs)
     return self._from_objects(key)
Example #4
0
 def test_freeze(self):
     test_dict = {"a": "b", "c": {"d": "e"}, "f": {"g": {"h": "i"}}}
     self.assertEqual(test_dict, unfreeze_dict(freeze_dict(test_dict)))
Example #5
0
 def create(self, **kwargs):
     key = freeze_dict(kwargs)
     self.objects[key] = kwargs
     return self._from_objects(key)