9.0.0
This commit is contained in:
@@ -20,6 +20,7 @@ class decort_bservice(DecortController):
|
||||
validated_acc_id = 0
|
||||
validated_rg_id = 0
|
||||
self.bservice_info = None
|
||||
self.is_bservice_stopped_or_will_be_stopped: None | bool = None
|
||||
if arg_amodule.params['name'] == "" and arg_amodule.params['id'] == 0:
|
||||
self.result['failed'] = True
|
||||
self.result['changed'] = False
|
||||
@@ -27,7 +28,7 @@ class decort_bservice(DecortController):
|
||||
self.fail_json(**self.result)
|
||||
if not arg_amodule.params['id']:
|
||||
if not arg_amodule.params['rg_id']: # RG ID is not set -> locate RG by name -> need account ID
|
||||
validated_acc_id, _ = self.account_find(arg_amodule.params['account_name'],
|
||||
validated_acc_id, self.acc_info = self.account_find(arg_amodule.params['account_name'],
|
||||
arg_amodule.params['account_id'])
|
||||
if not validated_acc_id:
|
||||
self.result['failed'] = True
|
||||
@@ -53,7 +54,7 @@ class decort_bservice(DecortController):
|
||||
arg_amodule.params['rg_id'] = validated_rg_id
|
||||
arg_amodule.params['rg_name'] = validated_rg_facts['name']
|
||||
validated_acc_id = validated_rg_facts['accountId']
|
||||
|
||||
|
||||
self.bservice_id, self.bservice_info = self.bservice_find(
|
||||
validated_acc_id,
|
||||
validated_rg_id,
|
||||
@@ -61,10 +62,14 @@ class decort_bservice(DecortController):
|
||||
arg_amodule.params['id']
|
||||
)
|
||||
|
||||
if self.bservice_id == 0:
|
||||
self.bservice_should_exist = False
|
||||
else:
|
||||
self.acc_id = validated_acc_id or self.bservice_info['accountId']
|
||||
|
||||
if self.bservice_id and self.bservice_info['status'] != 'DESTROYED':
|
||||
self.bservice_should_exist = True
|
||||
self.check_amodule_args_for_change()
|
||||
else:
|
||||
self.bservice_should_exist = False
|
||||
self.check_amodule_args_for_create()
|
||||
|
||||
def nop(self):
|
||||
"""No operation (NOP) handler for B-service.
|
||||
@@ -103,15 +108,23 @@ class decort_bservice(DecortController):
|
||||
self.amodule.params['name'],
|
||||
self.amodule.params['rg_id'],
|
||||
self.amodule.params['sshuser'],
|
||||
self.amodule.params['sshkey']
|
||||
self.amodule.params['sshkey'],
|
||||
zone_id=self.aparams['zone_id'],
|
||||
)
|
||||
if self.bservice_id:
|
||||
_, self.bservice_info = self.bservice_get_by_id(self.bservice_id)
|
||||
self.bservice_state(self.bservice_info,'enabled',self.amodule.params['started'])
|
||||
self.bservice_state(self.bservice_info,'enabled')
|
||||
return
|
||||
|
||||
def action(self,d_state,started=False):
|
||||
self.bservice_state(self.bservice_info,d_state,started)
|
||||
def action(self,d_state):
|
||||
self.bservice_state(self.bservice_info,d_state)
|
||||
|
||||
aparam_zone_id = self.aparams['zone_id']
|
||||
if aparam_zone_id is not None and aparam_zone_id != self.bservice_info['zoneId']:
|
||||
self.bservice_migrate_to_zone(
|
||||
bs_id=self.bservice_id,
|
||||
zone_id=aparam_zone_id,
|
||||
)
|
||||
return
|
||||
|
||||
def restore(self):
|
||||
@@ -147,6 +160,7 @@ class decort_bservice(DecortController):
|
||||
ret_dict['rg_id'] = self.bservice_info['rgId']
|
||||
ret_dict['account_id'] = self.bservice_info['accountId']
|
||||
ret_dict['groups'] = self.bservice_info['groups']
|
||||
ret_dict['zone_id'] = self.bservice_info['zoneId']
|
||||
return ret_dict
|
||||
|
||||
@property
|
||||
@@ -168,13 +182,10 @@ class decort_bservice(DecortController):
|
||||
'disabled',
|
||||
'enabled',
|
||||
'present',
|
||||
'check',
|
||||
'started',
|
||||
'stopped',
|
||||
],
|
||||
),
|
||||
started=dict(
|
||||
type='bool',
|
||||
default=True,
|
||||
),
|
||||
name=dict(
|
||||
type='str',
|
||||
default='',
|
||||
@@ -197,6 +208,9 @@ class decort_bservice(DecortController):
|
||||
type='str',
|
||||
default='',
|
||||
),
|
||||
zone_id=dict(
|
||||
type='int',
|
||||
),
|
||||
),
|
||||
supports_check_mode=True,
|
||||
required_one_of=[
|
||||
@@ -204,12 +218,54 @@ class decort_bservice(DecortController):
|
||||
('rg_id', 'rg_name'),
|
||||
],
|
||||
)
|
||||
|
||||
def check_amodule_args_for_change(self):
|
||||
check_errors = False
|
||||
|
||||
self.is_bservice_stopped_or_will_be_stopped = (
|
||||
(
|
||||
self.bservice_info['techStatus'] == 'STOPPED'
|
||||
and (
|
||||
self.aparams['state'] is None
|
||||
or self.aparams['state'] in ('present', 'stopped')
|
||||
)
|
||||
)
|
||||
or (
|
||||
self.bservice_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'] != self.bservice_info['zoneId']
|
||||
and not self.is_bservice_stopped_or_will_be_stopped
|
||||
):
|
||||
check_errors = True
|
||||
self.message(
|
||||
'Check for parameter "zone_id" failed: '
|
||||
'Basic Service 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():
|
||||
subj = decort_bservice()
|
||||
amodule = subj.amodule
|
||||
|
||||
if amodule.params['state'] == 'check':
|
||||
if subj.amodule.check_mode:
|
||||
subj.result['changed'] = False
|
||||
if subj.bservice_id:
|
||||
subj.result['failed'] = False
|
||||
@@ -235,30 +291,23 @@ def main():
|
||||
"ENABLING","DISABLING","RESTORING","MODELED"):
|
||||
subj.error()
|
||||
elif subj.bservice_info['status'] == "DELETED":
|
||||
if amodule.params['state'] in ('disabled', 'enabled', 'present'):
|
||||
if amodule.params['state'] in (
|
||||
'disabled', 'enabled', 'present', 'started', 'stopped'
|
||||
):
|
||||
subj.restore(subj.bservice_id)
|
||||
subj.action(amodule.params['state'],amodule.params['started'])
|
||||
subj.action(amodule.params['state'])
|
||||
if amodule.params['state'] == 'absent':
|
||||
subj.nop()
|
||||
elif subj.bservice_info['techStatus'] in ("STARTED","STOPPED"):
|
||||
if amodule.params['state'] == 'disabled':
|
||||
subj.action(amodule.params['state'],amodule.params['started'])
|
||||
elif amodule.params['state'] == 'absent':
|
||||
subj.destroy()
|
||||
else:
|
||||
subj.action(amodule.params['state'],amodule.params['started'])
|
||||
elif subj.bservice_info['status'] == "DISABLED":
|
||||
elif subj.bservice_info['status'] in ('ENABLED', 'DISABLED'):
|
||||
if amodule.params['state'] == 'absent':
|
||||
subj.destroy()
|
||||
elif amodule.params['state'] in ('present','enabled'):
|
||||
subj.action(amodule.params['state'],amodule.params['started'])
|
||||
else:
|
||||
subj.nop()
|
||||
subj.action(amodule.params['state'])
|
||||
elif subj.bservice_info['status'] == "DESTROED":
|
||||
if amodule.params['state'] in ('present','enabled'):
|
||||
subj.create()
|
||||
subj.action(amodule.params['state'],amodule.params['started'])
|
||||
if amodule.params['state'] == 'absent':
|
||||
subj.action(amodule.params['state'])
|
||||
if amodule.params['state'] == 'absent':
|
||||
subj.nop()
|
||||
else:
|
||||
if amodule.params['state'] == 'absent':
|
||||
@@ -272,9 +321,10 @@ def main():
|
||||
amodule.fail_json(**subj.result)
|
||||
else:
|
||||
if subj.bservice_should_exist:
|
||||
_, subj.bservice_info = subj.bservice_get_by_id(subj.bservice_id)
|
||||
subj.result['facts'] = subj.package_facts(amodule.check_mode)
|
||||
amodule.exit_json(**subj.result)
|
||||
else:
|
||||
amodule.exit_json(**subj.result)
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user