mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
parted: consider current partition state even in check_mode (#247)
* parted: consider current partition state even in check_mode * Update changelogs/fragments/183-parted_check_mode.yml Co-Authored-By: Andrew Klychkov <aaklychkov@mail.ru> * Test check_mode considers get_device_info * fixed pep8 E302: expected 2 blank lines Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>
This commit is contained in:
parent
4e7732586f
commit
eb941c30b4
3 changed files with 56 additions and 3 deletions
2
changelogs/fragments/183-parted_check_mode.yml
Normal file
2
changelogs/fragments/183-parted_check_mode.yml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- parted - consider current partition state even in check mode (https://github.com/ansible-collections/community.general/issues/183).
|
|
@ -632,11 +632,13 @@ def main():
|
||||||
changed = True
|
changed = True
|
||||||
script = ""
|
script = ""
|
||||||
|
|
||||||
|
if not module.check_mode:
|
||||||
current_parts = get_device_info(device, unit)['partitions']
|
current_parts = get_device_info(device, unit)['partitions']
|
||||||
|
|
||||||
if part_exists(current_parts, 'num', number) or module.check_mode:
|
if part_exists(current_parts, 'num', number) or module.check_mode:
|
||||||
|
if changed and module.check_mode:
|
||||||
partition = {'flags': []} # Empty structure for the check-mode
|
partition = {'flags': []} # Empty structure for the check-mode
|
||||||
if not module.check_mode:
|
else:
|
||||||
partition = [p for p in current_parts if p['num'] == number][0]
|
partition = [p for p in current_parts if p['num'] == number][0]
|
||||||
|
|
||||||
# Assign name to the partition
|
# Assign name to the partition
|
||||||
|
|
|
@ -88,6 +88,29 @@ parted_dict2 = {
|
||||||
"partitions": []
|
"partitions": []
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# fake some_flag exists
|
||||||
|
parted_dict3 = {
|
||||||
|
"generic": {
|
||||||
|
"dev": "/dev/sdb",
|
||||||
|
"size": 286061.0,
|
||||||
|
"unit": "mb",
|
||||||
|
"table": "msdos",
|
||||||
|
"model": "ATA TOSHIBA THNSFJ25",
|
||||||
|
"logical_block": 512,
|
||||||
|
"physical_block": 512
|
||||||
|
},
|
||||||
|
"partitions": [{
|
||||||
|
"num": 1,
|
||||||
|
"begin": 1.05,
|
||||||
|
"end": 106.0,
|
||||||
|
"size": 105.0,
|
||||||
|
"fstype": "fat32",
|
||||||
|
"name": '',
|
||||||
|
"flags": ["some_flag"],
|
||||||
|
"unit": "mb"
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class TestParted(ModuleTestCase):
|
class TestParted(ModuleTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
@ -239,3 +262,29 @@ class TestParted(ModuleTestCase):
|
||||||
})
|
})
|
||||||
with patch('ansible_collections.community.general.plugins.modules.system.parted.get_device_info', return_value=parted_dict2):
|
with patch('ansible_collections.community.general.plugins.modules.system.parted.get_device_info', return_value=parted_dict2):
|
||||||
self.execute_module(changed=True, script='unit KiB mklabel gpt mkpart primary 0% 100% unit KiB name 1 \'"lvmpartition"\' set 1 lvm on')
|
self.execute_module(changed=True, script='unit KiB mklabel gpt mkpart primary 0% 100% unit KiB name 1 \'"lvmpartition"\' set 1 lvm on')
|
||||||
|
|
||||||
|
def test_check_mode_unchanged(self):
|
||||||
|
# Test that get_device_info result is checked in check mode too
|
||||||
|
# No change on partition 1
|
||||||
|
set_module_args({
|
||||||
|
'device': '/dev/sdb',
|
||||||
|
'number': 1,
|
||||||
|
'state': 'present',
|
||||||
|
'flags': ['some_flag'],
|
||||||
|
'_ansible_check_mode': True,
|
||||||
|
})
|
||||||
|
with patch('ansible_collections.community.general.plugins.modules.system.parted.get_device_info', return_value=parted_dict3):
|
||||||
|
self.execute_module(changed=False)
|
||||||
|
|
||||||
|
def test_check_mode_changed(self):
|
||||||
|
# Test that get_device_info result is checked in check mode too
|
||||||
|
# Flag change on partition 1
|
||||||
|
set_module_args({
|
||||||
|
'device': '/dev/sdb',
|
||||||
|
'number': 1,
|
||||||
|
'state': 'present',
|
||||||
|
'flags': ['other_flag'],
|
||||||
|
'_ansible_check_mode': True,
|
||||||
|
})
|
||||||
|
with patch('ansible_collections.community.general.plugins.modules.system.parted.get_device_info', return_value=parted_dict3):
|
||||||
|
self.execute_module(changed=True)
|
||||||
|
|
Loading…
Reference in a new issue