in lib/ansible/modules/cloud/alicloud/ali_ess_configuration.py [0:0]
def main():
argument_spec = ecs_argument_spec()
argument_spec.update(dict(
group_id=dict(type='str', aliases=['scaling_group_id']),
instance_type=dict(type='str', aliases=['type']),
image_id=dict(type='str', aliases=['image']),
name=dict(type='str', aliases=['configuration_name']),
internet_charge_type=dict(type='str', default="PayByBandwidth", choices=["PayByBandwidth", "PayByTraffic"]),
max_bandwidth_in=dict(type='int', default=200),
max_bandwidth_out=dict(type='int', default=0),
system_disk_category=dict(type='str', default='cloud_efficiency'),
system_disk_size=dict(type='int', default='40'),
tags=dict(type='dict'),
state=dict(default='present', choices=['present', 'absent']),
id=dict(type='str', aliases=['configuration_id']),
key_name=dict(type='str', aliases=['keypair']),
user_data=dict(type='str'),
data_disks=dict(type='list'),
security_group_id=dict(type='str'),
ram_role_name=dict(type='str', aliases=['ram_role'])
))
module = AnsibleModule(argument_spec=argument_spec)
if HAS_FOOTMARK is False:
module.fail_json(msg="Package 'footmark' required for the module ali_ess_configuration.")
ess = ess_connect(module)
state = module.params['state']
cfg_id = module.params['id']
cfg_name = module.params['name']
scaling_group = module.params['group_id']
changed = False
current = None
all_cfgs = []
if cfg_id or cfg_name:
cfgs = ess.describe_configurations(scaling_group_id=scaling_group, scaling_configuration_ids=[cfg_id],
scaling_configuration_names=[cfg_name])
if cfgs:
if len(cfgs) > 1:
for cfg in cfgs:
all_cfgs.append(cfg.id)
module.fail_json(msg="There are several scaling configurations in our record based on name {0}: {1}. "
"Please specified one using 'id' and try again.".format(cfg_name, all_cfgs))
current = cfgs[0]
if state == 'present':
if current is None:
try:
data_disks = module.params['data_disks']
if not isinstance(data_disks, list):
module.fail_json(msg="Filed 'data_disks' should be a list, aborting.")
if not isinstance(module.params['tags'], dict):
module.fail_json(msg="Filed 'tags' should be a dict, aborting.")
current = ess.create_configuration(scaling_group_id=scaling_group,
image_id=module.params['image_id'],
instance_type=module.params['instance_type'],
security_group_id=module.params['security_group_id'],
name=cfg_name,
internet_charge_type=module.params['internet_charge_type'],
max_bandwidth_in=module.params['max_bandwidth_in'],
max_bandwidth_out=module.params['max_bandwidth_out'],
system_disk_category=module.params['system_disk_category'],
system_disk_size=module.params['system_disk_size'],
data_disks=data_disks,
tags=module.params['tags'],
key_pair_name=module.params['key_name'],
ram_role_name=module.params['ram_role_name'],
user_data=module.params['user_data'])
changed = True
except Exception as e:
module.fail_json(msg="Create scaling configuration got an error: {0}".format(e))
module.exit_json(changed=changed, id=current.id, name=current.name, group_id=current.group_id, configuration=get_details(current))
if current is None:
if cfg_id or cfg_name:
module.fail_json(msg="There are no scaling configuration in our record based on id {0} or name {1}. "
"Please check it and try again.".format(cfg_id, cfg_name))
module.fail_json(msg='Please specify a scaling configuration that you want to terminate by parameters id or name, aborting')
try:
module.exit_json(changed=current.terminate())
except Exception as e:
module.fail_json(msg='Delete scaling configuration {0} got an error: {1}'.format(current.id, e))