Skip to content

Commit

Permalink
fix: Allow using raid_chunk_size for RAID pools and volumes
Browse files Browse the repository at this point in the history
We forgot about the raid_chunk_size parameter when adding the
pool/volume parameter checking. This parameter should be allowed
for RAID pools and volumes.
  • Loading branch information
vojtechtrefny authored and richm committed May 25, 2023
1 parent 0fa5a49 commit 8f2e68e
Show file tree
Hide file tree
Showing 5 changed files with 132 additions and 1 deletion.
4 changes: 3 additions & 1 deletion library/blivet.py
Original file line number Diff line number Diff line change
Expand Up @@ -1745,7 +1745,8 @@ def run_module():
dict(disks=dict(type='list'),
raid_device_count=dict(type='int'),
raid_spare_count=dict(type='int'),
raid_metadata_version=dict(type='str')))
raid_metadata_version=dict(type='str'),
raid_chunk_size=dict(type='str')))
pool_volume_opts = copy.deepcopy(common_volume_opts)
pool_volume_opts.update(
dict(cached=dict(type='bool'),
Expand Down Expand Up @@ -1774,6 +1775,7 @@ def run_module():
raid_device_count=dict(type='int'),
raid_spare_count=dict(type='int'),
raid_metadata_version=dict(type='str'),
raid_chunk_size=dict(type='str'),
state=dict(type='str', default='present', choices=['present', 'absent']),
type=dict(type='str'),
volumes=dict(type='list', elements='dict', default=list(),
Expand Down
29 changes: 29 additions & 0 deletions tests/test-verify-volume-md.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,25 @@
regex_escape() }}"
when: storage_test_volume.raid_metadata_version is defined

- name: Set chunk size regex
set_fact:
storage_test_md_chunk_size_re: "{{
storage_test_mdadm.stdout | regex_search('Chunk Size : ([0-9]+[KMG])',
'\\1') }}"
when:
- storage_test_volume.raid_chunk_size is defined
- storage_test_volume.raid_chunk_size is not none
- storage_test_volume.raid_chunk_size | string != "0 B"

- name: Parse the chunk size
bsize:
size: "{{ storage_test_md_chunk_size_re[0] }}"
register: storage_test_parsed_md_chunk_size
when:
- storage_test_volume.raid_chunk_size is defined
- storage_test_volume.raid_chunk_size is not none
- storage_test_volume.raid_chunk_size | string != "0 B"

- name: Check RAID active devices count
assert:
that: storage_test_mdadm.stdout is
Expand All @@ -58,3 +77,13 @@
Expected {{ storage_test_volume.raid_metadata_version }} RAID metadata
version.
when: storage_test_volume.raid_metadata_version is not none

- name: Check RAID chunk size
assert:
that: storage_test_parsed_md_chunk_size | int ==
storage_test_volume.raid_chunk_size | int
msg: Expected {{ storage_test_volume.raid_chunk_size }} RAID chunk size.
when:
- storage_test_volume.raid_chunk_size is defined
- storage_test_volume.raid_chunk_size is not none
- storage_test_volume.raid_chunk_size | string != "0 B"
34 changes: 34 additions & 0 deletions tests/tests_raid_pool_options.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,3 +119,37 @@

- name: Verify role results
include_tasks: verify-role-results.yml

- name: Create a RAID0 device
include_role:
name: linux-system-roles.storage
vars:
storage_pools:
- name: vg1
disks: "{{ unused_disks }}"
type: lvm
raid_level: "raid0"
raid_device_count: 3
raid_metadata_version: "1.0"
raid_chunk_size: "1024 KiB"
state: present

- name: Verify role results
include_tasks: verify-role-results.yml

- name: Remove the pool created above
include_role:
name: linux-system-roles.storage
vars:
storage_pools:
- name: vg1
disks: "{{ unused_disks }}"
type: lvm
raid_level: "raid0"
raid_device_count: 3
raid_metadata_version: "1.0"
raid_chunk_size: "1024 KiB"
state: absent

- name: Verify role results
include_tasks: verify-role-results.yml
36 changes: 36 additions & 0 deletions tests/tests_raid_volume_options.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,3 +85,39 @@

- name: Verify role results
include_tasks: verify-role-results.yml

- name: Create a RAID0 device mounted on "{{ mount_location }}"
include_role:
name: linux-system-roles.storage
vars:
storage_volumes:
- name: test0
type: raid
raid_level: "raid0"
raid_device_count: 3
raid_metadata_version: "1.0"
raid_chunk_size: "1024K"
disks: "{{ unused_disks }}"
mount_point: "{{ mount_location }}"
state: present

- name: Verify role results
include_tasks: verify-role-results.yml

- name: Remove the disk device created above
include_role:
name: linux-system-roles.storage
vars:
storage_volumes:
- name: test0
type: raid
raid_level: "raid0"
raid_device_count: 3
raid_metadata_version: "1.0"
raid_chunk_size: "1024K"
disks: "{{ unused_disks }}"
mount_point: "{{ mount_location }}"
state: absent

- name: Verify role results
include_tasks: verify-role-results.yml
30 changes: 30 additions & 0 deletions tests/verify-pool-md.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,25 @@
regex_escape() }}"
when: storage_test_pool.raid_metadata_version is defined

- name: Set md chunk size regex
set_fact:
storage_test_md_chunk_size_re: "{{
storage_test_mdadm.stdout | regex_search('Chunk Size : ([0-9]+[KMG])',
'\\1') }}"
when:
- storage_test_pool.raid_chunk_size is defined
- storage_test_pool.raid_chunk_size is not none
- storage_test_pool.raid_chunk_size | string != "0 B"

- name: Parse the chunk size
bsize:
size: "{{ storage_test_md_chunk_size_re[0] }}"
register: storage_test_parsed_md_chunk_size
when:
- storage_test_pool.raid_chunk_size is defined
- storage_test_pool.raid_chunk_size is not none
- storage_test_pool.raid_chunk_size | string != "0 B"

- name: Check RAID active devices count
assert:
that: storage_test_mdadm.stdout is
Expand Down Expand Up @@ -63,8 +82,19 @@
- storage_test_pool.raid_metadata_version is defined
- storage_test_pool.raid_metadata_version is not none

- name: Check RAID chunk size
assert:
that: storage_test_parsed_md_chunk_size | int ==
storage_test_pool.raid_chunk_size | int
msg: Expected {{ storage_test_pool.raid_chunk_size }} RAID chunk size.
when:
- storage_test_pool.raid_chunk_size is defined
- storage_test_pool.raid_chunk_size is not none
- storage_test_pool.raid_chunk_size | string != "0 B"

- name: Reset variables used by tests
set_fact:
storage_test_md_active_devices_re: null
storage_test_md_spare_devices_re: null
storage_test_md_metadata_version_re: null
storage_test_md_chunk_size_re: null

0 comments on commit 8f2e68e

Please sign in to comment.