Add wait and wait_timeout options for provisioning servers

pull/18777/head
Jamie Hannaford 10 years ago committed by Matt Clay
parent c2bc5a20fa
commit 0eef7cadfa

@ -105,7 +105,19 @@ options:
- Data to be uploaded to the servers config drive. This option implies - Data to be uploaded to the servers config drive. This option implies
I(config_drive). Can be a file path or a string I(config_drive). Can be a file path or a string
version_added: 1.8 version_added: 1.8
author: "Matt Martz (@sivel)" wait
description:
- wait for the scaling group to finish provisioning the minimum amount of
servers
default: "no"
choices:
- "yes"
- "no"
wait_timeout:
description:
- how long before wait gives up, in seconds
default: 300
author: Matt Martz
extends_documentation_fragment: rackspace extends_documentation_fragment: rackspace
''' '''
@ -144,7 +156,7 @@ def rax_asg(module, cooldown=300, disk_config=None, files={}, flavor=None,
image=None, key_name=None, loadbalancers=[], meta={}, image=None, key_name=None, loadbalancers=[], meta={},
min_entities=0, max_entities=0, name=None, networks=[], min_entities=0, max_entities=0, name=None, networks=[],
server_name=None, state='present', user_data=None, server_name=None, state='present', user_data=None,
config_drive=False): config_drive=False, wait=True, wait_timeout=300):
changed = False changed = False
au = pyrax.autoscale au = pyrax.autoscale
@ -315,6 +327,16 @@ def rax_asg(module, cooldown=300, disk_config=None, files={}, flavor=None,
sg.get() sg.get()
if wait:
end_time = time.time() + wait_timeout
infinite = wait_timeout == 0
while infinite or time.time() < end_time:
state = sg.get_state()
if state["pending_capacity"] == 0:
break
time.sleep(5)
module.exit_json(changed=changed, autoscale_group=rax_to_dict(sg)) module.exit_json(changed=changed, autoscale_group=rax_to_dict(sg))
else: else:
@ -350,6 +372,8 @@ def main():
server_name=dict(required=True), server_name=dict(required=True),
state=dict(default='present', choices=['present', 'absent']), state=dict(default='present', choices=['present', 'absent']),
user_data=dict(no_log=True), user_data=dict(no_log=True),
wait=dict(default=False, type='bool'),
wait_timeout=dict(default=300),
) )
) )

Loading…
Cancel
Save