diff options
author | spisarski <s.pisarski@cablelabs.com> | 2017-07-14 13:28:37 -0600 |
---|---|---|
committer | spisarski <s.pisarski@cablelabs.com> | 2017-07-17 09:14:29 -0600 |
commit | 841b5699185442f2cc6f87a776fd707045be5587 (patch) | |
tree | 6e7e5e5c28042a7bc2c0f6a7e58a270bc59cae7e /snaps/openstack/utils/nova_utils.py | |
parent | 0f47ac44b59932544c45bd6df82a31aedb85b16f (diff) |
Last task necessary to stop users from easily obtaining OS objects.
Changed external interfaces still exposing OpenStack created APIs to
either return SNAPS-OO domain objects or objects contained on the
OpenStack generated objects as to not leak implementation details that
would eventually break the library when new API versions are released.
JIRA: SNAPS-125
Change-Id: Iab6d6d298c4c5da68daed4b1b252313a1595a295
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
Diffstat (limited to 'snaps/openstack/utils/nova_utils.py')
-rw-r--r-- | snaps/openstack/utils/nova_utils.py | 72 |
1 files changed, 62 insertions, 10 deletions
diff --git a/snaps/openstack/utils/nova_utils.py b/snaps/openstack/utils/nova_utils.py index 1ced4d7..bee526c 100644 --- a/snaps/openstack/utils/nova_utils.py +++ b/snaps/openstack/utils/nova_utils.py @@ -109,7 +109,7 @@ def get_servers_by_name(nova, name): Returns a list of servers with a given name :param nova: the Nova client :param name: the server name - :return: the list of servers + :return: the list of snaps.domain.VmInst objects """ out = list() servers = nova.servers.list(search_opts={'name': name}) @@ -119,7 +119,7 @@ def get_servers_by_name(nova, name): return out -def get_latest_server_os_object(nova, server): +def __get_latest_server_os_object(nova, server): """ Returns a server with a given id :param nova: the Nova client @@ -129,6 +129,32 @@ def get_latest_server_os_object(nova, server): return nova.servers.get(server.id) +def get_server_status(nova, server): + """ + Returns the a VM instance's status from OpenStack + :param nova: the Nova client + :param server: the domain VmInst object + :return: the VM's string status or None if not founc + """ + server = __get_latest_server_os_object(nova, server) + if server: + return server.status + return None + + +def get_server_console_output(nova, server): + """ + Returns the console object for parsing VM activity + :param nova: the Nova client + :param server: the domain VmInst object + :return: the console output object or None if server object is not found + """ + server = __get_latest_server_os_object(nova, server) + if server: + return server.get_console_output() + return None + + def get_latest_server_object(nova, server): """ Returns a server with a given id @@ -136,11 +162,38 @@ def get_latest_server_object(nova, server): :param server: the old server object :return: the list of servers or None if not found """ - server = get_latest_server_os_object(nova, server) + server = __get_latest_server_os_object(nova, server) return VmInst(name=server.name, inst_id=server.id, networks=server.networks) +def get_server_security_group_names(nova, server): + """ + Returns a server with a given id + :param nova: the Nova client + :param server: the old server object + :return: the list of security groups associated with a VM + """ + out = list() + os_vm_inst = __get_latest_server_os_object(nova, server) + for sec_grp_dict in os_vm_inst.security_groups: + out.append(sec_grp_dict['name']) + return out + + +def get_server_info(nova, server): + """ + Returns a dictionary of a VMs info as returned by OpenStack + :param nova: the Nova client + :param server: the old server object + :return: a dict of the info if VM exists else None + """ + vm = __get_latest_server_os_object(nova, server) + if vm: + return vm._info + return None + + def create_keys(key_size=2048): """ Generates public and private keys @@ -168,7 +221,6 @@ def save_keys_to_files(keys=None, pub_file_path=None, priv_file_path=None): :param keys: the keys to save generated by cryptography :param pub_file_path: the path to the public keys :param priv_file_path: the path to the private keys - :return: None """ if keys: if pub_file_path: @@ -297,7 +349,7 @@ def delete_vm_instance(nova, vm_inst): nova.servers.delete(vm_inst.id) -def get_os_flavor(nova, flavor): +def __get_os_flavor(nova, flavor): """ Returns to OpenStack flavor object by name :param nova: the Nova client @@ -317,7 +369,7 @@ def get_flavor(nova, flavor): :param flavor: the SNAPS flavor domain object :return: the SNAPS Flavor domain object """ - os_flavor = get_os_flavor(nova, flavor) + os_flavor = __get_os_flavor(nova, flavor) if os_flavor: return Flavor( name=os_flavor.name, id=os_flavor.id, ram=os_flavor.ram, @@ -330,7 +382,7 @@ def get_flavor(nova, flavor): return None -def get_os_flavor_by_name(nova, name): +def __get_os_flavor_by_name(nova, name): """ Returns to OpenStack flavor object by name :param nova: the Nova client @@ -350,7 +402,7 @@ def get_flavor_by_name(nova, name): :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) + 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, @@ -395,7 +447,7 @@ def set_flavor_keys(nova, flavor, metadata): :param flavor: the SNAPS flavor domain object :param metadata: the metadata to set """ - os_flavor = get_os_flavor(nova, flavor) + os_flavor = __get_os_flavor(nova, flavor) if os_flavor: os_flavor.set_keys(metadata) @@ -428,5 +480,5 @@ def add_floating_ip_to_server(nova, vm, floating_ip, ip_addr): :param floating_ip: FloatingIp domain object :param ip_addr: the IP to which to bind the floating IP to """ - vm = get_latest_server_os_object(nova, vm) + vm = __get_latest_server_os_object(nova, vm) vm.add_floating_ip(floating_ip.ip, ip_addr) |