Fix for linode module requiring name for state=restarted (untested, rebased, migrated) (#24827)

* Rm check for unused 'name' arg for restarted.

The module docs claim 'name' is not required for
restarted state, and the code doesn't seem to use
it is.

* Better error msg for linode 'restarted' state.

* Remove the eval() and loop over args.

* Fix use of eval(args), and cleanups.

* linode 'stopped' state doesnt need name either

Fixes #3873
This commit is contained in:
Adrian Likins 2017-07-11 14:05:07 -04:00 committed by GitHub
parent b81209c187
commit dc75bc06d9

View file

@ -371,7 +371,7 @@ def linodeServers(module, api, state, name, alert_bwin_enabled, alert_bwin_thres
if not servers:
for arg in (name, plan, distribution, datacenter):
if not arg:
module.fail_json(msg='%s is required for active state' % arg)
module.fail_json(msg='%s is required for %s state' % (arg, state))
# Create linode entity
new_server = True
@ -407,7 +407,7 @@ def linodeServers(module, api, state, name, alert_bwin_enabled, alert_bwin_thres
if not disks:
for arg in (name, linode_id, distribution):
if not arg:
module.fail_json(msg='%s is required for active state' % arg)
module.fail_json(msg='%s is required for %s state' % (arg, state))
# Create disks (1 from distrib, 1 for SWAP)
new_server = True
try:
@ -423,11 +423,14 @@ def linodeServers(module, api, state, name, alert_bwin_enabled, alert_bwin_thres
res = api.linode_disk_createfromdistribution(
LinodeId=linode_id, DistributionID=distribution,
rootPass=password, rootSSHKey=ssh_pub_key,
Label='%s data disk (lid: %s)' % (name, linode_id), Size=size)
Label='%s data disk (lid: %s)' % (name, linode_id),
Size=size)
else:
res = api.linode_disk_createfromdistribution(
LinodeId=linode_id, DistributionID=distribution, rootPass=password,
Label='%s data disk (lid: %s)' % (name, linode_id), Size=size)
LinodeId=linode_id, DistributionID=distribution,
rootPass=password,
Label='%s data disk (lid: %s)' % (name, linode_id),
Size=size)
jobs.append(res['JobID'])
# Create SWAP disk
res = api.linode_disk_create(LinodeId=linode_id, Type='swap',
@ -449,7 +452,7 @@ def linodeServers(module, api, state, name, alert_bwin_enabled, alert_bwin_thres
if not configs:
for arg in (name, linode_id, distribution):
if not arg:
module.fail_json(msg='%s is required for active state' % arg)
module.fail_json(msg='%s is required for %s state' % (arg, state))
# Check architecture
for distrib in api.avail_distributions():
@ -535,12 +538,11 @@ def linodeServers(module, api, state, name, alert_bwin_enabled, alert_bwin_thres
instances.append(instance)
elif state in ('stopped'):
for arg in (name, linode_id):
if not arg:
module.fail_json(msg='%s is required for active state' % arg)
if not linode_id:
module.fail_json(msg='linode_id is required for stopped state')
if not servers:
module.fail_json(msg = 'Server %s (lid: %s) not found' % (name, linode_id))
module.fail_json(msg = 'Server (lid: %s) not found' % (linode_id))
for server in servers:
instance = getInstanceDetails(api, server)
@ -556,12 +558,11 @@ def linodeServers(module, api, state, name, alert_bwin_enabled, alert_bwin_thres
instances.append(instance)
elif state in ('restarted'):
for arg in (name, linode_id):
if not arg:
module.fail_json(msg='%s is required for active state' % arg)
if not linode_id:
module.fail_json(msg='linode_id is required for restarted state')
if not servers:
module.fail_json(msg = 'Server %s (lid: %s) not found' % (name, linode_id))
module.fail_json(msg = 'Server (lid: %s) not found' % (linode_id))
for server in servers:
instance = getInstanceDetails(api, server)
@ -587,6 +588,7 @@ def linodeServers(module, api, state, name, alert_bwin_enabled, alert_bwin_thres
# Ease parsing if only 1 instance
if len(instances) == 1:
module.exit_json(changed=changed, instance=instances[0])
module.exit_json(changed=changed, instances=instances)
def main():