From 91cd5b359a8c78a8321cd4c0c68d0b5e9480eaed Mon Sep 17 00:00:00 2001 From: Jim Ladd Date: Tue, 16 Jun 2020 11:37:03 -0700 Subject: [PATCH] add backwards support for ssl_verify in foreman * plugin changed option name from ssl_verify to validate_cert --- awx/main/models/inventory.py | 5 +++++ .../plugins/satellite6/files/foreman.yml | 1 + awx/main/tests/unit/models/test_inventory.py | 17 +++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/awx/main/models/inventory.py b/awx/main/models/inventory.py index a3f05b1401..ee367054ae 100644 --- a/awx/main/models/inventory.py +++ b/awx/main/models/inventory.py @@ -2596,6 +2596,7 @@ class satellite6(PluginFileInjector): def inventory_as_dict(self, inventory_update, private_data_dir): ret = super(satellite6, self).inventory_as_dict(inventory_update, private_data_dir) + ret['validate_certs'] = False group_patterns = '[]' group_prefix = 'foreman_' @@ -2615,6 +2616,10 @@ class satellite6(PluginFileInjector): want_ansible_ssh_host = v elif k == 'satellite6_want_facts' and isinstance(v, bool): want_facts = v + # add backwards support for ssl_verify + # plugin uses new option, validate_certs, instead + elif k == 'ssl_verify' and isinstance(v, bool): + ret['validate_certs'] = v else: ret[k] = str(v) diff --git a/awx/main/tests/data/inventory/plugins/satellite6/files/foreman.yml b/awx/main/tests/data/inventory/plugins/satellite6/files/foreman.yml index 782bb89be7..fcad2586f6 100644 --- a/awx/main/tests/data/inventory/plugins/satellite6/files/foreman.yml +++ b/awx/main/tests/data/inventory/plugins/satellite6/files/foreman.yml @@ -24,6 +24,7 @@ keyed_groups: separator: '' legacy_hostvars: true plugin: theforeman.foreman.foreman +validate_certs: false want_facts: true want_hostcollections: true want_params: true diff --git a/awx/main/tests/unit/models/test_inventory.py b/awx/main/tests/unit/models/test_inventory.py index 26ef5e1fa9..dc6af0e828 100644 --- a/awx/main/tests/unit/models/test_inventory.py +++ b/awx/main/tests/unit/models/test_inventory.py @@ -72,6 +72,23 @@ def test_invalid_kind_clean_insights_credential(): assert json.dumps(str(e.value)) == json.dumps(str([u'Assignment not allowed for Smart Inventory'])) +@pytest.mark.parametrize('source_vars,validate_certs', [ + ({'ssl_verify': True}, True), + ({'ssl_verify': False}, False), + ({'validate_certs': True}, True), + ({'validate_certs': False}, False)]) +def test_satellite_plugin_backwards_support_for_ssl_verify(source_vars, validate_certs): + injector = InventorySource.injectors['satellite6']('2.9') + inv_src = InventorySource( + name='satellite source', source='satellite6', + source_vars=source_vars + ) + + ret = injector.inventory_as_dict(inv_src, '/tmp/foo') + assert 'validate_certs' in ret + assert ret['validate_certs'] in (validate_certs, str(validate_certs)) + + class TestControlledBySCM(): def test_clean_source_path_valid(self): inv_src = InventorySource(source_path='/not_real/',