summaryrefslogtreecommitdiffstats
path: root/snaps/openstack/utils/launch_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'snaps/openstack/utils/launch_utils.py')
-rw-r--r--snaps/openstack/utils/launch_utils.py66
1 files changed, 44 insertions, 22 deletions
diff --git a/snaps/openstack/utils/launch_utils.py b/snaps/openstack/utils/launch_utils.py
index 6e8b94e..00ea822 100644
--- a/snaps/openstack/utils/launch_utils.py
+++ b/snaps/openstack/utils/launch_utils.py
@@ -530,8 +530,8 @@ def __get_connection_info(ansible_config, vm_dict):
return None
-def __get_variables(var_config, os_creds_dict, vm_dict, image_dict, flavor_dict,
- networks_dict, routers_dict):
+def __get_variables(var_config, os_creds_dict, vm_dict, image_dict,
+ flavor_dict, networks_dict, routers_dict):
"""
Returns a dictionary of substitution variables to be used for Ansible
templates
@@ -587,18 +587,19 @@ def __get_variable_value(var_config_values, os_creds_dict, vm_dict, image_dict,
the name is the key
:return:
"""
- admin_creds = os_creds_dict.get('admin-creds')
if var_config_values['type'] == 'string':
return __get_string_variable_value(var_config_values)
if var_config_values['type'] == 'vm-attr':
return __get_vm_attr_variable_value(var_config_values, vm_dict)
if var_config_values['type'] == 'os_creds':
- return __get_os_creds_variable_value(var_config_values, admin_creds)
+ return __get_os_creds_variable_value(var_config_values, os_creds_dict)
+ if var_config_values['type'] == 'os_creds_dict':
+ return str(__get_os_creds_dict(var_config_values, os_creds_dict))
if var_config_values['type'] == 'network':
return __get_network_variable_value(var_config_values, networks_dict)
if var_config_values['type'] == 'router':
return __get_router_variable_value(var_config_values, routers_dict,
- admin_creds)
+ os_creds_dict)
if var_config_values['type'] == 'port':
return __get_vm_port_variable_value(var_config_values, vm_dict)
if var_config_values['type'] == 'floating_ip':
@@ -607,8 +608,8 @@ def __get_variable_value(var_config_values, os_creds_dict, vm_dict, image_dict,
return __get_image_variable_value(var_config_values, image_dict)
if var_config_values['type'] == 'flavor':
return __get_flavor_variable_value(var_config_values, flavor_dict)
- if var_config_values['type'] == 'snaps-env-yaml':
- return __create_snaps_env_yaml(var_config_values, vm_dict)
+ if var_config_values['type'] == 'vm-yaml':
+ return __create_yaml(var_config_values, vm_dict)
return None
@@ -637,13 +638,19 @@ def __get_vm_attr_variable_value(var_config_values, vm_dict):
return vm.get_image_user()
-def __get_os_creds_variable_value(var_config_values, os_creds):
+def __get_os_creds_variable_value(var_config_values, os_creds_dict):
"""
Returns the associated OS credentials value
:param var_config_values: the configuration dictionary
- :param os_creds: the admin OpenStack OSCreds object
+ :param os_creds_dict: dict of OpenStack credentials where the key is the
+ name
:return: the value
"""
+ if 'creds_name' in var_config_values:
+ os_creds = os_creds_dict.get[var_config_values['creds_name']]
+ else:
+ os_creds = os_creds_dict.get('admin-creds')
+
if os_creds:
if var_config_values['value'] == 'username':
logger.info("Returning OS username")
@@ -659,6 +666,21 @@ def __get_os_creds_variable_value(var_config_values, os_creds):
return os_creds.project_name
+def __get_os_creds_dict(var_config_values, os_creds_dict):
+ """
+ Returns the associated OS credentials as a dict
+ :param var_config_values: the configuration dictionary
+ :param os_creds_dict: dict of creds where the key is the username
+ :return: the value dict
+ """
+ if 'creds_name' in var_config_values:
+ os_creds = os_creds_dict.get[var_config_values['creds_name']]
+ else:
+ os_creds = os_creds_dict.get('admin-creds')
+ if os_creds:
+ return os_creds.to_dict()
+
+
def __get_network_variable_value(var_config_values, networks_dict):
"""
Returns the associated network value
@@ -706,15 +728,22 @@ def __get_network_variable_value(var_config_values, networks_dict):
return broadcast_ip
-def __get_router_variable_value(var_config_values, routers_dict, os_creds):
+def __get_router_variable_value(var_config_values, routers_dict,
+ os_creds_dict):
"""
Returns the associated network value
:param var_config_values: the configuration dictionary
:param routers_dict: the dictionary containing all networks where the key
is the network name
- :param os_creds: the admin OpenStack credentials
+ :param os_creds_dict: dict of OpenStack credentials where the key is the
+ name
:return: the value
"""
+ if 'creds_name' in var_config_values:
+ os_creds = os_creds_dict.get[var_config_values['creds_name']]
+ else:
+ os_creds = os_creds_dict.get('admin-creds')
+
router_name = var_config_values.get('router_name')
router_creator = routers_dict[router_name]
@@ -818,34 +847,27 @@ def __get_flavor_variable_value(var_config_values, flavor_dict):
return flavor_creator.get_flavor().id
-def __create_snaps_env_yaml(var_config_values, vm_dict):
+def __create_yaml(var_config_values, vm_dict):
"""
Creates a yaml file containing an OpenStack pod's credentials with a list
of server IDs that can be used for obtaining SNAPS-OO instances for
manipulation such as rebooting
:param var_config_values: the configuration dictionary
- :param os_creds: the admin credentials for accessing OpenStack
:param vm_dict: the dictionary containing all vm creators where the
key is the name
:return: the name of the generated file
"""
out_dict = dict()
out_dict['vms'] = list()
+ req_vm_names = var_config_values.get('vms')
for name, vm_creator in vm_dict.items():
vm_inst = vm_creator.get_vm_inst()
- inst_creds = vm_creator._os_creds
- if vm_inst:
+ if vm_inst and vm_inst.name in req_vm_names:
out_dict['vms'].append({
'name': str(vm_inst.name),
'id': str(vm_inst.id),
- 'os_creds': {
- 'username': inst_creds.username,
- 'password': inst_creds.password,
- 'auth_url': inst_creds.auth_url,
- 'project_name': inst_creds.project_name,
- 'identity_api_version': inst_creds.identity_api_version,
- }
+ 'os_creds': vm_creator.get_os_creds().to_dict()
})
out_file = file_utils.persist_dict_to_yaml(