From cc5bcb2bb42cb9260c8348a9f12fd047746cbeab Mon Sep 17 00:00:00 2001 From: Lars Getwan Date: Tue, 4 Jun 2024 11:48:10 +0200 Subject: [PATCH 1/2] Removed typo in Michael's name. --- plugins/modules/rule.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/modules/rule.py b/plugins/modules/rule.py index 3c0b56958..3b37852d1 100644 --- a/plugins/modules/rule.py +++ b/plugins/modules/rule.py @@ -101,7 +101,7 @@ - Lars Getwan (@lgetwan) - diademiemi (@diademiemi) - Geoffroy Stévenne (@geof77) - - Michael Sekana (@msekania) + - Michael Sekania (@msekania) """ EXAMPLES = r""" From 34c2db620c90a002a57cc2e8c85685bb52cd98a6 Mon Sep 17 00:00:00 2001 From: Lars Getwan Date: Tue, 4 Jun 2024 11:49:42 +0200 Subject: [PATCH 2/2] The variables in the integration tests now depend on the Checkmk version. --- tests/integration/targets/rule/tasks/test.yml | 54 +------ tests/integration/targets/rule/vars/2.1.0.yml | 109 +++++++++++++ tests/integration/targets/rule/vars/2.2.0.yml | 109 +++++++++++++ tests/integration/targets/rule/vars/2.3.0.yml | 152 ++++++++++++++++++ tests/integration/targets/rule/vars/main.yml | 152 ------------------ 5 files changed, 377 insertions(+), 199 deletions(-) create mode 100644 tests/integration/targets/rule/vars/2.1.0.yml create mode 100644 tests/integration/targets/rule/vars/2.2.0.yml create mode 100644 tests/integration/targets/rule/vars/2.3.0.yml diff --git a/tests/integration/targets/rule/tasks/test.yml b/tests/integration/targets/rule/tasks/test.yml index bce2ba34f..79571c330 100644 --- a/tests/integration/targets/rule/tasks/test.yml +++ b/tests/integration/targets/rule/tasks/test.yml @@ -1,4 +1,7 @@ --- +- name: "Include Checkmk version specific Variables." + ansible.builtin.include_vars: "{{ outer_item.version | regex_search('^[0-9]+[.][0-9]+[.][0-9]+') }}.yml" + - name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Create rules." rule: server_url: "{{ checkmk_var_server_url }}" @@ -66,7 +69,7 @@ properties: comment: "{{ item.content.extensions.properties.comment | default('') }}" description: "New description" - value_raw: "{{ item.content.extensions.value_raw }}" + value_raw: "{{ item.content.extensions.value_raw | string }}" state: "present" delegate_to: localhost run_once: true # noqa run-once[task] @@ -87,7 +90,7 @@ properties: comment: "{{ item.content.extensions.properties.comment | default('') }}" description: "New description" - value_raw: "{{ item.content.extensions.value_raw }}" + value_raw: "{{ item.content.extensions.value_raw | string }}" state: "present" delegate_to: localhost run_once: true # noqa run-once[task] @@ -116,7 +119,7 @@ properties: comment: "{{ item.extensions.properties.comment }}" description: "Even newer description" - value_raw: "{{ item.extensions.value_raw }}" + value_raw: "{{ item.extensions.value_raw | string }}" state: "present" delegate_to: localhost run_once: true # noqa run-once[task] @@ -161,7 +164,7 @@ delegate_to: localhost run_once: true # noqa run-once[task] -- name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Delete rules." +- name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Delete rules. Again." rule: server_url: "{{ checkmk_var_server_url }}" site: "{{ outer_item.site }}" @@ -183,46 +186,3 @@ when: "rule_result.changed" delegate_to: localhost run_once: true # noqa run-once[task] - -- name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Create rules. Oldschool." - rule: - server_url: "{{ checkmk_var_server_url }}" - site: "{{ outer_item.site }}" - automation_user: "{{ checkmk_var_automation_user }}" - automation_secret: "{{ checkmk_var_automation_secret }}" - ruleset: "{{ item.ruleset }}" - rule: "{{ item.rule }}" - state: "present" - delegate_to: localhost - run_once: true # noqa run-once[task] - loop: "{{ checkmk_var_rules }}" - register: created_rules - -- name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - Create rules again. Oldschool." - rule: - server_url: "{{ checkmk_var_server_url }}" - site: "{{ outer_item.site }}" - automation_user: "{{ checkmk_var_automation_user }}" - automation_secret: "{{ checkmk_var_automation_secret }}" - ruleset: "{{ item.ruleset }}" - rule: "{{ item.rule }}" - state: "present" - delegate_to: localhost - run_once: true # noqa run-once[task] - loop: "{{ checkmk_var_rules }}" - register: created_rules - -- name: "{{ outer_item.version }} - {{ outer_item.edition | upper }} - New label conditions." - rule: - server_url: "{{ checkmk_var_server_url }}" - site: "{{ outer_item.site }}" - automation_user: "{{ checkmk_var_automation_user }}" - automation_secret: "{{ checkmk_var_automation_secret }}" - ruleset: "{{ item.ruleset }}" - rule: "{{ item.rule }}" - state: "present" - delegate_to: localhost - run_once: true # noqa run-once[task] - loop: "{{ checkmk_var_rules_230 }}" - register: created_rules - when: "'2.3' in outer_item.version" diff --git a/tests/integration/targets/rule/vars/2.1.0.yml b/tests/integration/targets/rule/vars/2.1.0.yml new file mode 100644 index 000000000..8a96fd72a --- /dev/null +++ b/tests/integration/targets/rule/vars/2.1.0.yml @@ -0,0 +1,109 @@ +--- +checkmk_var_rules: + - name: "Filesystems (used space and growth) - Magic Factor." + ruleset: "checkgroup_parameters:filesystem" + rule: + location: + folder: "/" + position: "bottom" + conditions: { + "host_labels": [], + "host_tags": [], + "service_labels": [] + } + properties: { + "comment": "{{ ansible_date_time.iso8601 }} - Ansible managed", + "description": "", + "disabled": false + } + value_raw: "{'magic': 0.8}" + + - name: "CPU load (not utilization!) - 15 minute load." + ruleset: "checkgroup_parameters:cpu_load" + rule: + location: + folder: "/" + position: "bottom" + conditions: { + "host_labels": [], + "host_tags": [], + "service_labels": [] + } + properties: { + "comment": "{{ ansible_date_time.iso8601 }} - Ansible managed", + "description": "", + "disabled": false + } + value_raw: "{'levels': (1.0, 2.0)}" + + - name: "CPU utilization on Linux/UNIX - Multiple thresholds." + ruleset: "checkgroup_parameters:cpu_iowait" + rule: + location: + folder: "/" + position: "bottom" + conditions: { + "host_labels": [], + "host_tags": [], + "service_labels": [] + } + properties: { + "comment": "{{ ansible_date_time.iso8601 }} - Ansible managed", + "description": "", + "disabled": false + } + value_raw: "{'core_util_time': (100.0, 300, 900), 'core_util_time_total': (100.0, 300, 900)}" + + - name: "Logwatch Event Console Forwarding - Multiple values." + ruleset: "checkgroup_parameters:logwatch_ec" + rule: + location: + folder: "/" + position: "bottom" + conditions: { + "host_labels": [], + "host_tags": [], + "service_labels": [] + } + properties: { + "comment": "", + "description": "", + "disabled": false + } + value_raw: "{'facility': 17, 'method': '', 'monitor_logfilelist': False}" + + - name: "Simulating SNMP by using a stored SNMP walk - Enable." + ruleset: "usewalk_hosts" + rule: + conditions: { + "host_labels": [], + "host_tags": [ + { + "key": "snmp_ds", + "operator": "is_not", + "value": "no-snmp" + } + ], + "service_labels": [] + } + properties: { + "comment": "{{ ansible_date_time.iso8601 }} - Ansible managed", + "disabled": false, + } + value_raw: 'True' + + - name: "Memory percentage used - Levels." + ruleset: "checkgroup_parameters:memory_percentage_used" + rule: + conditions: { + "host_labels": [], + "host_tags": [], + "service_labels": [] + } + properties: { + "comment": "Warning at 80%\nCritical at 90%\n", + "description": "Allow higher memory usage", + "disabled": false, + "documentation_url": "https://github.com/Checkmk/ansible-collection-checkmk.general/blob/main/plugins/modules/rules.py" + } + value_raw: "{'levels': (80.0, 90.0)}" diff --git a/tests/integration/targets/rule/vars/2.2.0.yml b/tests/integration/targets/rule/vars/2.2.0.yml new file mode 100644 index 000000000..8a96fd72a --- /dev/null +++ b/tests/integration/targets/rule/vars/2.2.0.yml @@ -0,0 +1,109 @@ +--- +checkmk_var_rules: + - name: "Filesystems (used space and growth) - Magic Factor." + ruleset: "checkgroup_parameters:filesystem" + rule: + location: + folder: "/" + position: "bottom" + conditions: { + "host_labels": [], + "host_tags": [], + "service_labels": [] + } + properties: { + "comment": "{{ ansible_date_time.iso8601 }} - Ansible managed", + "description": "", + "disabled": false + } + value_raw: "{'magic': 0.8}" + + - name: "CPU load (not utilization!) - 15 minute load." + ruleset: "checkgroup_parameters:cpu_load" + rule: + location: + folder: "/" + position: "bottom" + conditions: { + "host_labels": [], + "host_tags": [], + "service_labels": [] + } + properties: { + "comment": "{{ ansible_date_time.iso8601 }} - Ansible managed", + "description": "", + "disabled": false + } + value_raw: "{'levels': (1.0, 2.0)}" + + - name: "CPU utilization on Linux/UNIX - Multiple thresholds." + ruleset: "checkgroup_parameters:cpu_iowait" + rule: + location: + folder: "/" + position: "bottom" + conditions: { + "host_labels": [], + "host_tags": [], + "service_labels": [] + } + properties: { + "comment": "{{ ansible_date_time.iso8601 }} - Ansible managed", + "description": "", + "disabled": false + } + value_raw: "{'core_util_time': (100.0, 300, 900), 'core_util_time_total': (100.0, 300, 900)}" + + - name: "Logwatch Event Console Forwarding - Multiple values." + ruleset: "checkgroup_parameters:logwatch_ec" + rule: + location: + folder: "/" + position: "bottom" + conditions: { + "host_labels": [], + "host_tags": [], + "service_labels": [] + } + properties: { + "comment": "", + "description": "", + "disabled": false + } + value_raw: "{'facility': 17, 'method': '', 'monitor_logfilelist': False}" + + - name: "Simulating SNMP by using a stored SNMP walk - Enable." + ruleset: "usewalk_hosts" + rule: + conditions: { + "host_labels": [], + "host_tags": [ + { + "key": "snmp_ds", + "operator": "is_not", + "value": "no-snmp" + } + ], + "service_labels": [] + } + properties: { + "comment": "{{ ansible_date_time.iso8601 }} - Ansible managed", + "disabled": false, + } + value_raw: 'True' + + - name: "Memory percentage used - Levels." + ruleset: "checkgroup_parameters:memory_percentage_used" + rule: + conditions: { + "host_labels": [], + "host_tags": [], + "service_labels": [] + } + properties: { + "comment": "Warning at 80%\nCritical at 90%\n", + "description": "Allow higher memory usage", + "disabled": false, + "documentation_url": "https://github.com/Checkmk/ansible-collection-checkmk.general/blob/main/plugins/modules/rules.py" + } + value_raw: "{'levels': (80.0, 90.0)}" diff --git a/tests/integration/targets/rule/vars/2.3.0.yml b/tests/integration/targets/rule/vars/2.3.0.yml new file mode 100644 index 000000000..07f6ee6ee --- /dev/null +++ b/tests/integration/targets/rule/vars/2.3.0.yml @@ -0,0 +1,152 @@ +--- +checkmk_var_rules: + - name: "Filesystems (used space and growth) - Magic Factor." + ruleset: "checkgroup_parameters:filesystem" + rule: + location: + folder: "/" + position: "bottom" + conditions: { + "host_labels": [], + "host_tags": [], + "service_labels": [] + } + properties: { + "comment": "{{ ansible_date_time.iso8601 }} - Ansible managed", + "description": "", + "disabled": false + } + value_raw: "{'magic': 0.8}" + + - name: "CPU load (not utilization!) - 15 minute load." + ruleset: "checkgroup_parameters:cpu_load" + rule: + location: + folder: "/" + position: "bottom" + conditions: { + "host_labels": [], + "host_tags": [], + "service_labels": [] + } + properties: { + "comment": "{{ ansible_date_time.iso8601 }} - Ansible managed", + "description": "", + "disabled": false + } + value_raw: "{'levels15': (1.0, 2.0)}" + + - name: "CPU utilization on Linux/UNIX - Multiple thresholds." + ruleset: "checkgroup_parameters:cpu_iowait" + rule: + location: + folder: "/" + position: "bottom" + conditions: { + "host_labels": [], + "host_tags": [], + "service_labels": [] + } + properties: { + "comment": "{{ ansible_date_time.iso8601 }} - Ansible managed", + "description": "", + "disabled": false + } + value_raw: "{'core_util_time': (100.0, 300, 900), 'core_util_time_total': (100.0, 300, 900)}" + + - name: "Logwatch Event Console Forwarding - Multiple values." + ruleset: "checkgroup_parameters:logwatch_ec" + rule: + location: + folder: "/" + position: "bottom" + conditions: { + "host_labels": [], + "host_tags": [], + "service_labels": [] + } + properties: { + "comment": "", + "description": "", + "disabled": false + } + value_raw: "{'facility': 17, 'method': '', 'monitor_logfilelist': False}" + + - name: "Simulating SNMP by using a stored SNMP walk - Enable." + ruleset: "usewalk_hosts" + rule: + conditions: { + "host_labels": [], + "host_tags": [ + { + "key": "snmp_ds", + "operator": "is_not", + "value": "no-snmp" + } + ], + "service_labels": [] + } + properties: { + "comment": "{{ ansible_date_time.iso8601 }} - Ansible managed", + "disabled": false, + } + value_raw: 'True' + + - name: "Memory percentage used - Levels." + ruleset: "checkgroup_parameters:memory_percentage_used" + rule: + conditions: { + "host_labels": [], + "host_tags": [], + "service_labels": [] + } + properties: { + "comment": "Warning at 80%\nCritical at 90%\n", + "description": "Allow higher memory usage", + "disabled": false, + "documentation_url": "https://github.com/Checkmk/ansible-collection-checkmk.general/blob/main/plugins/modules/rules.py" + } + value_raw: "{'levels': (80.0, 90.0)}" + + - name: "Memory percentage used - Combined host label conditions." + ruleset: "checkgroup_parameters:memory_percentage_used" + rule: + conditions: { + "host_label_groups": [ + { + operator: "and", + label_group: [ + { + operator: "and", + label: "cmk/site:beta" + }, + { + operator: "or", + label: "cmk/os_family:linux" + } + ], + }, + { + operator: "or", + label_group: [ + { + operator: "and", + label: "cmk/site:alpha" + }, + { + operator: "or", + label: "cmk/os_family:windows" + } + ], + }, + ], + "host_tags": [], + "service_labels": [] + } + properties: { + "comment": "Warning at 70%\nCritical at 80%\n", + "description": "Allow higher memory usage for certain host label conditions", + "disabled": false, + "documentation_url": "https://github.com/Checkmk/ansible-collection-checkmk.general/blob/main/plugins/modules/rules.py" + } + value_raw: "{'levels': (70.0, 80.0)}" diff --git a/tests/integration/targets/rule/vars/main.yml b/tests/integration/targets/rule/vars/main.yml index a2060d13a..0ff5bc071 100644 --- a/tests/integration/targets/rule/vars/main.yml +++ b/tests/integration/targets/rule/vars/main.yml @@ -12,155 +12,3 @@ test_sites: - version: "2.1.0p43" edition: "cre" site: "ancient_cre" - -checkmk_var_rules: - - name: "Filesystem - Magic Factor." - ruleset: "checkgroup_parameters:filesystem" - rule: - location: - folder: "/" - position: "bottom" - conditions: { - "host_labels": [], - "host_tags": [], - "service_labels": [] - } - properties: { - "comment": "{{ ansible_date_time.iso8601 }} - Ansible managed", - "description": "", - "disabled": false - } - value_raw: "{'magic': 0.8}" - - ## With 2.3.0, the value_raw should contain "levels15", but with previous versions, it's - ## only "levels". Let's reactivate this, once 2.2.0 is out of support. - # - name: "CPU - Load." - # ruleset: "checkgroup_parameters:cpu_load" - # rule: - # location: - # folder: "/" - # position: "bottom" - # conditions: { - # "host_labels": [], - # "host_tags": [], - # "service_labels": [] - # } - # properties: { - # "comment": "{{ ansible_date_time.iso8601 }} - Ansible managed", - # "description": "", - # "disabled": false - # } - # value_raw: "{'levels15': (1.0, 2.0)}" - - - name: "CPU - Utilization." - ruleset: "checkgroup_parameters:cpu_iowait" - rule: - location: - folder: "/" - position: "bottom" - conditions: { - "host_labels": [], - "host_tags": [], - "service_labels": [] - } - properties: { - "comment": "{{ ansible_date_time.iso8601 }} - Ansible managed", - "description": "", - "disabled": false - } - value_raw: "{'core_util_time': (100.0, 300, 900), 'core_util_time_total': (100.0, 300, 900)}" - - - name: "Logwatch - Event Console Forwarding." - ruleset: "checkgroup_parameters:logwatch_ec" - rule: - location: - folder: "/" - position: "bottom" - conditions: { - "host_labels": [], - "host_tags": [], - "service_labels": [] - } - properties: { - "comment": "", - "description": "", - "disabled": false - } - value_raw: "{'facility': 17, 'method': '', 'monitor_logfilelist': False}" - - - ruleset: "usewalk_hosts" - rule: - conditions: { - "host_labels": [], - "host_tags": [ - { - "key": "snmp_ds", - "operator": "is_not", - "value": "no-snmp" - } - ], - "service_labels": [] - } - properties: { - "comment": "{{ ansible_date_time.iso8601 }} - Ansible managed", - "disabled": false, - } - value_raw: 'True' - - - ruleset: "checkgroup_parameters:memory_percentage_used" - rule: - conditions: { - "host_labels": [], - "host_tags": [], - "service_labels": [] - } - properties: { - "comment": "Warning at 80%\nCritical at 90%\n", - "description": "Allow higher memory usage", - "disabled": false, - "documentation_url": "https://github.com/Checkmk/ansible-collection-checkmk.general/blob/main/plugins/modules/rules.py" - } - value_raw: "{'levels': (80.0, 90.0)}" - -checkmk_var_rules_230: - - ruleset: "checkgroup_parameters:memory_percentage_used" - rule: - conditions: { - "host_label_groups": [ - { - operator: "and", - label_group: [ - { - operator: "and", - label: "cmk/site:beta" - }, - { - operator: "or", - label: "cmk/os_family:linux" - } - ], - }, - { - operator: "or", - label_group: [ - { - operator: "and", - label: "cmk/site:alpha" - }, - { - operator: "or", - label: "cmk/os_family:windows" - } - ], - }, - ], - "host_tags": [], - "service_labels": [] - } - properties: { - "comment": "Warning at 70%\nCritical at 80%\n", - "description": "Allow higher memory usage for certain host label conditions", - "disabled": false, - "documentation_url": "https://github.com/Checkmk/ansible-collection-checkmk.general/blob/main/plugins/modules/rules.py" - } - value_raw: "{'levels': (70.0, 80.0)}"