10.0.0
This commit is contained in:
@@ -23,7 +23,7 @@ class decort_disk(DecortController):
|
||||
self.disk_id = 0
|
||||
self.account_id = 0
|
||||
# limitIO check for exclusive parameters
|
||||
|
||||
|
||||
if arg_amodule.params['limitIO']:
|
||||
self.disk_check_iotune_arg(arg_amodule.params['limitIO'])
|
||||
|
||||
@@ -41,6 +41,8 @@ class decort_disk(DecortController):
|
||||
validated_acc_id, validated_acc_info = self.account_find(
|
||||
arg_amodule.params['account_name'],
|
||||
arg_amodule.params['account_id'])
|
||||
self.acc_id = validated_acc_id
|
||||
self._acc_info = validated_acc_info
|
||||
if not validated_acc_id:
|
||||
self.result['changed'] = False
|
||||
self.result['msg'] = (
|
||||
@@ -51,8 +53,6 @@ class decort_disk(DecortController):
|
||||
)
|
||||
self.amodule.fail_json(**self.result)
|
||||
|
||||
self.acc_id = validated_acc_id
|
||||
self._acc_info = validated_acc_info
|
||||
validated_disk_id, validated_disk_facts = self.disk_find(
|
||||
disk_id=arg_amodule.params['id'],
|
||||
name=arg_amodule.params['name'] if "name" in arg_amodule.params else "",
|
||||
@@ -67,15 +67,21 @@ class decort_disk(DecortController):
|
||||
self.disk_id = validated_disk_id
|
||||
self.disk_info = validated_disk_facts
|
||||
|
||||
if self.disk_id:
|
||||
self.acc_id = validated_disk_facts['accountId']
|
||||
self.check_amodule_args_for_change()
|
||||
else:
|
||||
self.check_amodule_args_for_create()
|
||||
|
||||
def create(self):
|
||||
|
||||
self.disk_id = self.disk_create(accountId=self.acc_id,
|
||||
name = self.amodule.params['name'],
|
||||
description=self.amodule.params['description'],
|
||||
size=self.amodule.params['size'],
|
||||
iops=self.amodule.params['iops'],
|
||||
sep_id=self.amodule.params['sep_id'],
|
||||
pool=self.amodule.params['pool'],
|
||||
self.disk_id = self.disk_create(
|
||||
accountId=self.acc_id,
|
||||
name = self.amodule.params['name'],
|
||||
description=self.amodule.params['description'],
|
||||
size=self.amodule.params['size'],
|
||||
sep_id=self.amodule.params['sep_id'],
|
||||
pool=self.amodule.params['pool'],
|
||||
storage_policy_id=self.aparams['storage_policy_id'],
|
||||
)
|
||||
#IO tune
|
||||
if self.amodule.params['limitIO']:
|
||||
@@ -115,16 +121,27 @@ class decort_disk(DecortController):
|
||||
#raise Exception(self.amodule.params['shareable'])
|
||||
if self.amodule.params['shareable'] != self.disk_info['shareable']:
|
||||
self.disk_share(self.disk_id,self.amodule.params['shareable'])
|
||||
|
||||
aparam_storage_policy_id = self.aparams['storage_policy_id']
|
||||
if (
|
||||
aparam_storage_policy_id is not None
|
||||
and aparam_storage_policy_id != self.disk_info['storage_policy_id']
|
||||
):
|
||||
self.disk_change_storage_policy(
|
||||
disk_id=self.disk_id,
|
||||
storage_policy_id=aparam_storage_policy_id,
|
||||
)
|
||||
|
||||
return
|
||||
|
||||
def delete(self):
|
||||
self.disk_id = self.disk_delete(disk_id=self.disk_id,
|
||||
self.disk_delete(disk_id=self.disk_id,
|
||||
detach=self.amodule.params['force_detach'],
|
||||
permanently=self.amodule.params['permanently'],
|
||||
reason=self.amodule.params['reason'])
|
||||
self.disk_info['status'] = "DELETED"
|
||||
self.disk_id, self.disk_info = self._disk_get_by_id(self.disk_id)
|
||||
return
|
||||
|
||||
|
||||
def rename(self):
|
||||
|
||||
|
||||
@@ -175,6 +192,8 @@ class decort_disk(DecortController):
|
||||
ret_dict['iotune'] = self.disk_info['iotune']
|
||||
ret_dict['size_available'] = self.disk_info['sizeAvailable']
|
||||
ret_dict['size_used'] = self.disk_info['sizeUsed']
|
||||
ret_dict['storage_policy_id'] = self.disk_info['storage_policy_id']
|
||||
ret_dict['to_clean'] = self.disk_info['to_clean']
|
||||
|
||||
return ret_dict
|
||||
|
||||
@@ -219,10 +238,6 @@ class decort_disk(DecortController):
|
||||
size=dict(
|
||||
type='int',
|
||||
),
|
||||
iops=dict(
|
||||
type='int',
|
||||
default=2000,
|
||||
),
|
||||
limitIO=dict(
|
||||
type='dict',
|
||||
options=dict(
|
||||
@@ -287,6 +302,9 @@ class decort_disk(DecortController):
|
||||
'present',
|
||||
],
|
||||
),
|
||||
storage_policy_id=dict(
|
||||
type='int',
|
||||
),
|
||||
),
|
||||
supports_check_mode=True,
|
||||
required_one_of=[
|
||||
@@ -294,6 +312,73 @@ class decort_disk(DecortController):
|
||||
],
|
||||
)
|
||||
|
||||
def check_amodule_args_for_change(self):
|
||||
check_errors = False
|
||||
|
||||
if self.check_aparam_storage_policy_id() is False:
|
||||
check_errors = True
|
||||
if self.check_aparam_size() is False:
|
||||
check_errors = True
|
||||
|
||||
if check_errors:
|
||||
self.exit(fail=True)
|
||||
|
||||
def check_amodule_args_for_create(self):
|
||||
check_errors = False
|
||||
|
||||
aparam_storage_policy_id = self.aparams['storage_policy_id']
|
||||
if aparam_storage_policy_id is None:
|
||||
check_errors = True
|
||||
self.message(
|
||||
msg='Check for parameter "storage_policy_id" failed: '
|
||||
'storage_policy_id must be specified when creating '
|
||||
'a new disk'
|
||||
)
|
||||
|
||||
if self.check_aparam_storage_policy_id() is False:
|
||||
check_errors = True
|
||||
if self.check_aparam_size() is False:
|
||||
check_errors = True
|
||||
|
||||
if check_errors:
|
||||
self.exit(fail=True)
|
||||
|
||||
def check_aparam_storage_policy_id(self) -> bool:
|
||||
check_errors = False
|
||||
|
||||
aparam_storage_policy_id = self.aparams['storage_policy_id']
|
||||
if (
|
||||
aparam_storage_policy_id is not None
|
||||
and aparam_storage_policy_id
|
||||
not in self.acc_info['storage_policy_ids']
|
||||
):
|
||||
check_errors = True
|
||||
self.message(
|
||||
msg='Check for parameter "storage_policy_id" failed: '
|
||||
f'Account ID {self.acc_id} does not have access to '
|
||||
f'storage_policy_id {aparam_storage_policy_id}'
|
||||
)
|
||||
|
||||
return not check_errors
|
||||
|
||||
def check_aparam_size(self) -> bool:
|
||||
check_errors = False
|
||||
|
||||
aparam_size = self.aparams['size']
|
||||
if (
|
||||
aparam_size is not None
|
||||
and aparam_size <= 0
|
||||
):
|
||||
check_errors = True
|
||||
self.message(
|
||||
msg=(
|
||||
'Check for parameter "size" failed: '
|
||||
f'Disk cannot be size {aparam_size}'
|
||||
),
|
||||
)
|
||||
|
||||
return not check_errors
|
||||
|
||||
def main():
|
||||
decon = decort_disk()
|
||||
amodule = decon.amodule
|
||||
@@ -334,12 +419,12 @@ def main():
|
||||
if amodule.params['state'] == 'absent':
|
||||
decon.nop()
|
||||
else:
|
||||
decon.create()
|
||||
|
||||
decon.create()
|
||||
|
||||
if decon.result['failed']:
|
||||
amodule.fail_json(**decon.result)
|
||||
else:
|
||||
if decon.result['changed'] and amodule.params['state'] in ('present'):
|
||||
if decon.result['changed']:
|
||||
_, decon.disk_info = decon.disk_find(decon.disk_id)
|
||||
decon.result['facts'] = decon.package_facts(amodule.check_mode)
|
||||
amodule.exit_json(**decon.result)
|
||||
|
||||
Reference in New Issue
Block a user