9.0.0
This commit is contained in:
@@ -23,8 +23,6 @@ class decort_lb(DecortController):
|
||||
self.vins_facts = None
|
||||
self.rg_id = 0
|
||||
self.rg_facts = None
|
||||
self.acc_id = 0
|
||||
self.acc_facts = None
|
||||
self.default_server_check = "enabled"
|
||||
self.default_alg = "roundrobin"
|
||||
self.default_settings = {
|
||||
@@ -37,6 +35,8 @@ class decort_lb(DecortController):
|
||||
"slowstart": 60000,
|
||||
"weight": 100,
|
||||
}
|
||||
self.is_lb_stopped_or_will_be_stopped: None | bool = None
|
||||
|
||||
if arg_amodule.params['lb_id']:
|
||||
self.lb_id, self.lb_facts = self.lb_find(arg_amodule.params['lb_id'])
|
||||
if not self.lb_id:
|
||||
@@ -46,14 +46,14 @@ class decort_lb(DecortController):
|
||||
self.fail_json(**self.result)
|
||||
self.rg_id = self.lb_facts['rgId']
|
||||
self.vins_id = self.lb_facts['vinsId']
|
||||
return
|
||||
|
||||
if arg_amodule.params['rg_id']:
|
||||
|
||||
elif arg_amodule.params['rg_id']:
|
||||
self.rg_id, self.rg_facts = self.rg_find(0,arg_amodule.params['rg_id'], arg_rg_name="")
|
||||
if not self.rg_id:
|
||||
self.result['failed'] = True
|
||||
self.result['msg'] = "Specified RG ID {} not found.".format(arg_amodule.params['vins_id'])
|
||||
self.amodule.fail_json(**self.result)
|
||||
self.acc_id = self.rg_facts['accountId']
|
||||
|
||||
elif arg_amodule.params['account_id'] or arg_amodule.params['account_name'] != "":
|
||||
|
||||
@@ -61,7 +61,7 @@ class decort_lb(DecortController):
|
||||
self.result['failed'] = True
|
||||
self.result['msg'] = ("RG name must be specified with account present")
|
||||
self.amodule.fail_json(**self.result)
|
||||
self.acc_id, self.acc_facts = self.account_find(arg_amodule.params['account_name'],
|
||||
self.acc_id, self._acc_info = self.account_find(arg_amodule.params['account_name'],
|
||||
arg_amodule.params['account_id'])
|
||||
if not self.acc_id:
|
||||
self.result['failed'] = True
|
||||
@@ -96,15 +96,26 @@ class decort_lb(DecortController):
|
||||
|
||||
if self.rg_id and arg_amodule.params['lb_name']:
|
||||
self.lb_id, self.lb_facts = self.lb_find(0,arg_amodule.params['lb_name'],self.rg_id)
|
||||
|
||||
if self.lb_id and self.lb_facts['status'] != 'DESTROYED':
|
||||
self.acc_id = self.lb_facts['accountId']
|
||||
self.check_amodule_args_for_change()
|
||||
else:
|
||||
self.check_amodule_args_for_create()
|
||||
|
||||
return
|
||||
|
||||
|
||||
def create(self):
|
||||
start_after_create = self.aparams['state'] != 'stopped'
|
||||
self.lb_id = self.lb_provision(self.amodule.params['lb_name'],
|
||||
self.rg_id,self.vins_id,
|
||||
self.amodule.params['ext_net_id'],
|
||||
self.amodule.params['ha_lb'],
|
||||
self.amodule.params['description'],
|
||||
sysctl=self.amodule.params['sysctl'],)
|
||||
sysctl=self.amodule.params['sysctl'],
|
||||
zone_id=self.aparams['zone_id'],
|
||||
start=start_after_create,
|
||||
)
|
||||
if self.lb_id and (self.amodule.params['backends'] or
|
||||
self.amodule.params['frontends']):
|
||||
self.lb_id, self.lb_facts = self.lb_find(0,self.amodule.params['lb_name'],self.rg_id)
|
||||
@@ -141,6 +152,13 @@ class decort_lb(DecortController):
|
||||
self.lb_state(self.lb_facts, 'started')
|
||||
_, self.lb_facts = self._lb_get_by_id(lb_id=self.lb_id)
|
||||
|
||||
aparam_zone_id = self.aparams['zone_id']
|
||||
if aparam_zone_id is not None and aparam_zone_id != self.lb_facts['zoneId']:
|
||||
self.lb_migrate_to_zone(
|
||||
lb_id=self.lb_id,
|
||||
zone_id=aparam_zone_id,
|
||||
)
|
||||
|
||||
return
|
||||
|
||||
def delete(self):
|
||||
@@ -205,13 +223,15 @@ class decort_lb(DecortController):
|
||||
ret_dict['id'] = self.lb_facts['id']
|
||||
ret_dict['name'] = self.lb_facts['name']
|
||||
ret_dict['state'] = self.lb_facts['status']
|
||||
#ret_dict['account_id'] = self.lb_facts['accountId']
|
||||
ret_dict['account_id'] = self.lb_facts['accountId']
|
||||
ret_dict['rg_id'] = self.lb_facts['rgId']
|
||||
ret_dict['gid'] = self.lb_facts['gid']
|
||||
if self.amodule.params['state']!="absent":
|
||||
ret_dict['backends'] = self.lb_facts['backends']
|
||||
ret_dict['frontends'] = self.lb_facts['frontends']
|
||||
ret_dict['sysctl'] = self.lb_facts['sysctlParams']
|
||||
ret_dict['zone_id'] = self.lb_facts['zoneId']
|
||||
ret_dict['tech_status'] = self.lb_facts['techStatus']
|
||||
return ret_dict
|
||||
|
||||
@property
|
||||
@@ -227,11 +247,10 @@ class decort_lb(DecortController):
|
||||
),
|
||||
description=dict(
|
||||
type='str',
|
||||
default='Managed by Ansible module decort_lb',
|
||||
),
|
||||
ext_net_id=dict(
|
||||
type='int',
|
||||
default=-1,
|
||||
default=0,
|
||||
),
|
||||
ext_ip_addr=dict(
|
||||
type='str',
|
||||
@@ -239,13 +258,14 @@ class decort_lb(DecortController):
|
||||
),
|
||||
state=dict(
|
||||
type='str',
|
||||
default='present',
|
||||
choices=[
|
||||
'absent',
|
||||
'disabled',
|
||||
'enabled',
|
||||
'present',
|
||||
'restart',
|
||||
'started',
|
||||
'stopped',
|
||||
],
|
||||
),
|
||||
rg_id=dict(
|
||||
@@ -291,6 +311,9 @@ class decort_lb(DecortController):
|
||||
sysctl=dict(
|
||||
type='dict',
|
||||
),
|
||||
zone_id=dict(
|
||||
type=int,
|
||||
),
|
||||
),
|
||||
supports_check_mode=True,
|
||||
required_one_of=[
|
||||
@@ -300,6 +323,49 @@ class decort_lb(DecortController):
|
||||
],
|
||||
)
|
||||
|
||||
def check_amodule_args_for_change(self):
|
||||
check_errors = False
|
||||
|
||||
lb_info: dict = self.lb_facts
|
||||
self.is_lb_stopped_or_will_be_stopped = (
|
||||
(
|
||||
lb_info['techStatus'] == 'STOPPED'
|
||||
and (
|
||||
self.aparams['state'] is None
|
||||
or self.aparams['state'] in ('present', 'stopped')
|
||||
)
|
||||
)
|
||||
or (
|
||||
lb_info['techStatus'] != 'STOPPED'
|
||||
and self.aparams['state'] == 'stopped'
|
||||
)
|
||||
)
|
||||
|
||||
if self.check_aparam_zone_id() is False:
|
||||
check_errors = True
|
||||
if (
|
||||
self.aparams['zone_id'] is not None
|
||||
and self.aparams['zone_id'] != lb_info['zoneId']
|
||||
and not self.is_lb_stopped_or_will_be_stopped
|
||||
):
|
||||
check_errors = True
|
||||
self.message(
|
||||
'Check for parameter "zone_id" failed: '
|
||||
'Load balancer must be stopped to migrate to a zone.'
|
||||
)
|
||||
|
||||
if check_errors:
|
||||
self.exit(fail=True)
|
||||
|
||||
def check_amodule_args_for_create(self):
|
||||
check_errors = False
|
||||
if self.check_aparam_zone_id() is False:
|
||||
check_errors = True
|
||||
|
||||
if check_errors:
|
||||
self.exit(fail=True)
|
||||
|
||||
|
||||
def main():
|
||||
decon = decort_lb()
|
||||
amodule = decon.amodule
|
||||
@@ -309,24 +375,15 @@ def main():
|
||||
decon.result['changed'] = False
|
||||
decon.result['msg'] = ("No change can be done for existing LB ID {} because of its current "
|
||||
"status '{}'").format(decon.lb_id, decon.lb_facts['status'])
|
||||
elif decon.lb_facts['status'] == "DISABLED":
|
||||
if amodule.params['state'] == 'absent':
|
||||
decon.delete()
|
||||
elif amodule.params['state'] == 'disabled':
|
||||
decon.action()
|
||||
elif amodule.params['state'] in ('enabled', 'present'):
|
||||
decon.action('enabled')
|
||||
elif decon.lb_facts['status'] in ["CREATED", "ENABLED"]:
|
||||
if amodule.params['state'] == 'absent':
|
||||
decon.delete()
|
||||
elif amodule.params['state'] in ('present', 'enabled'):
|
||||
decon.action(d_state='enabled')
|
||||
elif amodule.params['state'] == 'disabled':
|
||||
decon.action('disabled')
|
||||
elif amodule.params['state'] in ('stopped', 'started','restart'):
|
||||
decon.action(amodule.params['state'])
|
||||
elif decon.lb_facts['status'] in ('DISABLED', 'ENABLED', 'CREATED'):
|
||||
if amodule.params['state'] == 'absent':
|
||||
decon.delete()
|
||||
else:
|
||||
decon.action(d_state=amodule.params['state'])
|
||||
elif decon.lb_facts['status'] == "DELETED":
|
||||
if amodule.params['state'] in ['present', 'enabled']:
|
||||
if amodule.params['state'] == 'present':
|
||||
decon.action(restore=True)
|
||||
elif amodule.params['state'] == 'enabled':
|
||||
decon.action(d_state='enabled', restore=True)
|
||||
elif (amodule.params['state'] == 'absent' and
|
||||
amodule.params['permanently']):
|
||||
@@ -341,11 +398,14 @@ def main():
|
||||
elif amodule.params['state'] == 'disabled':
|
||||
decon.error()
|
||||
else:
|
||||
if amodule.params['state'] == 'absent':
|
||||
state = amodule.params['state']
|
||||
if state is None:
|
||||
state = 'present'
|
||||
if state == 'absent':
|
||||
decon.nop()
|
||||
elif amodule.params['state'] in ('present', 'enabled'):
|
||||
elif state in ('present', 'enabled', 'stopped', 'started'):
|
||||
decon.create()
|
||||
elif amodule.params['state'] == 'disabled':
|
||||
elif state == 'disabled':
|
||||
decon.error()
|
||||
|
||||
if decon.result['failed']:
|
||||
@@ -357,4 +417,4 @@ def main():
|
||||
decon.result['facts'] = decon.package_facts(amodule.check_mode)
|
||||
amodule.exit_json(**decon.result)
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user