1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2026-02-04 07:51:50 +00:00

modules i[^p]*: use f-strings (#10969)

* remove extraneous to_native()

* add changelog frag

* Apply suggestions from code review
This commit is contained in:
Alexei Znamensky 2025-10-26 00:41:49 +13:00 committed by GitHub
parent 0b6e99b28b
commit 50846b7560
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 181 additions and 172 deletions

View file

@ -0,0 +1,21 @@
minor_changes:
- ibm_sa_domain - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- icinga2_feature - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- icinga2_host - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- idrac_redfish_command - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- idrac_redfish_config - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- idrac_redfish_info - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- ilo_redfish_command - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- ilo_redfish_config - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- ilo_redfish_info - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- imc_rest - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- imgadm - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- infinity - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- influxdb_retention_policy - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- ini_file - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- installp - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- interfaces_file - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- irc - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- iso_create - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- iso_customize - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).
- iso_extract - use f-strings for string templating (https://github.com/ansible-collections/community.general/pull/10969).

View file

@ -151,7 +151,7 @@ def main():
state = module.params['state']
state_changed = False
msg = 'Domain \'{0}\''.format(module.params['domain'])
msg = f"Domain '{module.params['domain']}'"
if state == 'present' and not domain:
state_changed = execute_pyxcli_command(
module, 'domain_create', xcli_client)

View file

@ -81,8 +81,8 @@ class Icinga2FeatureHelper:
"Ensure icinga2 is installed and present in binary path.")
# If feature is already in good state, just exit
if (re.search("Disabled features:.* %s[ \n]" % self.feature_name, out) and self.state == "absent") or \
(re.search("Enabled features:.* %s[ \n]" % self.feature_name, out) and self.state == "present"):
if (re.search(f"Disabled features:.* {self.feature_name}[ \n]", out) and self.state == "absent") or \
(re.search(f"Enabled features:.* {self.feature_name}[ \n]", out) and self.state == "present"):
self.module.exit_json(changed=False)
if self.module.check_mode:
@ -95,10 +95,7 @@ class Icinga2FeatureHelper:
change_applied = False
if self.state == "present":
if rc != 0:
self.module.fail_json(msg="Failed to %s feature %s."
" icinga2 command returned %s" % (feature_enable_str,
self.feature_name,
out))
self.module.fail_json(msg=f"Failed to {feature_enable_str} feature {self.feature_name}. icinga2 command returned {out}")
if re.search("already enabled", out) is None:
change_applied = True
@ -106,10 +103,10 @@ class Icinga2FeatureHelper:
if rc == 0:
change_applied = True
# RC is not 0 for this already disabled feature, handle it as no change applied
elif re.search("Cannot disable feature '%s'. Target file .* does not exist" % self.feature_name, out):
elif re.search(f"Cannot disable feature '{self.feature_name}'. Target file .* does not exist", out):
change_applied = False
else:
self.module.fail_json(msg="Failed to disable feature. Command returns %s" % out)
self.module.fail_json(msg=f"Failed to disable feature. Command returns {out}")
self.module.exit_json(changed=change_applied)

View file

@ -154,7 +154,7 @@ class icinga2_api:
'Accept': 'application/json',
'X-HTTP-Method-Override': method,
}
url = self.module.params.get("url") + "/" + path
url = f"{self.module.params.get('url')}/{path}"
rsp, info = fetch_url(module=self.module, url=url, data=data, headers=headers, method=method, use_proxy=self.module.params['use_proxy'])
body = ''
if rsp:
@ -171,7 +171,7 @@ class icinga2_api:
def exists(self, hostname):
data = {
"filter": "match(\"" + hostname + "\", host.name)",
"filter": f"match(\"{hostname}\", host.name)",
}
ret = self.call_url(
path="v1/objects/hosts",
@ -184,7 +184,7 @@ class icinga2_api:
def create(self, hostname, data):
ret = self.call_url(
path="v1/objects/hosts/" + hostname,
path=f"v1/objects/hosts/{hostname}",
data=self.module.jsonify(data),
method="PUT"
)
@ -193,7 +193,7 @@ class icinga2_api:
def delete(self, hostname):
data = {"cascade": 1}
ret = self.call_url(
path="v1/objects/hosts/" + hostname,
path=f"v1/objects/hosts/{hostname}",
data=self.module.jsonify(data),
method="DELETE"
)
@ -201,7 +201,7 @@ class icinga2_api:
def modify(self, hostname, data):
ret = self.call_url(
path="v1/objects/hosts/" + hostname,
path=f"v1/objects/hosts/{hostname}",
data=self.module.jsonify(data),
method="POST"
)
@ -209,7 +209,7 @@ class icinga2_api:
def diff(self, hostname, data):
ret = self.call_url(
path="v1/objects/hosts/" + hostname,
path=f"v1/objects/hosts/{hostname}",
method="GET"
)
changed = False
@ -263,7 +263,7 @@ def main():
icinga = icinga2_api(module=module)
icinga.check_connection()
except Exception as e:
module.fail_json(msg="unable to connect to Icinga. Exception message: %s" % (e))
module.fail_json(msg=f"unable to connect to Icinga. Exception message: {e}")
data = {
'templates': template,
@ -275,7 +275,7 @@ def main():
'vars.made_by': "ansible"
}
}
data['attrs'].update({'vars.' + key: value for key, value in variables.items()})
data['attrs'].update({f"vars.{key}": value for key, value in variables.items()})
changed = False
if icinga.exists(name):
@ -288,9 +288,9 @@ def main():
if ret['code'] == 200:
changed = True
else:
module.fail_json(msg="bad return code (%s) deleting host: '%s'" % (ret['code'], ret['data']))
module.fail_json(msg=f"bad return code ({ret['code']}) deleting host: '{ret['data']}'")
except Exception as e:
module.fail_json(msg="exception deleting host: " + str(e))
module.fail_json(msg=f"exception deleting host: {e}")
elif icinga.diff(name, data):
if module.check_mode:
@ -304,7 +304,7 @@ def main():
if ret['code'] == 200:
changed = True
else:
module.fail_json(msg="bad return code (%s) modifying host: '%s'" % (ret['code'], ret['data']))
module.fail_json(msg=f"bad return code ({ret['code']}) modifying host: '{ret['data']}'")
else:
if state == "present":
@ -316,9 +316,9 @@ def main():
if ret['code'] == 200:
changed = True
else:
module.fail_json(msg="bad return code (%s) creating host: '%s'" % (ret['code'], ret['data']))
module.fail_json(msg=f"bad return code ({ret['code']}) creating host: '{ret['data']}'")
except Exception as e:
module.fail_json(msg="exception creating host: " + str(e))
module.fail_json(msg=f"exception creating host: {e}")
module.exit_json(changed=changed, name=name, data=data)

View file

@ -117,7 +117,7 @@ class IdracRedfishUtils(RedfishUtils):
data = response['data']
if key not in data:
return {'ret': False, 'msg': "Key %s not found" % key}
return {'ret': False, 'msg': f"Key {key} not found"}
bios_uri = data[key]["@odata.id"]
@ -132,14 +132,14 @@ class IdracRedfishUtils(RedfishUtils):
payload = {"TargetSettingsURI": set_bios_attr_uri}
response = self.post_request(
self.root_uri + self.manager_uri + "/" + jobs, payload)
f"{self.root_uri}{self.manager_uri}/{jobs}", payload)
if response['ret'] is False:
return response
response_output = response['resp'].__dict__
job_id_full = response_output["headers"]["Location"]
job_id = re.search("JID_.+", job_id_full).group()
return {'ret': True, 'msg': "Config job %s created" % job_id, 'job_id': job_id_full}
return {'ret': True, 'msg': f"Config job {job_id} created", 'job_id': job_id_full}
CATEGORY_COMMANDS_ALL = {
@ -192,19 +192,19 @@ def main():
resource_id = module.params['resource_id']
# Build root URI
root_uri = "https://" + module.params['baseuri']
root_uri = f"https://{module.params['baseuri']}"
rf_utils = IdracRedfishUtils(creds, root_uri, timeout, module,
resource_id=resource_id, data_modification=True)
# Check that Category is valid
if category not in CATEGORY_COMMANDS_ALL:
module.fail_json(msg=to_native("Invalid Category '%s'. Valid Categories = %s" % (category, list(CATEGORY_COMMANDS_ALL.keys()))))
module.fail_json(msg=to_native(f"Invalid Category '{category}'. Valid Categories = {list(CATEGORY_COMMANDS_ALL.keys())}"))
# Check that all commands are valid
for cmd in command_list:
# Fail if even one command given is invalid
if cmd not in CATEGORY_COMMANDS_ALL[category]:
module.fail_json(msg=to_native("Invalid Command '%s'. Valid Commands = %s" % (cmd, CATEGORY_COMMANDS_ALL[category])))
module.fail_json(msg=to_native(f"Invalid Command '{cmd}'. Valid Commands = {CATEGORY_COMMANDS_ALL[category]}"))
# Organize by Categories / Commands

View file

@ -192,7 +192,7 @@ class IdracRedfishUtils(RedfishUtils):
attrs_bad = {} # Store attrs which were not found in the system
# Search for key entry and extract URI from it
response = self.get_request(self.root_uri + manager_uri + "/" + key)
response = self.get_request(f"{self.root_uri}{manager_uri}/{key}")
if response['ret'] is False:
return response
result['ret'] = True
@ -200,7 +200,7 @@ class IdracRedfishUtils(RedfishUtils):
if key not in data:
return {'ret': False,
'msg': "%s: Key %s not found" % (command, key),
'msg': f"{command}: Key {key} not found",
'warning': ""}
for attr_name, attr_value in attributes.items():
@ -219,7 +219,7 @@ class IdracRedfishUtils(RedfishUtils):
warning = ""
if attrs_bad:
warning = "Incorrect attributes %s" % (attrs_bad)
warning = f"Incorrect attributes {attrs_bad}"
if not attrs_to_patch:
return {'ret': True, 'changed': False,
@ -227,12 +227,12 @@ class IdracRedfishUtils(RedfishUtils):
'warning': warning}
payload = {"Attributes": attrs_to_patch}
response = self.patch_request(self.root_uri + manager_uri + "/" + key, payload)
response = self.patch_request(f"{self.root_uri}{manager_uri}/{key}", payload)
if response['ret'] is False:
return response
return {'ret': True, 'changed': True,
'msg': "%s: Modified Manager attributes %s" % (command, attrs_to_patch),
'msg': f"{command}: Modified Manager attributes {attrs_to_patch}",
'warning': warning}
@ -292,19 +292,19 @@ def main():
resource_id = module.params['resource_id']
# Build root URI
root_uri = "https://" + module.params['baseuri']
root_uri = f"https://{module.params['baseuri']}"
rf_utils = IdracRedfishUtils(creds, root_uri, timeout, module,
resource_id=resource_id, data_modification=True)
# Check that Category is valid
if category not in CATEGORY_COMMANDS_ALL:
module.fail_json(msg=to_native("Invalid Category '%s'. Valid Categories = %s" % (category, list(CATEGORY_COMMANDS_ALL.keys()))))
module.fail_json(msg=to_native(f"Invalid Category '{category}'. Valid Categories = {list(CATEGORY_COMMANDS_ALL.keys())}"))
# Check that all commands are valid
for cmd in command_list:
# Fail if even one command given is invalid
if cmd not in CATEGORY_COMMANDS_ALL[category]:
module.fail_json(msg=to_native("Invalid Command '%s'. Valid Commands = %s" % (cmd, CATEGORY_COMMANDS_ALL[category])))
module.fail_json(msg=to_native(f"Invalid Command '{cmd}'. Valid Commands = {CATEGORY_COMMANDS_ALL[category]}"))
# check for mutually exclusive commands
try:

View file

@ -169,7 +169,7 @@ class IdracRedfishUtils(RedfishUtils):
except (AttributeError, KeyError) as e:
result['ret'] = False
result['msg'] = "Failed to find attribute/key: " + str(e)
result['msg'] = f"Failed to find attribute/key: {e}"
result["entries"] = manager_attributes
return result
@ -218,18 +218,18 @@ def main():
timeout = module.params['timeout']
# Build root URI
root_uri = "https://" + module.params['baseuri']
root_uri = f"https://{module.params['baseuri']}"
rf_utils = IdracRedfishUtils(creds, root_uri, timeout, module)
# Check that Category is valid
if category not in CATEGORY_COMMANDS_ALL:
module.fail_json(msg=to_native("Invalid Category '%s'. Valid Categories = %s" % (category, list(CATEGORY_COMMANDS_ALL.keys()))))
module.fail_json(msg=to_native(f"Invalid Category '{category}'. Valid Categories = {list(CATEGORY_COMMANDS_ALL.keys())}"))
# Check that all commands are valid
for cmd in command_list:
# Fail if even one command given is invalid
if cmd not in CATEGORY_COMMANDS_ALL[category]:
module.fail_json(msg=to_native("Invalid Command '%s'. Valid Commands = %s" % (cmd, CATEGORY_COMMANDS_ALL[category])))
module.fail_json(msg=to_native(f"Invalid Command '{cmd}'. Valid Commands = {CATEGORY_COMMANDS_ALL[category]}"))
# Organize by Categories / Commands

View file

@ -143,20 +143,20 @@ def main():
timeout = module.params['timeout']
# Build root URI
root_uri = "https://" + module.params['baseuri']
root_uri = f"https://{module.params['baseuri']}"
rf_utils = iLORedfishUtils(creds, root_uri, timeout, module)
# Check that Category is valid
if category not in CATEGORY_COMMANDS_ALL:
module.fail_json(msg=to_native(
"Invalid Category '%s'. Valid Categories = %s" % (category, list(CATEGORY_COMMANDS_ALL.keys()))))
f"Invalid Category '{category}'. Valid Categories = {list(CATEGORY_COMMANDS_ALL.keys())}"))
# Check that all commands are valid
for cmd in command_list:
# Fail if even one command given is invalid
if cmd not in CATEGORY_COMMANDS_ALL[category]:
module.fail_json(
msg=to_native("Invalid Command '%s'. Valid Commands = %s" % (cmd, CATEGORY_COMMANDS_ALL[category])))
msg=to_native(f"Invalid Command '{cmd}'. Valid Commands = {CATEGORY_COMMANDS_ALL[category]}"))
if category == "Systems":
# execute only if we find a System resource

View file

@ -161,7 +161,7 @@ def main():
timeout = module.params['timeout']
root_uri = "https://" + module.params['baseuri']
root_uri = f"https://{module.params['baseuri']}"
rf_utils = iLORedfishUtils(creds, root_uri, timeout, module)
mgr_attributes = {'mgr_attr_name': module.params['attribute_name'],
'mgr_attr_value': module.params['attribute_value']}
@ -171,8 +171,7 @@ def main():
cmd for cmd in command_list if cmd not in CATEGORY_COMMANDS_ALL[category]]
if offending:
module.fail_json(msg=to_native("Invalid Command(s): '%s'. Allowed Commands = %s" % (
offending, CATEGORY_COMMANDS_ALL[category])))
module.fail_json(msg=to_native(f"Invalid Command(s): '{offending}'. Allowed Commands = {CATEGORY_COMMANDS_ALL[category]}"))
if category == "Manager":
resource = rf_utils._find_managers_resource()

View file

@ -149,7 +149,7 @@ def main():
timeout = module.params['timeout']
root_uri = "https://" + module.params['baseuri']
root_uri = f"https://{module.params['baseuri']}"
rf_utils = iLORedfishUtils(creds, root_uri, timeout, module)
# Build Category list
@ -177,10 +177,10 @@ def main():
for cmd in command_list:
# Fail if even one command given is invalid
if cmd not in CATEGORY_COMMANDS_ALL[category]:
module.fail_json(msg="Invalid Command: %s" % cmd)
module.fail_json(msg=f"Invalid Command: {cmd}")
else:
# Fail if even one category given is invalid
module.fail_json(msg="Invalid Category: %s" % category)
module.fail_json(msg=f"Invalid Category: {category}")
# Organize by Categories / Commands
if category == "Sessions":

View file

@ -304,14 +304,14 @@ def imc_response(module, rawoutput, rawinput=''):
result['output'] = rawoutput
result['error_code'] = xmloutput.get('errorCode')
result['error_text'] = xmloutput.get('errorDescr')
module.fail_json(msg='Request failed: %(error_text)s' % result, **result)
module.fail_json(msg=f"Request failed: {result['error_text']}", **result)
return result
def logout(module, url, cookie, timeout):
''' Perform a logout, if needed '''
data = '<aaaLogout cookie="%s" inCookie="%s"/>' % (cookie, cookie)
data = f'<aaaLogout cookie="{cookie}" inCookie="{cookie}"/>'
resp, auth = fetch_url(module, url, data=data, method="POST", timeout=timeout)
@ -371,17 +371,17 @@ def main():
if os.path.isfile(path):
file_exists = True
else:
module.fail_json(msg='Cannot find/access path:\n%s' % path)
module.fail_json(msg=f'Cannot find/access path:\n{path}')
start = now()
# Perform login first
url = '%s://%s/nuova' % (protocol, hostname)
data = '<aaaLogin inName="%s" inPassword="%s"/>' % (username, password)
url = f'{protocol}://{hostname}/nuova'
data = f'<aaaLogin inName="{username}" inPassword="{password}"/>'
resp, auth = fetch_url(module, url, data=data, method='POST', timeout=timeout)
if resp is None or auth['status'] != 200:
result['elapsed'] = (now() - start).seconds
module.fail_json(msg='Task failed with error %(status)s: %(msg)s' % auth, **result)
module.fail_json(msg=f"Task failed with error {auth['status']}: {auth['msg']}", **result)
result.update(imc_response(module, resp.read()))
# Store cookie for future requests
@ -414,7 +414,7 @@ def main():
resp, info = fetch_url(module, url, data=data, method='POST', timeout=timeout)
if resp is None or info['status'] != 200:
result['elapsed'] = (now() - start).seconds
module.fail_json(msg='Task failed with error %(status)s: %(msg)s' % info, **result)
module.fail_json(msg=f"Task failed with error {info['status']}: {info['msg']}", **result)
# Merge results with previous results
rawoutput = resp.read()

View file

@ -163,7 +163,7 @@ class Imgadm(object):
(rc, stdout, stderr) = self.module.run_command(cmd)
if rc != 0:
self.module.fail_json(msg='Failed to update images: {0}'.format(self.errmsg(stderr)))
self.module.fail_json(msg=f'Failed to update images: {self.errmsg(stderr)}')
# There is no feedback from imgadm(1M) to determine if anything
# was actually changed. So treat this as an 'always-changes' operation.
@ -185,32 +185,32 @@ class Imgadm(object):
(rc, stdout, stderr) = self.module.run_command(cmd)
if rc != 0:
self.module.fail_json(msg='Failed to add source: {0}'.format(self.errmsg(stderr)))
self.module.fail_json(msg=f'Failed to add source: {self.errmsg(stderr)}')
# Check the various responses.
# Note that trying to add a source with the wrong type is handled
# above as it results in a non-zero status.
regex = 'Already have "{0}" image source "{1}", no change'.format(imgtype, source)
regex = f'Already have "{imgtype}" image source "{source}", no change'
if re.match(regex, stdout):
self.changed = False
regex = 'Added "%s" image source "%s"' % (imgtype, source)
regex = f'Added "{imgtype}" image source "{source}"'
if re.match(regex, stdout):
self.changed = True
else:
# Type is ignored by imgadm(1M) here
cmd += ' -d %s' % source
cmd += f' -d {source}'
(rc, stdout, stderr) = self.module.run_command(cmd)
if rc != 0:
self.module.fail_json(msg='Failed to remove source: {0}'.format(self.errmsg(stderr)))
self.module.fail_json(msg=f'Failed to remove source: {self.errmsg(stderr)}')
regex = 'Do not have image source "%s", no change' % source
regex = f'Do not have image source "{source}", no change'
if re.match(regex, stdout):
self.changed = False
regex = 'Deleted ".*" image source "%s"' % source
regex = f'Deleted ".*" image source "{source}"'
if re.match(regex, stdout):
self.changed = True
@ -225,7 +225,7 @@ class Imgadm(object):
(rc, stdout, stderr) = self.module.run_command(cmd)
if rc != 0:
self.module.fail_json(msg='Failed to vacuum images: {0}'.format(self.errmsg(stderr)))
self.module.fail_json(msg=f'Failed to vacuum images: {self.errmsg(stderr)}')
else:
if stdout == '':
self.changed = False
@ -236,9 +236,9 @@ class Imgadm(object):
(rc, stdout, stderr) = self.module.run_command(cmd)
if rc != 0:
self.module.fail_json(msg='Failed to import image: {0}'.format(self.errmsg(stderr)))
self.module.fail_json(msg=f'Failed to import image: {self.errmsg(stderr)}')
regex = r'Image {0} \(.*\) is already installed, skipping'.format(self.uuid)
regex = rf'Image {self.uuid} \(.*\) is already installed, skipping'
if re.match(regex, stdout):
self.changed = False
@ -246,7 +246,7 @@ class Imgadm(object):
if re.match(regex, stderr):
self.changed = False
regex = 'Imported image {0}.*'.format(self.uuid)
regex = f'Imported image {self.uuid}.*'
if re.match(regex, stdout.splitlines()[-1]):
self.changed = True
else:
@ -259,7 +259,7 @@ class Imgadm(object):
# in order to determine if there was a change.
self.changed = False
regex = 'Deleted image {0}'.format(self.uuid)
regex = f'Deleted image {self.uuid}'
if re.match(regex, stdout):
self.changed = True

View file

@ -156,7 +156,7 @@ class Infinity(object):
self.module = module
self.auth_user = username
self.auth_pass = password
self.base_url = "https://%s/rest/v1/" % (str(server_ip))
self.base_url = f"https://{server_ip}/rest/v1/"
def _get_api_call_ansible_handler(
self,
@ -193,8 +193,7 @@ class Infinity(object):
if response_raw.code not in stat_codes:
self.module.exit_json(
changed=False,
meta=" openurl response_raw.code show error and error code is %r" %
(response_raw.code))
meta=f" openurl response_raw.code show error and error code is {response_raw.code!r}")
else:
if isinstance(response, str) and len(response) > 0:
payload = response
@ -224,7 +223,7 @@ class Infinity(object):
params = {}
response = None
if network_id:
resource_url = "networks/" + str(network_id)
resource_url = f"networks/{network_id}"
response = self._get_api_call_ansible_handler(method, resource_url)
if network_id is None and network_name:
method = "get"
@ -283,7 +282,7 @@ class Infinity(object):
self.module.exit_json(
msg="You must specify the option 'network_id'.")
if network_id:
resource_url = "networks/" + str(network_id) + "/reserve_ip"
resource_url = f"networks/{network_id}/reserve_ip"
response = self._get_api_call_ansible_handler(method, resource_url)
if response and response.find(
"[") >= 0 and response.find("]") >= 0:
@ -306,12 +305,11 @@ class Infinity(object):
self.module.exit_json(
msg="You must specify those two options: 'network_id' and 'ip_address'.")
resource_url = "networks/" + str(network_id) + "/children"
resource_url = f"networks/{network_id}/children"
response = self._get_api_call_ansible_handler(method, resource_url)
if not response:
self.module.exit_json(
msg="There is an error in release ip %s from network %s." %
(ip_address, network_id))
msg=f"There is an error in release ip {ip_address} from network {network_id}.")
ip_list = json.loads(response)
ip_idlist = []
@ -321,7 +319,7 @@ class Infinity(object):
deleted_ip_id = ''
for ip_id in ip_idlist:
ip_response = ''
resource_url = "ip_addresses/" + str(ip_id)
resource_url = f"ip_addresses/{ip_id}"
ip_response = self._get_api_call_ansible_handler(
method,
resource_url,
@ -332,13 +330,12 @@ class Infinity(object):
break
if deleted_ip_id:
method = 'delete'
resource_url = "ip_addresses/" + str(deleted_ip_id)
resource_url = f"ip_addresses/{deleted_ip_id}"
response = self._get_api_call_ansible_handler(
method, resource_url, stat_codes=[204])
else:
self.module.exit_json(
msg=" When release ip, could not find the ip address %r from the given network %r' ." %
(ip_address, network_id))
msg=f" When release ip, could not find the ip address {ip_address} from the given network {network_id}' .")
return response
@ -358,7 +355,7 @@ class Infinity(object):
if network_id is None and network_name:
network_id = self.get_network_id(network_name=network_name)
if network_id:
resource_url = "networks/" + str(network_id)
resource_url = f"networks/{network_id}"
response = self._get_api_call_ansible_handler(
method, resource_url, stat_codes=[204])
return response
@ -386,7 +383,7 @@ class Infinity(object):
self.module.exit_json(
msg="You must specify those options: 'network_id', 'reserved_network_name' and 'reserved_network_size'")
if network_id:
resource_url = "networks/" + str(network_id) + "/reserve_network"
resource_url = f"networks/{network_id}/reserve_network"
if not reserved_network_family:
reserved_network_family = '4'
if not reserved_network_type:
@ -423,12 +420,11 @@ class Infinity(object):
self.module.exit_json(
msg="You must specify those options 'network_id', 'reserved_network_name' and 'reserved_network_size'")
matched_network_id = ""
resource_url = "networks/" + str(network_id) + "/children"
resource_url = f"networks/{network_id}/children"
response = self._get_api_call_ansible_handler(method, resource_url)
if not response:
self.module.exit_json(
msg=" there is an error in releasing network %r from network %s." %
(network_id, released_network_name))
msg=f" there is an error in releasing network {network_id} from network {released_network_name}.")
if response:
response = json.loads(response)
for child_net in response:
@ -438,13 +434,12 @@ class Infinity(object):
response = None
if matched_network_id:
method = 'delete'
resource_url = "networks/" + str(matched_network_id)
resource_url = f"networks/{matched_network_id}"
response = self._get_api_call_ansible_handler(
method, resource_url, stat_codes=[204])
else:
self.module.exit_json(
msg=" When release network , could not find the network %r from the given superent %r' " %
(released_network_name, network_id))
msg=f" When release network , could not find the network {released_network_name} from the given superent {network_id} ")
return response

View file

@ -144,7 +144,6 @@ except ImportError:
from ansible.module_utils.basic import AnsibleModule
from ansible_collections.community.general.plugins.module_utils.influxdb import InfluxDb
from ansible.module_utils.common.text.converters import to_native
VALID_DURATION_REGEX = re.compile(r'^(INF|(\d+(ns|u|µ|ms|s|m|h|d|w)))+$')
@ -201,7 +200,7 @@ def find_retention_policy(module, client):
retention_policy = policy
break
except requests.exceptions.ConnectionError as e:
module.fail_json(msg="Cannot connect to database %s on %s : %s" % (database_name, hostname, to_native(e)))
module.fail_json(msg=f"Cannot connect to database {database_name} on {hostname} : {e}")
if retention_policy is not None:
retention_policy["duration"] = parse_duration_literal(retention_policy["duration"], extended=True)

View file

@ -266,12 +266,12 @@ from ansible.module_utils.common.text.converters import to_bytes, to_text
def match_opt(option, line):
option = re.escape(option)
return re.match('( |\t)*([#;]?)( |\t)*(%s)( |\t)*(=|$)( |\t)*(.*)' % option, line)
return re.match(f'( |\t)*([#;]?)( |\t)*({option})( |\t)*(=|$)( |\t)*(.*)', line)
def match_active_opt(option, line):
option = re.escape(option)
return re.match('()()( |\t)*(%s)( |\t)*(=|$)( |\t)*(.*)' % option, line)
return re.match(f'()()( |\t)*({option})( |\t)*(=|$)( |\t)*(.*)', line)
def update_section_line(option, changed, section_lines, index, changed_lines, ignore_spaces, newline, msg):
@ -321,8 +321,8 @@ def do_ini(module, filename, section=None, section_has_values=None, option=None,
diff = dict(
before='',
after='',
before_header='%s (content)' % filename,
after_header='%s (content)' % filename,
before_header=f'{filename} (content)',
after_header=f'{filename} (content)',
)
if follow and os.path.islink(filename):
@ -332,7 +332,7 @@ def do_ini(module, filename, section=None, section_has_values=None, option=None,
if not os.path.exists(target_filename):
if not create:
module.fail_json(rc=257, msg='Destination %s does not exist!' % target_filename)
module.fail_json(rc=257, msg=f'Destination {target_filename} does not exist!')
destpath = os.path.dirname(target_filename)
if not os.path.exists(destpath) and not module.check_mode:
os.makedirs(destpath)
@ -362,7 +362,7 @@ def do_ini(module, filename, section=None, section_has_values=None, option=None,
fake_section_name = "ad01e11446efb704fcdbdb21f2c43757423d91c5"
# Insert it at the beginning
ini_lines.insert(0, '[%s]' % fake_section_name)
ini_lines.insert(0, f'[{fake_section_name}]')
# At bottom:
ini_lines.append('[')
@ -386,7 +386,7 @@ def do_ini(module, filename, section=None, section_has_values=None, option=None,
before = after = []
section_lines = []
section_pattern = re.compile(to_text(r'^\[\s*%s\s*]' % re.escape(section.strip())))
section_pattern = re.compile(to_text(rf'^\[\s*{re.escape(section.strip())}\s*]'))
for index, line in enumerate(ini_lines):
# end of section:
@ -434,7 +434,7 @@ def do_ini(module, filename, section=None, section_has_values=None, option=None,
matched_value = match.group(8)
if not matched_value and allow_no_value:
# replace existing option with no value line(s)
newline = '%s\n' % option
newline = f'{option}\n'
option_no_value_present = True
else:
# replace existing option=value line(s)
@ -443,7 +443,7 @@ def do_ini(module, filename, section=None, section_has_values=None, option=None,
values.remove(matched_value)
elif not values and allow_no_value:
# replace existing option with no value line(s)
newline = '%s\n' % option
newline = f'{option}\n'
(changed, msg) = update_section_line(option, changed, section_lines, index, changed_lines, ignore_spaces, newline, msg)
option_no_value_present = True
break
@ -482,12 +482,12 @@ def do_ini(module, filename, section=None, section_has_values=None, option=None,
changed = True
elif element is None and allow_no_value:
# insert option with no value line
section_lines.insert(index, '%s\n' % option)
section_lines.insert(index, f'{option}\n')
msg = 'option added'
changed = True
elif option and not values and allow_no_value and not option_no_value_present:
# insert option with no value line(s)
section_lines.insert(index, '%s\n' % option)
section_lines.insert(index, f'{option}\n')
msg = 'option added'
changed = True
break
@ -523,7 +523,7 @@ def do_ini(module, filename, section=None, section_has_values=None, option=None,
del ini_lines[-1:]
if not within_section and state == 'present':
ini_lines.append('[%s]\n' % section)
ini_lines.append(f'[{section}]\n')
msg = 'section and option added'
if section_has_values:
for condition in section_has_values:
@ -532,7 +532,7 @@ def do_ini(module, filename, section=None, section_has_values=None, option=None,
for value in condition['values']:
ini_lines.append(assignment_format % (condition['option'], value))
elif allow_no_value:
ini_lines.append('%s\n' % condition['option'])
ini_lines.append(f"{condition['option']}\n")
elif not exclusive:
for value in condition['values']:
if value not in values:
@ -541,7 +541,7 @@ def do_ini(module, filename, section=None, section_has_values=None, option=None,
for value in values:
ini_lines.append(assignment_format % (option, value))
elif option and not values and allow_no_value:
ini_lines.append('%s\n' % option)
ini_lines.append(f'{option}\n')
else:
msg = 'only section added'
changed = True
@ -566,8 +566,7 @@ def do_ini(module, filename, section=None, section_has_values=None, option=None,
try:
module.atomic_move(tmpfile, os.path.abspath(target_filename))
except IOError:
module.ansible.fail_json(msg='Unable to move temporary \
file %s to %s, IOError' % (tmpfile, target_filename), traceback=traceback.format_exc())
module.ansible.fail_json(msg=f'Unable to move temporary file {tmpfile} to {target_filename}, IOError', traceback=traceback.format_exc())
return (changed, backup_file, diff, msg)

View file

@ -124,7 +124,7 @@ def _check_new_pkg(module, package, repository_path):
return False, None
else:
module.fail_json(msg="Repository path %s is not valid." % repository_path)
module.fail_json(msg=f"Repository path {repository_path} is not valid.")
def _check_installed_pkg(module, package, repository_path):
@ -139,7 +139,7 @@ def _check_installed_pkg(module, package, repository_path):
"""
lslpp_cmd = module.get_bin_path('lslpp', True)
rc, lslpp_result, err = module.run_command([lslpp_cmd, "-lcq", "%s*" % (package, )])
rc, lslpp_result, err = module.run_command([lslpp_cmd, "-lcq", f"{package}*"])
if rc == 1:
package_state = ' '.join(err.split()[-2:])
@ -184,11 +184,11 @@ def remove(module, installp_cmd, packages):
not_found_pkg.insert(0, "Package(s) not found: ")
changed = True
msg = "Packages removed: %s. %s " % (' '.join(removed_pkgs), ' '.join(not_found_pkg))
msg = f"Packages removed: {' '.join(removed_pkgs)}. {' '.join(not_found_pkg)} "
else:
changed = False
msg = ("No packages removed, all packages not found: %s" % ' '.join(not_found_pkg))
msg = f"No packages removed, all packages not found: {' '.join(not_found_pkg)}"
return changed, msg
@ -237,26 +237,26 @@ def install(module, installp_cmd, packages, repository_path, accept_license):
not_found_pkgs.append(package)
if len(installed_pkgs) > 0:
installed_msg = (" Installed: %s." % ' '.join(installed_pkgs))
installed_msg = f" Installed: {' '.join(installed_pkgs)}."
else:
installed_msg = ''
if len(not_found_pkgs) > 0:
not_found_msg = (" Not found: %s." % ' '.join(not_found_pkgs))
not_found_msg = f" Not found: {' '.join(not_found_pkgs)}."
else:
not_found_msg = ''
if len(already_installed_pkgs) > 0:
already_installed_msg = (" Already installed: %s." % already_installed_pkgs)
already_installed_msg = f" Already installed: {already_installed_pkgs}."
else:
already_installed_msg = ''
if len(installed_pkgs) > 0:
changed = True
msg = ("%s%s%s" % (installed_msg, not_found_msg, already_installed_msg))
msg = f"{installed_msg}{not_found_msg}{already_installed_msg}"
else:
changed = False
msg = ("No packages installed.%s%s%s" % (installed_msg, not_found_msg, already_installed_msg))
msg = f"No packages installed.{installed_msg}{not_found_msg}{already_installed_msg}"
return changed, msg

View file

@ -253,7 +253,7 @@ def read_interfaces_lines(module, line_strings):
elif currently_processing == "NONE":
lines.append(lineDict(line))
else:
module.fail_json(msg="misplaced option %s in line %d" % (line, i))
module.fail_json(msg=f"misplaced option {line} in line {i}")
return None, None
return lines, ifaces
@ -289,7 +289,7 @@ def set_interface_option(module, lines, iface, option, raw_value, state, address
if len(iface_lines) < 1:
# interface not found
module.fail_json(msg="Error: interface %s not found" % iface)
module.fail_json(msg=f"Error: interface {iface} not found")
return changed, None
iface_options = get_interface_options(iface_lines)
@ -325,7 +325,7 @@ def set_interface_option(module, lines, iface, option, raw_value, state, address
for target_option in target_options:
lines = [ln for ln in lines if ln != target_option]
else:
module.fail_json(msg="Error: unsupported state %s, has to be either present or absent" % state)
module.fail_json(msg=f"Error: unsupported state {state}, has to be either present or absent")
return changed, lines
@ -339,7 +339,7 @@ def addOptionAfterLine(option, value, iface, lines, last_line_dict, iface_option
if address_family is not None and ln.get('address_family') != address_family:
continue
changed = True
ln['line'] = re.sub(ln.get('params', {}).get('method', '') + '$', value, ln.get('line'))
ln['line'] = re.sub(f"{ln.get('params', {}).get('method', '')}$", value, ln.get('line'))
ln['params']['method'] = value
return changed, lines
@ -352,7 +352,7 @@ def addOptionAfterLine(option, value, iface, lines, last_line_dict, iface_option
# interface has no options, ident
prefix += " "
line = prefix + "%s %s" % (option, value) + last_line[suffix_start:]
line = f"{prefix}{option} {value}{last_line[suffix_start:]}"
option_dict = optionDict(line, iface, option, value, address_family)
index = len(lines) - lines[::-1].index(last_line_dict)
lines.insert(index, option_dict)

View file

@ -222,7 +222,7 @@ def send_msg(msg, server='localhost', port='6667', channel=None, nick_to=None, k
try:
colornumber = colornumbers[color]
colortext = "\x03" + colornumber
colortext = f"\x03{colornumber}"
except Exception:
colortext = ""
@ -241,9 +241,9 @@ def send_msg(msg, server='localhost', port='6667', channel=None, nick_to=None, k
irc.connect((server, int(port)))
if passwd:
irc.send(to_bytes('PASS %s\r\n' % passwd))
irc.send(to_bytes('NICK %s\r\n' % nick))
irc.send(to_bytes('USER %s %s %s :ansible IRC\r\n' % (nick, nick, nick)))
irc.send(to_bytes(f'PASS {passwd}\r\n'))
irc.send(to_bytes(f'NICK {nick}\r\n'))
irc.send(to_bytes(f'USER {nick} {nick} {nick} :ansible IRC\r\n'))
motd = ''
start = time.time()
while 1:
@ -260,33 +260,33 @@ def send_msg(msg, server='localhost', port='6667', channel=None, nick_to=None, k
if channel:
if key:
irc.send(to_bytes('JOIN %s %s\r\n' % (channel, key)))
irc.send(to_bytes(f'JOIN {channel} {key}\r\n'))
else:
irc.send(to_bytes('JOIN %s\r\n' % channel))
irc.send(to_bytes(f'JOIN {channel}\r\n'))
join = ''
start = time.time()
while 1:
join += to_native(irc.recv(1024))
if re.search(r'^:\S+ 366 %s %s :' % (nick, channel), join, flags=re.M | re.I):
if re.search(rf'^:\S+ 366 {nick} {channel} :', join, flags=re.M | re.I):
break
elif time.time() - start > timeout:
raise Exception('Timeout waiting for IRC JOIN response')
time.sleep(0.5)
if topic is not None:
irc.send(to_bytes('TOPIC %s :%s\r\n' % (channel, topic)))
irc.send(to_bytes(f'TOPIC {channel} :{topic}\r\n'))
time.sleep(1)
if nick_to:
for nick in nick_to:
irc.send(to_bytes('PRIVMSG %s :%s\r\n' % (nick, message)))
irc.send(to_bytes(f'PRIVMSG {nick} :{message}\r\n'))
if channel:
irc.send(to_bytes('PRIVMSG %s :%s\r\n' % (channel, message)))
irc.send(to_bytes(f'PRIVMSG {channel} :{message}\r\n'))
time.sleep(1)
if part:
if channel:
irc.send(to_bytes('PART %s\r\n' % channel))
irc.send(to_bytes(f'PART {channel}\r\n'))
irc.send(to_bytes('QUIT\r\n'))
time.sleep(1)
irc.close()
@ -345,7 +345,7 @@ def main():
try:
send_msg(msg, server, port, channel, nick_to, key, topic, nick, color, passwd, timeout, use_tls, validate_certs, part, style)
except Exception as e:
module.fail_json(msg="unable to send to IRC: %s" % to_native(e), exception=traceback.format_exc())
module.fail_json(msg=f"unable to send to IRC: {e}", exception=traceback.format_exc())
module.exit_json(changed=False, channel=channel, nick=nick,
msg=msg)

View file

@ -159,7 +159,6 @@ except ImportError:
HAS_PYCDLIB = False
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
from ansible.module_utils.common.text.converters import to_native
def add_file(module, iso_file=None, src_file=None, file_path=None, rock_ridge=None, use_joliet=None, use_udf=None):
@ -170,9 +169,9 @@ def add_file(module, iso_file=None, src_file=None, file_path=None, rock_ridge=No
# followed by a maximum 3 character extension, followed by a semicolon and a version
file_name = os.path.basename(file_path)
if '.' not in file_name:
file_in_iso_path = file_path.upper() + '.;1'
file_in_iso_path = f"{file_path.upper()}.;1"
else:
file_in_iso_path = file_path.upper() + ';1'
file_in_iso_path = f"{file_path.upper()};1"
if rock_ridge:
rr_name = file_name
if use_joliet:
@ -182,7 +181,7 @@ def add_file(module, iso_file=None, src_file=None, file_path=None, rock_ridge=No
try:
iso_file.add_file(src_file, iso_path=file_in_iso_path, rr_name=rr_name, joliet_path=joliet_path, udf_path=udf_path)
except Exception as err:
module.fail_json(msg="Failed to add file %s to ISO file due to %s" % (src_file, to_native(err)))
module.fail_json(msg=f"Failed to add file {src_file} to ISO file due to {err}")
def add_directory(module, iso_file=None, dir_path=None, rock_ridge=None, use_joliet=None, use_udf=None):
@ -199,7 +198,7 @@ def add_directory(module, iso_file=None, dir_path=None, rock_ridge=None, use_jol
try:
iso_file.add_directory(iso_path=iso_dir_path, rr_name=rr_name, joliet_path=joliet_path, udf_path=udf_path)
except Exception as err:
module.fail_json(msg="Failed to directory %s to ISO file due to %s" % (dir_path, to_native(err)))
module.fail_json(msg=f"Failed to directory {dir_path} to ISO file due to {err}")
def main():
@ -224,7 +223,7 @@ def main():
module.fail_json(msg='Please specify source file and/or directory list using src_files parameter.')
for src_file in src_file_list:
if not os.path.exists(src_file):
module.fail_json(msg="Specified source file/directory path does not exist on local machine, %s" % src_file)
module.fail_json(msg=f"Specified source file/directory path does not exist on local machine, {src_file}")
dest_iso = module.params.get('dest_iso')
if dest_iso and len(dest_iso) == 0:
@ -236,7 +235,7 @@ def main():
try:
os.makedirs(dest_iso_dir)
except OSError as err:
module.fail_json(msg='Exception caught when creating folder %s, with error %s' % (dest_iso_dir, to_native(err)))
module.fail_json(msg=f'Exception caught when creating folder {dest_iso_dir}, with error {err}')
volume_id = module.params.get('vol_ident')
if volume_id is None:
@ -269,7 +268,7 @@ def main():
file_list = []
src_file = src_file.rstrip('/')
dir_name = os.path.basename(src_file)
add_directory(module, iso_file=iso_file, dir_path='/' + dir_name, rock_ridge=rock_ridge,
add_directory(module, iso_file=iso_file, dir_path=f"/{dir_name}", rock_ridge=rock_ridge,
use_joliet=use_joliet, use_udf=use_udf)
# get dir list and file list
@ -287,7 +286,7 @@ def main():
use_joliet=use_joliet, use_udf=use_udf)
# if specify a file then add this file directly to the '/' path in ISO
else:
add_file(module, iso_file=iso_file, src_file=src_file, file_path='/' + os.path.basename(src_file),
add_file(module, iso_file=iso_file, src_file=src_file, file_path=f"/{os.path.basename(src_file)}",
rock_ridge=rock_ridge, use_joliet=use_joliet, use_udf=use_udf)
iso_file.write(dest_iso)

View file

@ -123,9 +123,9 @@ def iso_add_dir(module, opened_iso, iso_type, dir_path):
return
if parent_dir == "/":
current_dirpath = "/%s" % check_dirname
current_dirpath = f"/{check_dirname}"
else:
current_dirpath = "%s/%s" % (parent_dir, check_dirname)
current_dirpath = f"{parent_dir}/{check_dirname}"
current_dirpath_upper = current_dirpath.upper()
try:
@ -138,7 +138,7 @@ def iso_add_dir(module, opened_iso, iso_type, dir_path):
elif iso_type == "udf":
opened_iso.add_directory(current_dirpath_upper, udf_path=current_dirpath)
except Exception as err:
msg = "Failed to create dir %s with error: %s" % (current_dirpath, to_native(err))
msg = f"Failed to create dir {current_dirpath} with error: {err}"
module.fail_json(msg=msg)
@ -150,9 +150,9 @@ def iso_add_dirs(module, opened_iso, iso_type, dir_path):
if not item.strip():
continue
if current_dirpath == "/":
current_dirpath = "/%s" % item
current_dirpath = f"/{item}"
else:
current_dirpath = "%s/%s" % (current_dirpath, item)
current_dirpath = f"{current_dirpath}/{item}"
iso_add_dir(module, opened_iso, iso_type, current_dirpath)
@ -175,14 +175,14 @@ def iso_check_file_exists(opened_iso, dest_file):
return False
if parent_dir == "/":
parent_dir = "/%s" % item
parent_dir = f"/{item}"
else:
parent_dir = "%s/%s" % (parent_dir, item)
parent_dir = f"{parent_dir}/{item}"
if '.' not in file_name:
file_in_iso_path = file_name.upper() + '.;1'
file_in_iso_path = f"{file_name.upper()}.;1"
else:
file_in_iso_path = file_name.upper() + ';1'
file_in_iso_path = f"{file_name.upper()};1"
for dirname, dummy_dirlist, filelist in opened_iso.walk(iso_path=parent_dir.upper()):
if dirname != parent_dir.upper():
@ -194,16 +194,16 @@ def iso_check_file_exists(opened_iso, dest_file):
def iso_add_file(module, opened_iso, iso_type, src_file, dest_file):
dest_file = dest_file.strip()
if dest_file[0] != "/":
dest_file = "/%s" % dest_file
dest_file = f"/{dest_file}"
file_local = src_file.strip()
file_dir = os.path.dirname(dest_file).strip()
file_name = os.path.basename(dest_file)
if '.' not in file_name:
file_in_iso_path = dest_file.upper() + '.;1'
file_in_iso_path = f"{dest_file.upper()}.;1"
else:
file_in_iso_path = dest_file.upper() + ';1'
file_in_iso_path = f"{dest_file.upper()};1"
if file_dir and file_dir != "/":
iso_add_dirs(module, opened_iso, iso_type, file_dir)
@ -226,23 +226,23 @@ def iso_add_file(module, opened_iso, iso_type, src_file, dest_file):
opened_iso.rm_file(udf_path=dest_file)
opened_iso.add_file(file_local, iso_path=file_in_iso_path, udf_path=dest_file)
except Exception as err:
msg = "Failed to add local file %s to ISO with error: %s" % (file_local, to_native(err))
msg = f"Failed to add local file {file_local} to ISO with error: {err}"
module.fail_json(msg=msg)
def iso_delete_file(module, opened_iso, iso_type, dest_file):
dest_file = dest_file.strip()
if dest_file[0] != "/":
dest_file = "/%s" % dest_file
dest_file = f"/{dest_file}"
file_name = os.path.basename(dest_file)
if not iso_check_file_exists(opened_iso, dest_file):
module.fail_json(msg="The file %s does not exist." % dest_file)
module.fail_json(msg=f"The file {dest_file} does not exist.")
if '.' not in file_name:
file_in_iso_path = dest_file.upper() + '.;1'
file_in_iso_path = f"{dest_file.upper()}.;1"
else:
file_in_iso_path = dest_file.upper() + ';1'
file_in_iso_path = f"{dest_file.upper()};1"
try:
if iso_type == "iso9660":
@ -254,7 +254,7 @@ def iso_delete_file(module, opened_iso, iso_type, dest_file):
elif iso_type == "udf":
opened_iso.rm_file(udf_path=dest_file)
except Exception as err:
msg = "Failed to delete iso file %s with error: %s" % (dest_file, to_native(err))
msg = f"Failed to delete iso file {dest_file} with error: {err}"
module.fail_json(msg=msg)
@ -280,7 +280,7 @@ def iso_rebuild(module, src_iso, dest_iso, delete_files_list, add_files_list):
iso.write(dest_iso)
except Exception as err:
msg = "Failed to rebuild ISO %s with error: %s" % (src_iso, to_native(err))
msg = f"Failed to rebuild ISO {src_iso} with error: {to_native(err)}"
module.fail_json(msg=msg)
finally:
if iso:
@ -309,19 +309,19 @@ def main():
src_iso = module.params['src_iso']
if not os.path.exists(src_iso):
module.fail_json(msg="ISO file %s does not exist." % src_iso)
module.fail_json(msg=f"ISO file {src_iso} does not exist.")
dest_iso = module.params['dest_iso']
dest_iso_dir = os.path.dirname(dest_iso)
if dest_iso_dir and not os.path.exists(dest_iso_dir):
module.fail_json(msg="The dest directory %s does not exist" % dest_iso_dir)
module.fail_json(msg=f"The dest directory {dest_iso_dir} does not exist")
delete_files_list = [s.strip() for s in module.params['delete_files']]
add_files_list = module.params['add_files']
if add_files_list:
for item in add_files_list:
if not os.path.exists(item['src_file']):
module.fail_json(msg="The file %s does not exist." % item['src_file'])
module.fail_json(msg=f"The file {item['src_file']} does not exist.")
result = dict(
src_iso=src_iso,

View file

@ -129,13 +129,13 @@ def main():
# When executable was provided and binary not found, warn user !
if module.params['executable'] is not None and not binary:
module.warn("Executable '%s' is not found on the system, trying to mount ISO instead." % executable)
module.warn(f"Executable '{executable}' is not found on the system, trying to mount ISO instead.")
if not os.path.exists(dest):
module.fail_json(msg="Directory '%s' does not exist" % dest)
module.fail_json(msg=f"Directory '{dest}' does not exist")
if not os.path.exists(os.path.dirname(image)):
module.fail_json(msg="ISO image '%s' does not exist" % image)
module.fail_json(msg=f"ISO image '{image}' does not exist")
result['files'] = []
extract_files = list(files)
@ -159,9 +159,9 @@ def main():
# Use 7zip when we have a binary, otherwise try to mount
if binary:
cmd = [binary, 'x', image, '-o%s' % tmp_dir]
cmd = [binary, 'x', image, f'-o{tmp_dir}']
if password:
cmd += ["-p%s" % password]
cmd += [f"-p{password}"]
cmd += extract_files
else:
cmd = [module.get_bin_path('mount'), '-o', 'loop,ro', image, tmp_dir]
@ -177,15 +177,15 @@ def main():
shutil.rmtree(tmp_dir)
if binary:
module.fail_json(msg="Failed to extract from ISO image '%s' to '%s'" % (image, tmp_dir), **result)
module.fail_json(msg=f"Failed to extract from ISO image '{image}' to '{tmp_dir}'", **result)
else:
module.fail_json(msg="Failed to mount ISO image '%s' to '%s', and we could not find executable '%s'." % (image, tmp_dir, executable), **result)
module.fail_json(msg=f"Failed to mount ISO image '{image}' to '{tmp_dir}', and we could not find executable '{executable}'.", **result)
try:
for f in extract_files:
tmp_src = os.path.join(tmp_dir, f)
if not os.path.exists(tmp_src):
module.fail_json(msg="Failed to extract '%s' from ISO image" % f, **result)
module.fail_json(msg=f"Failed to extract '{f}' from ISO image", **result)
src_checksum = module.sha1(tmp_src)