diff options
author | spisarski <s.pisarski@cablelabs.com> | 2017-07-06 13:09:46 -0600 |
---|---|---|
committer | spisarski <s.pisarski@cablelabs.com> | 2017-07-06 13:18:37 -0600 |
commit | 8bd26c2d75108037430fde83ea57ab0b964f0058 (patch) | |
tree | bc7a2985000041e9c46eaec46e8aec28e45ca355 /snaps/openstack/utils | |
parent | 5616cafabcc5f8ab75ee6fcaefa87e3fbd126ce9 (diff) |
Created domain object for flavors.
OpenStack implementation details were leaking out into the
flavor creator.
JIRA: SNAPS-111
Change-Id: I59a77d02e30065a7f4560e74295b2084a83686df
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
Diffstat (limited to 'snaps/openstack/utils')
-rw-r--r-- | snaps/openstack/utils/nova_utils.py | 97 |
1 files changed, 81 insertions, 16 deletions
diff --git a/snaps/openstack/utils/nova_utils.py b/snaps/openstack/utils/nova_utils.py index bab0533..d6f9a19 100644 --- a/snaps/openstack/utils/nova_utils.py +++ b/snaps/openstack/utils/nova_utils.py @@ -21,6 +21,8 @@ from cryptography.hazmat.primitives import serialization from cryptography.hazmat.primitives.asymmetric import rsa from novaclient.client import Client from novaclient.exceptions import NotFound + +from snaps.domain.flavor import Flavor from snaps.domain.vm_inst import VmInst from snaps.openstack.utils import keystone_utils, glance_utils, neutron_utils @@ -290,12 +292,45 @@ def delete_vm_instance(nova, vm_inst): nova.servers.delete(vm_inst.id) -def get_flavor_by_name(nova, name): +def get_os_flavor(nova, flavor): """ - Returns a flavor by name + Returns to OpenStack flavor object by name :param nova: the Nova client - :param name: the flavor name to return - :return: the OpenStack flavor object or None if not exists + :param flavor: the SNAPS flavor domain object + :return: the OpenStack Flavor object + """ + try: + return nova.flavors.get(flavor.id) + except NotFound: + return None + + +def get_flavor(nova, flavor): + """ + Returns to OpenStack flavor object by name + :param nova: the Nova client + :param flavor: the SNAPS flavor domain object + :return: the SNAPS Flavor domain object + """ + os_flavor = get_os_flavor(nova, flavor) + if os_flavor: + return Flavor( + name=os_flavor.name, id=os_flavor.id, ram=os_flavor.ram, + disk=os_flavor.disk, vcpus=os_flavor.vcpus, + ephemeral=os_flavor.ephemeral, swap=os_flavor.swap, + rxtx_factor=os_flavor.rxtx_factor, is_public=os_flavor.is_public) + try: + return nova.flavors.get(flavor.id) + except NotFound: + return None + + +def get_os_flavor_by_name(nova, name): + """ + Returns to OpenStack flavor object by name + :param nova: the Nova client + :param name: the name of the flavor to query + :return: OpenStack flavor object """ try: return nova.flavors.find(name=name) @@ -303,31 +338,61 @@ def get_flavor_by_name(nova, name): return None +def get_flavor_by_name(nova, name): + """ + Returns a flavor by name + :param nova: the Nova client + :param name: the flavor name to return + :return: the SNAPS flavor domain object or None if not exists + """ + os_flavor = get_os_flavor_by_name(nova, name) + if os_flavor: + return Flavor( + name=os_flavor.name, id=os_flavor.id, ram=os_flavor.ram, + disk=os_flavor.disk, vcpus=os_flavor.vcpus, + ephemeral=os_flavor.ephemeral, swap=os_flavor.swap, + rxtx_factor=os_flavor.rxtx_factor, is_public=os_flavor.is_public) + + def create_flavor(nova, flavor_settings): """ Creates and returns and OpenStack flavor object :param nova: the Nova client :param flavor_settings: the flavor settings - :return: the Flavor + :return: the SNAPS flavor domain object """ - return nova.flavors.create(name=flavor_settings.name, - flavorid=flavor_settings.flavor_id, - ram=flavor_settings.ram, - vcpus=flavor_settings.vcpus, - disk=flavor_settings.disk, - ephemeral=flavor_settings.ephemeral, - swap=flavor_settings.swap, - rxtx_factor=flavor_settings.rxtx_factor, - is_public=flavor_settings.is_public) + os_flavor = nova.flavors.create( + name=flavor_settings.name, flavorid=flavor_settings.flavor_id, + ram=flavor_settings.ram, vcpus=flavor_settings.vcpus, + disk=flavor_settings.disk, ephemeral=flavor_settings.ephemeral, + swap=flavor_settings.swap, rxtx_factor=flavor_settings.rxtx_factor, + is_public=flavor_settings.is_public) + return Flavor( + name=os_flavor.name, id=os_flavor.id, ram=os_flavor.ram, + disk=os_flavor.disk, vcpus=os_flavor.vcpus, + ephemeral=os_flavor.ephemeral, swap=os_flavor.swap, + rxtx_factor=os_flavor.rxtx_factor, is_public=os_flavor.is_public) def delete_flavor(nova, flavor): """ Deletes a flavor :param nova: the Nova client - :param flavor: the OpenStack flavor object + :param flavor: the SNAPS flavor domain object + """ + nova.flavors.delete(flavor.id) + + +def set_flavor_keys(nova, flavor, metadata): + """ + Sets metadata on the flavor + :param nova: the Nova client + :param flavor: the SNAPS flavor domain object + :param metadata: the metadata to set """ - nova.flavors.delete(flavor) + os_flavor = get_os_flavor(nova, flavor) + if os_flavor: + os_flavor.set_keys(metadata) def add_security_group(nova, vm, security_group_name): |