Added cloud_init_timeout to VM instance configuration to override the
default timeout value hardcoded @ 120 seconds. This patch not only
expands the default value to 300, but also allows the client to override
this value as cloud-init can take quite some time depending on what is
being requested.
Change-Id: Ia4d0a54ce853a93748b16945f5ddd4d5887feb7d
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
self.assertEqual(900, settings.vm_boot_timeout)
self.assertEqual(300, settings.vm_delete_timeout)
self.assertEqual(180, settings.ssh_connect_timeout)
self.assertEqual(900, settings.vm_boot_timeout)
self.assertEqual(300, settings.vm_delete_timeout)
self.assertEqual(180, settings.ssh_connect_timeout)
+ self.assertEqual(300, settings.cloud_init_timeout)
self.assertIsNone(settings.availability_zone)
self.assertIsNone(settings.volume_names)
self.assertIsNone(settings.availability_zone)
self.assertIsNone(settings.volume_names)
self.assertEqual(900, settings.vm_boot_timeout)
self.assertEqual(300, settings.vm_delete_timeout)
self.assertEqual(180, settings.ssh_connect_timeout)
self.assertEqual(900, settings.vm_boot_timeout)
self.assertEqual(300, settings.vm_delete_timeout)
self.assertEqual(180, settings.ssh_connect_timeout)
+ self.assertEqual(300, settings.cloud_init_timeout)
self.assertIsNone(settings.availability_zone)
self.assertIsNone(settings.volume_names)
self.assertIsNone(settings.availability_zone)
self.assertIsNone(settings.volume_names)
security_group_names=['sec_grp_1'],
floating_ip_settings=[fip_settings], sudo_user='joe',
vm_boot_timeout=999, vm_delete_timeout=333,
security_group_names=['sec_grp_1'],
floating_ip_settings=[fip_settings], sudo_user='joe',
vm_boot_timeout=999, vm_delete_timeout=333,
- ssh_connect_timeout=111, availability_zone='server name',
- volume_names=['vol1'])
+ ssh_connect_timeout=111, cloud_init_timeout=998,
+ availability_zone='server name', volume_names=['vol1'])
self.assertEqual('foo', settings.name)
self.assertEqual('bar', settings.flavor)
self.assertEqual(1, len(settings.port_settings))
self.assertEqual('foo', settings.name)
self.assertEqual('bar', settings.flavor)
self.assertEqual(1, len(settings.port_settings))
self.assertEqual(999, settings.vm_boot_timeout)
self.assertEqual(333, settings.vm_delete_timeout)
self.assertEqual(111, settings.ssh_connect_timeout)
self.assertEqual(999, settings.vm_boot_timeout)
self.assertEqual(333, settings.vm_delete_timeout)
self.assertEqual(111, settings.ssh_connect_timeout)
+ self.assertEqual(998, settings.cloud_init_timeout)
self.assertEqual('server name', settings.availability_zone)
self.assertEqual('vol1', settings.volume_names[0])
self.assertEqual('server name', settings.availability_zone)
self.assertEqual('vol1', settings.volume_names[0])
'security_group_names': ['sec_grp_1'],
'floating_ips': [fip_settings], 'sudo_user': 'joe',
'vm_boot_timeout': 999, 'vm_delete_timeout': 333,
'security_group_names': ['sec_grp_1'],
'floating_ips': [fip_settings], 'sudo_user': 'joe',
'vm_boot_timeout': 999, 'vm_delete_timeout': 333,
- 'ssh_connect_timeout': 111, 'availability_zone': 'server name',
- 'volume_names': ['vol2']})
+ 'ssh_connect_timeout': 111, 'cloud_init_timeout': 998,
+ 'availability_zone': 'server name', 'volume_names': ['vol2']})
self.assertEqual('foo', settings.name)
self.assertEqual('bar', settings.flavor)
self.assertEqual(1, len(settings.port_settings))
self.assertEqual('foo', settings.name)
self.assertEqual('bar', settings.flavor)
self.assertEqual(1, len(settings.port_settings))
self.assertEqual(999, settings.vm_boot_timeout)
self.assertEqual(333, settings.vm_delete_timeout)
self.assertEqual(111, settings.ssh_connect_timeout)
self.assertEqual(999, settings.vm_boot_timeout)
self.assertEqual(333, settings.vm_delete_timeout)
self.assertEqual(111, settings.ssh_connect_timeout)
+ self.assertEqual(998, settings.cloud_init_timeout)
self.assertEqual('server name', settings.availability_zone)
self.assertEqual('vol2', settings.volume_names[0])
self.assertEqual('server name', settings.availability_zone)
self.assertEqual('vol2', settings.volume_names[0])
:param sudo_user: the sudo user of the VM that will override the
instance_settings.image_user when trying to
connect to the VM
:param sudo_user: the sudo user of the VM that will override the
instance_settings.image_user when trying to
connect to the VM
- :param vm_boot_timeout: the amount of time a thread will sleep waiting
+ :param vm_boot_timeout: the amount of time a thread will wait
- :param vm_delete_timeout: the amount of time a thread will sleep
- waiting for an instance to be deleted
- :param ssh_connect_timeout: the amount of time a thread will sleep
- waiting obtaining an SSH connection to a VM
+ :param vm_delete_timeout: the amount of time a thread will wait
+ for an instance to be deleted
+ :param ssh_connect_timeout: the amount of time a thread will wait
+ to obtain an SSH connection to a VM
+ :param cloud_init_timeout: the amount of time a thread will wait for
+ cloud-init to complete
:param availability_zone: the name of the compute server on which to
deploy the VM (optional)
:param volume_names: a list of the names of the volume to attach
:param availability_zone: the name of the compute server on which to
deploy the VM (optional)
:param volume_names: a list of the names of the volume to attach
self.vm_boot_timeout = kwargs.get('vm_boot_timeout', 900)
self.vm_delete_timeout = kwargs.get('vm_delete_timeout', 300)
self.ssh_connect_timeout = kwargs.get('ssh_connect_timeout', 180)
self.vm_boot_timeout = kwargs.get('vm_boot_timeout', 900)
self.vm_delete_timeout = kwargs.get('vm_delete_timeout', 300)
self.ssh_connect_timeout = kwargs.get('ssh_connect_timeout', 180)
+ self.cloud_init_timeout = kwargs.get('cloud_init_timeout', 300)
self.availability_zone = kwargs.get('availability_zone')
self.volume_names = kwargs.get('volume_names')
self.availability_zone = kwargs.get('availability_zone')
self.volume_names = kwargs.get('volume_names')
POLL_INTERVAL = 3
STATUS_ACTIVE = 'ACTIVE'
STATUS_DELETED = 'DELETED'
POLL_INTERVAL = 3
STATUS_ACTIVE = 'ACTIVE'
STATUS_DELETED = 'DELETED'
-CLOUD_INIT_TIMEOUT = 120
class OpenStackVmInstance(OpenStackComputeObject):
class OpenStackVmInstance(OpenStackComputeObject):
# sleep and wait for VM status change
logger.info('Checking if cloud-init has completed')
# sleep and wait for VM status change
logger.info('Checking if cloud-init has completed')
- timeout = CLOUD_INIT_TIMEOUT
+ timeout = self.instance_settings.cloud_init_timeout
if self.vm_active(block=True) and self.vm_ssh_active(block=True):
if block:
if self.vm_active(block=True) and self.vm_ssh_active(block=True):
if block: