in lib/ansible/modules/cloud/alicloud/_alicloud_slb_lb.py [0:0]
def main():
argument_spec = ecs_argument_spec()
argument_spec.update(dict(
internet_charge_type=dict(type='str', required=False, choices=['paybybandwidth', 'paybytraffic'], default='paybytraffic'),
state=dict(type='str', required=True, choices=['present', 'absent', 'running', 'stopped']),
load_balancer_name=dict(type='str', required=False, aliases=['name']),
load_balancer_id=dict(type='str', required=False, aliases=['id']),
is_internet=dict(type='bool', required=False, default=True),
bandwidth=dict(type='int', required=False, default=1),
vswitch_id=dict(type='str', required=False, aliases=['subnet_id']),
master_zone_id=dict(type='str', required=False),
slave_zone_id=dict(type='str', required=False)
))
module = AnsibleModule(argument_spec=argument_spec)
if HAS_FOOTMARK is False:
module.fail_json(msg='footmark required for the module alicloud_slb_lb.')
slb = slb_connect(module)
state = module.params['state']
load_balancer_id = module.params['load_balancer_id']
load_balancer_name = module.params['load_balancer_name']
is_internet = module.params['is_internet']
vswitch_id = module.params['vswitch_id']
master_zone_id = module.params['master_zone_id']
slave_zone_id = module.params['slave_zone_id']
internet_charge_type = module.params['internet_charge_type']
bandwidth = module.params['bandwidth']
changed = False
cur_slb = None
if load_balancer_id and load_balancer_name:
name_test = ""
else:
name_test = load_balancer_name
res_objs = slb.describe_load_balancers(load_balancer_id=load_balancer_id, load_balancer_name=name_test)
if len(res_objs) == 1:
cur_slb = slb.describe_load_balancer_attribute(res_objs[0].id)
if state == "present":
if cur_slb:
if load_balancer_name != cur_slb.name:
changed = cur_slb.modify_name(load_balancer_name)
if changed:
cur_slb.load_balancer_name = load_balancer_name
if internet_charge_type != cur_slb.internet_charge_type or \
(cur_slb.internet_charge_type == "paybybandwidth" and bandwidth != cur_slb.bandwidth):
print (cur_slb.__dict__)
print (cur_slb.internet_charge_type, cur_slb.bandwidth)
changed = cur_slb.modify_spec(internet_charge_type=internet_charge_type, bandwidth=bandwidth)
if changed:
cur_slb.internet_charge_type = internet_charge_type
cur_slb.bandwidth = bandwidth
else:
client_token = "Ansible-Alicloud-%s-%s" % (hash(str(module.params)), str(time.time()))
address_type = "internet"
if not is_internet:
address_type = "intranet"
cur_slb = slb.create_load_balancer(load_balancer_name=load_balancer_name,
address_type=address_type, vswitch_id=vswitch_id,
internet_charge_type=internet_charge_type,
master_zone_id=master_zone_id, slave_zone_id=slave_zone_id,
bandwidth=bandwidth, client_token=client_token)
changed = True
module.exit_json(changed=changed, load_balancer=get_info(cur_slb), load_balancer_id=cur_slb.id)
if not cur_slb:
module.fail_json(msg="The specified load balancer is not exist. Please check your load_balancer_id or load_balancer_name and try again.")
if state == "absent":
changed = cur_slb.delete()
module.exit_json(changed=changed, load_balancer_id=cur_slb.load_balancer_id)
if state == "running":
if cur_slb.status != "active":
changed = cur_slb.set_status("active")
if changed:
cur_slb.load_balancer_status = "active"
module.exit_json(changed=changed, load_balancer=get_info(cur_slb), load_balancer_id=cur_slb.load_balancer_id)
if state == "stopped":
if cur_slb.status != "inactive":
changed = cur_slb.set_status("inactive")
if changed:
cur_slb.load_balancer_status = "inactive"
module.exit_json(changed=changed, load_balancer=get_info(cur_slb), load_balancer_id=cur_slb.load_balancer_id)