Skip to content

Commit

Permalink
multiple fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
abikouo committed Nov 28, 2023
1 parent 9b32a8a commit 2feb53d
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 5 deletions.
19 changes: 16 additions & 3 deletions plugins/module_utils/elbv2.py
Original file line number Diff line number Diff line change
Expand Up @@ -769,6 +769,9 @@ def __init__(self, connection, module, elb_arn):
dict((x, listener_dict[x]) for x in listener_dict if listener_dict[x] is not None)
for listener_dict in listeners
]
# AlpnPolicy is set as str into input but API is expected a list
# Transform a single item into a list of one element
listeners = self._ensure_listeners_alpn_policy(listeners)
self.listeners = self._ensure_listeners_default_action_has_arn(listeners)
self.current_listeners = self._get_elb_listeners()
self.purge_listeners = module.params.get("purge_listeners")
Expand Down Expand Up @@ -799,6 +802,16 @@ def _get_elb_listeners(self):
except (BotoCoreError, ClientError) as e:
self.module.fail_json_aws(e)

@staticmethod
def _ensure_listeners_alpn_policy(listeners):
result = []
for l in listeners:
update_listener = deepcopy(l)
if "AlpnPolicy" in l:
update_listener["AlpnPolicy"] = [update_listener["AlpnPolicy"]]
result.append(update_listener)
return result

def _ensure_listeners_default_action_has_arn(self, listeners):
"""
If a listener DefaultAction has been passed with a Target Group Name instead of ARN, lookup the ARN and
Expand Down Expand Up @@ -920,10 +933,10 @@ def _compare_listener(current_listener, new_listener):
if new_alpn_policy:
if current_listener["Protocol"] == "TLS" and new_listener["Protocol"] == "TLS":
current_alpn_policy = current_listener.get("AlpnPolicy")
if not current_alpn_policy or current_alpn_policy != new_alpn_policy:
modified_listener["AlpnPolicy"] = [new_alpn_policy]
if not current_alpn_policy or current_alpn_policy[0] != new_alpn_policy[0]:
modified_listener["AlpnPolicy"] = new_alpn_policy
elif current_listener["Protocol"] != "TLS" and new_listener["Protocol"] == "TLS":
modified_listener["AlpnPolicy"] = [new_alpn_policy]
modified_listener["AlpnPolicy"] = new_alpn_policy

if modified_listener:
return modified_listener
Expand Down
9 changes: 7 additions & 2 deletions tests/unit/module_utils/test_elbv2.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,8 @@ def createListener(self, **kwargs):
],
)
def test__compare_listener_alpn_policy(self, current_protocol, current_alpn, new_alpn):
current_listener = self.createListener(protocol=current_protocol, alpnPolicy=current_alpn)
new_listener = self.createListener(protocol="TLS", alpnPolicy=new_alpn)
current_listener = self.createListener(protocol=current_protocol, alpnPolicy=[current_alpn])
new_listener = self.createListener(protocol="TLS", alpnPolicy=[new_alpn])
result = None
if current_protocol != "TLS":
result = {"Protocol": "TLS"}
Expand Down Expand Up @@ -286,3 +286,8 @@ def test__compare_listener_port(self, are_equals):
if not are_equals:
expected = {"Port": new_port}
assert result == expected

def test_ensure_listeners_alpn_policy(self):
listeners = [{"Port": self.DEFAULT_PORT, "AlpnPolicy": "HTTP2Optional"}]
expected = [{"Port": self.DEFAULT_PORT, "AlpnPolicy": ["HTTP2Optional"]}]
assert expected == elbv2.ELBListeners._ensure_listeners_alpn_policy(listeners)

0 comments on commit 2feb53d

Please sign in to comment.