1
0
Fork 0
mirror of https://github.com/containers/ansible-podman-collections.git synced 2026-05-01 13:28:51 +00:00

Fix uid/gid checks for podman 1.6.4 volumes

And prepare volume tasks for versioned checks
This commit is contained in:
Sagi Shnaidman 2021-01-15 02:21:28 +02:00 committed by Sergey
parent 03f578405c
commit c85718665b
3 changed files with 46 additions and 15 deletions

View file

@ -234,18 +234,21 @@ class PodmanVolumeDiff:
before = self.info['options'] if 'options' in self.info else {}
before = ["=".join((k, v)) for k, v in before.items()]
after = self.params['options']
# Gor UID, GID
ids = []
if self.info['uid']:
before += ['uid=%s' % str(self.info['uid'])]
if self.info['gid']:
before += ['gid=%s' % str(self.info['gid'])]
if self.params['options']:
for opt in self.params['options']:
if 'uid=' in opt or 'gid=' in opt:
ids += opt.split("o=")[1].split(",")
after = [i for i in after if 'gid' not in i and 'uid' not in i]
after += ids
# For UID, GID
if 'uid' in self.info or 'gid' in self.info:
ids = []
if 'uid' in self.info and self.info['uid']:
before = [i for i in before if 'uid' not in i]
before += ['uid=%s' % str(self.info['uid'])]
if 'gid' in self.info and self.info['gid']:
before = [i for i in before if 'gid' not in i]
before += ['gid=%s' % str(self.info['gid'])]
if self.params['options']:
for opt in self.params['options']:
if 'uid=' in opt or 'gid=' in opt:
ids += opt.split("o=")[1].split(",")
after = [i for i in after if 'gid' not in i and 'uid' not in i]
after += ids
before, after = sorted(list(set(before))), sorted(list(set(after)))
return self._diff_update_and_compare('options', before, after)

View file

@ -2,7 +2,7 @@
block:
- name: Print podman version
command: podman version
command: "{{ podman_cmd | default('podman') }} version"
- name: Generate random value for volume name
set_fact:
@ -12,10 +12,12 @@
containers.podman.podman_volume:
name: "{{ volume_name }}"
state: absent
executable: "{{ podman_cmd | default(omit) }}"
- name: Get missing volume info
containers.podman.podman_volume_info:
name: "{{ volume_name }}"
executable: "{{ podman_cmd | default(omit) }}"
register: info
ignore_errors: true
@ -27,11 +29,13 @@
- name: Create volume
containers.podman.podman_volume:
name: "{{ volume_name }}"
executable: "{{ podman_cmd | default(omit) }}"
register: vol
- name: Get existing volume info
containers.podman.podman_volume_info:
name: "{{ volume_name }}"
executable: "{{ podman_cmd | default(omit) }}"
register: info1
- name: Check info
@ -45,6 +49,7 @@
containers.podman.podman_volume:
name: "{{ volume_name }}"
state: present
executable: "{{ podman_cmd | default(omit) }}"
register: info2
- name: Check info
@ -59,6 +64,7 @@
label:
key: val
nokey: noval
executable: "{{ podman_cmd | default(omit) }}"
register: info3
- name: Check info
@ -73,6 +79,7 @@
label:
key: val
nokey: noval
executable: "{{ podman_cmd | default(omit) }}"
register: info4
- name: Check info
@ -84,6 +91,7 @@
containers.podman.podman_volume:
name: "{{ volume_name }}"
state: present
executable: "{{ podman_cmd | default(omit) }}"
register: info5
- name: Check info
@ -98,6 +106,7 @@
options:
- "device=/dev/something"
- "type=ext4"
executable: "{{ podman_cmd | default(omit) }}"
register: info6
- name: Check info
@ -112,6 +121,7 @@
options:
- "device=/dev/something"
- "type=ext4"
executable: "{{ podman_cmd | default(omit) }}"
register: info7
- name: Check info
@ -123,6 +133,7 @@
containers.podman.podman_volume:
name: "{{ volume_name }}"
state: present
executable: "{{ podman_cmd | default(omit) }}"
register: info8
- name: Check info
@ -139,6 +150,7 @@
- name: Get existing volume info
containers.podman.podman_volume_info:
name: "{{ volume_name }}"
executable: "{{ podman_cmd | default(omit) }}"
register: info10
ignore_errors: true
@ -154,6 +166,7 @@
state: present
options:
- "o=uid=1001"
executable: "{{ podman_cmd | default(omit) }}"
register: info11
- name: Check info
@ -167,6 +180,7 @@
state: present
options:
- "o=uid=1001"
executable: "{{ podman_cmd | default(omit) }}"
register: info12
- name: Check info
@ -178,6 +192,7 @@
containers.podman.podman_volume:
name: "{{ volume_name }}"
state: present
executable: "{{ podman_cmd | default(omit) }}"
register: info13
- name: Check info
@ -191,6 +206,7 @@
state: present
options:
- "o=gid=1001"
executable: "{{ podman_cmd | default(omit) }}"
register: info14
- name: Check info
@ -204,6 +220,7 @@
state: present
options:
- "o=gid=1001"
executable: "{{ podman_cmd | default(omit) }}"
register: info15
- name: Check info
@ -215,6 +232,7 @@
containers.podman.podman_volume:
name: "{{ volume_name }}"
state: present
executable: "{{ podman_cmd | default(omit) }}"
register: info16
- name: Check info
@ -228,6 +246,7 @@
state: present
options:
- "o=gid=1002,uid=1002"
executable: "{{ podman_cmd | default(omit) }}"
register: info17
- name: Check info
@ -242,6 +261,7 @@
options:
- "o=uid=1002"
- "o=gid=1002"
executable: "{{ podman_cmd | default(omit) }}"
register: info18
- name: Check info
@ -253,6 +273,7 @@
containers.podman.podman_volume:
name: "{{ volume_name }}"
state: present
executable: "{{ podman_cmd | default(omit) }}"
register: info19
- name: Check info
@ -265,3 +286,4 @@
containers.podman.podman_volume:
name: "{{ volume_name }}"
state: absent
executable: "{{ podman_cmd | default(omit) }}"

View file

@ -2,7 +2,7 @@
block:
- name: Print podman version
command: podman version
command: "{{ podman_cmd | default('podman') }} version"
- name: Generate random value for volume name
set_fact:
@ -12,10 +12,12 @@
containers.podman.podman_volume:
name: "{{ volume_name }}"
state: absent
executable: "{{ podman_cmd | default(omit) }}"
- name: Get missing volume info
containers.podman.podman_volume_info:
name: "{{ volume_name }}"
executable: "{{ podman_cmd | default(omit) }}"
register: nonexist
ignore_errors: true
@ -29,17 +31,19 @@
containers.podman.podman_volume:
name: "{{ volume_name }}"
state: present
executable: "{{ podman_cmd | default(omit) }}"
- name: Get existing volume info
containers.podman.podman_volume_info:
name: "{{ volume_name }}"
executable: "{{ podman_cmd | default(omit) }}"
register: existing_volume
- name: Dump podman volume inspect result
debug: var=existing_volume
- name: Comparison with 'podman volume inspect'
command: podman volume inspect "{{ volume_name }}"
command: "{{ podman_cmd | default('podman') }} volume inspect {{ volume_name }}"
register: podman_inspect
- name: Convert podman inspect output to JSON
@ -50,6 +54,7 @@
containers.podman.podman_volume:
name: "{{ volume_name }}"
state: absent
executable: "{{ podman_cmd | default(omit) }}"
- name: Make checks
assert:
@ -63,3 +68,4 @@
containers.podman.podman_volume:
name: "{{ volume_name }}"
state: absent
executable: "{{ podman_cmd | default(omit) }}"