Skip to content
  1. Sep 07, 2021
    • Thomas Woerner's avatar
      IPAAnsibleModule: New staticethod member_error_handler · 917b3b62
      Thomas Woerner authored
      The staticmethod member_error_handler is handing the default member
      related failures that can occur for modules with member support.
      This can simply be enabled with fail_on_member_errors=True for
      execute_ipa_commands.
      
      An exception handler is also now usable with execute_ipa_commands. In
      addition to the the exception it is also getting the same user defined
      arguments that the result_handler is getting.
      
      handle_result has been renamed in result_handler and handle_result_user_args
      has been renamed to handlers_user_args.
      
      Additionally the errors list does not need to be defined in the module.
      The method execute_ipa_commands is doing this internally and is also
      adding error: error to handlers_user_args if the handler is having errors
      in the argspec and errors is not yet set in handlers_user_args.
      
      Tests have been added to make sure that no user args for the handler
      have been set without an own result or exception handler. Also the use of
      fail_on_member_errors together with a result_andler is leading to an
      error.
      917b3b62
  2. Sep 02, 2021
    • Thomas Woerner's avatar
      config: Use IPAAnsibleModule class · ed3dd3ea
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      ed3dd3ea
    • Thomas Woerner's avatar
      ansible_freeipa_module: Cleanup of unused functions and attributes · 3e98ed54
      Thomas Woerner authored
      Moved ipamodule_base_spec into IPAAnsibleModule.
      This simplifies to add addtitional base vars to derived classes without
      the need to dusplicae the code to extend argument_spec.
      
      Removed execute_api_command.
      This is not used anymore.
      
      Removed get_ipamodule_base_vars.
      This is not used anymore.
      
      Removed self.ipaadmin_* and self.ccache_* from IPAAnsibleModule.__init__
      These are not used and therefore can be removed.
      3e98ed54
    • Thomas Woerner's avatar
      ansible_freeipa_module: New execute_ipa_commands in IPAAnsibleModule · 55341a03
      Thomas Woerner authored
      execute_ipa_commands executes IPA API commands from the given command
      list. With the handle_result and handle_result_user_args it is possible
      to have a handling of the result return by the ipa commands for example
      to return passwords.
      
      Parameters
      
          commands: list of string tuple
              The list of commands in the form (name, command and args)
              For commands that do not require a 'name', None needs be
              used.
          handle_result: function
              The user function to handle results of the single commands
          handle_result_user_args: dict (user args mapping)
              The user args to pass to handle_result function
      
      Example (ipauser module)
      
          def handle_result(result, command, name, args, exit_args):
              if "random" in args and command in ["user_add", "user_mod"] \
                 and "randompassword" in result["result"]:
                  exit_args.setdefault(name, {})["randompassword"] = \
                      result["result"]["randompassword"]
      
          exit_args = {}
          changed = module.execute_ipa_commands(commands, handle_result,
                                                exit_args=exit_args)
      
          if len(names) == 1:
              ansible_module.exit_json(changed=changed,
                                       user=exit_args[names[0]])
          else:
              ansible_module.exit_json(changed=changed, user=exit_args)
      55341a03
    • Rafael Guterres Jeffman's avatar
      automountlocation: Use IPAAnsibleModule class · 706e1f5b
      Rafael Guterres Jeffman authored
      Use IPAAnsibleModule methods and ipamodule_base_docs ducument fragment.
      706e1f5b
    • Rafael Guterres Jeffman's avatar
      dnszone: Use IPAAnsibleModule class. · 21a48d59
      Rafael Guterres Jeffman authored
      Use IPAAnsibleModule methods and ipamodule_base_docs ducument fragment.
      21a48d59
    • Rafael Guterres Jeffman's avatar
      Make IPAAnsibleModule base class of FreeIPABaseModule. · 0c430d0a
      Rafael Guterres Jeffman authored
      By making IPAAnsibleModule the base class of FreeIPABaseModule, instead
      of AnsibleModule, some methods on FreeIPABaseModule can be removed and
      suport for commom parameters in modules using the older class can use
      the same commom parameters (ipaadmin_principal and ipaadmin_password)
      as the other parameters. This will also allow easier deprecation of
      FreeIPABaseModule, which is hard to maintain.
      
      To be able to use IPAAnsibleModule as the base class, it was moved
      within the file, to position before FreeIPABaseModule declaration.
      
      This patch also modifies IPAAnsibleModule by:
      
          * removing usage of `self` in methods not requiring it, turning
            the methods into @statimethod;
      
          * adding comments to all the methods in IPAAnsibleModule, which
            makes it easier to understand what the individual methods do,
            and what their parameters represent.
      0c430d0a
    • Thomas Woerner's avatar
      host: Use IPAAnsibleModule class · d356fa42
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      d356fa42
    • Thomas Woerner's avatar
      user: Use IPAAnsibleModule class · c2df7be2
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      c2df7be2
    • Thomas Woerner's avatar
      trust: Use IPAAnsibleModule class · c4fbd0d5
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      c4fbd0d5
    • Thomas Woerner's avatar
      sudorule: Use IPAAnsibleModule class · cb48d4b8
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      cb48d4b8
    • Thomas Woerner's avatar
      sudocmd: Use IPAAnsibleModule class · 7864adff
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      7864adff
    • Thomas Woerner's avatar
      sudocmdgroup: Use IPAAnsibleModule class · 09264767
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      09264767
    • Thomas Woerner's avatar
      service: Use IPAAnsibleModule class · 748f05d3
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      748f05d3
    • Thomas Woerner's avatar
      server: Use IPAAnsibleModule class · ab6097d1
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      ab6097d1
    • Thomas Woerner's avatar
      selfservice: Use IPAAnsibleModule class · 325ffb7b
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      325ffb7b
    • Thomas Woerner's avatar
      role: Use IPAAnsibleModule class · 954ae982
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      954ae982
    • Thomas Woerner's avatar
      privilege: Use IPAAnsibleModule class · ba72bd02
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      ba72bd02
    • Thomas Woerner's avatar
      permission: Use IPAAnsibleModule class · ce00f32d
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      ce00f32d
    • Thomas Woerner's avatar
      hostgroup: Use IPAAnsibleModule class · 91d8f5a6
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      91d8f5a6
    • Thomas Woerner's avatar
      hbacsvcgroup: Use IPAAnsibleModule class · 9d4572be
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      9d4572be
    • Thomas Woerner's avatar
      hbacsvc: Use IPAAnsibleModule class · 7d2bdd71
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      7d2bdd71
    • Thomas Woerner's avatar
      hbacrule: Use IPAAnsibleModule class · f87520d9
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      f87520d9
    • Thomas Woerner's avatar
      group: Use IPAAnsibleModule class · 31ee4f9b
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      31ee4f9b
    • Thomas Woerner's avatar
      dnsrecord: Use IPAAnsibleModule class · 7318302f
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      7318302f
    • Thomas Woerner's avatar
      forwardzone: Use IPAAnsibleModule class · a8045551
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      a8045551
    • Thomas Woerner's avatar
      dnsconfig: Use IPAAnsibleModule class · 97b47cc8
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      97b47cc8
    • Thomas Woerner's avatar
      delegation: Use IPAAnsibleModule class · c634cfd5
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      c634cfd5
    • Thomas Woerner's avatar
      vault: Use IPAAnsibleModule class · fc218878
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      fc218878
  3. Sep 01, 2021
    • Thomas Woerner's avatar
      topologysuffix: Use IPAAnsibleModule class · af0b782f
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      af0b782f
    • Thomas Woerner's avatar
      topologysegment: Use IPAAnsibleModule class · 5986de85
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      5986de85
    • Thomas Woerner's avatar
      pwpolicy: Use IPAAnsibleModule class · 683d1c97
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      683d1c97
    • Thomas Woerner's avatar
      automember: Use IPAAnsibleModule class · 7ff49265
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      7ff49265
    • Thomas Woerner's avatar
      location: Use IPAAnsibleModule class · 5636742b
      Thomas Woerner authored
      ipaadmin_variables are handled by IPAAnsibleModule,
      ansible_module.params_get is used to get the parameters and
      ansible_module.ipa_connect is used to simplify the module.
      5636742b
    • Thomas Woerner's avatar
      ansible_freeipa_module: New IPAAnsibleModule class · d01c42d7
      Thomas Woerner authored
      This class is an extended version of the Ansible Module that provides
      IPA specific methods to simplify module generation.
      
      Simple example:
      
          from ansible.module_utils.ansible_freeipa_module import \
              IPAAnsibleModule
      
          def main():
              ansible_module = IPAAnsibleModule(
                  argument_spec=dict(
                        name=dict(type="str", aliases=["cn"], default=None),
                        state=dict(type="str", default="present",
                                   choices=["present", "absent"]),
                  ),
              )
      
              # Get parameters
              name = ansible_module.params_get("name")
              state = ansible_module.params_get("state")
      
              # Connect to IPA API
              with ansible_module.ipa_connect():
      
                  # Execute command
                  if state == "present":
                      ansible_module.ipa_command(["command_add", name, {}])
                  else:
                      ansible_module.ipa_command(["command_del", name, {}])
      
              # Done
      
              ansible_module.exit_json(changed=True)
      
          if __name__ == "__main__":
              main()
      d01c42d7
    • Rafael Guterres Jeffman's avatar
      iparole: Add 'new_name' as an alias to 'rename'. · 9e69cec1
      Rafael Guterres Jeffman authored
      Modules that support `state: renamed` have `new_name` as an alias
      for the `rename` variable. This patch makes iparole consistent with
      other modules.
      9e69cec1
    • Rafael Guterres Jeffman's avatar
      pylint: Upgrade to version 2.10.2. · 928540fa
      Rafael Guterres Jeffman authored
      This PR sets pylint to version 2.10.2 in all linter actions, and
      fixes code in plugins so that this version new checks are either
      satisfied or ignored if needed.
      928540fa
  4. Aug 24, 2021
    • Thomas Woerner's avatar
      New ipamodule_base_vars · 7a665bdb
      Thomas Woerner authored
      There are common parameters in all modules like ipaadmin_principal and
      ipaadmin_password. As this list of common parameters will be extended
      soon, there is a need to reduce the code and documentation duplicates.
      
      A ModuleDocFragment is added to provide the module documentation for the
      common parameters. This is used in the modules with
      extends_documentation_fragment.
      
      ansible_freeipa_module has additional ipamodule_base_spec and
      get_ipamodule_base_vars. ipamodule_base_spec extends argument_spec in
      the module and get_ipamodule_base_vars is used to return a dict
      containing the common parameters.
      7a665bdb
  5. Aug 23, 2021
    • Rafael Guterres Jeffman's avatar
      dnszone: remove variable `serial`. · 9454bcaa
      Rafael Guterres Jeffman authored
      As of FreeIPA 4.9.7, setting SOA serial is deprecated, so this change
      removes support for setting this variable in ipadnszone module.
      9454bcaa
    • Thomas Woerner's avatar
      sudorule: Reduce addition and deletion of members to changed only · 8561e0bb
      Thomas Woerner authored
      Use gen_add_list and gen_intersection_list for host, hostgroup, user,
      group, allow_sudocmd, allow_sudocmdgroup, deny_sudocmd, deny_sudocmdgroup,
      sudooption, runasuser, runasgroup and res_find member handling.
      
      The functions are used to reduce the add lists to the new entries
      only and the delete lists to the entries that are in the user and
      the show list result.
      
      This enables to remove the ignores for "already a member" and
      "not a member" errors..
      8561e0bb
Loading