mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
[PR #8833/26df6c76 backport][stable-9] use dict comprehension in plugins, part 3 (#8835)
use dict comprehension in plugins, part 3 (#8833)
* use dict comprehension in plugins, part 3
* add changelog frag
(cherry picked from commit 26df6c7657
)
Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
This commit is contained in:
parent
1978100d25
commit
186d410f63
25 changed files with 81 additions and 61 deletions
23
changelogs/fragments/8833-dict-comprehension.yml
Normal file
23
changelogs/fragments/8833-dict-comprehension.yml
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
minor_changes:
|
||||||
|
- redis cache plugin - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- onepassword lookup plugin - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- ocapi_utils - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- redfish_utils - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- scaleway - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- alternatives - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- apache2_mod_proxy - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- consul_acl - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- imc_rest - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- keycloak_user_federation - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- pids - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- pipx - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- pipx_info - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- pkg5_publisher - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- scaleway_compute - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- scaleway_ip - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- scaleway_lb - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- scaleway_security_group - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- scaleway_user_data - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- sensu_silence - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- snmp_facts - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
||||||
|
- sorcery - replace Python 2.6 construct with dict comprehensions (https://github.com/ansible-collections/community.general/pull/8833).
|
2
plugins/cache/redis.py
vendored
2
plugins/cache/redis.py
vendored
|
@ -227,7 +227,7 @@ class CacheModule(BaseCacheModule):
|
||||||
|
|
||||||
def copy(self):
|
def copy(self):
|
||||||
# TODO: there is probably a better way to do this in redis
|
# TODO: there is probably a better way to do this in redis
|
||||||
ret = dict([(k, self.get(k)) for k in self.keys()])
|
ret = {k: self.get(k) for k in self.keys()}
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def __getstate__(self):
|
def __getstate__(self):
|
||||||
|
|
|
@ -135,7 +135,7 @@ class OnePassCLIBase(with_metaclass(abc.ABCMeta, object)):
|
||||||
self._version = None
|
self._version = None
|
||||||
|
|
||||||
def _check_required_params(self, required_params):
|
def _check_required_params(self, required_params):
|
||||||
non_empty_attrs = dict((param, getattr(self, param, None)) for param in required_params if getattr(self, param, None))
|
non_empty_attrs = {param: getattr(self, param) for param in required_params if getattr(self, param, None)}
|
||||||
missing = set(required_params).difference(non_empty_attrs)
|
missing = set(required_params).difference(non_empty_attrs)
|
||||||
if missing:
|
if missing:
|
||||||
prefix = "Unable to sign in to 1Password. Missing required parameter"
|
prefix = "Unable to sign in to 1Password. Missing required parameter"
|
||||||
|
|
|
@ -56,7 +56,7 @@ class OcapiUtils(object):
|
||||||
follow_redirects='all',
|
follow_redirects='all',
|
||||||
use_proxy=True, timeout=self.timeout)
|
use_proxy=True, timeout=self.timeout)
|
||||||
data = json.loads(to_native(resp.read()))
|
data = json.loads(to_native(resp.read()))
|
||||||
headers = dict((k.lower(), v) for (k, v) in resp.info().items())
|
headers = {k.lower(): v for (k, v) in resp.info().items()}
|
||||||
except HTTPError as e:
|
except HTTPError as e:
|
||||||
return {'ret': False,
|
return {'ret': False,
|
||||||
'msg': "HTTP Error %s on GET request to '%s'"
|
'msg': "HTTP Error %s on GET request to '%s'"
|
||||||
|
@ -86,7 +86,7 @@ class OcapiUtils(object):
|
||||||
data = json.loads(to_native(resp.read()))
|
data = json.loads(to_native(resp.read()))
|
||||||
else:
|
else:
|
||||||
data = ""
|
data = ""
|
||||||
headers = dict((k.lower(), v) for (k, v) in resp.info().items())
|
headers = {k.lower(): v for (k, v) in resp.info().items()}
|
||||||
except HTTPError as e:
|
except HTTPError as e:
|
||||||
return {'ret': False,
|
return {'ret': False,
|
||||||
'msg': "HTTP Error %s on DELETE request to '%s'"
|
'msg': "HTTP Error %s on DELETE request to '%s'"
|
||||||
|
@ -113,7 +113,7 @@ class OcapiUtils(object):
|
||||||
force_basic_auth=basic_auth, validate_certs=False,
|
force_basic_auth=basic_auth, validate_certs=False,
|
||||||
follow_redirects='all',
|
follow_redirects='all',
|
||||||
use_proxy=True, timeout=self.timeout)
|
use_proxy=True, timeout=self.timeout)
|
||||||
headers = dict((k.lower(), v) for (k, v) in resp.info().items())
|
headers = {k.lower(): v for (k, v) in resp.info().items()}
|
||||||
except HTTPError as e:
|
except HTTPError as e:
|
||||||
return {'ret': False,
|
return {'ret': False,
|
||||||
'msg': "HTTP Error %s on PUT request to '%s'"
|
'msg': "HTTP Error %s on PUT request to '%s'"
|
||||||
|
@ -144,7 +144,7 @@ class OcapiUtils(object):
|
||||||
force_basic_auth=basic_auth, validate_certs=False,
|
force_basic_auth=basic_auth, validate_certs=False,
|
||||||
follow_redirects='all',
|
follow_redirects='all',
|
||||||
use_proxy=True, timeout=self.timeout if timeout is None else timeout)
|
use_proxy=True, timeout=self.timeout if timeout is None else timeout)
|
||||||
headers = dict((k.lower(), v) for (k, v) in resp.info().items())
|
headers = {k.lower(): v for (k, v) in resp.info().items()}
|
||||||
except HTTPError as e:
|
except HTTPError as e:
|
||||||
return {'ret': False,
|
return {'ret': False,
|
||||||
'msg': "HTTP Error %s on POST request to '%s'"
|
'msg': "HTTP Error %s on POST request to '%s'"
|
||||||
|
|
|
@ -151,7 +151,7 @@ class RedfishUtils(object):
|
||||||
force_basic_auth=basic_auth, validate_certs=False,
|
force_basic_auth=basic_auth, validate_certs=False,
|
||||||
follow_redirects='all',
|
follow_redirects='all',
|
||||||
use_proxy=True, timeout=timeout, ciphers=self.ciphers)
|
use_proxy=True, timeout=timeout, ciphers=self.ciphers)
|
||||||
headers = dict((k.lower(), v) for (k, v) in resp.info().items())
|
headers = {k.lower(): v for (k, v) in resp.info().items()}
|
||||||
try:
|
try:
|
||||||
if headers.get('content-encoding') == 'gzip' and LooseVersion(ansible_version) < LooseVersion('2.14'):
|
if headers.get('content-encoding') == 'gzip' and LooseVersion(ansible_version) < LooseVersion('2.14'):
|
||||||
# Older versions of Ansible do not automatically decompress the data
|
# Older versions of Ansible do not automatically decompress the data
|
||||||
|
@ -206,7 +206,7 @@ class RedfishUtils(object):
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# No response data; this is okay in many cases
|
# No response data; this is okay in many cases
|
||||||
data = None
|
data = None
|
||||||
headers = dict((k.lower(), v) for (k, v) in resp.info().items())
|
headers = {k.lower(): v for (k, v) in resp.info().items()}
|
||||||
except HTTPError as e:
|
except HTTPError as e:
|
||||||
msg = self._get_extended_message(e)
|
msg = self._get_extended_message(e)
|
||||||
return {'ret': False,
|
return {'ret': False,
|
||||||
|
@ -610,8 +610,7 @@ class RedfishUtils(object):
|
||||||
data = response['data']
|
data = response['data']
|
||||||
if 'Parameters' in data:
|
if 'Parameters' in data:
|
||||||
params = data['Parameters']
|
params = data['Parameters']
|
||||||
ai = dict((p['Name'], p)
|
ai = {p['Name']: p for p in params if 'Name' in p}
|
||||||
for p in params if 'Name' in p)
|
|
||||||
if not ai:
|
if not ai:
|
||||||
ai = {
|
ai = {
|
||||||
k[:-24]: {'AllowableValues': v}
|
k[:-24]: {'AllowableValues': v}
|
||||||
|
|
|
@ -140,7 +140,7 @@ def resource_attributes_should_be_changed(target, wished, verifiable_mutable_att
|
||||||
diff[attr] = wished[attr]
|
diff[attr] = wished[attr]
|
||||||
|
|
||||||
if diff:
|
if diff:
|
||||||
return dict((attr, wished[attr]) for attr in mutable_attributes)
|
return {attr: wished[attr] for attr in mutable_attributes}
|
||||||
else:
|
else:
|
||||||
return diff
|
return diff
|
||||||
|
|
||||||
|
|
|
@ -344,7 +344,7 @@ class AlternativesModule(object):
|
||||||
|
|
||||||
subcmd_path_map = dict(subcmd_path_link_regex.findall(display_output))
|
subcmd_path_map = dict(subcmd_path_link_regex.findall(display_output))
|
||||||
if not subcmd_path_map and self.subcommands:
|
if not subcmd_path_map and self.subcommands:
|
||||||
subcmd_path_map = dict((s['name'], s['link']) for s in self.subcommands)
|
subcmd_path_map = {s['name']: s['link'] for s in self.subcommands}
|
||||||
|
|
||||||
for path, prio, subcmd in alternative_regex.findall(display_output):
|
for path, prio, subcmd in alternative_regex.findall(display_output):
|
||||||
self.current_alternatives[path] = dict(
|
self.current_alternatives[path] = dict(
|
||||||
|
|
|
@ -277,7 +277,7 @@ class BalancerMember(object):
|
||||||
for valuesset in subsoup[1::1]:
|
for valuesset in subsoup[1::1]:
|
||||||
if re.search(pattern=self.host, string=str(valuesset)):
|
if re.search(pattern=self.host, string=str(valuesset)):
|
||||||
values = valuesset.findAll('td')
|
values = valuesset.findAll('td')
|
||||||
return dict((keys[x].string, values[x].string) for x in range(0, len(keys)))
|
return {keys[x].string: values[x].string for x in range(0, len(keys))}
|
||||||
|
|
||||||
def get_member_status(self):
|
def get_member_status(self):
|
||||||
""" Returns a dictionary of a balancer member's status attributes."""
|
""" Returns a dictionary of a balancer member's status attributes."""
|
||||||
|
|
|
@ -273,8 +273,8 @@ def set_acl(consul_client, configuration):
|
||||||
:return: the output of setting the ACL
|
:return: the output of setting the ACL
|
||||||
"""
|
"""
|
||||||
acls_as_json = decode_acls_as_json(consul_client.acl.list())
|
acls_as_json = decode_acls_as_json(consul_client.acl.list())
|
||||||
existing_acls_mapped_by_name = dict((acl.name, acl) for acl in acls_as_json if acl.name is not None)
|
existing_acls_mapped_by_name = {acl.name: acl for acl in acls_as_json if acl.name is not None}
|
||||||
existing_acls_mapped_by_token = dict((acl.token, acl) for acl in acls_as_json)
|
existing_acls_mapped_by_token = {acl.token: acl for acl in acls_as_json}
|
||||||
if None in existing_acls_mapped_by_token:
|
if None in existing_acls_mapped_by_token:
|
||||||
raise AssertionError("expecting ACL list to be associated to a token: %s" %
|
raise AssertionError("expecting ACL list to be associated to a token: %s" %
|
||||||
existing_acls_mapped_by_token[None])
|
existing_acls_mapped_by_token[None])
|
||||||
|
|
|
@ -323,8 +323,7 @@ def merge(one, two):
|
||||||
''' Merge two complex nested datastructures into one'''
|
''' Merge two complex nested datastructures into one'''
|
||||||
if isinstance(one, dict) and isinstance(two, dict):
|
if isinstance(one, dict) and isinstance(two, dict):
|
||||||
copy = dict(one)
|
copy = dict(one)
|
||||||
# copy.update({key: merge(one.get(key, None), two[key]) for key in two})
|
copy.update({key: merge(one.get(key, None), two[key]) for key in two})
|
||||||
copy.update(dict((key, merge(one.get(key, None), two[key])) for key in two))
|
|
||||||
return copy
|
return copy
|
||||||
|
|
||||||
elif isinstance(one, list) and isinstance(two, list):
|
elif isinstance(one, list) and isinstance(two, list):
|
||||||
|
|
|
@ -856,8 +856,11 @@ def main():
|
||||||
if mappers is not None:
|
if mappers is not None:
|
||||||
for mapper in mappers:
|
for mapper in mappers:
|
||||||
if mapper.get('config') is not None:
|
if mapper.get('config') is not None:
|
||||||
mapper['config'] = dict((k, [str(v).lower() if not isinstance(v, str) else v])
|
mapper['config'] = {
|
||||||
for k, v in mapper['config'].items() if mapper['config'][k] is not None)
|
k: [str(v).lower() if not isinstance(v, str) else v]
|
||||||
|
for k, v in mapper['config'].items()
|
||||||
|
if mapper['config'][k] is not None
|
||||||
|
}
|
||||||
|
|
||||||
# Filter and map the parameters names that apply
|
# Filter and map the parameters names that apply
|
||||||
comp_params = [x for x in module.params
|
comp_params = [x for x in module.params
|
||||||
|
|
|
@ -111,7 +111,7 @@ class PSAdapter(object):
|
||||||
attributes['cmdline'] and compare_lower(attributes['cmdline'][0], name))
|
attributes['cmdline'] and compare_lower(attributes['cmdline'][0], name))
|
||||||
|
|
||||||
def _get_proc_attributes(self, proc, *attributes):
|
def _get_proc_attributes(self, proc, *attributes):
|
||||||
return dict((attribute, self._get_attribute_from_proc(proc, attribute)) for attribute in attributes)
|
return {attribute: self._get_attribute_from_proc(proc, attribute) for attribute in attributes}
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
|
|
|
@ -280,9 +280,7 @@ class PipX(StateModuleHelper):
|
||||||
for venv_name, venv in raw_data['venvs'].items():
|
for venv_name, venv in raw_data['venvs'].items():
|
||||||
results[venv_name] = {
|
results[venv_name] = {
|
||||||
'version': venv['metadata']['main_package']['package_version'],
|
'version': venv['metadata']['main_package']['package_version'],
|
||||||
'injected': dict(
|
'injected': {k: v['package_version'] for k, v in venv['metadata']['injected_packages'].items()},
|
||||||
(k, v['package_version']) for k, v in venv['metadata']['injected_packages'].items()
|
|
||||||
),
|
|
||||||
}
|
}
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
|
@ -196,9 +196,7 @@ class PipXInfo(ModuleHelper):
|
||||||
'version': venv['metadata']['main_package']['package_version']
|
'version': venv['metadata']['main_package']['package_version']
|
||||||
}
|
}
|
||||||
if self.vars.include_injected:
|
if self.vars.include_injected:
|
||||||
entry['injected'] = dict(
|
entry['injected'] = {k: v['package_version'] for k, v in venv['metadata']['injected_packages'].items()}
|
||||||
(k, v['package_version']) for k, v in venv['metadata']['injected_packages'].items()
|
|
||||||
)
|
|
||||||
if self.vars.include_deps:
|
if self.vars.include_deps:
|
||||||
entry['dependencies'] = list(venv['metadata']['main_package']['app_paths_of_dependencies'])
|
entry['dependencies'] = list(venv['metadata']['main_package']['app_paths_of_dependencies'])
|
||||||
results.append(entry)
|
results.append(entry)
|
||||||
|
|
|
@ -183,9 +183,7 @@ def get_publishers(module):
|
||||||
name = values['publisher']
|
name = values['publisher']
|
||||||
|
|
||||||
if name not in publishers:
|
if name not in publishers:
|
||||||
publishers[name] = dict(
|
publishers[name] = {k: values[k] for k in ['sticky', 'enabled']}
|
||||||
(k, values[k]) for k in ['sticky', 'enabled']
|
|
||||||
)
|
|
||||||
publishers[name]['origin'] = []
|
publishers[name]['origin'] = []
|
||||||
publishers[name]['mirror'] = []
|
publishers[name]['mirror'] = []
|
||||||
|
|
||||||
|
|
|
@ -586,9 +586,11 @@ def server_attributes_should_be_changed(compute_api, target_server, wished_serve
|
||||||
compute_api.module.debug("Checking if server attributes should be changed")
|
compute_api.module.debug("Checking if server attributes should be changed")
|
||||||
compute_api.module.debug("Current Server: %s" % target_server)
|
compute_api.module.debug("Current Server: %s" % target_server)
|
||||||
compute_api.module.debug("Wished Server: %s" % wished_server)
|
compute_api.module.debug("Wished Server: %s" % wished_server)
|
||||||
debug_dict = dict((x, (target_server[x], wished_server[x]))
|
debug_dict = {
|
||||||
|
x: (target_server[x], wished_server[x])
|
||||||
for x in PATCH_MUTABLE_SERVER_ATTRIBUTES
|
for x in PATCH_MUTABLE_SERVER_ATTRIBUTES
|
||||||
if x in target_server and x in wished_server)
|
if x in target_server and x in wished_server
|
||||||
|
}
|
||||||
compute_api.module.debug("Debug dict %s" % debug_dict)
|
compute_api.module.debug("Debug dict %s" % debug_dict)
|
||||||
try:
|
try:
|
||||||
for key in PATCH_MUTABLE_SERVER_ATTRIBUTES:
|
for key in PATCH_MUTABLE_SERVER_ATTRIBUTES:
|
||||||
|
@ -614,7 +616,7 @@ def server_change_attributes(compute_api, target_server, wished_server):
|
||||||
# When you are working with dict, only ID matter as we ask user to put only the resource ID in the playbook
|
# When you are working with dict, only ID matter as we ask user to put only the resource ID in the playbook
|
||||||
if isinstance(target_server[key], dict) and "id" in target_server[key] and wished_server[key]:
|
if isinstance(target_server[key], dict) and "id" in target_server[key] and wished_server[key]:
|
||||||
# Setting all key to current value except ID
|
# Setting all key to current value except ID
|
||||||
key_dict = dict((x, target_server[key][x]) for x in target_server[key].keys() if x != "id")
|
key_dict = {x: target_server[key][x] for x in target_server[key].keys() if x != "id"}
|
||||||
# Setting ID to the user specified ID
|
# Setting ID to the user specified ID
|
||||||
key_dict["id"] = wished_server[key]
|
key_dict["id"] = wished_server[key]
|
||||||
patch_payload[key] = key_dict
|
patch_payload[key] = key_dict
|
||||||
|
|
|
@ -145,11 +145,11 @@ def ip_attributes_should_be_changed(api, target_ip, wished_ip):
|
||||||
|
|
||||||
|
|
||||||
def payload_from_wished_ip(wished_ip):
|
def payload_from_wished_ip(wished_ip):
|
||||||
return dict(
|
return {
|
||||||
(k, v)
|
k: v
|
||||||
for k, v in wished_ip.items()
|
for k, v in wished_ip.items()
|
||||||
if k != 'id' and v is not None
|
if k != 'id' and v is not None
|
||||||
)
|
}
|
||||||
|
|
||||||
|
|
||||||
def present_strategy(api, wished_ip):
|
def present_strategy(api, wished_ip):
|
||||||
|
@ -161,8 +161,7 @@ def present_strategy(api, wished_ip):
|
||||||
response.status_code, response.json['message']))
|
response.status_code, response.json['message']))
|
||||||
|
|
||||||
ips_list = response.json["ips"]
|
ips_list = response.json["ips"]
|
||||||
ip_lookup = dict((ip["id"], ip)
|
ip_lookup = {ip["id"]: ip for ip in ips_list}
|
||||||
for ip in ips_list)
|
|
||||||
|
|
||||||
if wished_ip["id"] not in ip_lookup.keys():
|
if wished_ip["id"] not in ip_lookup.keys():
|
||||||
changed = True
|
changed = True
|
||||||
|
@ -212,8 +211,7 @@ def absent_strategy(api, wished_ip):
|
||||||
api.module.fail_json(msg='Error getting IPs [{0}: {1}]'.format(
|
api.module.fail_json(msg='Error getting IPs [{0}: {1}]'.format(
|
||||||
status_code, response.json['message']))
|
status_code, response.json['message']))
|
||||||
|
|
||||||
ip_lookup = dict((ip["id"], ip)
|
ip_lookup = {ip["id"]: ip for ip in ips_list}
|
||||||
for ip in ips_list)
|
|
||||||
if wished_ip["id"] not in ip_lookup.keys():
|
if wished_ip["id"] not in ip_lookup.keys():
|
||||||
return changed, {}
|
return changed, {}
|
||||||
|
|
||||||
|
|
|
@ -224,10 +224,10 @@ def wait_to_complete_state_transition(api, lb, force_wait=False):
|
||||||
|
|
||||||
|
|
||||||
def lb_attributes_should_be_changed(target_lb, wished_lb):
|
def lb_attributes_should_be_changed(target_lb, wished_lb):
|
||||||
diff = dict((attr, wished_lb[attr]) for attr in MUTABLE_ATTRIBUTES if target_lb[attr] != wished_lb[attr])
|
diff = {attr: wished_lb[attr] for attr in MUTABLE_ATTRIBUTES if target_lb[attr] != wished_lb[attr]}
|
||||||
|
|
||||||
if diff:
|
if diff:
|
||||||
return dict((attr, wished_lb[attr]) for attr in MUTABLE_ATTRIBUTES)
|
return {attr: wished_lb[attr] for attr in MUTABLE_ATTRIBUTES}
|
||||||
else:
|
else:
|
||||||
return diff
|
return diff
|
||||||
|
|
||||||
|
@ -241,8 +241,7 @@ def present_strategy(api, wished_lb):
|
||||||
response.status_code, response.json['message']))
|
response.status_code, response.json['message']))
|
||||||
|
|
||||||
lbs_list = response.json["lbs"]
|
lbs_list = response.json["lbs"]
|
||||||
lb_lookup = dict((lb["name"], lb)
|
lb_lookup = {lb["name"]: lb for lb in lbs_list}
|
||||||
for lb in lbs_list)
|
|
||||||
|
|
||||||
if wished_lb["name"] not in lb_lookup.keys():
|
if wished_lb["name"] not in lb_lookup.keys():
|
||||||
changed = True
|
changed = True
|
||||||
|
@ -298,8 +297,7 @@ def absent_strategy(api, wished_lb):
|
||||||
api.module.fail_json(msg='Error getting load-balancers [{0}: {1}]'.format(
|
api.module.fail_json(msg='Error getting load-balancers [{0}: {1}]'.format(
|
||||||
status_code, response.json['message']))
|
status_code, response.json['message']))
|
||||||
|
|
||||||
lb_lookup = dict((lb["name"], lb)
|
lb_lookup = {lb["name"]: lb for lb in lbs_list}
|
||||||
for lb in lbs_list)
|
|
||||||
if wished_lb["name"] not in lb_lookup.keys():
|
if wished_lb["name"] not in lb_lookup.keys():
|
||||||
return changed, {}
|
return changed, {}
|
||||||
|
|
||||||
|
|
|
@ -149,8 +149,7 @@ def present_strategy(api, security_group):
|
||||||
if not response.ok:
|
if not response.ok:
|
||||||
api.module.fail_json(msg='Error getting security groups "%s": "%s" (%s)' % (response.info['msg'], response.json['message'], response.json))
|
api.module.fail_json(msg='Error getting security groups "%s": "%s" (%s)' % (response.info['msg'], response.json['message'], response.json))
|
||||||
|
|
||||||
security_group_lookup = dict((sg['name'], sg)
|
security_group_lookup = {sg['name']: sg for sg in response.json['security_groups']}
|
||||||
for sg in response.json['security_groups'])
|
|
||||||
|
|
||||||
if security_group['name'] not in security_group_lookup.keys():
|
if security_group['name'] not in security_group_lookup.keys():
|
||||||
ret['changed'] = True
|
ret['changed'] = True
|
||||||
|
@ -181,8 +180,7 @@ def absent_strategy(api, security_group):
|
||||||
if not response.ok:
|
if not response.ok:
|
||||||
api.module.fail_json(msg='Error getting security groups "%s": "%s" (%s)' % (response.info['msg'], response.json['message'], response.json))
|
api.module.fail_json(msg='Error getting security groups "%s": "%s" (%s)' % (response.info['msg'], response.json['message'], response.json))
|
||||||
|
|
||||||
security_group_lookup = dict((sg['name'], sg)
|
security_group_lookup = {sg['name']: sg for sg in response.json['security_groups']}
|
||||||
for sg in response.json['security_groups'])
|
|
||||||
if security_group['name'] not in security_group_lookup.keys():
|
if security_group['name'] not in security_group_lookup.keys():
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
|
@ -129,10 +129,10 @@ def core(module):
|
||||||
compute_api.module.fail_json(msg=msg)
|
compute_api.module.fail_json(msg=msg)
|
||||||
|
|
||||||
present_user_data_keys = user_data_list.json["user_data"]
|
present_user_data_keys = user_data_list.json["user_data"]
|
||||||
present_user_data = dict(
|
present_user_data = {
|
||||||
(key, get_user_data(compute_api=compute_api, server_id=server_id, key=key))
|
key: get_user_data(compute_api=compute_api, server_id=server_id, key=key)
|
||||||
for key in present_user_data_keys
|
for key in present_user_data_keys
|
||||||
)
|
}
|
||||||
|
|
||||||
if present_user_data == user_data:
|
if present_user_data == user_data:
|
||||||
module.exit_json(changed=changed, msg=user_data_list.json)
|
module.exit_json(changed=changed, msg=user_data_list.json)
|
||||||
|
|
|
@ -149,7 +149,7 @@ def clear(module, url, check, subscription):
|
||||||
# Test if silence exists before clearing
|
# Test if silence exists before clearing
|
||||||
(rc, out, changed) = query(module, url, check, subscription)
|
(rc, out, changed) = query(module, url, check, subscription)
|
||||||
|
|
||||||
d = dict((i['subscription'], i['check']) for i in out)
|
d = {i['subscription']: i['check'] for i in out}
|
||||||
subscription_exists = subscription in d
|
subscription_exists = subscription in d
|
||||||
if check and subscription_exists:
|
if check and subscription_exists:
|
||||||
exists = (check == d[subscription])
|
exists = (check == d[subscription])
|
||||||
|
|
|
@ -300,7 +300,11 @@ def main():
|
||||||
deps.validate(module)
|
deps.validate(module)
|
||||||
|
|
||||||
cmdGen = cmdgen.CommandGenerator()
|
cmdGen = cmdgen.CommandGenerator()
|
||||||
transport_opts = dict((k, m_args[k]) for k in ('timeout', 'retries') if m_args[k] is not None)
|
transport_opts = {
|
||||||
|
k: m_args[k]
|
||||||
|
for k in ('timeout', 'retries')
|
||||||
|
if m_args[k] is not None
|
||||||
|
}
|
||||||
|
|
||||||
# Verify that we receive a community when using snmp v2
|
# Verify that we receive a community when using snmp v2
|
||||||
if m_args['version'] in ("v2", "v2c"):
|
if m_args['version'] in ("v2", "v2c"):
|
||||||
|
|
|
@ -280,7 +280,7 @@ def codex_list(module, skip_new=False):
|
||||||
|
|
||||||
# return only specified grimoires unless requested to skip new
|
# return only specified grimoires unless requested to skip new
|
||||||
if params['repository'] and not skip_new:
|
if params['repository'] and not skip_new:
|
||||||
codex = dict((x, codex.get(x, NA)) for x in params['name'])
|
codex = {x: codex.get(x, NA) for x in params['name']}
|
||||||
|
|
||||||
if not codex:
|
if not codex:
|
||||||
module.fail_json(msg="no grimoires to operate on; add at least one")
|
module.fail_json(msg="no grimoires to operate on; add at least one")
|
||||||
|
|
|
@ -359,7 +359,7 @@ def test_runner_context(runner_input, cmd_execution, expected):
|
||||||
)
|
)
|
||||||
|
|
||||||
def _assert_run_info(actual, expected):
|
def _assert_run_info(actual, expected):
|
||||||
reduced = dict((k, actual[k]) for k in expected.keys())
|
reduced = {k: actual[k] for k in expected.keys()}
|
||||||
assert reduced == expected, "{0}".format(reduced)
|
assert reduced == expected, "{0}".format(reduced)
|
||||||
|
|
||||||
def _assert_run(runner_input, cmd_execution, expected, ctx, results):
|
def _assert_run(runner_input, cmd_execution, expected, ctx, results):
|
||||||
|
|
|
@ -189,9 +189,11 @@ def test_runner_context(runner_input, cmd_execution, expected):
|
||||||
def _extract_path(run_info):
|
def _extract_path(run_info):
|
||||||
path = run_info.get("environ_update", {}).get("PATH")
|
path = run_info.get("environ_update", {}).get("PATH")
|
||||||
if path is not None:
|
if path is not None:
|
||||||
run_info["environ_update"] = dict((k, v)
|
run_info["environ_update"] = {
|
||||||
|
k: v
|
||||||
for k, v in run_info["environ_update"].items()
|
for k, v in run_info["environ_update"].items()
|
||||||
if k != "PATH")
|
if k != "PATH"
|
||||||
|
}
|
||||||
return run_info, path
|
return run_info, path
|
||||||
|
|
||||||
def _assert_run_info_env_path(actual, expected):
|
def _assert_run_info_env_path(actual, expected):
|
||||||
|
@ -199,7 +201,7 @@ def test_runner_context(runner_input, cmd_execution, expected):
|
||||||
assert expected in actual2, "Missing expected path {0} in output PATH: {1}".format(expected, actual)
|
assert expected in actual2, "Missing expected path {0} in output PATH: {1}".format(expected, actual)
|
||||||
|
|
||||||
def _assert_run_info(actual, expected):
|
def _assert_run_info(actual, expected):
|
||||||
reduced = dict((k, actual[k]) for k in expected.keys())
|
reduced = {k: actual[k] for k in expected.keys()}
|
||||||
reduced, act_path = _extract_path(reduced)
|
reduced, act_path = _extract_path(reduced)
|
||||||
expected, exp_path = _extract_path(expected)
|
expected, exp_path = _extract_path(expected)
|
||||||
if exp_path is not None:
|
if exp_path is not None:
|
||||||
|
|
Loading…
Reference in a new issue