From 6907ae5a5edd26bddac2d285f81e20d73025a53c Mon Sep 17 00:00:00 2001 From: "patchback[bot]" <45432694+patchback[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 18:28:24 +0100 Subject: [PATCH] [PR #9539/94d5256a backport][stable-10] Fix #9538 Inventory iocage fails when DHCP is enabled (#9568) Fix #9538 Inventory iocage fails when DHCP is enabled (#9539) * Fix #9538 Inventory iocage fails when DHCP is enbled. * Add changelog fragment 9539-iocage-inventory-dhcp.yml * Keep iocage_ip4 a string. * Rename the variable iocage_ip4 to iocage_ip4_dict in _parse_ip4. * Update the changelog fragment. * Rename _parse_ip4 parameter ip4_addr to ip4. * Fix changelog frangment present tense. * If IP is not available set iocage_ip4='-' instead of the empty string. * Update changelogs/fragments/9539-iocage-inventory-dhcp.yml Co-authored-by: Felix Fontein --------- Co-authored-by: Felix Fontein (cherry picked from commit 94d5256adb48511b1c3eef5853f31388e4f0e84b) Co-authored-by: Vladimir Botka --- .../fragments/9539-iocage-inventory-dhcp.yml | 2 + plugins/inventory/iocage.py | 41 ++++++++++++--- .../{ => iocage}/iocage_inventory.yml | 18 +++++++ .../{ => iocage}/iocage_inventory.yml.license | 0 .../fixtures/iocage/iocage_jails.txt | 9 ++++ .../{ => iocage}/iocage_jails.txt.license | 0 .../fixtures/{ => iocage}/iocage_jails.yml | 18 +++++++ .../{ => iocage}/iocage_jails.yml.license | 0 .../fixtures/iocage/iocage_jails_dhcp.txt | 9 ++++ .../iocage_jails_dhcp.txt.license} | 0 .../fixtures/iocage/iocage_jails_dhcp.yml | 50 +++++++++++++++++++ .../iocage_jails_dhcp.yml.license} | 0 .../iocage/iocage_jails_dhcp_not_running.txt | 9 ++++ ...iocage_jails_dhcp_not_running.txt.license} | 0 .../iocage/iocage_jails_dhcp_not_running.yml | 41 +++++++++++++++ ...iocage_jails_dhcp_not_running.yml.license} | 0 .../{ => iocage}/iocage_properties.txt | 0 .../iocage_properties.txt.license} | 0 .../{ => iocage}/iocage_properties.yml | 18 +++++++ .../iocage/iocage_properties.yml.license | 3 ++ .../iocage_properties_test_101.txt | 0 .../iocage_properties_test_101.txt.license | 3 ++ .../iocage_properties_test_102.txt | 0 .../iocage_properties_test_102.txt.license | 3 ++ .../iocage_properties_test_103.txt | 0 .../iocage_properties_test_103.txt.license | 3 ++ .../inventory/fixtures/iocage_jails.txt | 3 -- tests/unit/plugins/inventory/test_iocage.py | 30 ++++++++--- 28 files changed, 243 insertions(+), 17 deletions(-) create mode 100644 changelogs/fragments/9539-iocage-inventory-dhcp.yml rename tests/unit/plugins/inventory/fixtures/{ => iocage}/iocage_inventory.yml (96%) rename tests/unit/plugins/inventory/fixtures/{ => iocage}/iocage_inventory.yml.license (100%) create mode 100644 tests/unit/plugins/inventory/fixtures/iocage/iocage_jails.txt rename tests/unit/plugins/inventory/fixtures/{ => iocage}/iocage_jails.txt.license (100%) rename tests/unit/plugins/inventory/fixtures/{ => iocage}/iocage_jails.yml (68%) rename tests/unit/plugins/inventory/fixtures/{ => iocage}/iocage_jails.yml.license (100%) create mode 100644 tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp.txt rename tests/unit/plugins/inventory/fixtures/{iocage_properties.txt.license => iocage/iocage_jails_dhcp.txt.license} (100%) create mode 100644 tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp.yml rename tests/unit/plugins/inventory/fixtures/{iocage_properties.yml.license => iocage/iocage_jails_dhcp.yml.license} (100%) create mode 100644 tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp_not_running.txt rename tests/unit/plugins/inventory/fixtures/{iocage_properties_test_101.txt.license => iocage/iocage_jails_dhcp_not_running.txt.license} (100%) create mode 100644 tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp_not_running.yml rename tests/unit/plugins/inventory/fixtures/{iocage_properties_test_102.txt.license => iocage/iocage_jails_dhcp_not_running.yml.license} (100%) rename tests/unit/plugins/inventory/fixtures/{ => iocage}/iocage_properties.txt (100%) rename tests/unit/plugins/inventory/fixtures/{iocage_properties_test_103.txt.license => iocage/iocage_properties.txt.license} (100%) rename tests/unit/plugins/inventory/fixtures/{ => iocage}/iocage_properties.yml (97%) create mode 100644 tests/unit/plugins/inventory/fixtures/iocage/iocage_properties.yml.license rename tests/unit/plugins/inventory/fixtures/{ => iocage}/iocage_properties_test_101.txt (100%) create mode 100644 tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_101.txt.license rename tests/unit/plugins/inventory/fixtures/{ => iocage}/iocage_properties_test_102.txt (100%) create mode 100644 tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_102.txt.license rename tests/unit/plugins/inventory/fixtures/{ => iocage}/iocage_properties_test_103.txt (100%) create mode 100644 tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_103.txt.license delete mode 100644 tests/unit/plugins/inventory/fixtures/iocage_jails.txt diff --git a/changelogs/fragments/9539-iocage-inventory-dhcp.yml b/changelogs/fragments/9539-iocage-inventory-dhcp.yml new file mode 100644 index 00000000000..2432669d258 --- /dev/null +++ b/changelogs/fragments/9539-iocage-inventory-dhcp.yml @@ -0,0 +1,2 @@ +bugfixes: + - iocage inventory plugin - the plugin parses the IP4 tab of the jails list and put the elements into the new variable ``iocage_ip4_dict``. In multiple interface format the variable ``iocage_ip4`` keeps the comma-separated list of IP4 (https://github.com/ansible-collections/community.general/issues/9538). diff --git a/plugins/inventory/iocage.py b/plugins/inventory/iocage.py index f30ec02dd42..6ca7c2ef0ab 100644 --- a/plugins/inventory/iocage.py +++ b/plugins/inventory/iocage.py @@ -131,9 +131,27 @@ def _parse_ip4(ip4): - if ip4 == '-': - return ip4 - return re.split('\\||/', ip4)[1] + ''' Return dictionary iocage_ip4_dict. default = {ip4: [], msg: ''}. + If item matches ifc|IP or ifc|CIDR parse ifc, ip, and mask. + Otherwise, append item to msg. + ''' + + iocage_ip4_dict = {} + iocage_ip4_dict['ip4'] = [] + iocage_ip4_dict['msg'] = '' + + items = ip4.split(',') + for item in items: + if re.match('^\\w+\\|(?:\\d{1,3}\\.){3}\\d{1,3}.*$', item): + i = re.split('\\||/', item) + if len(i) == 3: + iocage_ip4_dict['ip4'].append({'ifc': i[0], 'ip': i[1], 'mask': i[2]}) + else: + iocage_ip4_dict['ip4'].append({'ifc': i[0], 'ip': i[1], 'mask': '-'}) + else: + iocage_ip4_dict['msg'] += item + + return iocage_ip4_dict class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable): @@ -194,7 +212,6 @@ def get_inventory(self, path): cmd_list = cmd.copy() cmd_list.append('list') - cmd_list.append('--header') cmd_list.append('--long') try: p = Popen(cmd_list, stdout=PIPE, stderr=PIPE, env=my_env) @@ -239,16 +256,26 @@ def get_inventory(self, path): return results def get_jails(self, t_stdout, results): - jails = [x.split() for x in t_stdout.splitlines()] - for jail in jails: + lines = t_stdout.splitlines() + if len(lines) < 5: + return + indices = [i for i, val in enumerate(lines[1]) if val == '|'] + for line in lines[3::2]: + jail = [line[i + 1:j].strip() for i, j in zip(indices[:-1], indices[1:])] iocage_name = jail[1] + iocage_ip4_dict = _parse_ip4(jail[6]) + if iocage_ip4_dict['ip4']: + iocage_ip4 = ','.join([d['ip'] for d in iocage_ip4_dict['ip4']]) + else: + iocage_ip4 = '-' results['_meta']['hostvars'][iocage_name] = {} results['_meta']['hostvars'][iocage_name]['iocage_jid'] = jail[0] results['_meta']['hostvars'][iocage_name]['iocage_boot'] = jail[2] results['_meta']['hostvars'][iocage_name]['iocage_state'] = jail[3] results['_meta']['hostvars'][iocage_name]['iocage_type'] = jail[4] results['_meta']['hostvars'][iocage_name]['iocage_release'] = jail[5] - results['_meta']['hostvars'][iocage_name]['iocage_ip4'] = _parse_ip4(jail[6]) + results['_meta']['hostvars'][iocage_name]['iocage_ip4_dict'] = iocage_ip4_dict + results['_meta']['hostvars'][iocage_name]['iocage_ip4'] = iocage_ip4 results['_meta']['hostvars'][iocage_name]['iocage_ip6'] = jail[7] results['_meta']['hostvars'][iocage_name]['iocage_template'] = jail[8] results['_meta']['hostvars'][iocage_name]['iocage_basejail'] = jail[9] diff --git a/tests/unit/plugins/inventory/fixtures/iocage_inventory.yml b/tests/unit/plugins/inventory/fixtures/iocage/iocage_inventory.yml similarity index 96% rename from tests/unit/plugins/inventory/fixtures/iocage_inventory.yml rename to tests/unit/plugins/inventory/fixtures/iocage/iocage_inventory.yml index 850a54f549d..75cafc4e3b8 100644 --- a/tests/unit/plugins/inventory/fixtures/iocage_inventory.yml +++ b/tests/unit/plugins/inventory/fixtures/iocage/iocage_inventory.yml @@ -5,6 +5,12 @@ all: test_101: iocage_basejail: 'yes' iocage_boot: 'off' + iocage_ip4_dict: + ip4: + - ifc: vnet0 + ip: 10.1.0.101 + mask: '24' + msg: '' iocage_ip4: 10.1.0.101 iocage_ip6: '-' iocage_jid: '-' @@ -157,6 +163,12 @@ all: test_102: iocage_basejail: 'yes' iocage_boot: 'off' + iocage_ip4_dict: + ip4: + - ifc: vnet0 + ip: 10.1.0.102 + mask: '24' + msg: '' iocage_ip4: 10.1.0.102 iocage_ip6: '-' iocage_jid: '-' @@ -309,6 +321,12 @@ all: test_103: iocage_basejail: 'yes' iocage_boot: 'off' + iocage_ip4_dict: + ip4: + - ifc: vnet0 + ip: 10.1.0.103 + mask: '24' + msg: '' iocage_ip4: 10.1.0.103 iocage_ip6: '-' iocage_jid: '-' diff --git a/tests/unit/plugins/inventory/fixtures/iocage_inventory.yml.license b/tests/unit/plugins/inventory/fixtures/iocage/iocage_inventory.yml.license similarity index 100% rename from tests/unit/plugins/inventory/fixtures/iocage_inventory.yml.license rename to tests/unit/plugins/inventory/fixtures/iocage/iocage_inventory.yml.license diff --git a/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails.txt b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails.txt new file mode 100644 index 00000000000..4cd9d0999dc --- /dev/null +++ b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails.txt @@ -0,0 +1,9 @@ ++------+----------+------+-------+------+-----------------+---------------------+-----+----------------+----------+ +| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL | ++======+==========+======+=======+======+=================+=====================+=====+================+==========+ +| - | test_101 | off | down | jail | 13.4-RELEASE-p2 | vnet0|10.1.0.101/24 | - | ansible_client | yes | ++------+----------------+------+-------+------+-----------------+--------------------+-----+----------------+-----+ +| - | test_102 | off | down | jail | 13.4-RELEASE-p2 | vnet0|10.1.0.102/24 | - | ansible_client | yes | ++------+----------------+------+-------+------+-----------------+--------------------+-----+----------------+-----+ +| - | test_103 | off | down | jail | 13.4-RELEASE-p2 | vnet0|10.1.0.103/24 | - | ansible_client | yes | ++------+----------------+------+-------+------+-----------------+--------------------+-----+----------------+-----+ diff --git a/tests/unit/plugins/inventory/fixtures/iocage_jails.txt.license b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails.txt.license similarity index 100% rename from tests/unit/plugins/inventory/fixtures/iocage_jails.txt.license rename to tests/unit/plugins/inventory/fixtures/iocage/iocage_jails.txt.license diff --git a/tests/unit/plugins/inventory/fixtures/iocage_jails.yml b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails.yml similarity index 68% rename from tests/unit/plugins/inventory/fixtures/iocage_jails.yml rename to tests/unit/plugins/inventory/fixtures/iocage/iocage_jails.yml index 08eaa2dce4b..ebca1598244 100644 --- a/tests/unit/plugins/inventory/fixtures/iocage_jails.yml +++ b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails.yml @@ -3,6 +3,12 @@ _meta: test_101: iocage_basejail: 'yes' iocage_boot: 'off' + iocage_ip4_dict: + ip4: + - ifc: vnet0 + ip: 10.1.0.101 + mask: '24' + msg: '' iocage_ip4: 10.1.0.101 iocage_ip6: '-' iocage_jid: '-' @@ -13,6 +19,12 @@ _meta: test_102: iocage_basejail: 'yes' iocage_boot: 'off' + iocage_ip4_dict: + ip4: + - ifc: vnet0 + ip: 10.1.0.102 + mask: '24' + msg: '' iocage_ip4: 10.1.0.102 iocage_ip6: '-' iocage_jid: '-' @@ -23,6 +35,12 @@ _meta: test_103: iocage_basejail: 'yes' iocage_boot: 'off' + iocage_ip4_dict: + ip4: + - ifc: vnet0 + ip: 10.1.0.103 + mask: '24' + msg: '' iocage_ip4: 10.1.0.103 iocage_ip6: '-' iocage_jid: '-' diff --git a/tests/unit/plugins/inventory/fixtures/iocage_jails.yml.license b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails.yml.license similarity index 100% rename from tests/unit/plugins/inventory/fixtures/iocage_jails.yml.license rename to tests/unit/plugins/inventory/fixtures/iocage/iocage_jails.yml.license diff --git a/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp.txt b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp.txt new file mode 100644 index 00000000000..b49428fc7a6 --- /dev/null +++ b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp.txt @@ -0,0 +1,9 @@ ++------+----------------+------+-------+------+-----------------+--------------------+-----+----------------+----------+ +| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL | ++======+================+======+=======+======+=================+====================+=====+================+==========+ +| 268 | test_111 | off | up | jail | 14.1-RELEASE-p6 | epair0b|10.1.0.174 | - | ansible_client | yes | ++------+----------------+------+-------+------+-----------------+--------------------+-----+----------------+----------+ +| 269 | test_112 | off | up | jail | 14.1-RELEASE-p6 | epair0b|10.1.0.147 | - | ansible_client | yes | ++------+----------------+------+-------+------+-----------------+--------------------+-----+----------------+----------+ +| 270 | test_113 | off | up | jail | 14.1-RELEASE-p6 | epair0b|10.1.0.231 | - | ansible_client | yes | ++------+----------------+------+-------+------+-----------------+--------------------+-----+----------------+----------+ diff --git a/tests/unit/plugins/inventory/fixtures/iocage_properties.txt.license b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp.txt.license similarity index 100% rename from tests/unit/plugins/inventory/fixtures/iocage_properties.txt.license rename to tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp.txt.license diff --git a/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp.yml b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp.yml new file mode 100644 index 00000000000..fc011037536 --- /dev/null +++ b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp.yml @@ -0,0 +1,50 @@ +_meta: + hostvars: + test_111: + iocage_basejail: 'yes' + iocage_boot: 'off' + iocage_ip4_dict: + ip4: + - ifc: epair0b + ip: 10.1.0.174 + mask: '-' + msg: '' + iocage_ip4: 10.1.0.174 + iocage_ip6: '-' + iocage_jid: '268' + iocage_release: 14.1-RELEASE-p6 + iocage_state: up + iocage_template: ansible_client + iocage_type: jail + test_112: + iocage_basejail: 'yes' + iocage_boot: 'off' + iocage_ip4_dict: + ip4: + - ifc: epair0b + ip: 10.1.0.147 + mask: '-' + msg: '' + iocage_ip4: 10.1.0.147 + iocage_ip6: '-' + iocage_jid: '269' + iocage_release: 14.1-RELEASE-p6 + iocage_state: up + iocage_template: ansible_client + iocage_type: jail + test_113: + iocage_basejail: 'yes' + iocage_boot: 'off' + iocage_ip4_dict: + ip4: + - ifc: epair0b + ip: 10.1.0.231 + mask: '-' + msg: '' + iocage_ip4: 10.1.0.231 + iocage_ip6: '-' + iocage_jid: '270' + iocage_release: 14.1-RELEASE-p6 + iocage_state: up + iocage_template: ansible_client + iocage_type: jail diff --git a/tests/unit/plugins/inventory/fixtures/iocage_properties.yml.license b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp.yml.license similarity index 100% rename from tests/unit/plugins/inventory/fixtures/iocage_properties.yml.license rename to tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp.yml.license diff --git a/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp_not_running.txt b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp_not_running.txt new file mode 100644 index 00000000000..71235ca4e54 --- /dev/null +++ b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp_not_running.txt @@ -0,0 +1,9 @@ ++------+----------------+------+-------+------+-----------------+--------------------+-----+----------------+----------+ +| JID | NAME | BOOT | STATE | TYPE | RELEASE | IP4 | IP6 | TEMPLATE | BASEJAIL | ++======+================+======+=======+======+=================+====================+=====+================+==========+ +| None | test_111 | off | down | jail | 14.1-RELEASE-p6 | DHCP (not running) | - | ansible_client | yes | ++------+----------------+------+-------+------+-----------------+--------------------+-----+----------------+----------+ +| None | test_112 | off | down | jail | 14.1-RELEASE-p6 | DHCP (not running) | - | ansible_client | yes | ++------+----------------+------+-------+------+-----------------+--------------------+-----+----------------+----------+ +| None | test_113 | off | down | jail | 14.1-RELEASE-p6 | DHCP (not running) | - | ansible_client | yes | ++------+----------------+------+-------+------+-----------------+--------------------+-----+----------------+----------+ diff --git a/tests/unit/plugins/inventory/fixtures/iocage_properties_test_101.txt.license b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp_not_running.txt.license similarity index 100% rename from tests/unit/plugins/inventory/fixtures/iocage_properties_test_101.txt.license rename to tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp_not_running.txt.license diff --git a/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp_not_running.yml b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp_not_running.yml new file mode 100644 index 00000000000..a8ef2ae8811 --- /dev/null +++ b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp_not_running.yml @@ -0,0 +1,41 @@ +_meta: + hostvars: + test_111: + iocage_basejail: 'yes' + iocage_boot: 'off' + iocage_ip4_dict: + ip4: [] + msg: 'DHCP (not running)' + iocage_ip4: '-' + iocage_ip6: '-' + iocage_jid: 'None' + iocage_release: 14.1-RELEASE-p6 + iocage_state: down + iocage_template: ansible_client + iocage_type: jail + test_112: + iocage_basejail: 'yes' + iocage_boot: 'off' + iocage_ip4_dict: + ip4: [] + msg: 'DHCP (not running)' + iocage_ip4: '-' + iocage_ip6: '-' + iocage_jid: 'None' + iocage_release: 14.1-RELEASE-p6 + iocage_state: down + iocage_template: ansible_client + iocage_type: jail + test_113: + iocage_basejail: 'yes' + iocage_boot: 'off' + iocage_ip4_dict: + ip4: [] + msg: 'DHCP (not running)' + iocage_ip4: '-' + iocage_ip6: '-' + iocage_jid: 'None' + iocage_release: 14.1-RELEASE-p6 + iocage_state: down + iocage_template: ansible_client + iocage_type: jail diff --git a/tests/unit/plugins/inventory/fixtures/iocage_properties_test_102.txt.license b/tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp_not_running.yml.license similarity index 100% rename from tests/unit/plugins/inventory/fixtures/iocage_properties_test_102.txt.license rename to tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp_not_running.yml.license diff --git a/tests/unit/plugins/inventory/fixtures/iocage_properties.txt b/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties.txt similarity index 100% rename from tests/unit/plugins/inventory/fixtures/iocage_properties.txt rename to tests/unit/plugins/inventory/fixtures/iocage/iocage_properties.txt diff --git a/tests/unit/plugins/inventory/fixtures/iocage_properties_test_103.txt.license b/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties.txt.license similarity index 100% rename from tests/unit/plugins/inventory/fixtures/iocage_properties_test_103.txt.license rename to tests/unit/plugins/inventory/fixtures/iocage/iocage_properties.txt.license diff --git a/tests/unit/plugins/inventory/fixtures/iocage_properties.yml b/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties.yml similarity index 97% rename from tests/unit/plugins/inventory/fixtures/iocage_properties.yml rename to tests/unit/plugins/inventory/fixtures/iocage/iocage_properties.yml index ffae1bf9d17..bb20808ae8a 100644 --- a/tests/unit/plugins/inventory/fixtures/iocage_properties.yml +++ b/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties.yml @@ -3,6 +3,12 @@ _meta: test_101: iocage_basejail: 'yes' iocage_boot: 'off' + iocage_ip4_dict: + ip4: + - ifc: vnet0 + ip: 10.1.0.101 + mask: '24' + msg: '' iocage_ip4: 10.1.0.101 iocage_ip6: '-' iocage_jid: '-' @@ -155,6 +161,12 @@ _meta: test_102: iocage_basejail: 'yes' iocage_boot: 'off' + iocage_ip4_dict: + ip4: + - ifc: vnet0 + ip: 10.1.0.102 + mask: '24' + msg: '' iocage_ip4: 10.1.0.102 iocage_ip6: '-' iocage_jid: '-' @@ -307,6 +319,12 @@ _meta: test_103: iocage_basejail: 'yes' iocage_boot: 'off' + iocage_ip4_dict: + ip4: + - ifc: vnet0 + ip: 10.1.0.103 + mask: '24' + msg: '' iocage_ip4: 10.1.0.103 iocage_ip6: '-' iocage_jid: '-' diff --git a/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties.yml.license b/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties.yml.license new file mode 100644 index 00000000000..edff8c7685d --- /dev/null +++ b/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties.yml.license @@ -0,0 +1,3 @@ +GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +SPDX-License-Identifier: GPL-3.0-or-later +SPDX-FileCopyrightText: Ansible Project diff --git a/tests/unit/plugins/inventory/fixtures/iocage_properties_test_101.txt b/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_101.txt similarity index 100% rename from tests/unit/plugins/inventory/fixtures/iocage_properties_test_101.txt rename to tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_101.txt diff --git a/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_101.txt.license b/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_101.txt.license new file mode 100644 index 00000000000..edff8c7685d --- /dev/null +++ b/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_101.txt.license @@ -0,0 +1,3 @@ +GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +SPDX-License-Identifier: GPL-3.0-or-later +SPDX-FileCopyrightText: Ansible Project diff --git a/tests/unit/plugins/inventory/fixtures/iocage_properties_test_102.txt b/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_102.txt similarity index 100% rename from tests/unit/plugins/inventory/fixtures/iocage_properties_test_102.txt rename to tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_102.txt diff --git a/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_102.txt.license b/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_102.txt.license new file mode 100644 index 00000000000..edff8c7685d --- /dev/null +++ b/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_102.txt.license @@ -0,0 +1,3 @@ +GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +SPDX-License-Identifier: GPL-3.0-or-later +SPDX-FileCopyrightText: Ansible Project diff --git a/tests/unit/plugins/inventory/fixtures/iocage_properties_test_103.txt b/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_103.txt similarity index 100% rename from tests/unit/plugins/inventory/fixtures/iocage_properties_test_103.txt rename to tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_103.txt diff --git a/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_103.txt.license b/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_103.txt.license new file mode 100644 index 00000000000..edff8c7685d --- /dev/null +++ b/tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_103.txt.license @@ -0,0 +1,3 @@ +GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +SPDX-License-Identifier: GPL-3.0-or-later +SPDX-FileCopyrightText: Ansible Project diff --git a/tests/unit/plugins/inventory/fixtures/iocage_jails.txt b/tests/unit/plugins/inventory/fixtures/iocage_jails.txt deleted file mode 100644 index 51521105500..00000000000 --- a/tests/unit/plugins/inventory/fixtures/iocage_jails.txt +++ /dev/null @@ -1,3 +0,0 @@ -- test_101 off down jail 13.4-RELEASE-p2 vnet0|10.1.0.101/24 - ansible_client yes -- test_102 off down jail 13.4-RELEASE-p2 vnet0|10.1.0.102/24 - ansible_client yes -- test_103 off down jail 13.4-RELEASE-p2 vnet0|10.1.0.103/24 - ansible_client yes diff --git a/tests/unit/plugins/inventory/test_iocage.py b/tests/unit/plugins/inventory/test_iocage.py index 1a0aa22d16d..011fc493882 100644 --- a/tests/unit/plugins/inventory/test_iocage.py +++ b/tests/unit/plugins/inventory/test_iocage.py @@ -20,14 +20,18 @@ def inventory(): inv = InventoryModule() inv.inventory = InventoryData() inv.templar = Templar(None) - inv.jails = load_txt_data('tests/unit/plugins/inventory/fixtures/iocage_jails.txt') - inv.js_ok = load_yml_data('tests/unit/plugins/inventory/fixtures/iocage_jails.yml') - prpts_101 = load_txt_data('tests/unit/plugins/inventory/fixtures/iocage_properties_test_101.txt') - prpts_102 = load_txt_data('tests/unit/plugins/inventory/fixtures/iocage_properties_test_102.txt') - prpts_103 = load_txt_data('tests/unit/plugins/inventory/fixtures/iocage_properties_test_103.txt') + inv.jails = load_txt_data('tests/unit/plugins/inventory/fixtures/iocage/iocage_jails.txt') + inv.js_ok = load_yml_data('tests/unit/plugins/inventory/fixtures/iocage/iocage_jails.yml') + inv.jails_dhcp = load_txt_data('tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp.txt') + inv.js_dhcp_ok = load_yml_data('tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp.yml') + inv.jails_dhcp_nr = load_txt_data('tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp_not_running.txt') + inv.js_dhcp_nr_ok = load_yml_data('tests/unit/plugins/inventory/fixtures/iocage/iocage_jails_dhcp_not_running.yml') + prpts_101 = load_txt_data('tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_101.txt') + prpts_102 = load_txt_data('tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_102.txt') + prpts_103 = load_txt_data('tests/unit/plugins/inventory/fixtures/iocage/iocage_properties_test_103.txt') inv.prpts = {'test_101': prpts_101, 'test_102': prpts_102, 'test_103': prpts_103} - inv.ps_ok = load_yml_data('tests/unit/plugins/inventory/fixtures/iocage_properties.yml') - inv.ok = load_yml_data('tests/unit/plugins/inventory/fixtures/iocage_inventory.yml') + inv.ps_ok = load_yml_data('tests/unit/plugins/inventory/fixtures/iocage/iocage_properties.yml') + inv.ok = load_yml_data('tests/unit/plugins/inventory/fixtures/iocage/iocage_inventory.yml') return inv @@ -72,10 +76,22 @@ def test_verify_file(tmp_path, inventory): def test_get_jails(inventory): + + # jails results = {'_meta': {'hostvars': {}}} inventory.get_jails(inventory.jails, results) assert results == inventory.js_ok + # jails_dhcp + results = {'_meta': {'hostvars': {}}} + inventory.get_jails(inventory.jails_dhcp, results) + assert results == inventory.js_dhcp_ok + + # jails_dhcp_not_running + results = {'_meta': {'hostvars': {}}} + inventory.get_jails(inventory.jails_dhcp_nr, results) + assert results == inventory.js_dhcp_nr_ok + def test_get_properties(inventory): results = {'_meta': {'hostvars': {}}}