Update purefa_volume to allow clearing of QoS limits (#50662)

This commit is contained in:
Simon Dodsley 2019-01-10 20:29:47 -05:00 committed by ansibot
parent e5094e8071
commit e8e22e31dc

View file

@ -51,6 +51,7 @@ options:
- Bandwidth limit for volume in M or G units. - Bandwidth limit for volume in M or G units.
M will set MB/s M will set MB/s
G will set GB/s G will set GB/s
To clear an existing Qos setting using 0 (zero)
version_added: '2.8' version_added: '2.8'
extends_documentation_fragment: extends_documentation_fragment:
- purestorage.fa - purestorage.fa
@ -98,6 +99,14 @@ EXAMPLES = r'''
fa_url: 10.10.10.2 fa_url: 10.10.10.2
api_token: e31060a7-21fc-e277-6240-25983c6c4592 api_token: e31060a7-21fc-e277-6240-25983c6c4592
state: present state: present
- name: Clear volume QoS from volume foo
purefa_volume:
name: foo
qos: 0
fa_url: 10.10.10.2
api_token: e31060a7-21fc-e277-6240-25983c6c4592
state: present
''' '''
RETURN = r''' RETURN = r'''
@ -225,7 +234,13 @@ def update_volume(module, array):
module.fail_json(msg='Volume {0} resize failed.'.format(module.params['name'])) module.fail_json(msg='Volume {0} resize failed.'.format(module.params['name']))
if module.params['qos']: if module.params['qos']:
if human_to_bytes(module.params['qos']) != vol_qos['bandwidth_limit']: if human_to_bytes(module.params['qos']) != vol_qos['bandwidth_limit']:
if 549755813888 >= int(human_to_bytes(module.params['qos'])) >= 1048576: if module.params['qos'] == '0':
try:
array.set_volume(module.params['name'], bandwidth_limit='')
changed = True
except Exception:
module.fail_json(msg='Volume {0} QoS removal failed.'.format(module.params['name']))
elif 549755813888 >= int(human_to_bytes(module.params['qos'])) >= 1048576:
try: try:
array.set_volume(module.params['name'], array.set_volume(module.params['name'],
bandwidth_limit=module.params['qos']) bandwidth_limit=module.params['qos'])