From 96d5e6e50e972ae1bfc61cf1fb71c0738230c213 Mon Sep 17 00:00:00 2001 From: Shubham Singh Sugara <37795429+shubhamsugara22@users.noreply.github.com> Date: Mon, 26 Aug 2024 23:39:19 +0530 Subject: [PATCH] copr: add includepkgs functionality (#8779) * Limit package for Copr using includepkgs * Limit package for Copr using includepkgs * Limit package for Copr using includepkgs * Limit package for Copr using includepkgs * Limit package for Copr using includepkgs * Added changes in copr module * Excludepkgs parameter add * Update module and params to handle a list + Docs updated * Update module and params to handle a list + Docs updated --- .../8738-limit-packages-for-copr.yml | 2 ++ plugins/modules/copr.py | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 changelogs/fragments/8738-limit-packages-for-copr.yml diff --git a/changelogs/fragments/8738-limit-packages-for-copr.yml b/changelogs/fragments/8738-limit-packages-for-copr.yml new file mode 100644 index 0000000000..0e49cc5cd9 --- /dev/null +++ b/changelogs/fragments/8738-limit-packages-for-copr.yml @@ -0,0 +1,2 @@ +minor_changes: + - copr - Added ``includepkgs`` and ``excludepkgs`` parameters to limit the list of packages fetched or excluded from the repository(https://github.com/ansible-collections/community.general/pull/8779). \ No newline at end of file diff --git a/plugins/modules/copr.py b/plugins/modules/copr.py index 157a6c1605..809064114a 100644 --- a/plugins/modules/copr.py +++ b/plugins/modules/copr.py @@ -52,6 +52,18 @@ options: for example V(epel-7-x86_64). Default chroot is determined by the operating system, version of the operating system, and architecture on which the module is run. type: str + includepkgs: + description: List of packages to include. + required: false + type: list + elements: str + version_added: 9.4.0 + excludepkgs: + description: List of packages to exclude. + required: false + type: list + elements: str + version_added: 9.4.0 """ EXAMPLES = r""" @@ -255,6 +267,12 @@ class CoprModule(object): """ if not repo_content: repo_content = self._download_repo_info() + if self.ansible_module.params["includepkgs"]: + includepkgs_value = ','.join(self.ansible_module.params['includepkgs']) + repo_content = repo_content.rstrip('\n') + '\nincludepkgs={0}\n'.format(includepkgs_value) + if self.ansible_module.params["excludepkgs"]: + excludepkgs_value = ','.join(self.ansible_module.params['excludepkgs']) + repo_content = repo_content.rstrip('\n') + '\nexcludepkgs={0}\n'.format(excludepkgs_value) if self._compare_repo_content(repo_filename_path, repo_content): return False if not self.check_mode: @@ -470,6 +488,8 @@ def run_module(): name=dict(type="str", required=True), state=dict(type="str", choices=["enabled", "disabled", "absent"], default="enabled"), chroot=dict(type="str"), + includepkgs=dict(type='list', elements="str", required=False), + excludepkgs=dict(type='list', elements="str", required=False), ) module = AnsibleModule(argument_spec=module_args, supports_check_mode=True) params = module.params