launch_instance: expose nova api version and target host

This change exposes two new parameters in the launch_instance()
function:

- nova_api_version: Set the microversion the novaclient should use.
- host: Request to launch the instance on a specific hypervisor host.
This commit is contained in:
Felipe Reyes
2023-08-24 15:54:56 -04:00
parent 3283ed47ba
commit be6ba2a02b

View File

@@ -95,7 +95,9 @@ def launch_instance(instance_key, use_boot_volume=False, vm_name=None,
private_network_name=None, image_name=None,
flavor_name=None, external_network_name=None, meta=None,
userdata=None, attach_to_external_network=False,
keystone_session=None, perform_connectivity_check=True):
keystone_session=None, perform_connectivity_check=True,
host=None, nova_api_version=None
):
"""Launch an instance.
:param instance_key: Key to collect associated config data with.
@@ -125,13 +127,20 @@ def launch_instance(instance_key, use_boot_volume=False, vm_name=None,
:type keystone_session: Optional[keystoneauth1.session.Session]
:param perform_connectivity_check: Whether to perform a connectivity check.
:type perform_connectivity_check: bool
:param host: Requested host to create servers
:type host: str
:param nova_api_version: Nova API version to use
:type nova_api_version: str
:returns: the created instance
:rtype: novaclient.Server
"""
if not keystone_session:
keystone_session = openstack_utils.get_overcloud_keystone_session()
nova_client = openstack_utils.get_nova_session_client(keystone_session)
nova_client = openstack_utils.get_nova_session_client(
keystone_session,
version=nova_api_version,
)
neutron_client = openstack_utils.get_neutron_session_client(
keystone_session)
@@ -179,7 +188,9 @@ def launch_instance(instance_key, use_boot_volume=False, vm_name=None,
key_name=nova_utils.KEYPAIR_NAME,
meta=meta,
nics=nics,
userdata=userdata)
userdata=userdata,
host=host,
)
# Test Instance is ready.
logging.info('Checking instance is active')
@@ -190,7 +201,10 @@ def launch_instance(instance_key, use_boot_volume=False, vm_name=None,
# NOTE(lourot): in some models this may sometimes take more than 15
# minutes. See lp:1945991
wait_iteration_max_time=120,
stop_after_attempt=16)
stop_after_attempt=16,
stop_status='ERROR',
msg='instance',
)
logging.info('Checking cloud init is complete')
openstack_utils.cloud_init_complete(