From 908de9cde780b4b4d1a4076c133a467165209bc0 Mon Sep 17 00:00:00 2001 From: Jim Enright Date: Fri, 28 Jul 2023 12:55:37 +0100 Subject: [PATCH 1/2] Add noProxyHosts parameter to cloudera.cloud.env_proxy Signed-off-by: Jim Enright --- plugins/modules/env_proxy.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/plugins/modules/env_proxy.py b/plugins/modules/env_proxy.py index f0f3b3ee..088677bd 100644 --- a/plugins/modules/env_proxy.py +++ b/plugins/modules/env_proxy.py @@ -67,6 +67,12 @@ choices: - http - https + noProxyHosts: + description: + - List of hosts that should note be proxied. + - Format can be CIDR, [.]host[:port] (can be a subdomain) or IP[:port]. Wildcards are not accepted + type: list + required: False user: description: - The proxy user @@ -176,6 +182,7 @@ def __init__(self, module): self.protocol = self._get_param('protocol') self.description = self._get_param('description') + self.no_proxy_hosts = self._get_param('noProxyHosts') self.user = self._get_param('user') self.password = self._get_param('password') @@ -191,17 +198,17 @@ def __init__(self, module): def process(self): existing = self.cdpy.environments.describe_proxy_config(self.name) - if existing is None: + if existing is None or len(existing) == 0: if self.state == 'present': self._create_core_payload() self.changed = True self._create_auth_payload() - self.proxy_config = self.cdpy.environments.create_proxy_config(self._payload) + self.proxy_config = self.cdpy.environments.create_proxy_config(**self._payload) else: if self.state == 'present': self._create_core_payload() - test = dict(existing[0]) + test = existing del test['crn'] if self._payload != test: @@ -214,9 +221,9 @@ def process(self): if self.changed: self.cdpy.environments.delete_proxy_config(self.name) - self.proxy_config = self.cdpy.environments.create_proxy_config(self._payload) + self.proxy_config = self.cdpy.environments.create_proxy_config(**self._payload) else: - self.proxy_config = existing[0] + self.proxy_config = existing else: self.changed = True self.cdpy.environments.delete_proxy_config(self.name) @@ -232,6 +239,10 @@ def _create_core_payload(self): if self.description is not None: self._payload.update(description=self.description) + if self.no_proxy_hosts is not None: + # convert no_proxy_hosts list to a comma separated string + self._payload.update(noProxyHosts=(','.join(self.no_proxy_hosts))) + def _create_auth_payload(self): if self.user is not None: self._payload.update(user=self.user) @@ -248,6 +259,7 @@ def main(): host=dict(required=False, type='str'), port=dict(required=False, type='int'), protocol=dict(required=False, type='str'), + noProxyHosts=dict(required=False, type='list', elements='str', default=None), user=dict(required=False, type='str'), password=dict(required=False, type='str', no_log=True), state=dict(required=False, type='str', choices=['present', 'absent'], default='present') From 23759310b76c1a703d162d7b58f182c766c7d3f8 Mon Sep 17 00:00:00 2001 From: Jim Enright Date: Fri, 28 Jul 2023 14:15:58 +0100 Subject: [PATCH 2/2] Remove default None from noProxyHosts Signed-off-by: Jim Enright --- plugins/modules/env_proxy.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/modules/env_proxy.py b/plugins/modules/env_proxy.py index 088677bd..7380f08b 100644 --- a/plugins/modules/env_proxy.py +++ b/plugins/modules/env_proxy.py @@ -259,7 +259,7 @@ def main(): host=dict(required=False, type='str'), port=dict(required=False, type='int'), protocol=dict(required=False, type='str'), - noProxyHosts=dict(required=False, type='list', elements='str', default=None), + noProxyHosts=dict(required=False, type='list', elements='str'), user=dict(required=False, type='str'), password=dict(required=False, type='str', no_log=True), state=dict(required=False, type='str', choices=['present', 'absent'], default='present')