Skip to content

Commit

Permalink
Fixing sanity issue
Browse files Browse the repository at this point in the history
  • Loading branch information
abikouo committed Apr 11, 2024
1 parent 37804cc commit 4221e21
Show file tree
Hide file tree
Showing 8 changed files with 6 additions and 123 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
removed_features:
- module_utils.policy - the previously deprecated ``sort_json_policy_dict()`` function has been removed, consider using ``compare_policies()`` instead (https://github.com/ansible-collections/amazon.aws/pull/2052).
minor_changes:
- ec2_vol - Ensure volume state is not one of ``deleted`` or ``deleting`` when trying to delete volume, to guaranty idempotency (https://github.com/ansible-collections/amazon.aws/pull/2052).
1 change: 0 additions & 1 deletion plugins/module_utils/ec2.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@
# Used to live here, moved into ansible_collections.amazon.aws.plugins.module_utils.policy
from .policy import _py3cmp as py3cmp # pylint: disable=unused-import
from .policy import compare_policies # pylint: disable=unused-import
from .policy import sort_json_policy_dict # pylint: disable=unused-import

# Used to live here, moved into ansible_collections.amazon.aws.plugins.module_utils.retries
from .retries import AWSRetry # pylint: disable=unused-import
Expand Down
57 changes: 0 additions & 57 deletions plugins/module_utils/policy.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@

from functools import cmp_to_key

import ansible.module_utils.common.warnings as ansible_warnings
from ansible.module_utils._text import to_text
from ansible.module_utils.six import binary_type
from ansible.module_utils.six import string_types
Expand Down Expand Up @@ -151,59 +150,3 @@ def compare_policies(current_policy, new_policy, default_version="2008-10-17"):
new_policy.setdefault("Version", default_version)

return set(_hashable_policy(new_policy, [])) != set(_hashable_policy(current_policy, []))


def sort_json_policy_dict(policy_dict):
"""
DEPRECATED - will be removed in amazon.aws 8.0.0
Sort any lists in an IAM JSON policy so that comparison of two policies with identical values but
different orders will return true
Args:
policy_dict (dict): Dict representing IAM JSON policy.
Basic Usage:
>>> my_iam_policy = {'Principle': {'AWS':["31","7","14","101"]}
>>> sort_json_policy_dict(my_iam_policy)
Returns:
Dict: Will return a copy of the policy as a Dict but any List will be sorted
{
'Principle': {
'AWS': [ '7', '14', '31', '101' ]
}
}
"""

ansible_warnings.deprecate(
(
"amazon.aws.module_utils.policy.sort_json_policy_dict has been deprecated, consider using "
"amazon.aws.module_utils.policy.compare_policies instead"
),
version="8.0.0",
collection_name="amazon.aws",
)

def value_is_list(my_list):
checked_list = []
for item in my_list:
if isinstance(item, dict):
checked_list.append(sort_json_policy_dict(item))
elif isinstance(item, list):
checked_list.append(value_is_list(item))
else:
checked_list.append(item)

# Sort list. If it's a list of dictionaries, sort by tuple of key-value
# pairs, since Python 3 doesn't allow comparisons such as `<` between dictionaries.
checked_list.sort(key=lambda x: sorted(x.items()) if isinstance(x, dict) else x)
return checked_list

ordered_policy_dict = {}
for key, value in policy_dict.items():
if isinstance(value, dict):
ordered_policy_dict[key] = sort_json_policy_dict(value)
elif isinstance(value, list):
ordered_policy_dict[key] = value_is_list(value)
else:
ordered_policy_dict[key] = value

return ordered_policy_dict
2 changes: 1 addition & 1 deletion plugins/modules/ec2_vol.py
Original file line number Diff line number Diff line change
Expand Up @@ -842,7 +842,7 @@ def main():
elif state == "absent":
if not name and not param_id:
module.fail_json("A volume name or id is required for deletion")
if volume:
if volume and volume.get("state") not in ("deleting", "deleted"):
if module.check_mode:
module.exit_json(changed=True, msg="Would have deleted volume if not in check mode.")
detach_volume(module, ec2_conn, volume_dict=volume)
Expand Down
1 change: 0 additions & 1 deletion tests/integration/targets/ec2_vol/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -685,7 +685,6 @@
ansible.builtin.assert:
that:
- not delete_volume_result_idem.changed
- '"Volume "+ volume2.volume_id +" does not exist" in delete_volume_result_idem.msg'

# Originally from ec2_vol_info

Expand Down
1 change: 0 additions & 1 deletion tests/sanity/ignore-2.15.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
plugins/inventory/aws_ec2.py yamllint:unparsable-with-libyaml # bug in ansible-test - https://github.com/ansible/ansible/issues/82353
plugins/modules/route53.py validate-modules:parameter-state-invalid-choice # route53_info needs improvements before we can deprecate this
plugins/module_utils/policy.py pylint:collection-deprecated-version
1 change: 0 additions & 1 deletion tests/sanity/ignore-2.16.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
plugins/inventory/aws_ec2.py yamllint:unparsable-with-libyaml # bug in ansible-test - https://github.com/ansible/ansible/issues/82353
plugins/modules/route53.py validate-modules:parameter-state-invalid-choice # route53_info needs improvements before we can deprecate this
plugins/module_utils/policy.py pylint:collection-deprecated-version
61 changes: 0 additions & 61 deletions tests/unit/module_utils/policy/test_sort_json_policy_dict.py

This file was deleted.

0 comments on commit 4221e21

Please sign in to comment.