mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
[PR #7085/a8809401 backport][stable-7] Avoid direct type comparisons (#7086)
Avoid direct type comparisons (#7085)
Avoid direct type comparisons.
(cherry picked from commit a8809401ee
)
Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
parent
1a801323a8
commit
719ecc9e85
5 changed files with 19 additions and 16 deletions
3
changelogs/fragments/7085-sanity.yml
Normal file
3
changelogs/fragments/7085-sanity.yml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
bugfixes:
|
||||||
|
- "oci_utils module utils - avoid direct type comparisons (https://github.com/ansible-collections/community.general/pull/7085)."
|
||||||
|
- "proxmox_user_info - avoid direct type comparisons (https://github.com/ansible-collections/community.general/pull/7085)."
|
|
@ -570,7 +570,7 @@ def are_lists_equal(s, t):
|
||||||
s = to_dict(s)
|
s = to_dict(s)
|
||||||
t = to_dict(t)
|
t = to_dict(t)
|
||||||
|
|
||||||
if type(s[0]) == dict:
|
if isinstance(s[0], dict):
|
||||||
# Handle list of dicts. Dictionary returned by the API may have additional keys. For example, a get call on
|
# Handle list of dicts. Dictionary returned by the API may have additional keys. For example, a get call on
|
||||||
# service gateway has an attribute `services` which is a list of `ServiceIdResponseDetails`. This has a key
|
# service gateway has an attribute `services` which is a list of `ServiceIdResponseDetails`. This has a key
|
||||||
# `service_name` which is not provided in the list of `services` by a user while making an update call; only
|
# `service_name` which is not provided in the list of `services` by a user while making an update call; only
|
||||||
|
@ -604,9 +604,9 @@ def get_attr_to_update(get_fn, kwargs_get, module, update_attributes):
|
||||||
user_provided_attr_value = module.params.get(attr, None)
|
user_provided_attr_value = module.params.get(attr, None)
|
||||||
|
|
||||||
unequal_list_attr = (
|
unequal_list_attr = (
|
||||||
type(resources_attr_value) == list or type(user_provided_attr_value) == list
|
isinstance(resources_attr_value, list) or isinstance(user_provided_attr_value, list)
|
||||||
) and not are_lists_equal(user_provided_attr_value, resources_attr_value)
|
) and not are_lists_equal(user_provided_attr_value, resources_attr_value)
|
||||||
unequal_attr = type(resources_attr_value) != list and to_dict(
|
unequal_attr = not isinstance(resources_attr_value, list) and to_dict(
|
||||||
resources_attr_value
|
resources_attr_value
|
||||||
) != to_dict(user_provided_attr_value)
|
) != to_dict(user_provided_attr_value)
|
||||||
if unequal_list_attr or unequal_attr:
|
if unequal_list_attr or unequal_attr:
|
||||||
|
@ -936,9 +936,9 @@ def tuplize(d):
|
||||||
list_of_tuples = []
|
list_of_tuples = []
|
||||||
key_list = sorted(list(d.keys()))
|
key_list = sorted(list(d.keys()))
|
||||||
for key in key_list:
|
for key in key_list:
|
||||||
if type(d[key]) == list:
|
if isinstance(d[key], list):
|
||||||
# Convert a value which is itself a list of dict to a list of tuples.
|
# Convert a value which is itself a list of dict to a list of tuples.
|
||||||
if d[key] and type(d[key][0]) == dict:
|
if d[key] and isinstance(d[key][0], dict):
|
||||||
sub_tuples = []
|
sub_tuples = []
|
||||||
for sub_dict in d[key]:
|
for sub_dict in d[key]:
|
||||||
sub_tuples.append(tuplize(sub_dict))
|
sub_tuples.append(tuplize(sub_dict))
|
||||||
|
@ -948,7 +948,7 @@ def tuplize(d):
|
||||||
list_of_tuples.append((sub_tuples is None, key, sub_tuples))
|
list_of_tuples.append((sub_tuples is None, key, sub_tuples))
|
||||||
else:
|
else:
|
||||||
list_of_tuples.append((d[key] is None, key, d[key]))
|
list_of_tuples.append((d[key] is None, key, d[key]))
|
||||||
elif type(d[key]) == dict:
|
elif isinstance(d[key], dict):
|
||||||
tupled_value = tuplize(d[key])
|
tupled_value = tuplize(d[key])
|
||||||
list_of_tuples.append((tupled_value is None, key, tupled_value))
|
list_of_tuples.append((tupled_value is None, key, tupled_value))
|
||||||
else:
|
else:
|
||||||
|
@ -969,13 +969,13 @@ def sort_dictionary(d):
|
||||||
"""
|
"""
|
||||||
sorted_d = {}
|
sorted_d = {}
|
||||||
for key in d:
|
for key in d:
|
||||||
if type(d[key]) == list:
|
if isinstance(d[key], list):
|
||||||
if d[key] and type(d[key][0]) == dict:
|
if d[key] and isinstance(d[key][0], dict):
|
||||||
sorted_value = sort_list_of_dictionary(d[key])
|
sorted_value = sort_list_of_dictionary(d[key])
|
||||||
sorted_d[key] = sorted_value
|
sorted_d[key] = sorted_value
|
||||||
else:
|
else:
|
||||||
sorted_d[key] = sorted(d[key])
|
sorted_d[key] = sorted(d[key])
|
||||||
elif type(d[key]) == dict:
|
elif isinstance(d[key], dict):
|
||||||
sorted_d[key] = sort_dictionary(d[key])
|
sorted_d[key] = sort_dictionary(d[key])
|
||||||
else:
|
else:
|
||||||
sorted_d[key] = d[key]
|
sorted_d[key] = d[key]
|
||||||
|
@ -1044,7 +1044,7 @@ def check_if_user_value_matches_resources_attr(
|
||||||
|
|
||||||
if (
|
if (
|
||||||
user_provided_value_for_attr
|
user_provided_value_for_attr
|
||||||
and type(user_provided_value_for_attr[0]) == dict
|
and isinstance(user_provided_value_for_attr[0], dict)
|
||||||
):
|
):
|
||||||
# Process a list of dict
|
# Process a list of dict
|
||||||
sorted_user_provided_value_for_attr = sort_list_of_dictionary(
|
sorted_user_provided_value_for_attr = sort_list_of_dictionary(
|
||||||
|
@ -1547,7 +1547,7 @@ def delete_and_wait(
|
||||||
except ServiceError as ex:
|
except ServiceError as ex:
|
||||||
# DNS API throws a 400 InvalidParameter when a zone id is provided for zone_name_or_id and if the zone
|
# DNS API throws a 400 InvalidParameter when a zone id is provided for zone_name_or_id and if the zone
|
||||||
# resource is not available, instead of the expected 404. So working around this for now.
|
# resource is not available, instead of the expected 404. So working around this for now.
|
||||||
if type(client) == oci.dns.DnsClient:
|
if isinstance(client, oci.dns.DnsClient):
|
||||||
if ex.status == 400 and ex.code == "InvalidParameter":
|
if ex.status == 400 and ex.code == "InvalidParameter":
|
||||||
_debug(
|
_debug(
|
||||||
"Resource {0} with {1} already deleted. So returning changed=False".format(
|
"Resource {0} with {1} already deleted. So returning changed=False".format(
|
||||||
|
|
|
@ -193,14 +193,14 @@ class ProxmoxUser:
|
||||||
self.user[k] = v
|
self.user[k] = v
|
||||||
elif k in ['groups', 'tokens'] and (v == '' or v is None):
|
elif k in ['groups', 'tokens'] and (v == '' or v is None):
|
||||||
self.user[k] = []
|
self.user[k] = []
|
||||||
elif k == 'groups' and type(v) == str:
|
elif k == 'groups' and isinstance(v, str):
|
||||||
self.user['groups'] = v.split(',')
|
self.user['groups'] = v.split(',')
|
||||||
elif k == 'tokens' and type(v) == list:
|
elif k == 'tokens' and isinstance(v, list):
|
||||||
for token in v:
|
for token in v:
|
||||||
if 'privsep' in token:
|
if 'privsep' in token:
|
||||||
token['privsep'] = proxmox_to_ansible_bool(token['privsep'])
|
token['privsep'] = proxmox_to_ansible_bool(token['privsep'])
|
||||||
self.user['tokens'] = v
|
self.user['tokens'] = v
|
||||||
elif k == 'tokens' and type(v) == dict:
|
elif k == 'tokens' and isinstance(v, dict):
|
||||||
self.user['tokens'] = list()
|
self.user['tokens'] = list()
|
||||||
for tokenid, tokenvalues in v.items():
|
for tokenid, tokenvalues in v.items():
|
||||||
t = tokenvalues
|
t = tokenvalues
|
||||||
|
|
|
@ -17,7 +17,7 @@ class DictDataLoader(DataLoader):
|
||||||
|
|
||||||
def __init__(self, file_mapping=None):
|
def __init__(self, file_mapping=None):
|
||||||
file_mapping = {} if file_mapping is None else file_mapping
|
file_mapping = {} if file_mapping is None else file_mapping
|
||||||
assert type(file_mapping) == dict
|
assert isinstance(file_mapping, dict)
|
||||||
|
|
||||||
super(DictDataLoader, self).__init__()
|
super(DictDataLoader, self).__init__()
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ def patch_keycloak_api(get_user_by_username=None,
|
||||||
with patch.object(obj, 'get_user_groups', side_effect=get_user_groups) as mock_get_user_groups:
|
with patch.object(obj, 'get_user_groups', side_effect=get_user_groups) as mock_get_user_groups:
|
||||||
with patch.object(obj, 'delete_user', side_effect=delete_user) as mock_delete_user:
|
with patch.object(obj, 'delete_user', side_effect=delete_user) as mock_delete_user:
|
||||||
with patch.object(obj, 'update_user', side_effect=update_user) as mock_update_user:
|
with patch.object(obj, 'update_user', side_effect=update_user) as mock_update_user:
|
||||||
yield mock_get_user_by_username, mock_create_user, mock_update_user_groups_membership,\
|
yield mock_get_user_by_username, mock_create_user, mock_update_user_groups_membership, \
|
||||||
mock_get_user_groups, mock_delete_user, mock_update_user
|
mock_get_user_groups, mock_delete_user, mock_update_user
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue