Add wait and wait_timeout options for provisioning servers
This commit is contained in:
parent
63fa06f477
commit
8dbdfff366
1 changed files with 26 additions and 2 deletions
|
@ -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…
Reference in a new issue