From 0cfecf3b90e2559f6948254e6edb323c2a48c1e0 Mon Sep 17 00:00:00 2001 From: Michael Sekania Date: Wed, 21 Feb 2024 23:26:47 +0100 Subject: [PATCH 01/14] fix: folder title treatment --- plugins/modules/folder.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/modules/folder.py b/plugins/modules/folder.py index ea2500b79..8a50d5fc2 100644 --- a/plugins/modules/folder.py +++ b/plugins/modules/folder.py @@ -31,7 +31,7 @@ required: true type: str name: - description: The name of your folder. If omitted defaults to the folder name. + description: The name (title) of your folder. If omitted defaults to the folder-name from path. type: str aliases: [title] attributes: @@ -220,7 +220,11 @@ def __init__(self, module): (self.desired["parent"], self.desired["name"]) = self._normalize_path( self.params.get("path") ) - self.desired["title"] = self.params.get("title", self.desired["name"]) + + if self.params.get("title"): + self.desired["title"] = self.params.get("name") + else: + self.desired["title"] = self.desired.get("name") for key in FOLDER: if self.params.get(key): From 8b8392b7bbfdc2391bb3409e4db54655111e7ee4 Mon Sep 17 00:00:00 2001 From: Michael Sekania Date: Thu, 22 Feb 2024 10:00:34 +0100 Subject: [PATCH 02/14] extend: test suite --- .../integration/targets/folder/tasks/test.yml | 68 +++++++++++++++++++ .../integration/targets/folder/vars/main.yml | 10 +++ 2 files changed, 78 insertions(+) diff --git a/tests/integration/targets/folder/tasks/test.yml b/tests/integration/targets/folder/tasks/test.yml index 65eb9016f..f07b19597 100644 --- a/tests/integration/targets/folder/tasks/test.yml +++ b/tests/integration/targets/folder/tasks/test.yml @@ -158,3 +158,71 @@ - "{{ outer_item.site }}" delegate_to: localhost run_once: true # noqa run-once[task] + +- name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Create folders for defaults test." + folder: + server_url: "{{ checkmk_var_server_url }}" + site: "{{ outer_item.site }}" + automation_user: "{{ checkmk_var_automation_user }}" + automation_secret: "{{ checkmk_var_automation_secret }}" + path: "{{ item.path }}" + name: "{{ item.name | default(omit) }}" + state: "present" + loop: "{{ checkmk_var_folders_defaults_test }}" + delegate_to: localhost + run_once: true # noqa run-once[task] + +- name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Activate." + activation: + server_url: "{{ checkmk_var_server_url }}" + site: "{{ outer_item.site }}" + automation_user: "{{ checkmk_var_automation_user }}" + automation_secret: "{{ checkmk_var_automation_secret }}" + force_foreign_changes: true + sites: + - "{{ outer_item.site }}" + delegate_to: localhost + run_once: true # noqa run-once[task] + +- name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Verify created folders." + ansible.builtin.assert: + that: "results.title == item.verify_name" + vars: + results: "{{ lookup('checkmk.general.folder', + item.path, + server_url=checkmk_var_server_url, + site=outer_item.site, + validate_certs=False, + automation_user=checkmk_var_automation_user, + automation_secret=checkmk_var_automation_secret) + }}" + loop: "{{ checkmk_var_folders_defaults_test }}" + fail_msg: "Creted folders title does not match to the expected one!" + delegate_to: localhost + run_once: true # noqa run-once[task] + +- name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Delete folders." + folder: + server_url: "{{ checkmk_var_server_url }}" + site: "{{ outer_item.site }}" + automation_user: "{{ checkmk_var_automation_user }}" + automation_secret: "{{ checkmk_var_automation_secret }}" + path: "{{ item.path }}" + name: "{{ item.name | default(omit) }}" + state: "absent" + loop: "{{ checkmk_var_folders_defaults_test }}" + delegate_to: localhost + run_once: true # noqa run-once[task] + loop: "{{ checkmk_var_folders }}" + +- name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Activate." + activation: + server_url: "{{ checkmk_var_server_url }}" + site: "{{ outer_item.site }}" + automation_user: "{{ checkmk_var_automation_user }}" + automation_secret: "{{ checkmk_var_automation_secret }}" + force_foreign_changes: true + sites: + - "{{ outer_item.site }}" + delegate_to: localhost + run_once: true # noqa run-once[task] diff --git a/tests/integration/targets/folder/vars/main.yml b/tests/integration/targets/folder/vars/main.yml index 30d015abd..958cea01b 100644 --- a/tests/integration/targets/folder/vars/main.yml +++ b/tests/integration/targets/folder/vars/main.yml @@ -35,3 +35,13 @@ checkmk_folder_attr_test: attributes: tag_criticality: "test" tag_networking: "dmz" + +checkmk_var_folders_defaults_test: + - path: /foo + verify_name: "foo" + - path: /foo/bar + name: Bar + verify_name: "Bar" + - path: /foo/bar/tresure + verify_name: "treasure" + From d67e0213457999f4b0680a793bcde905f24da817 Mon Sep 17 00:00:00 2001 From: Michael Sekania Date: Thu, 22 Feb 2024 10:06:41 +0100 Subject: [PATCH 03/14] extend: test suite --- tests/integration/targets/folder/tasks/test.yml | 1 - tests/integration/targets/folder/vars/main.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/tests/integration/targets/folder/tasks/test.yml b/tests/integration/targets/folder/tasks/test.yml index f07b19597..afbff5114 100644 --- a/tests/integration/targets/folder/tasks/test.yml +++ b/tests/integration/targets/folder/tasks/test.yml @@ -213,7 +213,6 @@ loop: "{{ checkmk_var_folders_defaults_test }}" delegate_to: localhost run_once: true # noqa run-once[task] - loop: "{{ checkmk_var_folders }}" - name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Activate." activation: diff --git a/tests/integration/targets/folder/vars/main.yml b/tests/integration/targets/folder/vars/main.yml index 958cea01b..8e9503e33 100644 --- a/tests/integration/targets/folder/vars/main.yml +++ b/tests/integration/targets/folder/vars/main.yml @@ -44,4 +44,3 @@ checkmk_var_folders_defaults_test: verify_name: "Bar" - path: /foo/bar/tresure verify_name: "treasure" - From 3533228c8fdc39dc68ee304177c5f22c21a08f6a Mon Sep 17 00:00:00 2001 From: Michael Sekania Date: Thu, 22 Feb 2024 10:15:38 +0100 Subject: [PATCH 04/14] fix: --- tests/integration/targets/folder/tasks/test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/integration/targets/folder/tasks/test.yml b/tests/integration/targets/folder/tasks/test.yml index afbff5114..d667103ba 100644 --- a/tests/integration/targets/folder/tasks/test.yml +++ b/tests/integration/targets/folder/tasks/test.yml @@ -197,7 +197,6 @@ automation_secret=checkmk_var_automation_secret) }}" loop: "{{ checkmk_var_folders_defaults_test }}" - fail_msg: "Creted folders title does not match to the expected one!" delegate_to: localhost run_once: true # noqa run-once[task] From f7a74a2c20a0f33c7d7fbd2431a627c2513374f4 Mon Sep 17 00:00:00 2001 From: Michael Sekania Date: Thu, 22 Feb 2024 10:40:27 +0100 Subject: [PATCH 05/14] fix: --- tests/integration/targets/folder/tasks/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/targets/folder/tasks/test.yml b/tests/integration/targets/folder/tasks/test.yml index d667103ba..dd649b40e 100644 --- a/tests/integration/targets/folder/tasks/test.yml +++ b/tests/integration/targets/folder/tasks/test.yml @@ -186,7 +186,7 @@ - name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Verify created folders." ansible.builtin.assert: - that: "results.title == item.verify_name" + that: "results.name == item.verify_name" vars: results: "{{ lookup('checkmk.general.folder', item.path, From 127864682e7910ea0f313a925a33fb8983ea0158 Mon Sep 17 00:00:00 2001 From: Michael Sekania Date: Thu, 22 Feb 2024 11:38:47 +0100 Subject: [PATCH 06/14] fix: with folders lookup --- tests/integration/targets/folder/tasks/test.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/integration/targets/folder/tasks/test.yml b/tests/integration/targets/folder/tasks/test.yml index dd649b40e..d95b2d249 100644 --- a/tests/integration/targets/folder/tasks/test.yml +++ b/tests/integration/targets/folder/tasks/test.yml @@ -186,16 +186,17 @@ - name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Verify created folders." ansible.builtin.assert: - that: "results.name == item.verify_name" + that: "folder_title[item.path | regex_replace('/', '~')] == item.verify_name" vars: - results: "{{ lookup('checkmk.general.folder', - item.path, + results: "{{ lookup('checkmk.general.folders', + '~', server_url=checkmk_var_server_url, site=outer_item.site, validate_certs=False, automation_user=checkmk_var_automation_user, automation_secret=checkmk_var_automation_secret) }}" + folder_title: "{{ dict((results | map(attribute='id')) | zip(results | map(attribute='title'))) }}" loop: "{{ checkmk_var_folders_defaults_test }}" delegate_to: localhost run_once: true # noqa run-once[task] From c5ed153ed836bb83079b855ba9d0f9e25dab3b8c Mon Sep 17 00:00:00 2001 From: Michael Sekania Date: Thu, 22 Feb 2024 11:53:22 +0100 Subject: [PATCH 07/14] fix: add hack --- tests/integration/targets/folder/tasks/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/targets/folder/tasks/test.yml b/tests/integration/targets/folder/tasks/test.yml index d95b2d249..d297f7a7c 100644 --- a/tests/integration/targets/folder/tasks/test.yml +++ b/tests/integration/targets/folder/tasks/test.yml @@ -186,7 +186,7 @@ - name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Verify created folders." ansible.builtin.assert: - that: "folder_title[item.path | regex_replace('/', '~')] == item.verify_name" + that: "folder_title['~' + (item.path | regex_replace('/', '~') | split('~') | last)] == item.verify_name" vars: results: "{{ lookup('checkmk.general.folders', '~', From 2f2ec07d390e90515636aed28b265c46b8b37c4f Mon Sep 17 00:00:00 2001 From: Michael Sekania Date: Thu, 22 Feb 2024 13:48:00 +0100 Subject: [PATCH 08/14] fix: --- tests/integration/targets/folder/tasks/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/integration/targets/folder/tasks/test.yml b/tests/integration/targets/folder/tasks/test.yml index d297f7a7c..dfc72cd4f 100644 --- a/tests/integration/targets/folder/tasks/test.yml +++ b/tests/integration/targets/folder/tasks/test.yml @@ -186,7 +186,7 @@ - name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Verify created folders." ansible.builtin.assert: - that: "folder_title['~' + (item.path | regex_replace('/', '~') | split('~') | last)] == item.verify_name" + that: "folder_title[item.path] == item.verify_name" vars: results: "{{ lookup('checkmk.general.folders', '~', @@ -196,7 +196,7 @@ automation_user=checkmk_var_automation_user, automation_secret=checkmk_var_automation_secret) }}" - folder_title: "{{ dict((results | map(attribute='id')) | zip(results | map(attribute='title'))) }}" + folder_title: "{{ dict((results | map(attribute='id') | map('regex_replace', '/', '~')) | zip(results | map(attribute='title'))) }}" loop: "{{ checkmk_var_folders_defaults_test }}" delegate_to: localhost run_once: true # noqa run-once[task] From aab269b6443117dfb9dea31e055df6051c1df624 Mon Sep 17 00:00:00 2001 From: Michael Sekania Date: Thu, 22 Feb 2024 13:54:32 +0100 Subject: [PATCH 09/14] fix: --- tests/integration/targets/folder/tasks/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration/targets/folder/tasks/test.yml b/tests/integration/targets/folder/tasks/test.yml index dfc72cd4f..905b6f99d 100644 --- a/tests/integration/targets/folder/tasks/test.yml +++ b/tests/integration/targets/folder/tasks/test.yml @@ -186,7 +186,7 @@ - name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Verify created folders." ansible.builtin.assert: - that: "folder_title[item.path] == item.verify_name" + that: "folder_title[item.path | regex_replace('/', '~') ] == item.verify_name" vars: results: "{{ lookup('checkmk.general.folders', '~', From 29f58119980f0efaeb169488af657fd3c7f34550 Mon Sep 17 00:00:00 2001 From: Michael Sekania Date: Thu, 22 Feb 2024 14:00:53 +0100 Subject: [PATCH 10/14] fix: logic --- tests/integration/targets/folder/tasks/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/integration/targets/folder/tasks/test.yml b/tests/integration/targets/folder/tasks/test.yml index 905b6f99d..9290d1ef4 100644 --- a/tests/integration/targets/folder/tasks/test.yml +++ b/tests/integration/targets/folder/tasks/test.yml @@ -186,7 +186,7 @@ - name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Verify created folders." ansible.builtin.assert: - that: "folder_title[item.path | regex_replace('/', '~') ] == item.verify_name" + that: "folder_title[item.path | regex_replace('~', '/') ] == item.verify_name" vars: results: "{{ lookup('checkmk.general.folders', '~', @@ -196,7 +196,7 @@ automation_user=checkmk_var_automation_user, automation_secret=checkmk_var_automation_secret) }}" - folder_title: "{{ dict((results | map(attribute='id') | map('regex_replace', '/', '~')) | zip(results | map(attribute='title'))) }}" + folder_title: "{{ dict((results | map(attribute='id') | map('regex_replace', '~', '/')) | zip(results | map(attribute='title'))) }}" loop: "{{ checkmk_var_folders_defaults_test }}" delegate_to: localhost run_once: true # noqa run-once[task] From 21fd8c843cb0cca1d6b42ac329437f7ea5780ce2 Mon Sep 17 00:00:00 2001 From: Michael Sekania Date: Thu, 22 Feb 2024 14:08:26 +0100 Subject: [PATCH 11/14] refactor: simplify test --- tests/integration/targets/folder/vars/main.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/integration/targets/folder/vars/main.yml b/tests/integration/targets/folder/vars/main.yml index 8e9503e33..3b406f7f4 100644 --- a/tests/integration/targets/folder/vars/main.yml +++ b/tests/integration/targets/folder/vars/main.yml @@ -39,8 +39,6 @@ checkmk_folder_attr_test: checkmk_var_folders_defaults_test: - path: /foo verify_name: "foo" - - path: /foo/bar + - path: /bar name: Bar verify_name: "Bar" - - path: /foo/bar/tresure - verify_name: "treasure" From 1a5800d37af163c91d7da25161a2b29e837c43d2 Mon Sep 17 00:00:00 2001 From: Michael Sekania Date: Thu, 22 Feb 2024 14:17:45 +0100 Subject: [PATCH 12/14] test: --- tests/integration/targets/folder/tasks/test.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/integration/targets/folder/tasks/test.yml b/tests/integration/targets/folder/tasks/test.yml index 9290d1ef4..b425d7f01 100644 --- a/tests/integration/targets/folder/tasks/test.yml +++ b/tests/integration/targets/folder/tasks/test.yml @@ -184,6 +184,22 @@ delegate_to: localhost run_once: true # noqa run-once[task] +- name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Print created folders." + ansible.builtin.debug: + var: folder_title + vars: + results: "{{ lookup('checkmk.general.folders', + '~', + server_url=checkmk_var_server_url, + site=outer_item.site, + validate_certs=False, + automation_user=checkmk_var_automation_user, + automation_secret=checkmk_var_automation_secret) + }}" + folder_title: "{{ dict((results | map(attribute='id') | map('regex_replace', '~', '/')) | zip(results | map(attribute='title'))) }}" + delegate_to: localhost + run_once: true # noqa run-once[task] + - name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Verify created folders." ansible.builtin.assert: that: "folder_title[item.path | regex_replace('~', '/') ] == item.verify_name" From 66302786e8088662d797be35d61e28f3af1d8871 Mon Sep 17 00:00:00 2001 From: Michael Sekania Date: Thu, 22 Feb 2024 14:30:05 +0100 Subject: [PATCH 13/14] fix: again copy pase error --- plugins/modules/folder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/modules/folder.py b/plugins/modules/folder.py index 8a50d5fc2..139e2a14b 100644 --- a/plugins/modules/folder.py +++ b/plugins/modules/folder.py @@ -221,7 +221,7 @@ def __init__(self, module): self.params.get("path") ) - if self.params.get("title"): + if self.params.get("name"): self.desired["title"] = self.params.get("name") else: self.desired["title"] = self.desired.get("name") From 6fff122a34f7e03a2514b9f00ca8c5e0e3f806a2 Mon Sep 17 00:00:00 2001 From: Michael Sekania Date: Fri, 1 Mar 2024 14:01:35 +0100 Subject: [PATCH 14/14] change: changed status for check mode --- plugins/modules/folder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/modules/folder.py b/plugins/modules/folder.py index 139e2a14b..d955c0e66 100644 --- a/plugins/modules/folder.py +++ b/plugins/modules/folder.py @@ -403,7 +403,7 @@ def _check_output(self, mode): content="", etag="", failed=False, - changed=False, + changed=True, ) def needs_update(self):