Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 78 additions & 29 deletions plugins/modules/ibm_svc_manage_volume.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,13 @@
type: bool
default: false
version_added: '2.0.0'
format_disk:
description:
- If set to `False`, will create a volume using 'mkvdisk' instead of 'mkvolume' and set `nofmtdisk` to true
- Valid only when volume groups are not used (only available in mkvolume)
type: bool
default: true
version_added: 'tbd'
validate_certs:
description:
- Validates certification.
Expand Down Expand Up @@ -291,7 +298,8 @@ def __init__(self):
old_name=dict(type='str', required=False),
enable_cloud_snapshot=dict(type='bool'),
cloud_account_name=dict(type='str'),
allow_hs=dict(type='bool', default=False)
allow_hs=dict(type='bool', default=False),
format_disk=dict(type='bool', default=True)
)
)

Expand Down Expand Up @@ -321,6 +329,7 @@ def __init__(self):
self.enable_cloud_snapshot = self.module.params['enable_cloud_snapshot']
self.cloud_account_name = self.module.params['cloud_account_name']
self.allow_hs = self.module.params['allow_hs']
self.format_disk = self.module.params['format_disk']

# internal variable
self.changed = False
Expand Down Expand Up @@ -366,6 +375,9 @@ def mandatory_parameter_validation(self):
self.module.fail_json(msg='Missing mandatory parameter: [{0}]'.format(', '.join(missing)))
if self.volumegroup and self.novolumegroup:
self.module.fail_json(msg='Mutually exclusive parameters detected: [volumegroup] and [novolumegroup]')
elif self.volumegroup and self.format_disk:
# volumegroup is only available in mkvolume, so cannot be used with format_disk
self.module.fail_json(msg='Mutually exclusive parameters detected: [volumegroup] and [format_disk]')

# for validating parameter while removing an existing volume
def volume_deletion_parameter_validation(self):
Expand Down Expand Up @@ -445,35 +457,72 @@ def create_volume(self):
if self.module.check_mode:
self.changed = True
return
cmd = 'mkvolume'
cmdopts = {}
if self.pool:
cmdopts['pool'] = self.pool
if self.size:
cmdopts['size'] = self.size
if self.unit:
cmdopts['unit'] = self.unit
if self.iogrp:
cmdopts['iogrp'] = self.iogrp[0]
if self.volumegroup:
cmdopts['volumegroup'] = self.volumegroup
if self.thin:
cmdopts['thin'] = self.thin
if self.compressed:
cmdopts['compressed'] = self.compressed
if self.deduplicated:
cmdopts['deduplicated'] = self.deduplicated
if self.buffersize:
cmdopts['buffersize'] = self.buffersize
if self.name:
cmdopts['name'] = self.name
result = self.restapi.svc_run_command(cmd, cmdopts, cmdargs=None)
if result and 'message' in result:
self.changed = True
self.log("create volume result message %s", result['message'])
if self.format_disk != False:
# if the format_disk parameter isn't false then it's fine to use addvolume as normal

cmd = 'mkvolume'
cmdopts = {}
if self.pool:
cmdopts['pool'] = self.pool
if self.size:
cmdopts['size'] = self.size
if self.unit:
cmdopts['unit'] = self.unit
if self.iogrp:
cmdopts['iogrp'] = self.iogrp[0]
if self.volumegroup:
cmdopts['volumegroup'] = self.volumegroup
if self.thin:
cmdopts['thin'] = self.thin
if self.compressed:
cmdopts['compressed'] = self.compressed
if self.deduplicated:
cmdopts['deduplicated'] = self.deduplicated
if self.buffersize:
cmdopts['buffersize'] = self.buffersize
if self.name:
cmdopts['name'] = self.name
result = self.restapi.svc_run_command(cmd, cmdopts, cmdargs=None)
if result and 'message' in result:
self.changed = True
self.log("create volume result message %s", result['message'])
else:
self.module.fail_json(
msg="Failed to create volume [%s]" % self.name)
else:
self.module.fail_json(
msg="Failed to create volume [%s]" % self.name)
# if format_disk is false, then mkvdisk is used and the volume will be created without formatting
cmd = 'mkvdisk'
cmdopts = {}
if self.pool:
cmdopts['mdiskgrp'] = self.pool
if self.size:
cmdopts['size'] = self.size
if self.unit:
cmdopts['unit'] = self.unit
if self.iogrp:
cmdopts['iogrp'] = self.iogrp[0]
# volume group not supported with mkvdisk
# if self.volumegroup:
# cmdopts['volumegroup'] = self.volumegroup
if self.thin:
cmdopts['thin'] = self.thin
if self.compressed:
cmdopts['compressed'] = self.compressed
if self.deduplicated:
cmdopts['deduplicated'] = self.deduplicated
if self.buffersize:
cmdopts['rsize'] = self.buffersize
if self.name:
cmdopts['name'] = self.name
cmdopts['nofmtdisk'] = True
# nofmtdisk can be set without any prior test because it's already been tested
result = self.restapi.svc_run_command(cmd, cmdopts, cmdargs=None)
if result and 'message' in result:
self.changed = True
self.log("create volume result message %s", result['message'])
else:
self.module.fail_json(
msg="Failed to create volume [%s]" % self.name)

# function to remove an existing volume
def remove_volume(self):
Expand Down