summaryrefslogtreecommitdiffstats
path: root/snaps/openstack/utils/nova_utils.py
diff options
context:
space:
mode:
authorspisarski <s.pisarski@cablelabs.com>2017-07-14 13:28:37 -0600
committerspisarski <s.pisarski@cablelabs.com>2017-07-17 09:14:29 -0600
commit841b5699185442f2cc6f87a776fd707045be5587 (patch)
tree6e7e5e5c28042a7bc2c0f6a7e58a270bc59cae7e /snaps/openstack/utils/nova_utils.py
parent0f47ac44b59932544c45bd6df82a31aedb85b16f (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.py72
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)