diff options
author | Morgan Richomme <morgan.richomme@orange.com> | 2016-09-16 08:54:06 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@172.30.200.206> | 2016-09-16 08:54:07 +0000 |
commit | 3cd02a0678e82c107fd7768642a10210b16c825d (patch) | |
tree | 4be8392276e91650dc00e4a3aee0383527fc284d /utils/openstack_utils.py | |
parent | 0e497c7deecb469cade667bfa768816ce9b2ab7d (diff) | |
parent | 0fa8de695dd6b50b7b01131376aefef9c13c21c1 (diff) |
Merge "Added support for custom images and flavors in tempest"
Diffstat (limited to 'utils/openstack_utils.py')
-rwxr-xr-x | utils/openstack_utils.py | 57 |
1 files changed, 39 insertions, 18 deletions
diff --git a/utils/openstack_utils.py b/utils/openstack_utils.py index d528549a1..e61d06434 100755 --- a/utils/openstack_utils.py +++ b/utils/openstack_utils.py @@ -211,6 +211,45 @@ def get_flavor_id_by_ram_range(nova_client, min_ram, max_ram): return id +def create_flavor(nova_client, flavor_name, ram, disk, vcpus): + try: + flavor = nova_client.flavors.create(flavor_name, ram, vcpus, disk) + try: + extra_specs = ft_utils.get_functest_config( + 'general.flavor_extra_specs') + flavor.set_keys(extra_specs) + except ValueError: + # flavor extra specs are not configured, therefore skip the update + pass + + except Exception, e: + logger.error("Error [create_flavor(nova_client, '%s', '%s', '%s', " + "'%s')]: %s" % (flavor_name, ram, disk, vcpus, e)) + return None + return flavor.id + + +def get_or_create_flavor(flavor_name, ram, disk, vcpus): + flavor_exists = False + nova_client = get_nova_client() + + flavor_id = get_flavor_id(nova_client, flavor_name) + if flavor_id != '': + logger.info("Using existing flavor '%s'..." % flavor_name) + flavor_exists = True + else: + logger.info("Creating flavor '%s' with '%s' RAM, '%s' disk size, " + "'%s' vcpus..." % (flavor_name, ram, disk, vcpus)) + flavor_id = create_flavor(nova_client, flavor_name, ram, disk, vcpus) + if not flavor_id: + logger.error("Failed to create flavor '%s'..." % (flavor_name)) + else: + logger.debug("Flavor '%s' with ID=%s created successfully." + % (flavor_name, flavor_id)) + + return flavor_exists, flavor_id + + def get_floating_ips(nova_client): try: floating_ips = nova_client.floating_ips.list() @@ -233,24 +272,6 @@ def get_hypervisors(nova_client): return None -def create_flavor(nova_client, flavor_name, ram, disk, vcpus): - try: - flavor = nova_client.flavors.create(flavor_name, ram, vcpus, disk) - try: - extra_specs = ft_utils.get_functest_config( - 'general.flavor_extra_specs') - flavor.set_keys(extra_specs) - except ValueError: - # flavor extra specs are not configured, therefore skip the update - pass - - except Exception, e: - logger.error("Error [create_flavor(nova_client, '%s', '%s', '%s', " - "'%s')]: %s" % (flavor_name, ram, disk, vcpus, e)) - return None - return flavor.id - - def create_instance(flavor_name, image_id, network_id, |