diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index a669ddecef23cd69f21ffc9ce564af4006aa9ddb..28d20c16f1930cb66868d5e4307c4aa10511bfe6 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -76,7 +76,7 @@ jobs: python-version: "3.x" - name: Run pylint run: | - pip install pylint==2.14.4 wrapt==1.14.0 + pip install pylint==2.17.2 pylint plugins roles --disable=import-error shellcheck: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 00d5b2fadce4ba5868f85efca2b49543e492e3bc..1450185807aea1e5c3b123c4ead88275f5625214 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -8,7 +8,7 @@ repos: pass_filenames: true files: \.(yaml|yml)$ exclude: /env[^/]*.(yaml|yml)$ - entry: >- + entry: |- env ANSIBLE_LIBRARY=./plugins/modules ANSIBLE_MODULE_UTILS=./plugins/module_utils @@ -21,12 +21,12 @@ repos: --parseable --nocolor - repo: https://github.com/adrienverge/yamllint.git - rev: v1.28.0 + rev: v1.32.0 hooks: - id: yamllint files: \.(yaml|yml)$ - repo: https://github.com/pycqa/flake8 - rev: 5.0.3 + rev: 6.0.0 hooks: - id: flake8 - repo: https://github.com/pycqa/pydocstyle @@ -34,7 +34,7 @@ repos: hooks: - id: pydocstyle - repo: https://github.com/pycqa/pylint - rev: v2.14.4 + rev: v2.17.2 hooks: - id: pylint args: diff --git a/plugins/modules/ipaautomountkey.py b/plugins/modules/ipaautomountkey.py index 5b172a2fc62a196cc9a5a9c4834e657d8f21b42a..d29422a11ec703494ba50facdbc3b965d38f8658 100644 --- a/plugins/modules/ipaautomountkey.py +++ b/plugins/modules/ipaautomountkey.py @@ -121,8 +121,7 @@ class AutomountKey(IPAAnsibleModule): resp = self.ipa_command("automountkey_show", location, args) except ipalib_errors.NotFound: return None - else: - return resp.get("result") + return resp.get("result") def check_ipa_params(self): invalid = [] diff --git a/plugins/modules/ipaautomountlocation.py b/plugins/modules/ipaautomountlocation.py index c2f82b354daa1b3af2fd9ea65cccdbf524aee397..f679f2fa49eeb9009b58feaee122606de011552c 100644 --- a/plugins/modules/ipaautomountlocation.py +++ b/plugins/modules/ipaautomountlocation.py @@ -92,8 +92,7 @@ class AutomountLocation(IPAAnsibleModule): ) except ipalib_errors.NotFound: return None - else: - return response.get("result", None) + return response.get("result", None) def check_ipa_params(self): if len(self.params_get("name")) == 0: diff --git a/plugins/modules/ipaautomountmap.py b/plugins/modules/ipaautomountmap.py index 668e887a313a5936101e787bf6fa1cff0e925d81..bf0c438e360eab2915d26e4d1537b0bdc203697b 100644 --- a/plugins/modules/ipaautomountmap.py +++ b/plugins/modules/ipaautomountmap.py @@ -126,8 +126,7 @@ class AutomountMap(IPAAnsibleModule): ) except Exception: # pylint: disable=broad-except return None - else: - return response["result"] + return response["result"] def get_indirect_map_keys(self, location, name): """Check if 'name' is an indirect map for 'parentmap'.""" diff --git a/plugins/modules/ipaconfig.py b/plugins/modules/ipaconfig.py index 37c06fad2cd825c253e9844cfab68e7988d07193..a32376cc425886a291ff03b6ca62429f0e803f38 100644 --- a/plugins/modules/ipaconfig.py +++ b/plugins/modules/ipaconfig.py @@ -358,8 +358,7 @@ def get_netbios_name(module): _result = module.ipa_command_no_name("trustconfig_show", {"all": True}) except Exception: # pylint: disable=broad-except return None - else: - return _result["result"]["ipantflatname"][0] + return _result["result"]["ipantflatname"][0] def is_enable_sid(module): @@ -477,7 +476,7 @@ def main(): params = {} for x in field_map: val = ansible_module.params_get( - x, allow_empty_string=(x in allow_empty_string)) + x, allow_empty_string=x in allow_empty_string) if val is not None: params[field_map.get(x, x)] = val @@ -620,7 +619,7 @@ def main(): # boolean values, so we need to convert it to str # for comparison. # See: https://github.com/freeipa/freeipa/pull/6294 - exit_args[k] = (str(value[0]).upper() == "TRUE") + exit_args[k] = str(value[0]).upper() == "TRUE" else: if arg_type not in type_map: raise ValueError( diff --git a/plugins/modules/ipadelegation.py b/plugins/modules/ipadelegation.py index c892b7df3bb387e9f29941fc30823288bc4d1aa1..e30d3d7008d31322f4e7ce71f01c6a8bd21d3ceb 100644 --- a/plugins/modules/ipadelegation.py +++ b/plugins/modules/ipadelegation.py @@ -134,8 +134,7 @@ def find_delegation(module, name): except Exception: # pylint: disable=broad-except # An exception is raised if delegation name is not found. return None - else: - return _result["result"] + return _result["result"] def gen_args(permission, attribute, membergroup, group): diff --git a/plugins/modules/ipadnsforwardzone.py b/plugins/modules/ipadnsforwardzone.py index 87ed9826b61b633ca2ee42e53e1bd775b53aa0b7..93a31f5ec0eb70e247868f3eb381cffd1f7a520d 100644 --- a/plugins/modules/ipadnsforwardzone.py +++ b/plugins/modules/ipadnsforwardzone.py @@ -258,7 +258,7 @@ def main(): invalid = [ "forwarders", "forwardpolicy", "skip_overlap_check", "permission" ] - wants_enable = (state == "enabled") + wants_enable = state == "enabled" if operation == "del": invalid = [ diff --git a/plugins/modules/ipadnsrecord.py b/plugins/modules/ipadnsrecord.py index 75ae4492f4a9c01d067f607c4799a2c38e2dbf23..f027791c8aeac917a12c65ceda8ef4ae96020eae 100644 --- a/plugins/modules/ipadnsrecord.py +++ b/plugins/modules/ipadnsrecord.py @@ -1453,7 +1453,7 @@ def define_commands_for_present_state(module, zone_name, entry, res_find): else: # Create reverse records for existing records for ipv in ['a', 'aaaa']: - record = ('%srecord' % ipv) + record = '%srecord' % ipv if record in args and ('%s_extra_create_reverse' % ipv) in args: cmds = create_reverse_ip_record( module, zone_name, name, args[record]) diff --git a/plugins/modules/ipaidrange.py b/plugins/modules/ipaidrange.py index 5071e4809d5d9c335ec4960247e6914a6c610923..5d70adbcf8995bcf36452c73e1a5762dc0c67091 100644 --- a/plugins/modules/ipaidrange.py +++ b/plugins/modules/ipaidrange.py @@ -157,8 +157,7 @@ def find_idrange(module, name): except Exception: # pylint: disable=broad-except # An exception is raised if idrange name is not found. return None - else: - return _result["result"] + return _result["result"] def gen_args( diff --git a/plugins/modules/ipaidview.py b/plugins/modules/ipaidview.py index b6b7a44dcc3584067a44395a91b6729bb4d076ed..b7065155ee6e2667205f1a6f8a6dd719620d4e30 100644 --- a/plugins/modules/ipaidview.py +++ b/plugins/modules/ipaidview.py @@ -141,8 +141,7 @@ def find_idview(module, name): except Exception: # pylint: disable=broad-except # An exception is raised if idview name is not found. return None - else: - return _result["result"] + return _result["result"] def gen_args(description, domain_resolution_order): diff --git a/plugins/modules/ipalocation.py b/plugins/modules/ipalocation.py index d941658c0ae2adc2fe767de9af4f4d2df9bad49e..667e77b280730a5fcbddb3539010c93758ff7b6d 100644 --- a/plugins/modules/ipalocation.py +++ b/plugins/modules/ipalocation.py @@ -86,8 +86,7 @@ def find_location(module, name): except Exception: # pylint: disable=broad-except # An exception is raised if location name is not found. return None - else: - return _result["result"] + return _result["result"] def gen_args(description): diff --git a/plugins/modules/ipapermission.py b/plugins/modules/ipapermission.py index 622b1cc358a171aabe651cee1000d483d0691105..1ed25722a233379828ace389c3670af4515cac73 100644 --- a/plugins/modules/ipapermission.py +++ b/plugins/modules/ipapermission.py @@ -164,8 +164,7 @@ def find_permission(module, name): except Exception: # pylint: disable=broad-except # An exception is raised if permission name is not found. return None - else: - return _result["result"] + return _result["result"] def gen_args(right, attrs, bindtype, subtree, diff --git a/plugins/modules/ipaprivilege.py b/plugins/modules/ipaprivilege.py index 4fb810bdb43f1780ba5a52a46c4a1957fedaaf7a..60033bd99e597f33dcebff5f8d1961d018399300 100644 --- a/plugins/modules/ipaprivilege.py +++ b/plugins/modules/ipaprivilege.py @@ -138,8 +138,7 @@ def find_privilege(module, name): except Exception: # pylint: disable=broad-except # An exception is raised if privilege name is not found. return None - else: - return _result["result"] + return _result["result"] def main(): diff --git a/plugins/modules/iparole.py b/plugins/modules/iparole.py index 9952dd7db00ece0e62366e9b00cde6e4d1cd1a76..2e876268026e9ae11e8a6eda293cc166cd4bd504 100644 --- a/plugins/modules/iparole.py +++ b/plugins/modules/iparole.py @@ -143,8 +143,7 @@ def find_role(module, name): except Exception: # pylint: disable=broad-except # An exception is raised if role name is not found. return None - else: - return _result["result"] + return _result["result"] def gen_args(module): diff --git a/plugins/modules/ipaselfservice.py b/plugins/modules/ipaselfservice.py index 52cd6e278ed63a152c4841d5cd401819ddf80b6a..a7480ad6734932b843781ee556372852acb5f0d6 100644 --- a/plugins/modules/ipaselfservice.py +++ b/plugins/modules/ipaselfservice.py @@ -123,8 +123,7 @@ def find_selfservice(module, name): except Exception: # pylint: disable=broad-except # An exception is raised if selfservice name is not found. return None - else: - return _result["result"] + return _result["result"] def gen_args(permission, attribute): diff --git a/plugins/modules/ipaserver.py b/plugins/modules/ipaserver.py index 0d9def27de20fe21d4279e7a864551d6dc9b9521..35755ae1355c4e62e9a1491452ef91ebfa3f9963 100644 --- a/plugins/modules/ipaserver.py +++ b/plugins/modules/ipaserver.py @@ -202,8 +202,7 @@ def find_server(module, name): except Exception: # pylint: disable=broad-except # An exception is raised if server name is not found. return None - else: - return _result["result"] + return _result["result"] def server_role_status(module, name): @@ -218,8 +217,7 @@ def server_role_status(module, name): except Exception: # pylint: disable=broad-except # An exception is raised if server name is not found. return None - else: - return _result["result"][0] + return _result["result"][0] def gen_args(location, service_weight, no_members, delete_continue, diff --git a/plugins/modules/ipaservice.py b/plugins/modules/ipaservice.py index 0409b0b770b7f8c48d2c684a2036d986eca3c614..d0f560989fe2a875c128bc66549cde7f1378340c 100644 --- a/plugins/modules/ipaservice.py +++ b/plugins/modules/ipaservice.py @@ -414,15 +414,15 @@ def gen_args(pac_type, auth_ind, skip_host_check, force, requires_pre_auth, if auth_ind is not None: _args['krbprincipalauthind'] = auth_ind if skip_host_check is not None: - _args['skip_host_check'] = (skip_host_check) + _args['skip_host_check'] = skip_host_check if force is not None: - _args['force'] = (force) + _args['force'] = force if requires_pre_auth is not None: - _args['ipakrbrequirespreauth'] = (requires_pre_auth) + _args['ipakrbrequirespreauth'] = requires_pre_auth if ok_as_delegate is not None: - _args['ipakrbokasdelegate'] = (ok_as_delegate) + _args['ipakrbokasdelegate'] = ok_as_delegate if ok_to_auth_as_delegate is not None: - _args['ipakrboktoauthasdelegate'] = (ok_to_auth_as_delegate) + _args['ipakrboktoauthasdelegate'] = ok_to_auth_as_delegate return _args @@ -433,9 +433,9 @@ def gen_args_smb(netbiosname, ok_as_delegate, ok_to_auth_as_delegate): if netbiosname is not None: _args['ipantflatname'] = netbiosname if ok_as_delegate is not None: - _args['ipakrbokasdelegate'] = (ok_as_delegate) + _args['ipakrbokasdelegate'] = ok_as_delegate if ok_to_auth_as_delegate is not None: - _args['ipakrboktoauthasdelegate'] = (ok_to_auth_as_delegate) + _args['ipakrboktoauthasdelegate'] = ok_to_auth_as_delegate return _args diff --git a/plugins/modules/ipaservicedelegationrule.py b/plugins/modules/ipaservicedelegationrule.py index 35214b05fba3b31d23c840692d2c16a7c827d31d..4b9e3435bb170a2fb1779e1a24035a22cc82186d 100644 --- a/plugins/modules/ipaservicedelegationrule.py +++ b/plugins/modules/ipaservicedelegationrule.py @@ -145,8 +145,7 @@ def find_servicedelegationrule(module, name): except Exception: # pylint: disable=broad-except # An exception is raised if servicedelegationrule name is not found. return None - else: - return _result["result"] + return _result["result"] def check_targets(module, targets): diff --git a/plugins/modules/ipaservicedelegationtarget.py b/plugins/modules/ipaservicedelegationtarget.py index 9c3c990f72f824712f1c17cc6d6624a1f4c92325..857083145f323a4e80f62b1a26ba5948aa5d99d2 100644 --- a/plugins/modules/ipaservicedelegationtarget.py +++ b/plugins/modules/ipaservicedelegationtarget.py @@ -121,8 +121,7 @@ def find_servicedelegationtarget(module, name): except Exception: # pylint: disable=broad-except # An exception is raised if servicedelegationtarget name is not found. return None - else: - return _result["result"] + return _result["result"] def main(): diff --git a/plugins/modules/ipasudocmdgroup.py b/plugins/modules/ipasudocmdgroup.py index d6154598dca5e73cefc02e48898d4b317bcdd1c8..c9baf6c482f5262db396ead6c8d91fde4e1620ba 100644 --- a/plugins/modules/ipasudocmdgroup.py +++ b/plugins/modules/ipasudocmdgroup.py @@ -122,8 +122,7 @@ def find_sudocmdgroup(module, name): _result = module.ipa_command("sudocmdgroup_show", name, args) except ipalib_errors.NotFound: return None - else: - return _result["result"] + return _result["result"] def gen_args(description, nomembers): diff --git a/plugins/modules/ipavault.py b/plugins/modules/ipavault.py index b3a278c90e83f345c61e3a4dcb7c5856e593f9e5..5a6dddb2e06bc0060a4995d392f055b52cdeee70 100644 --- a/plugins/modules/ipavault.py +++ b/plugins/modules/ipavault.py @@ -977,12 +977,14 @@ def main(): changed = 'Archived data into' in result['summary'] elif command == 'vault_retrieve': if 'result' not in result: + # pylint: disable=W0012,broad-exception-raised raise Exception("No result obtained.") if "data" in result["result"]: data_return = exit_args.setdefault("vault", {}) data_return["data"] = result["result"]["data"] else: if not datafile_out: + # pylint: disable=W0012,broad-exception-raised raise Exception("No data retrieved.") changed = False else: @@ -993,7 +995,7 @@ def main(): changed = True except ipalib_errors.EmptyModlist: result = {} - except Exception as exception: + except Exception as exception: # pylint: disable=broad-except ansible_module.fail_json( msg="%s: %s: %s" % (command, name, str(exception))) diff --git a/requirements-dev.txt b/requirements-dev.txt index 750f7f04973419703a57b0b414e3ef6ba30006e8..501c00793ecc8d19e00444201cc9a14991f7d71d 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,10 +1,10 @@ -r requirements-tests.txt ipdb==0.13.4 pre-commit==2.20.0 -flake8==5.0.3 -flake8-bugbear==22.10.27 -pylint==2.14.4 -wrapt == 1.14.0 -pydocstyle==6.0.0 -yamllint==1.28.0 +flake8==6.0.0 +flake8-bugbear +pylint==2.17.2 +wrapt==1.14.1 +pydocstyle==6.3.0 +yamllint==1.32.0 ansible-lint diff --git a/roles/ipaclient/module_utils/ansible_ipa_client.py b/roles/ipaclient/module_utils/ansible_ipa_client.py index 3116c7de34e0f0c92d41987c5d77314e38c04dae..5853f6ba96586ff7bc4358ce1fa2c3cff74503f0 100644 --- a/roles/ipaclient/module_utils/ansible_ipa_client.py +++ b/roles/ipaclient/module_utils/ansible_ipa_client.py @@ -307,8 +307,7 @@ try: else: # IPA version < 4.4 - - raise Exception("freeipa version '%s' is too old" % VERSION) + raise RuntimeError("freeipa version '%s' is too old" % VERSION) except ImportError as _err: ANSIBLE_IPA_CLIENT_MODULE_IMPORT_ERROR = str(_err) diff --git a/roles/ipareplica/module_utils/ansible_ipa_replica.py b/roles/ipareplica/module_utils/ansible_ipa_replica.py index fb168010307de9828d3b6c63842f5aa52d60192f..76b7be2db7f29ab2a0e4eee31d5a6babaa45ca57 100644 --- a/roles/ipareplica/module_utils/ansible_ipa_replica.py +++ b/roles/ipareplica/module_utils/ansible_ipa_replica.py @@ -171,8 +171,7 @@ try: else: # IPA version < 4.6 - - raise Exception("freeipa version '%s' is too old" % VERSION) + raise RuntimeError("freeipa version '%s' is too old" % VERSION) except ImportError as _err: ANSIBLE_IPA_REPLICA_MODULE_IMPORT_ERROR = str(_err) diff --git a/roles/ipaserver/module_utils/ansible_ipa_server.py b/roles/ipaserver/module_utils/ansible_ipa_server.py index 80e2042cc5a894db3c1d5507ecaf028f18b99090..8bdb048bf7633684e28d0aee8465a24136254376 100644 --- a/roles/ipaserver/module_utils/ansible_ipa_server.py +++ b/roles/ipaserver/module_utils/ansible_ipa_server.py @@ -212,8 +212,7 @@ try: else: # IPA version < 4.5 - - raise Exception("freeipa version '%s' is too old" % VERSION) + raise RuntimeError("freeipa version '%s' is too old" % VERSION) except ImportError as _err: ANSIBLE_IPA_SERVER_MODULE_IMPORT_ERROR = str(_err) diff --git a/setup.cfg b/setup.cfg index 4fe542423e7b8cc0c5e297d4f4a54cbd4218ba87..95dc458d9794c204b950cfa453a609fc03dee608 100644 --- a/setup.cfg +++ b/setup.cfg @@ -55,7 +55,8 @@ disable = broad-except, too-many-branches, too-many-locals, - fixme + fixme, + use-dict-literal [pylint.BASIC] good-names = diff --git a/tests/pytests/conftest.py b/tests/pytests/conftest.py index e42d5f4ce8197c1749cf2e828b64169330243fb4..40cdbc67c514db5eff974a40d9ee5f168dc712e0 100644 --- a/tests/pytests/conftest.py +++ b/tests/pytests/conftest.py @@ -31,7 +31,7 @@ def set_env_if_not_set(envvar, value): os.environ[envvar] = value -def pytest_configure(config): +def pytest_configure(config): # pylint: disable=unused-argument test_dir = os.getenv("TWD") if not test_dir: return diff --git a/utils/facts.py b/utils/facts.py index 368712348646699087c2cd691f13800cd854bc13..ff7efd34c5bc27abf75aa4e9ef2277cbe57891a6 100644 --- a/utils/facts.py +++ b/utils/facts.py @@ -1,10 +1,10 @@ import os -def get_roles(dir): +def get_roles(directory): roles = [] - _rolesdir = "%s/roles/" % dir + _rolesdir = "%s/roles/" % directory for _role in os.listdir(_rolesdir): _roledir = "%s/%s" % (_rolesdir, _role) if not os.path.isdir(_roledir) or \ @@ -16,19 +16,19 @@ def get_roles(dir): return sorted(roles) -def get_modules(dir): +def get_modules(directory): management_modules = [] roles_modules = [] - for root, _dirs, files in os.walk(dir): - if not root.startswith("%s/plugins/" % dir) and \ - not root.startswith("%s/roles/" % dir): + for root, _dirs, files in os.walk(directory): + if not root.startswith("%s/plugins/" % directory) and \ + not root.startswith("%s/roles/" % directory): continue for _file in files: if _file.endswith(".py"): - if root == "%s/plugins/modules" % dir: + if root == "%s/plugins/modules" % directory: management_modules.append(_file[:-3]) - elif root.startswith("%s/roles/" % dir): + elif root.startswith("%s/roles/" % directory): if root.endswith("/library"): roles_modules.append(_file[:-3]) diff --git a/utils/get_test_modules.py b/utils/get_test_modules.py index cb20e0d65eebe1cdebffb4543391829b69bd0366..2f83176e34e75a00599f43e33c749c5165a153a3 100644 --- a/utils/get_test_modules.py +++ b/utils/get_test_modules.py @@ -62,8 +62,7 @@ def get_plugins_from_playbook(playbook): return [] except yaml.parser.ParserError: # If not a YAML/JSON file. return [] - else: - return data if data else [] + return data if data else [] data = load_playbook(playbook) task_blocks = [t.get("tasks", []) if "tasks" in t else [] for t in data] diff --git a/utils/templates/ipamodule+member.py.in b/utils/templates/ipamodule+member.py.in index 3d34d77b451005eeb0490f7b40188c1795d2eab2..daa7fdd49b3d8a51658ed129a49df236c8b16781 100644 --- a/utils/templates/ipamodule+member.py.in +++ b/utils/templates/ipamodule+member.py.in @@ -127,8 +127,7 @@ def find_$name(module, name): except Exception: # pylint: disable=broad-except # An exception is raised if $name name is not found. return None - else: - return _result["result"] + return _result["result"] def gen_args(PARAMETER1): diff --git a/utils/templates/ipamodule.py.in b/utils/templates/ipamodule.py.in index 3b1bf1e8d9f539b0d26559bf2396191f5f4ba065..0dc282dd6baf66fde262844d25b37b029c11e278 100644 --- a/utils/templates/ipamodule.py.in +++ b/utils/templates/ipamodule.py.in @@ -103,8 +103,7 @@ def find_$name(module, name): except Exception: # pylint: disable=broad-except # An exception is raised if $name name is not found. return None - else: - return _result["result"] + return _result["result"] def gen_args(PARAMETER1, PARAMETER2):