diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-18 05:52:35 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-18 05:52:35 +0000 |
commit | 7fec0b69a082aaeec72fee0612766aa42f6b1b4d (patch) | |
tree | efb569b86ca4da888717f5433e757145fa322e08 /ansible_collections/community/grafana/tests | |
parent | Releasing progress-linux version 7.7.0+dfsg-3~progress7.99u1. (diff) | |
download | ansible-7fec0b69a082aaeec72fee0612766aa42f6b1b4d.tar.xz ansible-7fec0b69a082aaeec72fee0612766aa42f6b1b4d.zip |
Merging upstream version 9.4.0+dfsg.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ansible_collections/community/grafana/tests')
82 files changed, 3136 insertions, 2039 deletions
diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/defaults/main.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/defaults/main.yml index 8b9c9348a..3edac8598 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/defaults/main.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/defaults/main.yml @@ -1,7 +1,4 @@ --- - -grafana_url: "http://grafana:3000/" -grafana_username: "admin" -grafana_password: "admin" - -... +grafana_url: http://grafana:3000/ +grafana_username: admin +grafana_password: admin diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/runme.sh b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/runme.sh new file mode 100755 index 000000000..867afb0d3 --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/runme.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -eux + +ansible-playbook site.yml diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/site.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/site.yml new file mode 100644 index 000000000..c32364ef0 --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/site.yml @@ -0,0 +1,6 @@ +--- +- name: Run tests for grafana_dashboard + hosts: localhost + tasks: + - ansible.builtin.include_role: + name: ../../grafana_dashboard diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-by-org-name.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-by-org-name.yml new file mode 100644 index 000000000..a493eb0f8 --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-by-org-name.yml @@ -0,0 +1,84 @@ +--- +- module_defaults: + community.grafana.grafana_dashboard: + org_name: Main Org. + block: + - name: Create Dashboard from file by org_name | check mode | dashboard does not exist + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: present + commit_message: Updated by ansible + path: /tmp/dashboard.json + overwrite: true + check_mode: true + register: dbo_result1 + - ansible.builtin.assert: + that: + - dbo_result1.failed == false + - dbo_result1.changed == true + - dbo_result1.uid is not defined + - dbo_result1.msg == 'Dashboard test will be created' + + - name: Create Dashboard from file by org_name | run mode | dashboard does not exist + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: present + commit_message: Updated by ansible + path: /tmp/dashboard.json + overwrite: true + check_mode: false + register: dbo_result2 + - ansible.builtin.assert: + that: + - dbo_result2.failed == false + - dbo_result2.changed == true + - dbo_result2.uid is defined + - dbo_result2.uid | type_debug == "AnsibleUnsafeText" + - dbo_result2.msg == 'Dashboard test created' + + - name: Create Dashboard from file by org_name | check mode | dashboard exists + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: present + commit_message: Updated by ansible + path: /tmp/dashboard.json + overwrite: true + check_mode: true + register: dbo_result3 + - ansible.builtin.assert: + that: + - dbo_result3.failed == false + - dbo_result3.changed == false + - dbo_result3.uid is defined + - dbo_result3.uid | type_debug == "AnsibleUnsafeText" + - dbo_result3.msg == 'Dashboard test unchanged.' + + - name: Create Dashboard from file by org_name | run mode | dashboard exists + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: present + commit_message: Updated by ansible + path: /tmp/dashboard.json + overwrite: true + check_mode: false + register: dbo_result4 + - ansible.builtin.assert: + that: + - dbo_result4.failed == false + - dbo_result4.changed == false + - dbo_result4.uid is defined + - dbo_result4.uid | type_debug == "AnsibleUnsafeText" + - dbo_result4.msg == 'Dashboard test unchanged.' + + - ansible.builtin.include_tasks: + file: delete-dashboard.yml + vars: + uid_to_delete: '{{ dbo_result4.uid }}' diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-export.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-export.yml index 04b17f727..bb4f30e10 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-export.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-export.yml @@ -1,33 +1,93 @@ --- -- set_fact: - dashboard_uid: "{{ result.uid }}" +- name: Export Dashboard | check mode | uid does not exist + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: export + path: /tmp/dashboard_export.json + overwrite: true + uid: "090909090" + check_mode: true + ignore_errors: true + register: de_result1 +- ansible.builtin.assert: + that: + - de_result1.failed == false + - de_result1.changed == false + - de_result1.uid is defined + - de_result1.uid | type_debug == "AnsibleUnsafeText" + - de_result1.uid == "090909090" + - de_result1.msg == 'Dashboard ' ~ de_result1.uid ~ ' does not exist.' -- name: Check export grafana dashboard to file - grafana_dashboard: +- name: Export Dashboard | run mode | uid does not exist + community.grafana.grafana_dashboard: grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" state: export - path: /tmp/dashboard.json + path: /tmp/dashboard_export.json overwrite: true - uid: "{{ dashboard_uid }}" - register: result + uid: "090909090" + check_mode: false + ignore_errors: true + register: de_result2 +- ansible.builtin.assert: + that: + - de_result2.failed == false + - de_result2.changed == false + - de_result2.uid is defined + - de_result2.uid | type_debug == "AnsibleUnsafeText" + - de_result2.uid == "090909090" + - de_result2.msg == 'Dashboard ' ~ de_result2.uid ~ ' does not exist.' -- debug: - var: result +- name: Export Dashboard | check mode | uid exists + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: export + path: /tmp/dashboard_export.json + overwrite: true + uid: "{{ uid_to_export }}" + check_mode: true + register: de_result3 +- ansible.builtin.assert: + that: + - de_result3.failed == false + - de_result3.changed == true + - de_result3.uid is defined + - de_result3.uid | type_debug == "AnsibleUnsafeText" + - de_result3.uid == uid_to_export + - de_result3.msg == 'Dashboard ' ~ de_result3.uid ~ ' will be exported to /tmp/dashboard_export.json' -- assert: +- name: Export Dashboard | run mode | uid exists + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: export + path: /tmp/dashboard_export.json + overwrite: true + uid: "{{ uid_to_export }}" + check_mode: false + register: de_result4 +- ansible.builtin.assert: that: - - "result.changed == true" - - "result.msg == 'Dashboard {{ dashboard_uid }} exported to /tmp/dashboard.json'" + - de_result4.failed == false + - de_result4.changed == true + - de_result4.uid is defined + - de_result4.uid | type_debug == "AnsibleUnsafeText" + - de_result4.uid == uid_to_export + - de_result4.msg == 'Dashboard ' ~ de_result4.uid ~ ' exported to /tmp/dashboard_export.json' -- name: Load /tmp/dashboard.json or fail if missing - set_fact: - exported_dashboard_lines: "{{ lookup('file', '/tmp/dashboard.json').splitlines() }}" +- name: Export Dashboard | Load /tmp/dashboard_export.json or fail if missing + ansible.builtin.set_fact: + exported_dashboard_lines: "{{ lookup('file', '/tmp/dashboard_export.json').splitlines() }}" -- name: Assert that exported dashboard contains formatted JSON - assert: +- name: Export Dashboard | Assert that exported dashboard contains formatted JSON + ansible.builtin.assert: that: - - "exported_dashboard_lines | length >= 2" - - "exported_dashboard_lines[0] == '{'" - - "exported_dashboard_lines[-1] == '}'" + - exported_dashboard_lines | length >= 2 + - exported_dashboard_lines[0] == '{' + - exported_dashboard_lines[-1] == '}' diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-folder-destination.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-folder-destination.yml index f4f3d9f4d..4704002f5 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-folder-destination.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-folder-destination.yml @@ -1,33 +1,38 @@ --- -- name: copy dashboard file - copy: - src: "files/dashboard.json" - dest: "/tmp/dashboard.json" - -- block: - - name: Check import grafana dashboard from file to unknown folder fails - grafana_dashboard: - grafana_url: "{{ grafana_url }}" - grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password }}" - state: present - commit_message: Updated by ansible - path: /tmp/dashboard.json - overwrite: true - folder: inexistent - register: result - ignore_errors: true - -- debug: - var: result - -- set_fact: - # XXX: Too many quotes of different types to do inline. - # I did not manage to find a good way of having it inline. - expected_error: "error : Dashboard folder 'inexistent' does not exist." +- name: Create Dashboard from file | check mode | folder does not exist + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: present + commit_message: Updated by ansible + path: /tmp/dashboard.json + overwrite: true + folder: inexistent + check_mode: true + register: dfff_result1 + ignore_errors: true +- ansible.builtin.assert: + that: + - dfff_result1.failed == true + - dfff_result1.changed == false + - "dfff_result1.msg == 'error : Dashboard folder \\'inexistent\\' does not exist.'" -- assert: +- name: Create Dashboard from file | run mode | folder does not exist + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: present + commit_message: Updated by ansible + path: /tmp/dashboard.json + overwrite: true + folder: inexistent + check_mode: false + register: dfff_result2 + ignore_errors: true +- ansible.builtin.assert: that: - - "result.changed == false" - - "result.failed == true" - - "result.msg == expected_error" + - dfff_result2.failed == true + - dfff_result2.changed == false + - "dfff_result2.msg == 'error : Dashboard folder \\'inexistent\\' does not exist.'" diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-from-file-export.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-from-file-export.yml new file mode 100644 index 000000000..3d0019c5d --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-from-file-export.yml @@ -0,0 +1,90 @@ +--- +- name: Create Dashboard from file | Copy dashboard file + ansible.builtin.copy: + src: files/dashboard.json + dest: /tmp/dashboard.json + +- name: Create Dashboard from file | check mode | dashboard does not exist + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: present + commit_message: Updated by ansible + path: /tmp/dashboard.json + overwrite: true + check_mode: true + register: dff_result1 +- ansible.builtin.assert: + that: + - dff_result1.failed == false + - dff_result1.changed == true + - dff_result1.uid is not defined + - dff_result1.msg == 'Dashboard test will be created' + +- name: Create Dashboard from file | run mode | dashboard does not exist + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: present + commit_message: Updated by ansible + path: /tmp/dashboard.json + overwrite: true + check_mode: false + register: dff_result2 +- ansible.builtin.assert: + that: + - dff_result2.failed == false + - dff_result2.changed == true + - dff_result2.uid is defined + - dff_result2.uid | type_debug == "AnsibleUnsafeText" + - dff_result2.msg == 'Dashboard test created' + +- name: Create Dashboard from file | check mode | dashboard exists + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: present + commit_message: Updated by ansible + path: /tmp/dashboard.json + overwrite: true + check_mode: true + register: dff_result3 +- ansible.builtin.assert: + that: + - dff_result3.failed == false + - dff_result3.changed == false + - dff_result3.uid is defined + - dff_result3.uid | type_debug == "AnsibleUnsafeText" + - dff_result3.msg == 'Dashboard test unchanged.' + +- name: Create Dashboard from file | run mode | dashboard exists + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: present + commit_message: Updated by ansible + path: /tmp/dashboard.json + overwrite: true + check_mode: false + register: dff_result4 +- ansible.builtin.assert: + that: + - dff_result4.failed == false + - dff_result4.changed == false + - dff_result4.uid is defined + - dff_result4.uid | type_debug == "AnsibleUnsafeText" + - dff_result4.msg == 'Dashboard test unchanged.' + +- ansible.builtin.include_tasks: + file: dashboard-export.yml + vars: + uid_to_export: '{{ dff_result4.uid }}' + +- ansible.builtin.include_tasks: + file: delete-dashboard.yml + vars: + uid_to_delete: '{{ dff_result4.uid }}' diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-from-file.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-from-file.yml deleted file mode 100644 index 93df1666a..000000000 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-from-file.yml +++ /dev/null @@ -1,44 +0,0 @@ ---- -- name: copy dashboard file - copy: - src: "files/dashboard.json" - dest: "/tmp/dashboard.json" - - -- name: Check import grafana dashboard from file - grafana_dashboard: - grafana_url: "{{ grafana_url }}" - grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password }}" - state: present - commit_message: Updated by ansible - path: /tmp/dashboard.json - overwrite: true - register: result - -- debug: - var: result - -- assert: - that: - - "result.changed == true" - - "result.msg == 'Dashboard test created'" - -- name: Check import grafana dashboard from file idempotency - grafana_dashboard: - grafana_url: "{{ grafana_url }}" - grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password }}" - state: present - commit_message: Updated by ansible - path: /tmp/dashboard.json - overwrite: true - register: result - -- debug: - var: result - -- assert: - that: - - "result.changed == false" - - "result.msg == 'Dashboard test unchanged.'" diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-from-id.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-from-id.yml index 3b81ebf71..4de7b4675 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-from-id.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-from-id.yml @@ -1,6 +1,6 @@ --- -- name: Check import grafana dashboard from id - grafana_dashboard: +- name: Create Dashboard from ID | check mode | dashboard does not exist + community.grafana.grafana_dashboard: grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" @@ -9,18 +9,17 @@ dashboard_id: "6098" dashboard_revision: "1" overwrite: true - register: result - -- debug: - var: result - -- assert: + check_mode: true + register: dfi_result1 +- ansible.builtin.assert: that: - - "result.changed == true" - - "result.msg == 'Dashboard Zabbix Host Status created'" + - dfi_result1.failed == false + - dfi_result1.changed == true + - dfi_result1.uid is not defined + - dfi_result1.msg == 'Dashboard Zabbix Host Status will be created' -- name: Check import grafana dashboard from id idempotency - grafana_dashboard: +- name: Create Dashboard from ID | run mode | dashboard does not exist + community.grafana.grafana_dashboard: grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" @@ -29,12 +28,57 @@ dashboard_id: "6098" dashboard_revision: "1" overwrite: true - register: result + check_mode: false + register: dfi_result2 +- ansible.builtin.assert: + that: + - dfi_result2.failed == false + - dfi_result2.changed == true + - dfi_result2.uid is defined + - dfi_result2.uid | type_debug == "AnsibleUnsafeText" + - dfi_result2.msg == 'Dashboard Zabbix Host Status created' -- debug: - var: result +- name: Create Dashboard from ID | check mode | dashboard exists + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: present + commit_message: Updated by ansible + dashboard_id: "6098" + dashboard_revision: "1" + overwrite: true + check_mode: true + register: dfi_result3 +- ansible.builtin.assert: + that: + - dfi_result3.failed == false + - dfi_result3.changed == false + - dfi_result3.uid is defined + - dfi_result3.uid | type_debug == "AnsibleUnsafeText" + - dfi_result3.msg == 'Dashboard Zabbix Host Status unchanged.' -- assert: +- name: Create Dashboard from ID | run mode | dashboard exists + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: present + commit_message: Updated by ansible + dashboard_id: "6098" + dashboard_revision: "1" + overwrite: true + check_mode: false + register: dfi_result4 +- ansible.builtin.assert: that: - - "result.changed == false" - - "result.msg == 'Dashboard Zabbix Host Status unchanged.'" + - dfi_result4.failed == false + - dfi_result4.changed == false + - dfi_result4.uid is defined + - dfi_result4.uid | type_debug == "AnsibleUnsafeText" + - dfi_result4.msg == 'Dashboard Zabbix Host Status unchanged.' + +- ansible.builtin.include_tasks: + file: delete-dashboard.yml + vars: + uid_to_delete: '{{ dfi_result4.uid }}' diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-from-url.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-from-url.yml index 5146fc9a0..abdeacfd0 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-from-url.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/dashboard-from-url.yml @@ -1,7 +1,6 @@ --- - -- name: Check import grafana dashboard from url - grafana_dashboard: +- name: Create Dashboard from URL | check mode | dashboard does not exist + community.grafana.grafana_dashboard: grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" @@ -9,18 +8,17 @@ commit_message: Updated by ansible dashboard_url: https://grafana.com/api/dashboards/6098/revisions/1/download overwrite: true - register: result - -- debug: - var: result - -- assert: + check_mode: true + register: dfu_result1 +- ansible.builtin.assert: that: - - "result.changed == true" - - "result.msg == 'Dashboard Zabbix Host Status created'" + - dfu_result1.failed == false + - dfu_result1.changed == true + - dfu_result1.uid is not defined + - dfu_result1.msg == 'Dashboard Zabbix Host Status will be created' -- name: Check import grafana dashboard from url idempotency - grafana_dashboard: +- name: Create Dashboard from URL | run mode | dashboard does not exist + community.grafana.grafana_dashboard: grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" @@ -28,12 +26,55 @@ commit_message: Updated by ansible dashboard_url: https://grafana.com/api/dashboards/6098/revisions/1/download overwrite: true - register: result + check_mode: false + register: dfu_result2 +- ansible.builtin.assert: + that: + - dfu_result2.failed == false + - dfu_result2.changed == true + - dfu_result2.uid is defined + - dfu_result2.uid | type_debug == "AnsibleUnsafeText" + - dfu_result2.msg == 'Dashboard Zabbix Host Status created' -- debug: - var: result +- name: Create Dashboard from URL | check mode | dashboard exists + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: present + commit_message: Updated by ansible + dashboard_url: https://grafana.com/api/dashboards/6098/revisions/1/download + overwrite: true + check_mode: true + register: dfu_result3 +- ansible.builtin.assert: + that: + - dfu_result3.failed == false + - dfu_result3.changed == false + - dfu_result3.uid is defined + - dfu_result3.uid | type_debug == "AnsibleUnsafeText" + - dfu_result3.msg == 'Dashboard Zabbix Host Status unchanged.' -- assert: +- name: Create Dashboard from URL | run mode | dashboard exists + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: present + commit_message: Updated by ansible + dashboard_url: https://grafana.com/api/dashboards/6098/revisions/1/download + overwrite: true + check_mode: false + register: dfu_result4 +- ansible.builtin.assert: that: - - "result.changed == false" - - "result.msg == 'Dashboard Zabbix Host Status unchanged.'" + - dfu_result4.failed == false + - dfu_result4.changed == false + - dfu_result4.uid is defined + - dfu_result4.uid | type_debug == "AnsibleUnsafeText" + - dfu_result4.msg == 'Dashboard Zabbix Host Status unchanged.' + +- ansible.builtin.include_tasks: + file: delete-dashboard.yml + vars: + uid_to_delete: '{{ dfu_result4.uid }}'
\ No newline at end of file diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/delete-dashboard.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/delete-dashboard.yml index 2013324fb..b2d27fdc8 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/delete-dashboard.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/delete-dashboard.yml @@ -1,16 +1,60 @@ -- name: Check delete dashboard is working - grafana_dashboard: +--- +- name: Delete dashboard | check mode | dashboard exists + community.grafana.grafana_dashboard: grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" state: absent - uid: "{{ result.uid }}" - register: result + uid: "{{ uid_to_delete }}" + check_mode: true + register: dd_result1 +- ansible.builtin.assert: + that: + - dd_result1.failed == false + - dd_result1.changed == true + - dd_result1.msg == 'Dashboard ' ~ dd_result1.uid ~ ' will be deleted' + +- name: Delete dashboard | run mode | dashboard exists + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: absent + uid: "{{ uid_to_delete }}" + check_mode: false + register: dd_result2 +- ansible.builtin.assert: + that: + - dd_result2.failed == false + - dd_result2.changed == true + - dd_result2.msg == 'Dashboard ' ~ dd_result2.uid ~ ' deleted' -- debug: - var: result +- name: Delete dashboard | check mode | dashboard does not exist + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: absent + uid: "{{ uid_to_delete }}" + check_mode: true + register: dd_result1 +- ansible.builtin.assert: + that: + - dd_result1.failed == false + - dd_result1.changed == false + - dd_result1.msg == 'Dashboard ' ~ dd_result1.uid ~ ' does not exist.' -- assert: +- name: Delete dashboard | run mode | dashboard does not exist + community.grafana.grafana_dashboard: + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: absent + uid: "{{ uid_to_delete }}" + check_mode: false + register: dd_result2 +- ansible.builtin.assert: that: - - "result.changed == true" - - "result.msg == 'Dashboard {{ result.uid }} deleted'" + - dd_result2.failed == false + - dd_result2.changed == false + - dd_result2.msg == 'Dashboard ' ~ dd_result2.uid ~ ' does not exist.'
\ No newline at end of file diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/main.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/main.yml index 4d9138fcf..86e756e95 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/main.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_dashboard/tasks/main.yml @@ -1,7 +1,20 @@ -- block: - - include: dashboard-from-url.yml - - include: delete-dashboard.yml - - include: dashboard-from-id.yml - - include: dashboard-from-file.yml - - include: dashboard-export.yml - - include: dashboard-folder-destination.yml +--- +- name: Create dashboard from url + ansible.builtin.include_tasks: + file: dashboard-from-url.yml + +- name: Create dashboard from id + ansible.builtin.include_tasks: + file: dashboard-from-id.yml + +- name: Create dashboard from file and export + ansible.builtin.include_tasks: + file: dashboard-from-file-export.yml + +- name: Create dashboard from file by org_name + ansible.builtin.include_tasks: + file: dashboard-by-org-name.yml + +- name: Create dashboard from file in non existing folder + ansible.builtin.include_tasks: + file: dashboard-folder-destination.yml diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/defaults/main.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/defaults/main.yml index 8b9c9348a..4abf9bb43 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/defaults/main.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/defaults/main.yml @@ -1,7 +1,5 @@ --- -grafana_url: "http://grafana:3000/" -grafana_username: "admin" -grafana_password: "admin" - -... +grafana_url: http://grafana:3000/ +grafana_username: admin +grafana_password: admin diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/runme.sh b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/runme.sh new file mode 100755 index 000000000..867afb0d3 --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/runme.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -eux + +ansible-playbook site.yml diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/site.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/site.yml new file mode 100644 index 000000000..c8374dcdd --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/site.yml @@ -0,0 +1,6 @@ +--- +- name: Run tests for grafana_datasource + hosts: localhost + tasks: + - ansible.builtin.include_role: + name: ../../grafana_datasource diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/azure.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/azure.yml index a96691893..0dbd94963 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/azure.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/azure.yml @@ -1,11 +1,12 @@ +--- - name: Create azure datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-azure grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" - org_id: '1' + grafana_password: "{{ grafana_password }}" + org_id: "1" ds_type: grafana-azure-monitor-datasource ds_url: http://example.com azure_client: client1 @@ -13,38 +14,38 @@ azure_secret: secret1 azure_cloud: azuremonitor -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - "result.msg == 'Datasource datasource-azure created'" - - result.datasource.access == 'proxy' - - result.datasource.basicAuth == false - - result.datasource.database == '' - - result.datasource.isDefault == false - - result.datasource.jsonData.clientId == 'client1' - - result.datasource.jsonData.cloudName == 'azuremonitor' - - result.datasource.jsonData.tenantId == 'tenant1' - - result.datasource.jsonData.tlsAuth == false - - result.datasource.jsonData.tlsAuthWithCACert == false - - result.datasource.name == 'datasource-azure' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'grafana-azure-monitor-datasource' - - result.datasource.url == 'http://example.com' - - result.datasource.user == '' - - result.datasource.withCredentials == false + - result.changed + - result.msg == 'Datasource datasource-azure created' + - result.datasource.access == 'proxy' + - result.datasource.basicAuth == false + - result.datasource.database == '' + - result.datasource.isDefault == false + - result.datasource.jsonData.clientId == 'client1' + - result.datasource.jsonData.cloudName == 'azuremonitor' + - result.datasource.jsonData.tenantId == 'tenant1' + - result.datasource.jsonData.tlsAuth == false + - result.datasource.jsonData.tlsAuthWithCACert == false + - result.datasource.name == 'datasource-azure' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'grafana-azure-monitor-datasource' + - result.datasource.url == 'http://example.com' + - result.datasource.user == '' + - result.datasource.withCredentials == false - name: Check azure datasource creation idempotency register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-azure grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" - org_id: '1' + grafana_password: "{{ grafana_password }}" + org_id: "1" ds_type: grafana-azure-monitor-datasource ds_url: http://example.com azure_client: client1 @@ -52,37 +53,37 @@ azure_secret: secret1 azure_cloud: azuremonitor -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed - - result.datasource.access == 'proxy' - - result.datasource.basicAuth == false - - result.datasource.database == '' - - result.datasource.isDefault == false - - result.datasource.jsonData.clientId == 'client1' - - result.datasource.jsonData.cloudName == 'azuremonitor' - - result.datasource.jsonData.tenantId == 'tenant1' - - result.datasource.jsonData.tlsAuth == false - - result.datasource.jsonData.tlsAuthWithCACert == false - - result.datasource.name == 'datasource-azure' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'grafana-azure-monitor-datasource' - - result.datasource.url == 'http://example.com' - - result.datasource.user == '' - - result.datasource.withCredentials == false + - not result.changed + - result.datasource.access == 'proxy' + - result.datasource.basicAuth == false + - result.datasource.database == '' + - result.datasource.isDefault == false + - result.datasource.jsonData.clientId == 'client1' + - result.datasource.jsonData.cloudName == 'azuremonitor' + - result.datasource.jsonData.tenantId == 'tenant1' + - result.datasource.jsonData.tlsAuth == false + - result.datasource.jsonData.tlsAuthWithCACert == false + - result.datasource.name == 'datasource-azure' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'grafana-azure-monitor-datasource' + - result.datasource.url == 'http://example.com' + - result.datasource.user == '' + - result.datasource.withCredentials == false - name: Delete azure datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-azure grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" - org_id: '1' + grafana_password: "{{ grafana_password }}" + org_id: "1" ds_type: grafana-azure-monitor-datasource ds_url: http://example.com azure_client: client1 @@ -91,22 +92,22 @@ azure_cloud: azuremonitor state: absent -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - "result.msg == 'Datasource datasource-azure deleted.'" + - result.changed + - result.msg == 'Datasource datasource-azure deleted.' - name: Delete azure datasource (idempotency) register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-azure grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" - org_id: '1' + grafana_password: "{{ grafana_password }}" + org_id: "1" ds_type: grafana-azure-monitor-datasource ds_url: http://example.com azure_client: client1 @@ -115,9 +116,9 @@ azure_cloud: azuremonitor state: absent -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed + - not result.changed diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/cloudwatch.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/cloudwatch.yml index 50268ea8f..79408b68b 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/cloudwatch.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/cloudwatch.yml @@ -1,11 +1,12 @@ +--- - name: Create cloudwatch datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-cloudwatch grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" - org_id: '1' + grafana_password: "{{ grafana_password }}" + org_id: "1" ds_type: cloudwatch ds_url: http://monitoring.us-west-1.amazonaws.com aws_auth_type: keys @@ -14,38 +15,38 @@ aws_secret_key: mel10n aws_custom_metrics_namespaces: n1,n2 -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - "result.msg == 'Datasource datasource-cloudwatch created'" - - result.datasource.access == 'proxy' - - result.datasource.basicAuth == false - - result.datasource.database == '' - - result.datasource.isDefault == false - - result.datasource.jsonData.authType == 'keys' - - result.datasource.jsonData.customMetricsNamespaces == 'n1,n2' - - result.datasource.jsonData.defaultRegion == 'us-west-1' - - result.datasource.jsonData.tlsAuth == false - - result.datasource.jsonData.tlsAuthWithCACert == false - - result.datasource.name == 'datasource-cloudwatch' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'cloudwatch' - - result.datasource.url == 'http://monitoring.us-west-1.amazonaws.com' - - result.datasource.user == '' - - result.datasource.withCredentials == false + - result.changed + - result.msg == 'Datasource datasource-cloudwatch created' + - result.datasource.access == 'proxy' + - result.datasource.basicAuth == false + - result.datasource.database == '' + - result.datasource.isDefault == false + - result.datasource.jsonData.authType == 'keys' + - result.datasource.jsonData.customMetricsNamespaces == 'n1,n2' + - result.datasource.jsonData.defaultRegion == 'us-west-1' + - result.datasource.jsonData.tlsAuth == false + - result.datasource.jsonData.tlsAuthWithCACert == false + - result.datasource.name == 'datasource-cloudwatch' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'cloudwatch' + - result.datasource.url == 'http://monitoring.us-west-1.amazonaws.com' + - result.datasource.user == '' + - result.datasource.withCredentials == false - name: Check cloudwatch datasource creation idempotency register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-cloudwatch grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: cloudwatch ds_url: http://monitoring.us-west-1.amazonaws.com aws_auth_type: keys @@ -54,58 +55,58 @@ aws_secret_key: mel10n aws_custom_metrics_namespaces: n1,n2 -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed - - result.datasource.access == 'proxy' - - result.datasource.basicAuth == false - - result.datasource.database == '' - - result.datasource.isDefault == false - - result.datasource.jsonData.authType == 'keys' - - result.datasource.jsonData.customMetricsNamespaces == 'n1,n2' - - result.datasource.jsonData.defaultRegion == 'us-west-1' - - result.datasource.jsonData.tlsAuth == false - - result.datasource.jsonData.tlsAuthWithCACert == false - - result.datasource.name == 'datasource-cloudwatch' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'cloudwatch' - - result.datasource.url == 'http://monitoring.us-west-1.amazonaws.com' - - result.datasource.user == '' - - result.datasource.withCredentials == false + - not result.changed + - result.datasource.access == 'proxy' + - result.datasource.basicAuth == false + - result.datasource.database == '' + - result.datasource.isDefault == false + - result.datasource.jsonData.authType == 'keys' + - result.datasource.jsonData.customMetricsNamespaces == 'n1,n2' + - result.datasource.jsonData.defaultRegion == 'us-west-1' + - result.datasource.jsonData.tlsAuth == false + - result.datasource.jsonData.tlsAuthWithCACert == false + - result.datasource.name == 'datasource-cloudwatch' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'cloudwatch' + - result.datasource.url == 'http://monitoring.us-west-1.amazonaws.com' + - result.datasource.user == '' + - result.datasource.withCredentials == false - name: Delete cloudwatch datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-cloudwatch grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" state: absent -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - "result.msg == 'Datasource datasource-cloudwatch deleted.'" + - result.changed + - result.msg == 'Datasource datasource-cloudwatch deleted.' - name: Delete cloudwatch datasource (idempotency) register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-cloudwatch grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" state: absent -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed + - not result.changed diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/elastic.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/elastic.yml index 73b258426..ff05b93f5 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/elastic.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/elastic.yml @@ -1,313 +1,313 @@ --- - name: Create elasticsearch datasource with legacy elasticsearch format register: result - grafana_datasource: - name: "datasource/elasticLegacy" - uid: "myuid" + community.grafana.grafana_datasource: + name: datasource/elasticLegacy + uid: myuid grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: elasticsearch ds_url: https://elastic.company.com:9200 - database: '[logstash_]YYYY.MM.DD' + database: "[logstash_]YYYY.MM.DD" basic_auth_user: grafana - basic_auth_password: '******' - time_field: '@timestamp' + basic_auth_password: "******" + time_field: "@timestamp" time_interval: 1m interval: Daily es_version: 56 max_concurrent_shard_requests: 42 tls_ca_cert: /etc/ssl/certs/ca.pem -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - result.datasource.basicAuth - - result.datasource.basicAuthUser == 'grafana' - - result.datasource.access == 'proxy' - - result.datasource.database == '[logstash_]YYYY.MM.DD' - - not result.datasource.isDefault - - result.datasource.jsonData.esVersion == 56 - - result.datasource.jsonData.interval == 'Daily' - - result.datasource.jsonData.maxConcurrentShardRequests == 42 - - result.datasource.jsonData.timeField == '@timestamp' - - not result.datasource.jsonData.tlsAuth - - result.datasource.jsonData.tlsAuthWithCACert - - result.datasource.name == 'datasource/elasticLegacy' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'elasticsearch' - - result.datasource.url == 'https://elastic.company.com:9200' - - result.datasource.user == '' - - not result.datasource.withCredentials - - "result.msg == 'Datasource datasource/elasticLegacy created'" + - result.changed + - result.datasource.basicAuth + - result.datasource.basicAuthUser == 'grafana' + - result.datasource.access == 'proxy' + - result.datasource.database == '[logstash_]YYYY.MM.DD' + - not result.datasource.isDefault + - result.datasource.jsonData.esVersion == 56 + - result.datasource.jsonData.interval == 'Daily' + - result.datasource.jsonData.maxConcurrentShardRequests == 42 + - result.datasource.jsonData.timeField == '@timestamp' + - not result.datasource.jsonData.tlsAuth + - result.datasource.jsonData.tlsAuthWithCACert + - result.datasource.name == 'datasource/elasticLegacy' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'elasticsearch' + - result.datasource.url == 'https://elastic.company.com:9200' + - result.datasource.user == '' + - not result.datasource.withCredentials + - result.msg == 'Datasource datasource/elasticLegacy created' - name: Create elasticsearch datasource with new elsaticsearch version format register: result - grafana_datasource: - name: "datasource/elastic" + community.grafana.grafana_datasource: + name: datasource/elastic grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: elasticsearch ds_url: https://elastic.company.com:9200 - database: '[logstash_]YYYY.MM.DD' + database: "[logstash_]YYYY.MM.DD" basic_auth_user: grafana - basic_auth_password: '******' - time_field: '@timestamp' + basic_auth_password: "******" + time_field: "@timestamp" time_interval: 1m interval: Daily - es_version: "7.10+" + es_version: 7.10+ max_concurrent_shard_requests: 42 tls_ca_cert: /etc/ssl/certs/ca.pem -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - result.datasource.basicAuth - - result.datasource.basicAuthUser == 'grafana' - - result.datasource.access == 'proxy' - - result.datasource.database == '[logstash_]YYYY.MM.DD' - - not result.datasource.isDefault - - result.datasource.jsonData.esVersion == "7.10.0" - - result.datasource.jsonData.interval == 'Daily' - - result.datasource.jsonData.maxConcurrentShardRequests == 42 - - result.datasource.jsonData.timeField == '@timestamp' - - not result.datasource.jsonData.tlsAuth - - result.datasource.jsonData.tlsAuthWithCACert - - result.datasource.name == 'datasource/elastic' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'elasticsearch' - - result.datasource.url == 'https://elastic.company.com:9200' - - result.datasource.user == '' - - not result.datasource.withCredentials - - "result.msg == 'Datasource datasource/elastic created'" + - result.changed + - result.datasource.basicAuth + - result.datasource.basicAuthUser == 'grafana' + - result.datasource.access == 'proxy' + - result.datasource.database == '[logstash_]YYYY.MM.DD' + - not result.datasource.isDefault + - result.datasource.jsonData.esVersion == "7.10.0" + - result.datasource.jsonData.interval == 'Daily' + - result.datasource.jsonData.maxConcurrentShardRequests == 42 + - result.datasource.jsonData.timeField == '@timestamp' + - not result.datasource.jsonData.tlsAuth + - result.datasource.jsonData.tlsAuthWithCACert + - result.datasource.name == 'datasource/elastic' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'elasticsearch' + - result.datasource.url == 'https://elastic.company.com:9200' + - result.datasource.user == '' + - not result.datasource.withCredentials + - result.msg == 'Datasource datasource/elastic created' - name: Check elasticsearch datasource creation idempotency register: result - grafana_datasource: - name: "datasource/elastic" + community.grafana.grafana_datasource: + name: datasource/elastic grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: elasticsearch ds_url: https://elastic.company.com:9200 - database: '[logstash_]YYYY.MM.DD' + database: "[logstash_]YYYY.MM.DD" basic_auth_user: grafana - basic_auth_password: '******' - time_field: '@timestamp' + basic_auth_password: "******" + time_field: "@timestamp" time_interval: 1m interval: Daily - es_version: "7.10+" + es_version: 7.10+ max_concurrent_shard_requests: 42 tls_ca_cert: /etc/ssl/certs/ca.pem -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed - - result.datasource.basicAuth - - result.datasource.basicAuthUser == 'grafana' - - result.datasource.access == 'proxy' - - result.datasource.database == '[logstash_]YYYY.MM.DD' - - not result.datasource.isDefault - - result.datasource.jsonData.esVersion == '7.10.0' - - result.datasource.jsonData.interval == 'Daily' - - result.datasource.jsonData.maxConcurrentShardRequests == 42 - - result.datasource.jsonData.timeField == '@timestamp' - - not result.datasource.jsonData.tlsAuth - - result.datasource.jsonData.tlsAuthWithCACert - - result.datasource.name == 'datasource/elastic' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'elasticsearch' - - result.datasource.url == 'https://elastic.company.com:9200' - - result.datasource.user == '' - - not result.datasource.withCredentials + - not result.changed + - result.datasource.basicAuth + - result.datasource.basicAuthUser == 'grafana' + - result.datasource.access == 'proxy' + - result.datasource.database == '[logstash_]YYYY.MM.DD' + - not result.datasource.isDefault + - result.datasource.jsonData.esVersion == '7.10.0' + - result.datasource.jsonData.interval == 'Daily' + - result.datasource.jsonData.maxConcurrentShardRequests == 42 + - result.datasource.jsonData.timeField == '@timestamp' + - not result.datasource.jsonData.tlsAuth + - result.datasource.jsonData.tlsAuthWithCACert + - result.datasource.name == 'datasource/elastic' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'elasticsearch' + - result.datasource.url == 'https://elastic.company.com:9200' + - result.datasource.user == '' + - not result.datasource.withCredentials -- name: update elasticsearch datasource creation +- name: Update elasticsearch datasource creation register: result - grafana_datasource: - name: "datasource/elastic" + community.grafana.grafana_datasource: + name: datasource/elastic grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: elasticsearch ds_url: https://elastic.example.com:9200 - database: '[logstash_]YYYY.MM.DD' + database: "[logstash_]YYYY.MM.DD" basic_auth_user: grafana - basic_auth_password: '******' - time_field: '@timestamp' + basic_auth_password: "******" + time_field: "@timestamp" time_interval: 1m interval: Daily - es_version: "7.10+" + es_version: 7.10+ max_concurrent_shard_requests: 42 tls_ca_cert: /etc/ssl/certs/ca.pem -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - result.datasource.basicAuth - - result.datasource.basicAuthUser == 'grafana' - - result.datasource.access == 'proxy' - - result.datasource.database == '[logstash_]YYYY.MM.DD' - - not result.datasource.isDefault - - result.datasource.jsonData.esVersion == '7.10.0' - - result.datasource.jsonData.interval == 'Daily' - - result.datasource.jsonData.maxConcurrentShardRequests == 42 - - result.datasource.jsonData.timeField == '@timestamp' - - not result.datasource.jsonData.tlsAuth - - result.datasource.jsonData.tlsAuthWithCACert - - result.datasource.name == 'datasource/elastic' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'elasticsearch' - - result.datasource.url == 'https://elastic.example.com:9200' - - result.datasource.user == '' - - not result.datasource.withCredentials + - result.changed + - result.datasource.basicAuth + - result.datasource.basicAuthUser == 'grafana' + - result.datasource.access == 'proxy' + - result.datasource.database == '[logstash_]YYYY.MM.DD' + - not result.datasource.isDefault + - result.datasource.jsonData.esVersion == '7.10.0' + - result.datasource.jsonData.interval == 'Daily' + - result.datasource.jsonData.maxConcurrentShardRequests == 42 + - result.datasource.jsonData.timeField == '@timestamp' + - not result.datasource.jsonData.tlsAuth + - result.datasource.jsonData.tlsAuthWithCACert + - result.datasource.name == 'datasource/elastic' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'elasticsearch' + - result.datasource.url == 'https://elastic.example.com:9200' + - result.datasource.user == '' + - not result.datasource.withCredentials -- name: update elasticsearch datasource (ignoring secureJsonData) +- name: Update elasticsearch datasource (ignoring secureJsonData) register: result - grafana_datasource: - name: "datasource/elastic" + community.grafana.grafana_datasource: + name: datasource/elastic grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: elasticsearch ds_url: https://elastic.example.com:9200 - database: '[logstash_]YYYY.MM.DD' + database: "[logstash_]YYYY.MM.DD" basic_auth_user: grafana - basic_auth_password: '******' - time_field: '@timestamp' + basic_auth_password: "******" + time_field: "@timestamp" time_interval: 1m interval: Daily - es_version: "7.10+" + es_version: 7.10+ max_concurrent_shard_requests: 42 tls_ca_cert: /etc/ssl/certs/ca.pem enforce_secure_data: false additional_json_data: - nonSecureTest: "nonsecure" + nonSecureTest: nonsecure additional_secure_json_data: - secureTest: "secure" + secureTest: secure -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - result.datasource.basicAuth - - result.datasource.basicAuthUser == 'grafana' - - result.datasource.access == 'proxy' - - result.datasource.database == '[logstash_]YYYY.MM.DD' - - not result.datasource.isDefault - - result.datasource.jsonData.esVersion == '7.10.0' - - result.datasource.jsonData.interval == 'Daily' - - result.datasource.jsonData.maxConcurrentShardRequests == 42 - - result.datasource.jsonData.timeField == '@timestamp' - - not result.datasource.jsonData.tlsAuth - - result.datasource.jsonData.tlsAuthWithCACert - - result.datasource.name == 'datasource/elastic' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'elasticsearch' - - result.datasource.url == 'https://elastic.example.com:9200' - - result.datasource.user == '' - - not result.datasource.withCredentials - - result.datasource.jsonData.nonSecureTest == 'nonsecure' + - result.changed + - result.datasource.basicAuth + - result.datasource.basicAuthUser == 'grafana' + - result.datasource.access == 'proxy' + - result.datasource.database == '[logstash_]YYYY.MM.DD' + - not result.datasource.isDefault + - result.datasource.jsonData.esVersion == '7.10.0' + - result.datasource.jsonData.interval == 'Daily' + - result.datasource.jsonData.maxConcurrentShardRequests == 42 + - result.datasource.jsonData.timeField == '@timestamp' + - not result.datasource.jsonData.tlsAuth + - result.datasource.jsonData.tlsAuthWithCACert + - result.datasource.name == 'datasource/elastic' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'elasticsearch' + - result.datasource.url == 'https://elastic.example.com:9200' + - result.datasource.user == '' + - not result.datasource.withCredentials + - result.datasource.jsonData.nonSecureTest == 'nonsecure' -- name: update elasticsearch datasource (including secureJsonData) +- name: Update elasticsearch datasource (including secureJsonData) register: result - grafana_datasource: - name: "datasource/elastic" + community.grafana.grafana_datasource: + name: datasource/elastic grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: elasticsearch ds_url: https://elastic.example.com:9200 - database: '[logstash_]YYYY.MM.DD' + database: "[logstash_]YYYY.MM.DD" basic_auth_user: grafana - basic_auth_password: '******' - time_field: '@timestamp' + basic_auth_password: "******" + time_field: "@timestamp" time_interval: 1m interval: Daily - es_version: "7.10+" + es_version: 7.10+ max_concurrent_shard_requests: 42 tls_ca_cert: /etc/ssl/certs/ca.pem enforce_secure_data: true additional_json_data: - nonSecureTest: "nonsecure" + nonSecureTest: nonsecure additional_secure_json_data: - secureTest: "secure" + secureTest: secure -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - result.datasource.basicAuth - - result.datasource.basicAuthUser == 'grafana' - - result.datasource.access == 'proxy' - - result.datasource.database == '[logstash_]YYYY.MM.DD' - - not result.datasource.isDefault - - result.datasource.jsonData.esVersion == '7.10.0' - - result.datasource.jsonData.interval == 'Daily' - - result.datasource.jsonData.maxConcurrentShardRequests == 42 - - result.datasource.jsonData.timeField == '@timestamp' - - not result.datasource.jsonData.tlsAuth - - result.datasource.jsonData.tlsAuthWithCACert - - result.datasource.name == 'datasource/elastic' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'elasticsearch' - - result.datasource.url == 'https://elastic.example.com:9200' - - result.datasource.user == '' - - not result.datasource.withCredentials - - result.datasource.jsonData.nonSecureTest == 'nonsecure' - - result.datasource.secureJsonFields.secureTest == true - - result.diff.after.secureJsonData is defined + - result.changed + - result.datasource.basicAuth + - result.datasource.basicAuthUser == 'grafana' + - result.datasource.access == 'proxy' + - result.datasource.database == '[logstash_]YYYY.MM.DD' + - not result.datasource.isDefault + - result.datasource.jsonData.esVersion == '7.10.0' + - result.datasource.jsonData.interval == 'Daily' + - result.datasource.jsonData.maxConcurrentShardRequests == 42 + - result.datasource.jsonData.timeField == '@timestamp' + - not result.datasource.jsonData.tlsAuth + - result.datasource.jsonData.tlsAuthWithCACert + - result.datasource.name == 'datasource/elastic' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'elasticsearch' + - result.datasource.url == 'https://elastic.example.com:9200' + - result.datasource.user == '' + - not result.datasource.withCredentials + - result.datasource.jsonData.nonSecureTest == 'nonsecure' + - result.datasource.secureJsonFields.secureTest == true + - result.diff.after.secureJsonData is defined - name: Delete elasticsearch datasource register: result - grafana_datasource: - name: "datasource/elastic" + community.grafana.grafana_datasource: + name: datasource/elastic grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" state: absent -- assert: +- ansible.builtin.assert: that: - - result.changed + - result.changed - name: Delete elasticsearch datasource (idempotency) register: result - grafana_datasource: - name: "datasource/elastic" + community.grafana.grafana_datasource: + name: datasource/elastic grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" state: absent -- assert: +- ansible.builtin.assert: that: - - not result.changed + - not result.changed diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/errors.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/errors.yml index 731a19d8f..779b4724d 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/errors.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/errors.yml @@ -1,18 +1,18 @@ --- - name: Create datasource without `ds_type` and `ds_url` (expect failure) register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-postgres grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" ignore_errors: true -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed - - result.failed - - "result.msg == 'state is present but all of the following are missing: ds_type, ds_url'" + - not result.changed + - result.failed + - "result.msg == 'state is present but all of the following are missing: ds_type, ds_url'" diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/influx.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/influx.yml index da61833f6..7952bec6b 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/influx.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/influx.yml @@ -1,88 +1,89 @@ +--- - name: Create influxdb datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-influxdb grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: influxdb ds_url: https://influx.company.com:8086 database: telegraf - time_interval: '>10s' + time_interval: ">10s" tls_ca_cert: /etc/ssl/certs/ca.pem -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - "result.msg == 'Datasource datasource-influxdb created'" + - result.changed + - result.msg == 'Datasource datasource-influxdb created' - name: Check influxdb datasource creation idempotency register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-influxdb grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: influxdb ds_url: https://influx.company.com:8086 database: telegraf - time_interval: '>10s' + time_interval: ">10s" tls_ca_cert: /etc/ssl/certs/ca.pem -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed - - result.datasource.basicAuth == false - - result.datasource.access == 'proxy' - - result.datasource.database == 'telegraf' - - result.datasource.isDefault == false - - result.datasource.jsonData.timeInterval == '>10s' - - result.datasource.jsonData.tlsAuth == false - - result.datasource.jsonData.tlsAuthWithCACert - - result.datasource.name == 'datasource-influxdb' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'influxdb' - - result.datasource.url == 'https://influx.company.com:8086' - - result.datasource.user == '' - - result.datasource.withCredentials == false + - not result.changed + - result.datasource.basicAuth == false + - result.datasource.access == 'proxy' + - result.datasource.database == 'telegraf' + - result.datasource.isDefault == false + - result.datasource.jsonData.timeInterval == '>10s' + - result.datasource.jsonData.tlsAuth == false + - result.datasource.jsonData.tlsAuthWithCACert + - result.datasource.name == 'datasource-influxdb' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'influxdb' + - result.datasource.url == 'https://influx.company.com:8086' + - result.datasource.user == '' + - result.datasource.withCredentials == false - name: Delete influxdb datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-influxdb grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" state: absent -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed + - result.changed - name: Delete influxdb datasource (idempotency) register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-influxdb grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" state: absent -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed + - not result.changed diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/issues.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/issues.yml index f80677d8d..3b4df5a71 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/issues.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/issues.yml @@ -1,46 +1,43 @@ --- - -- name: test datasource name with slash +- name: Test datasource name with slash register: result - grafana_datasource: - name: "datasource/elastic" + community.grafana.grafana_datasource: + name: datasource/elastic grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: elasticsearch ds_url: https://elastic.company.com:9200 - database: '[logstash_]YYYY.MM.DD' + database: "[logstash_]YYYY.MM.DD" basic_auth_user: grafana - basic_auth_password: '******' - time_field: '@timestamp' + basic_auth_password: "******" + time_field: "@timestamp" time_interval: 1m interval: Daily es_version: 56 max_concurrent_shard_requests: 42 tls_ca_cert: /etc/ssl/certs/ca.pem -- assert: +- ansible.builtin.assert: that: - - result.changed - - result.datasource.basicAuth - - result.datasource.basicAuthUser == 'grafana' - - result.datasource.access == 'proxy' - - result.datasource.database == '[logstash_]YYYY.MM.DD' - - not result.datasource.isDefault - - result.datasource.jsonData.esVersion == 56 - - result.datasource.jsonData.interval == 'Daily' - - result.datasource.jsonData.maxConcurrentShardRequests == 42 - - result.datasource.jsonData.timeField == '@timestamp' - - not result.datasource.jsonData.tlsAuth - - not result.datasource.jsonData.tlsAuthWithCACert - - result.datasource.name == 'datasource/elastic' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'elasticsearch' - - result.datasource.url == 'https://elastic.company.com:9200' - - result.datasource.user == '' - - not result.datasource.withCredentials - - "result.msg == 'Datasource datasource/elastic created'" - -... + - result.changed + - result.datasource.basicAuth + - result.datasource.basicAuthUser == 'grafana' + - result.datasource.access == 'proxy' + - result.datasource.database == '[logstash_]YYYY.MM.DD' + - not result.datasource.isDefault + - result.datasource.jsonData.esVersion == 56 + - result.datasource.jsonData.interval == 'Daily' + - result.datasource.jsonData.maxConcurrentShardRequests == 42 + - result.datasource.jsonData.timeField == '@timestamp' + - not result.datasource.jsonData.tlsAuth + - not result.datasource.jsonData.tlsAuthWithCACert + - result.datasource.name == 'datasource/elastic' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'elasticsearch' + - result.datasource.url == 'https://elastic.company.com:9200' + - result.datasource.user == '' + - not result.datasource.withCredentials + - result.msg == 'Datasource datasource/elastic created' diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/loki.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/loki.yml index 68eca9802..a501b99d2 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/loki.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/loki.yml @@ -1,82 +1,83 @@ +--- - name: Create loki datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-loki grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" - org_id: '1' + grafana_password: "{{ grafana_password }}" + org_id: "1" ds_type: loki ds_url: https://loki.company.com:3100 -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - "result.msg == 'Datasource datasource-loki created'" + - result.changed + - result.msg == 'Datasource datasource-loki created' - name: Check loki datasource creation idempotency register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-loki grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: loki ds_url: https://loki.company.com:3100 -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed - - result.datasource.basicAuth == false - - result.datasource.access == 'proxy' - - result.datasource.database == '' - - result.datasource.isDefault == false - - result.datasource.jsonData.tlsAuth == false - - result.datasource.jsonData.tlsAuthWithCACert == false - - result.datasource.name == 'datasource-loki' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'loki' - - result.datasource.url == 'https://loki.company.com:3100' - - result.datasource.user == '' - - result.datasource.withCredentials == false + - not result.changed + - result.datasource.basicAuth == false + - result.datasource.access == 'proxy' + - result.datasource.database == '' + - result.datasource.isDefault == false + - result.datasource.jsonData.tlsAuth == false + - result.datasource.jsonData.tlsAuthWithCACert == false + - result.datasource.name == 'datasource-loki' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'loki' + - result.datasource.url == 'https://loki.company.com:3100' + - result.datasource.user == '' + - result.datasource.withCredentials == false - name: Delete loki datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-loki grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" state: absent -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - "result.msg == 'Datasource datasource-loki deleted.'" + - result.changed + - result.msg == 'Datasource datasource-loki deleted.' - name: Delete loki datasource (idempotency) register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-loki grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" state: absent -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed + - not result.changed diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/main.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/main.yml index b5798e9a8..0b3ea4cd6 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/main.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/main.yml @@ -1,16 +1,24 @@ --- - - block: - - include: errors.yml - - include: elastic.yml - - include: influx.yml - - include: postgres.yml - - include: cloudwatch.yml - - include: thruk.yml - - include: loki.yml - - include: zabbix.yml - - include: redis.yml - - include: azure.yml - - include: uid.yml - -... + - ansible.builtin.include_tasks: + file: errors.yml + - ansible.builtin.include_tasks: + file: elastic.yml + - ansible.builtin.include_tasks: + file: influx.yml + - ansible.builtin.include_tasks: + file: postgres.yml + - ansible.builtin.include_tasks: + file: cloudwatch.yml + - ansible.builtin.include_tasks: + file: thruk.yml + - ansible.builtin.include_tasks: + file: loki.yml + - ansible.builtin.include_tasks: + file: zabbix.yml + - ansible.builtin.include_tasks: + file: redis.yml + - ansible.builtin.include_tasks: + file: azure.yml + - ansible.builtin.include_tasks: + file: uid.yml diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/postgres.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/postgres.yml index 80221f012..b07bc752b 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/postgres.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/postgres.yml @@ -1,11 +1,12 @@ +--- - name: Create postgres datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-postgres grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: postgres ds_url: postgres.company.com:5432 database: db @@ -15,22 +16,22 @@ additional_json_data: timescaledb: true -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - "result.msg == 'Datasource datasource-postgres created'" + - result.changed + - result.msg == 'Datasource datasource-postgres created' - name: Check postgres datasource creation idempotency register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-postgres grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: postgres ds_url: postgres.company.com:5432 database: db @@ -40,54 +41,54 @@ additional_json_data: timescaledb: true -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed - - result.datasource.basicAuth == false - - result.datasource.database == 'db' - - result.datasource.isDefault == false - - result.datasource.jsonData.sslmode == 'verify-full' - - result.datasource.jsonData.tlsAuth == false - - result.datasource.jsonData.tlsAuthWithCACert == false - - result.datasource.jsonData.timescaledb == true - - result.datasource.name == 'datasource-postgres' - - result.datasource.orgId == 1 - - result.datasource.type == 'postgres' - - result.datasource.url == 'postgres.company.com:5432' - - result.datasource.user == 'postgres' - - result.datasource.withCredentials == false + - not result.changed + - result.datasource.basicAuth == false + - result.datasource.database == 'db' + - result.datasource.isDefault == false + - result.datasource.jsonData.sslmode == 'verify-full' + - result.datasource.jsonData.tlsAuth == false + - result.datasource.jsonData.tlsAuthWithCACert == false + - result.datasource.jsonData.timescaledb == true + - result.datasource.name == 'datasource-postgres' + - result.datasource.orgId == 1 + - result.datasource.type == 'postgres' + - result.datasource.url == 'postgres.company.com:5432' + - result.datasource.user == 'postgres' + - result.datasource.withCredentials == false - name: Delete postgres datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-postgres grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" state: absent -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed + - result.changed - name: Delete postgres datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-postgres grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" state: absent -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed + - not result.changed diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/quickwit.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/quickwit.yml new file mode 100644 index 000000000..8221dcb42 --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/quickwit.yml @@ -0,0 +1,137 @@ +--- +- name: Create Quickwit datasource + register: result + community.grafana.grafana_datasource: + name: Quickwit + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + org_id: "1" + ds_type: quickwit-quickwit-datasource + ds_url: http://localhost:7280/api/v1 + additional_json_data: + index: hdfs-logs + timeField: timestamp + timeOutputFormat: unix_timestamp_secs + logMessageField: body + logLevelField: severity_text + +- ansible.builtin.debug: + var: result + +- ansible.builtin.assert: + that: + - result.changed + - result.datasource.access == 'proxy' + - not result.datasource.isDefault + - result.datasource.database == '' + - result.datasource.name == 'Quickwit' + - result.datasource.orgId == 1 + - result.datasource.type == 'quickwit-quickwit-datasource' + - result.datasource.url == 'http://localhost:7280/api/v1' + - result.msg == 'Datasource Quickwit created' + - result.datasource.jsonData.index == 'hdfs-logs' + - result.datasource.jsonData.timeField == 'timestamp' + - result.datasource.jsonData.timeOutputFormat == 'unix_timestamp_secs' + - result.datasource.jsonData.logMessageField == 'body' + - result.datasource.jsonData.logLevelField == 'severity_text' + +- name: Check Quickwit datasource creation (idempotency) + register: result + community.grafana.grafana_datasource: + name: Quickwit + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + org_id: "1" + ds_type: quickwit-quickwit-datasource + ds_url: http://localhost:7280/api/v1 + additional_json_data: + index: hdfs-logs + timeField: timestamp + timeOutputFormat: unix_timestamp_secs + logMessageField: body + logLevelField: severity_text + +- ansible.builtin.debug: + var: result + +- ansible.builtin.assert: + that: + - not result.changed + - result.datasource.access == 'proxy' + - not result.datasource.isDefault + - result.datasource.database == '' + - result.datasource.name == 'Quickwit' + - result.datasource.orgId == 1 + - result.datasource.type == 'quickwit-quickwit-datasource' + - result.datasource.url == 'http://localhost:7280/api/v1' + - result.msg == 'Datasource Quickwit created' + - result.datasource.jsonData.index == 'hdfs-logs' + - result.datasource.jsonData.timeField == 'timestamp' + - result.datasource.jsonData.timeOutputFormat == 'unix_timestamp_secs' + - result.datasource.jsonData.logMessageField == 'body' + - result.datasource.jsonData.logLevelField == 'severity_text' + +- name: Update Quickwit datasource + register: result + community.grafana.grafana_datasource: + name: Quickwit + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + org_id: "1" + ds_type: quickwit-quickwit-datasource + ds_url: http://quickwit-url:7280/api/v1 + additional_json_data: + index: hdfs-logs + timeField: timestamp + timeOutputFormat: unix_timestamp_millis + logMessageField: body + logLevelField: severity_text + +- ansible.builtin.debug: + var: result + +- ansible.builtin.assert: + that: + - result.changed + - result.datasource.access == 'proxy' + - not result.datasource.isDefault + - result.datasource.database == '' + - result.datasource.name == 'Quickwit' + - result.datasource.orgId == 1 + - result.datasource.type == 'quickwit-quickwit-datasource' + - result.datasource.url == 'http://quickwit-url:7280/api/v1' + - result.msg == 'Datasource Quickwit created' + - result.datasource.jsonData.index == 'hdfs-logs' + - result.datasource.jsonData.timeField == 'timestamp' + - result.datasource.jsonData.timeOutputFormat == 'unix_timestamp_millis' + - result.datasource.jsonData.logMessageField == 'body' + - result.datasource.jsonData.logLevelField == 'severity_text' + +- name: Delete Quickwit datasource + register: result + community.grafana.grafana_datasource: + name: Quickwit + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: absent + +- ansible.builtin.assert: + that: + - result.changed + +- name: Delete Quickwit datasource (idempotency) + register: result + community.grafana.grafana_datasource: + name: Quickwit + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: absent + +- ansible.builtin.assert: + that: + - not result.changed diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/redis.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/redis.yml index 933695354..dc39be64e 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/redis.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/redis.yml @@ -1,101 +1,102 @@ +--- - name: Create redis datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-redis grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: redis-datasource ds_url: https://redis.company.com:6379 time_interval: 1m -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - result.datasource.access == 'proxy' - - not result.datasource.isDefault - - result.datasource.name == 'datasource-redis' - - result.datasource.orgId == 1 - - result.datasource.type == 'redis-datasource' - - result.datasource.url == 'https://redis.company.com:6379' - - "result.msg == 'Datasource datasource-redis created'" + - result.changed + - result.datasource.access == 'proxy' + - not result.datasource.isDefault + - result.datasource.name == 'datasource-redis' + - result.datasource.orgId == 1 + - result.datasource.type == 'redis-datasource' + - result.datasource.url == 'https://redis.company.com:6379' + - result.msg == 'Datasource datasource-redis created' - name: Check redis-datasource datasource creation idempotency register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-redis grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: redis-datasource ds_url: https://redis.company.com:6379 time_interval: 1m -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed - - result.datasource.access == 'proxy' - - not result.datasource.isDefault - - result.datasource.name == 'datasource-redis' - - result.datasource.orgId == 1 - - result.datasource.type == 'redis-datasource' - - result.datasource.url == 'https://redis.company.com:6379' + - not result.changed + - result.datasource.access == 'proxy' + - not result.datasource.isDefault + - result.datasource.name == 'datasource-redis' + - result.datasource.orgId == 1 + - result.datasource.type == 'redis-datasource' + - result.datasource.url == 'https://redis.company.com:6379' -- name: update redis-datasource datasource creation +- name: Update redis-datasource datasource creation register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-redis grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: redis-datasource ds_url: https://redisnew.company.com:6379 time_interval: 1m -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - result.datasource.access == 'proxy' - - not result.datasource.isDefault - - result.datasource.name == 'datasource-redis' - - result.datasource.orgId == 1 - - result.datasource.type == 'redis-datasource' - - result.datasource.url == 'https://redisnew.company.com:6379' + - result.changed + - result.datasource.access == 'proxy' + - not result.datasource.isDefault + - result.datasource.name == 'datasource-redis' + - result.datasource.orgId == 1 + - result.datasource.type == 'redis-datasource' + - result.datasource.url == 'https://redisnew.company.com:6379' -- name: Delete redis-datasource datasource +- name: Delete redis-datasource datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-redis grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" state: absent -- assert: +- ansible.builtin.assert: that: - - result.changed + - result.changed - name: Delete redis-datasource datasource (idempotency) register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-redis grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" state: absent -- assert: +- ansible.builtin.assert: that: - - not result.changed + - not result.changed diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/tempo.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/tempo.yml new file mode 100644 index 000000000..51ab52513 --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/tempo.yml @@ -0,0 +1,79 @@ +--- +- name: Create tempo datasource + register: result + community.grafana.grafana_datasource: + name: datasource-tempo + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + org_id: "1" + ds_type: tempo + ds_url: tempo.company.com:3100 + +- ansible.builtin.debug: + var: result + +- ansible.builtin.assert: + that: + - result.changed + - result.msg == 'Datasource datasource-tempo created' + +- name: Check tempo datasource creation idempotency + register: result + community.grafana.grafana_datasource: + name: datasource-tempo + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + org_id: "1" + ds_type: tempo + ds_url: tempo.company.com:3100 + +- ansible.builtin.debug: + var: result + +- ansible.builtin.assert: + that: + - not result.changed + - result.datasource.basicAuth == false + - result.datasource.isDefault == false + - result.datasource.jsonData.tlsAuth == false + - result.datasource.jsonData.tlsAuthWithCACert == false + - result.datasource.secureJsonFields.httpHeaderValue1 == true + - result.datasource.name == 'datasource-tempo' + - result.datasource.orgId == 1 + - result.datasource.type == 'tempo' + - result.datasource.url == 'tempo.company.com:3100' + - result.datasource.withCredentials == false + +- name: Delete tempo datasource + register: result + community.grafana.grafana_datasource: + name: datasource-tempo + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: absent + +- ansible.builtin.debug: + var: result + +- ansible.builtin.assert: + that: + - result.changed + +- name: Delete tempo datasource + register: result + community.grafana.grafana_datasource: + name: datasource-tempo + grafana_url: "{{ grafana_url }}" + grafana_user: "{{ grafana_username }}" + grafana_password: "{{ grafana_password }}" + state: absent + +- ansible.builtin.debug: + var: result + +- ansible.builtin.assert: + that: + - not result.changed diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/thruk.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/thruk.yml index 3ecc92d94..74f7c4dfa 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/thruk.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/thruk.yml @@ -1,78 +1,79 @@ +--- - name: Create thruk datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-thruk grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" org_id: "1" ds_type: sni-thruk-datasource - ds_url: "https://thruk.company.com/sitename/thruk" - tls_skip_verify: yes - validate_certs: no + ds_url: https://thruk.company.com/sitename/thruk + tls_skip_verify: true + validate_certs: false -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - "result.msg == 'Datasource datasource-thruk created'" + - result.changed + - result.msg == 'Datasource datasource-thruk created' - name: Check thruk datasource creation idempotency register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-thruk grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: sni-thruk-datasource - ds_url: "https://thruk.company.com/sitename/thruk" - tls_skip_verify: yes - validate_certs: no + ds_url: https://thruk.company.com/sitename/thruk + tls_skip_verify: true + validate_certs: false -- assert: +- ansible.builtin.assert: that: - - not result.changed - - result.datasource.basicAuth == false - - result.datasource.access == 'proxy' - - result.datasource.isDefault == false - - result.datasource.jsonData.tlsAuth == false - - result.datasource.jsonData.tlsAuthWithCACert == false - - result.datasource.name == 'datasource-thruk' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'sni-thruk-datasource' - - result.datasource.url == 'https://thruk.company.com/sitename/thruk' - - result.datasource.user == '' - - result.datasource.withCredentials == false + - not result.changed + - result.datasource.basicAuth == false + - result.datasource.access == 'proxy' + - result.datasource.isDefault == false + - result.datasource.jsonData.tlsAuth == false + - result.datasource.jsonData.tlsAuthWithCACert == false + - result.datasource.name == 'datasource-thruk' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'sni-thruk-datasource' + - result.datasource.url == 'https://thruk.company.com/sitename/thruk' + - result.datasource.user == '' + - result.datasource.withCredentials == false - name: Delete thruk datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-thruk grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" state: absent -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed + - result.changed - name: Delete thruk datasource (idempotency) register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-thruk grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" state: absent -- assert: +- ansible.builtin.assert: that: - - not result.changed + - not result.changed diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/uid.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/uid.yml index 71102a074..7a472b42f 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/uid.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/uid.yml @@ -1,253 +1,254 @@ +--- - name: Create datasource with uid register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-with-uid uid: uid1 grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: prometheus ds_url: https://prometheus.company.com:8086 - basic_auth_user: "admin" - basic_auth_password: "admin" - validate_certs: False - is_default: no + basic_auth_user: admin + basic_auth_password: admin + validate_certs: false + is_default: false -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - "result.msg == 'Datasource datasource-with-uid created'" + - result.changed + - result.msg == 'Datasource datasource-with-uid created' - name: Create datasource without uid register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-without-uid grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: prometheus ds_url: https://prometheus.company.com:8086 - basic_auth_user: "admin" - basic_auth_password: "admin" - validate_certs: False - is_default: no + basic_auth_user: admin + basic_auth_password: admin + validate_certs: false + is_default: false -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - "result.msg == 'Datasource datasource-without-uid created'" + - result.changed + - result.msg == 'Datasource datasource-without-uid created' - name: Check datasource creation idempotency with uid register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-with-uid uid: uid1 grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: prometheus ds_url: https://prometheus.company.com:8086 - basic_auth_user: "admin" - basic_auth_password: "admin" - validate_certs: False - is_default: no + basic_auth_user: admin + basic_auth_password: admin + validate_certs: false + is_default: false -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed - - result.datasource.access == 'proxy' - - result.datasource.isDefault == false - - result.datasource.jsonData.tlsAuth == false - - result.datasource.name == 'datasource-with-uid' - - result.datasource.uid == 'uid1' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'prometheus' - - result.datasource.url == 'https://prometheus.company.com:8086' - - result.datasource.user == '' - - result.datasource.withCredentials == false + - not result.changed + - result.datasource.access == 'proxy' + - result.datasource.isDefault == false + - result.datasource.jsonData.tlsAuth == false + - result.datasource.name == 'datasource-with-uid' + - result.datasource.uid == 'uid1' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'prometheus' + - result.datasource.url == 'https://prometheus.company.com:8086' + - result.datasource.user == '' + - result.datasource.withCredentials == false - name: Check datasource creation idempotency without uid register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-without-uid grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: prometheus ds_url: https://prometheus.company.com:8086 - basic_auth_user: "admin" - basic_auth_password: "admin" - validate_certs: False - is_default: no + basic_auth_user: admin + basic_auth_password: admin + validate_certs: false + is_default: false -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed - - result.datasource.access == 'proxy' - - result.datasource.isDefault == false - - result.datasource.jsonData.tlsAuth == false - - result.datasource.name == 'datasource-without-uid' - - result.datasource.uid - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'prometheus' - - result.datasource.url == 'https://prometheus.company.com:8086' - - result.datasource.user == '' - - result.datasource.withCredentials == false + - not result.changed + - result.datasource.access == 'proxy' + - result.datasource.isDefault == false + - result.datasource.jsonData.tlsAuth == false + - result.datasource.name == 'datasource-without-uid' + - result.datasource.uid + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'prometheus' + - result.datasource.url == 'https://prometheus.company.com:8086' + - result.datasource.user == '' + - result.datasource.withCredentials == false - name: Set uid for datasource with random uid register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-without-uid uid: uid3 grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: prometheus ds_url: https://prometheus.company.com:8086 - basic_auth_user: "admin" - basic_auth_password: "admin" - validate_certs: False - is_default: no + basic_auth_user: admin + basic_auth_password: admin + validate_certs: false + is_default: false -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - result.datasource.access == 'proxy' - - result.datasource.isDefault == false - - result.datasource.jsonData.tlsAuth == false - - result.datasource.name == 'datasource-without-uid' - - result.datasource.uid == 'uid3' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'prometheus' - - result.datasource.url == 'https://prometheus.company.com:8086' - - result.datasource.user == '' - - result.datasource.withCredentials == false + - result.changed + - result.datasource.access == 'proxy' + - result.datasource.isDefault == false + - result.datasource.jsonData.tlsAuth == false + - result.datasource.name == 'datasource-without-uid' + - result.datasource.uid == 'uid3' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'prometheus' + - result.datasource.url == 'https://prometheus.company.com:8086' + - result.datasource.user == '' + - result.datasource.withCredentials == false - name: Change uid for datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-with-uid uid: uid2 grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: prometheus ds_url: https://prometheus.company.com:8086 - basic_auth_user: "admin" - basic_auth_password: "admin" - validate_certs: False - is_default: no + basic_auth_user: admin + basic_auth_password: admin + validate_certs: false + is_default: false -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - result.datasource.access == 'proxy' - - result.datasource.isDefault == false - - result.datasource.jsonData.tlsAuth == false - - result.datasource.name == 'datasource-with-uid' - - result.datasource.uid == 'uid2' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'prometheus' - - result.datasource.url == 'https://prometheus.company.com:8086' - - result.datasource.user == '' - - result.datasource.withCredentials == false + - result.changed + - result.datasource.access == 'proxy' + - result.datasource.isDefault == false + - result.datasource.jsonData.tlsAuth == false + - result.datasource.name == 'datasource-with-uid' + - result.datasource.uid == 'uid2' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'prometheus' + - result.datasource.url == 'https://prometheus.company.com:8086' + - result.datasource.user == '' + - result.datasource.withCredentials == false - name: Delete datasource-with-uid register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-with-uid uid: uid1 grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: prometheus ds_url: https://prometheus.company.com:8086 - basic_auth_user: "admin" - basic_auth_password: "admin" - validate_certs: False - is_default: no + basic_auth_user: admin + basic_auth_password: admin + validate_certs: false + is_default: false state: absent -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed + - result.changed - name: Delete datasource-without-uid register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-without-uid grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: prometheus ds_url: https://prometheus.company.com:8086 - basic_auth_user: "admin" - basic_auth_password: "admin" - validate_certs: False - is_default: no + basic_auth_user: admin + basic_auth_password: admin + validate_certs: false + is_default: false state: absent -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed + - result.changed - name: Delete datasource-with-uid (idempotency) register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-with-uid uid: uid1 grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: prometheus ds_url: https://prometheus.company.com:8086 - basic_auth_user: "admin" - basic_auth_password: "admin" - validate_certs: False - is_default: no + basic_auth_user: admin + basic_auth_password: admin + validate_certs: false + is_default: false state: absent -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed + - not result.changed diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/zabbix.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/zabbix.yml index c8a8236bf..d238efb3e 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/zabbix.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_datasource/tasks/zabbix.yml @@ -1,114 +1,115 @@ +--- - name: Create zabbix datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-zabbix grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: alexanderzobnin-zabbix-datasource ds_url: https://zabbix.company.com zabbix_user: grafana - zabbix_password: '******' + zabbix_password: "******" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - not result.datasource.isDefault - - result.datasource.jsonData.username == 'grafana' - - result.datasource.name == 'datasource-zabbix' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'alexanderzobnin-zabbix-datasource' - - result.datasource.url == 'https://zabbix.company.com' - - result.datasource.user == '' - - not result.datasource.withCredentials - - "result.msg == 'Datasource datasource-zabbix created'" + - result.changed + - not result.datasource.isDefault + - result.datasource.jsonData.username == 'grafana' + - result.datasource.name == 'datasource-zabbix' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'alexanderzobnin-zabbix-datasource' + - result.datasource.url == 'https://zabbix.company.com' + - result.datasource.user == '' + - not result.datasource.withCredentials + - result.msg == 'Datasource datasource-zabbix created' - name: Create zabbix datasource (idempotency) register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-zabbix grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: alexanderzobnin-zabbix-datasource ds_url: https://zabbix.company.com zabbix_user: grafana - zabbix_password: '******' + zabbix_password: "******" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - not result.changed - - not result.datasource.isDefault - - result.datasource.jsonData.username == 'grafana' - - result.datasource.name == 'datasource-zabbix' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'alexanderzobnin-zabbix-datasource' - - result.datasource.url == 'https://zabbix.company.com' - - result.datasource.user == '' - - not result.datasource.withCredentials + - not result.changed + - not result.datasource.isDefault + - result.datasource.jsonData.username == 'grafana' + - result.datasource.name == 'datasource-zabbix' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'alexanderzobnin-zabbix-datasource' + - result.datasource.url == 'https://zabbix.company.com' + - result.datasource.user == '' + - not result.datasource.withCredentials - name: Update zabbix datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-zabbix grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" - org_id: '1' + org_id: "1" ds_type: alexanderzobnin-zabbix-datasource ds_url: https://zabbix.example.com zabbix_user: grafana - zabbix_password: '******' + zabbix_password: "******" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - result.changed - - not result.datasource.isDefault - - result.datasource.jsonData.username == 'grafana' - - result.datasource.name == 'datasource-zabbix' - - result.datasource.orgId == 1 - - ('password' not in result.datasource) or (result.datasource.password == '') - - result.datasource.type == 'alexanderzobnin-zabbix-datasource' - - result.datasource.url == 'https://zabbix.example.com' - - result.datasource.user == '' - - not result.datasource.withCredentials - - "result.msg == 'Datasource datasource-zabbix updated'" + - result.changed + - not result.datasource.isDefault + - result.datasource.jsonData.username == 'grafana' + - result.datasource.name == 'datasource-zabbix' + - result.datasource.orgId == 1 + - ('password' not in result.datasource) or (result.datasource.password == '') + - result.datasource.type == 'alexanderzobnin-zabbix-datasource' + - result.datasource.url == 'https://zabbix.example.com' + - result.datasource.user == '' + - not result.datasource.withCredentials + - result.msg == 'Datasource datasource-zabbix updated' - name: Delete zabbix datasource register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-zabbix grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" state: absent -- assert: +- ansible.builtin.assert: that: - - result.changed + - result.changed - name: Delete zabbix datasource (idempotency) register: result - grafana_datasource: + community.grafana.grafana_datasource: name: datasource-zabbix grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" grafana_password: "{{ grafana_password }}" state: absent -- assert: +- ansible.builtin.assert: that: - - not result.changed + - not result.changed diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/defaults/main.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/defaults/main.yml index 8b9c9348a..4abf9bb43 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/defaults/main.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/defaults/main.yml @@ -1,7 +1,5 @@ --- -grafana_url: "http://grafana:3000/" -grafana_username: "admin" -grafana_password: "admin" - -... +grafana_url: http://grafana:3000/ +grafana_username: admin +grafana_password: admin diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/runme.sh b/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/runme.sh new file mode 100755 index 000000000..9daa487db --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/runme.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -eux + +ansible-playbook site.yml --check +ansible-playbook site.yml diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/site.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/site.yml new file mode 100644 index 000000000..2041400ea --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/site.yml @@ -0,0 +1,6 @@ +--- +- name: Run tests for grafana_folder + hosts: localhost + tasks: + - ansible.builtin.include_role: + name: ../../grafana_folder diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/tasks/create-delete.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/tasks/create-delete.yml new file mode 100644 index 000000000..c818c2ef1 --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/tasks/create-delete.yml @@ -0,0 +1,58 @@ +--- +- name: Create a Folder + community.grafana.grafana_folder: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + title: grafana_working_group + state: present + register: result + +- ansible.builtin.assert: + that: + - result.changed == true + - result.folder.title == 'grafana_working_group' + when: not ansible_check_mode + +- name: Test folder creation idempotency + community.grafana.grafana_folder: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + title: grafana_working_group + state: present + register: result + +- ansible.builtin.assert: + that: + - result.changed == false + - result.folder.title == 'grafana_working_group' + when: not ansible_check_mode + +- name: Delete a Folder + community.grafana.grafana_folder: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + title: grafana_working_group + state: absent + register: result + +- ansible.builtin.assert: + that: + - result.changed == true + when: not ansible_check_mode + +- name: Test folder deletion idempotency + community.grafana.grafana_folder: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + title: grafana_working_group + state: absent + register: result + +- ansible.builtin.assert: + that: + - result.changed == false + when: not ansible_check_mode diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/tasks/main.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/tasks/main.yml index c6a520560..0ac91f375 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/tasks/main.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/tasks/main.yml @@ -1,55 +1,6 @@ --- +- name: Folder creation and deletion + ansible.builtin.include_tasks: create-delete.yml -- name: Create a Folder - grafana_folder: - url: "{{ grafana_url }}" - url_username: "{{ grafana_username }}" - url_password: "{{ grafana_password }}" - title: "grafana_working_group" - state: present - register: result - -- assert: - that: - - "result.changed == true" - - "result.folder.title == 'grafana_working_group'" - -- name: Test folder creation idempotency - grafana_folder: - url: "{{ grafana_url }}" - url_username: "{{ grafana_username }}" - url_password: "{{ grafana_password }}" - title: "grafana_working_group" - state: present - register: result - -- assert: - that: - - "result.changed == false" - - "result.folder.title == 'grafana_working_group'" - -- name: Delete a Folder - grafana_folder: - url: "{{ grafana_url }}" - url_username: "{{ grafana_username }}" - url_password: "{{ grafana_password }}" - title: "grafana_working_group" - state: absent - register: result - -- assert: - that: - - "result.changed == true" - -- name: Test folder deletion idempotency - grafana_folder: - url: "{{ grafana_url }}" - url_username: "{{ grafana_username }}" - url_password: "{{ grafana_password }}" - title: "grafana_working_group" - state: absent - register: result - -- assert: - that: - - "result.changed == false" +- name: Folder creation and deletion for organization + ansible.builtin.include_tasks: org.yml diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/tasks/org.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/tasks/org.yml new file mode 100644 index 000000000..f30d48c14 --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_folder/tasks/org.yml @@ -0,0 +1,7 @@ +--- +- module_defaults: + community.grafana.grafana_folder: + org_name: Main Org. + block: + - name: Folder creation and deletion + ansible.builtin.include_tasks: create-delete.yml diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/defaults/main.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/defaults/main.yml index 8b9c9348a..4abf9bb43 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/defaults/main.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/defaults/main.yml @@ -1,7 +1,5 @@ --- -grafana_url: "http://grafana:3000/" -grafana_username: "admin" -grafana_password: "admin" - -... +grafana_url: http://grafana:3000/ +grafana_username: admin +grafana_password: admin diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/runme.sh b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/runme.sh new file mode 100755 index 000000000..867afb0d3 --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/runme.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -eux + +ansible-playbook site.yml diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/site.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/site.yml new file mode 100644 index 000000000..e20f44e32 --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/site.yml @@ -0,0 +1,6 @@ +--- +- name: Run tests for grafana_notification_channel + hosts: localhost + tasks: + - ansible.builtin.include_role: + name: ../../grafana_notification_channel diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/dingding.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/dingding.yml index 7279e313b..80d2f07d8 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/dingding.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/dingding.yml @@ -1,19 +1,19 @@ --- - name: Create dingding notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: dingding name: dingding type: dingding dingding_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - result.changed == True - result.channel.name == "dingding" @@ -22,19 +22,19 @@ - name: Create dingding notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: dingding name: dingding type: dingding dingding_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - result.changed == False - result.channel.name == "dingding" @@ -43,32 +43,32 @@ - name: Delete dingding notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: dingding state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - result.changed == True - name: Delete dingding notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: dingding state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/discord.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/discord.yml index 29cfece70..30c70d63e 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/discord.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/discord.yml @@ -1,19 +1,19 @@ --- - name: Create discord notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: discord name: discord type: discord discord_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - result.changed == True - result.channel.name == "discord" @@ -22,19 +22,19 @@ - name: Create discord notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: discord name: discord type: discord discord_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - result.changed == False - result.channel.name == "discord" @@ -43,32 +43,32 @@ - name: Delete discord notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: discord state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - result.changed == True - name: Delete discord notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: discord state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/email.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/email.yml index 85a236c9e..29e188755 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/email.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/email.yml @@ -1,7 +1,7 @@ --- - name: Create email notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: email name: email type: email @@ -10,21 +10,21 @@ - bar@example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.name == "email" - result.channel.type == "email" - result.channel.uid == "email" - name: Create email notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: email name: email type: email @@ -33,47 +33,47 @@ - bar@example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False - result.channel.name == "email" - result.channel.type == "email" - result.channel.uid == "email" - name: Delete discord notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: email state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" - - "result.state == 'absent'" + - result.changed == True + - result.state == 'absent' - name: Delete discord notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: email state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/googlechat.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/googlechat.yml index abc7db644..8acdf0a68 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/googlechat.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/googlechat.yml @@ -1,74 +1,74 @@ --- - name: Create googlechat notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: googlechat name: googlechat type: googlechat googlechat_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.name == "googlechat" - result.channel.uid == "googlechat" - result.channel.type == "googlechat" - name: Create googlechat notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: googlechat name: googlechat type: googlechat googlechat_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False - result.channel.name == "googlechat" - result.channel.uid == "googlechat" - result.channel.type == "googlechat" - name: Delete googlechat notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: googlechat state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - name: Delete googlechat notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: googlechat state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/hipchat.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/hipchat.yml index 4a9ec1704..6423cafc8 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/hipchat.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/hipchat.yml @@ -1,74 +1,74 @@ --- - name: Create hipchat notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: hipchat name: hipchat type: hipchat hipchat_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.name == "hipchat" - result.channel.type == "hipchat" - result.channel.uid == "hipchat" - name: Create hipchat notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: hipchat name: hipchat type: hipchat hipchat_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False - result.channel.name == "hipchat" - result.channel.type == "hipchat" - result.channel.uid == "hipchat" - name: Delete hipchat notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: hipchat state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - name: Delete hipchat notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: hipchat state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/kafka.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/kafka.yml index ffc208acb..d8ec9cad3 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/kafka.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/kafka.yml @@ -1,7 +1,7 @@ --- - name: Create kafka notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: kafka name: kafka type: kafka @@ -9,21 +9,21 @@ kafka_topic: test grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.name == "kafka" - result.channel.uid == "kafka" - result.channel.type == "kafka" - name: Create kafka notification channel (idempotentcy) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: kafka name: kafka type: kafka @@ -31,46 +31,46 @@ kafka_topic: test grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False - result.channel.name == "kafka" - result.channel.uid == "kafka" - result.channel.type == "kafka" - name: Delete kafka notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: kafka state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - name: Delete kafka notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: kafka state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/line.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/line.yml index 83a1863ba..dde928c3e 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/line.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/line.yml @@ -1,74 +1,74 @@ --- - name: Create line notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: line name: line type: line line_token: xxx grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.uid == "line" - result.channel.name == "line" - result.channel.type == "line" - name: Create line notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: line name: line type: line line_token: xxx grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False - result.channel.uid == "line" - result.channel.name == "line" - result.channel.type == "line" - name: Delete line notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: line state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - name: Delete line notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: line state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/main.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/main.yml index ada6338c7..af0b2f861 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/main.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/main.yml @@ -1,20 +1,34 @@ --- - block: - - include: dingding.yml - - include: discord.yml - - include: email.yml - - include: googlechat.yml - - include: hipchat.yml - - include: kafka.yml -# - include: line.yml - - include: teams.yml - - include: opsgenie.yml - - include: pagerduty.yml - - include: prometheus.yml - - include: pushover.yml - - include: sensu.yml - - include: slack-and-beyond.yml - - include: telegram.yml -# - include: threema.yml - - include: victorops.yml - - include: webhook.yml + - ansible.builtin.include_tasks: + file: dingding.yml + - ansible.builtin.include_tasks: + file: discord.yml + - ansible.builtin.include_tasks: + file: email.yml + - ansible.builtin.include_tasks: + file: googlechat.yml + - ansible.builtin.include_tasks: + file: hipchat.yml + - ansible.builtin.include_tasks: + file: kafka.yml + - ansible.builtin.include_tasks: + file: teams.yml + - ansible.builtin.include_tasks: + file: opsgenie.yml + - ansible.builtin.include_tasks: + file: pagerduty.yml + - ansible.builtin.include_tasks: + file: prometheus.yml + - ansible.builtin.include_tasks: + file: pushover.yml + - ansible.builtin.include_tasks: + file: sensu.yml + - ansible.builtin.include_tasks: + file: slack-and-beyond.yml + - ansible.builtin.include_tasks: + file: telegram.yml + - ansible.builtin.include_tasks: + file: victorops.yml + - ansible.builtin.include_tasks: + file: webhook.yml diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/opsgenie.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/opsgenie.yml index f871fe719..cd1048b86 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/opsgenie.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/opsgenie.yml @@ -1,7 +1,7 @@ --- - name: Create opsgenie notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: opsgenie name: opsgenie type: opsgenie @@ -9,21 +9,21 @@ opsgenie_api_key: xxx grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.name == "opsgenie" - result.channel.type == "opsgenie" - result.channel.uid == "opsgenie" - name: Create opsgenie notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: opsgenie name: opsgenie type: opsgenie @@ -31,47 +31,47 @@ opsgenie_api_key: xxx grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False - result.channel.name == "opsgenie" - result.channel.type == "opsgenie" - result.channel.uid == "opsgenie" - name: Delete opsgenie notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: opsgenie state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" - - "result.state == 'absent'" + - result.changed == True + - result.state == 'absent' - name: Delete opsgenie notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: opsgenie state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/pagerduty.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/pagerduty.yml index a8fa940b0..40fd00468 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/pagerduty.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/pagerduty.yml @@ -1,74 +1,74 @@ --- - name: Create pagerduty notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: pagerduty name: pagerduty type: pagerduty pagerduty_integration_key: xxx grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.name == "pagerduty" - result.channel.type == "pagerduty" - result.channel.uid == "pagerduty" - name: Create pagerduty notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: pagerduty name: pagerduty type: pagerduty pagerduty_integration_key: xxx grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False - result.channel.name == "pagerduty" - result.channel.type == "pagerduty" - result.channel.uid == "pagerduty" - name: Delete pagerduty notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: pagerduty state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - name: Delete pagerduty notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: pagerduty state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/prometheus.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/prometheus.yml index 40810eaf3..c85d26f2e 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/prometheus.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/prometheus.yml @@ -1,74 +1,74 @@ --- - name: Create prometheus notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: prometheus name: prometheus type: prometheus prometheus_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.name == "prometheus" - result.channel.uid == "prometheus" - result.channel.type == "prometheus-alertmanager" - name: Create prometheus notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: prometheus name: prometheus type: prometheus prometheus_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False - result.channel.name == "prometheus" - result.channel.uid == "prometheus" - result.channel.type == "prometheus-alertmanager" - name: Delete prometheus notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: prometheus state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - name: Delete prometheus notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: prometheus state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/pushover.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/pushover.yml index 894bd71e6..ee7b9bea4 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/pushover.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/pushover.yml @@ -1,7 +1,7 @@ --- - name: Create pushover notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: pushover name: pushover type: pushover @@ -9,21 +9,21 @@ pushover_user_key: yyy grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.name == "pushover" - result.channel.uid == "pushover" - result.channel.type == "pushover" - name: Create pushover notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: pushover name: pushover type: pushover @@ -31,46 +31,46 @@ pushover_user_key: yyy grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False - result.channel.name == "pushover" - result.channel.uid == "pushover" - result.channel.type == "pushover" - name: Delete pushover notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: pushover state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - name: Delete pushover notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: pushover state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/sensu.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/sensu.yml index 01619b719..a46ef1d0a 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/sensu.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/sensu.yml @@ -1,74 +1,74 @@ --- - name: Create sensu notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: sensu name: sensu type: sensu sensu_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.name == "sensu" - result.channel.type == "sensu" - result.channel.uid == "sensu" - name: Create sensu notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: sensu name: sensu type: sensu sensu_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False - result.channel.name == "sensu" - result.channel.type == "sensu" - result.channel.uid == "sensu" - name: Delete sensu notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: sensu state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - name: Delete sensu notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: sensu state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/slack-and-beyond.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/slack-and-beyond.yml index 0748c8bdb..1cbab6d5c 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/slack-and-beyond.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/slack-and-beyond.yml @@ -1,110 +1,110 @@ --- - name: Create slack notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: slack name: slack type: slack slack_url: https://hooks.slack.com/services/xxx/yyy/zzz grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.name == "slack" - result.channel.type == "slack" - result.channel.uid == "slack" - name: Create slack notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: slack name: slack type: slack slack_url: https://hooks.slack.com/services/xxx/yyy/zzz grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False - result.channel.name == "slack" - result.channel.type == "slack" - result.channel.uid == "slack" - name: Check slack notification channel idempotency register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: slack name: slack type: slack slack_url: https://hooks.slack.com/services/xxx/yyy/zzz grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False - name: Update slack notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: slack name: slack type: slack slack_url: https://hooks.slack.com/services/xxx/yyy/fff grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - name: Delete slack notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: state: absent uid: slack grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - name: Delete slack notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: state: absent uid: slack grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/teams.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/teams.yml index cfc44aef3..d9c7471c5 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/teams.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/teams.yml @@ -1,74 +1,74 @@ --- - name: Create teams notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: teams name: teams type: teams teams_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.name == "teams" - result.channel.uid == "teams" - result.channel.type == "teams" - name: Create teams notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: teams name: teams type: teams teams_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False - result.channel.name == "teams" - result.channel.uid == "teams" - result.channel.type == "teams" - name: Delete teams notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: teams state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - name: Delete teams notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: teams state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/telegram.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/telegram.yml index 98a7a3c6d..38e27ef57 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/telegram.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/telegram.yml @@ -1,7 +1,7 @@ --- - name: Create telegram notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: telegram name: telegram type: telegram @@ -9,21 +9,21 @@ telegram_chat_id: yyy grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.name == "telegram" - result.channel.type == "telegram" - result.channel.uid == "telegram" - name: Create telegram notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: telegram name: telegram type: telegram @@ -31,46 +31,46 @@ telegram_chat_id: yyy grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False - result.channel.name == "telegram" - result.channel.type == "telegram" - result.channel.uid == "telegram" - name: Delete telegram notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: telegram state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - name: Delete telegram notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: telegram state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/threema.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/threema.yml index 7858b6977..c61eae316 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/threema.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/threema.yml @@ -1,7 +1,7 @@ --- - name: Create threema notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: threema name: threema type: threema @@ -10,21 +10,21 @@ threema_api_secret: zzz grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.name == "threema" - result.channel.type == "threema" - result.channel.uid == "threema" - name: Create threema notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: threema name: threema type: threema @@ -33,46 +33,46 @@ threema_api_secret: zzz grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.name == "threema" - result.channel.type == "threema" - result.channel.uid == "threema" - name: Delete threema notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: threema state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - name: Delete threema notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: threema state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/victorops.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/victorops.yml index 3779e813a..e21679132 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/victorops.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/victorops.yml @@ -1,74 +1,74 @@ --- - name: Create victorops notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: victorops name: victorops type: victorops victorops_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.name == "victorops" - result.channel.type == "victorops" - result.channel.uid == "victorops" - name: Create victorops notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: victorops name: victorops type: victorops victorops_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False - result.channel.name == "victorops" - result.channel.type == "victorops" - result.channel.uid == "victorops" - name: Delete victorops notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: victorops state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - name: Delete victorops notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: victorops state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/webhook.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/webhook.yml index c9efd9193..5a00878f9 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/webhook.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_notification_channel/tasks/webhook.yml @@ -1,74 +1,74 @@ --- - name: Create webhook notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: webhook name: webhook type: webhook webhook_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - result.channel.name == "webhook" - result.channel.uid == "webhook" - result.channel.type == "webhook" - name: Create webhook notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: webhook name: webhook type: webhook webhook_url: https://example.org grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False - result.channel.name == "webhook" - result.channel.uid == "webhook" - result.channel.type == "webhook" - name: Delete webhook notification channel register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: webhook state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == True" + - result.changed == True - name: Delete webhook notification channel (idempotency) register: result - grafana_notification_channel: + community.grafana.grafana_notification_channel: uid: webhook state: absent grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_username }}" - grafana_password: "{{ grafana_password}}" + grafana_password: "{{ grafana_password }}" -- debug: +- ansible.builtin.debug: var: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == False" + - result.changed == False diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_organization/defaults/main.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_organization/defaults/main.yml index 7bb77ea3f..3edac8598 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_organization/defaults/main.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_organization/defaults/main.yml @@ -1,4 +1,4 @@ --- -grafana_url: "http://grafana:3000/" -grafana_username: "admin" -grafana_password: "admin" +grafana_url: http://grafana:3000/ +grafana_username: admin +grafana_password: admin diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_organization/runme.sh b/ansible_collections/community/grafana/tests/integration/targets/grafana_organization/runme.sh new file mode 100755 index 000000000..9daa487db --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_organization/runme.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -eux + +ansible-playbook site.yml --check +ansible-playbook site.yml diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_organization/site.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_organization/site.yml new file mode 100644 index 000000000..e2e4900bd --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_organization/site.yml @@ -0,0 +1,6 @@ +--- +- name: Run tests for grafana_organization + hosts: localhost + tasks: + - ansible.builtin.include_role: + name: ../../grafana_organization diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_organization/tasks/main.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_organization/tasks/main.yml index f8ccdf3bf..936b147cb 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_organization/tasks/main.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_organization/tasks/main.yml @@ -1,5 +1,4 @@ --- - - name: Create a Grafana organization community.grafana.grafana_organization: url: "{{ grafana_url }}" @@ -8,13 +7,15 @@ name: orgtest state: present register: result -- assert: + +- ansible.builtin.assert: that: - - "result.changed == true" - - "result.failed == false" - - "result.org.name == 'orgtest'" + - result.changed == true + - result.failed == false + - result.org.name == 'orgtest' + when: not ansible_check_mode -- name: check idempotency Grafana organization +- name: Check idempotency Grafana organization community.grafana.grafana_organization: url: "{{ grafana_url }}" url_username: "{{ grafana_username }}" @@ -22,11 +23,13 @@ name: orgtest state: present register: result -- assert: + +- ansible.builtin.assert: that: - - "result.changed == false" - - "result.failed == false" - - "result.org.name == 'orgtest'" + - result.changed == false + - result.failed == false + - result.org.name == 'orgtest' + when: not ansible_check_mode - name: Delete a Grafana organization community.grafana.grafana_organization: @@ -36,13 +39,15 @@ name: orgtest state: absent register: result -- assert: + +- ansible.builtin.assert: that: - - "result.changed == true" - - "result.failed == false" - - "result.msg |length > 0" + - result.changed == true + - result.failed == false + - result.msg |length > 0 + when: not ansible_check_mode -- name: check idempotency delete a Grafana organization +- name: Check idempotency delete a Grafana organization community.grafana.grafana_organization: url: "{{ grafana_url }}" url_username: "{{ grafana_username }}" @@ -50,8 +55,10 @@ name: orgtest state: absent register: result -- assert: + +- ansible.builtin.assert: that: - - "result.changed == false" - - "result.failed == false" - - "result.msg == 'No org found, nothing to do'" + - result.changed == false + - result.failed == false + - result.msg == 'No org found, nothing to do' + when: not ansible_check_mode diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_organization_user/defaults/main.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_organization_user/defaults/main.yml new file mode 100644 index 000000000..3edac8598 --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_organization_user/defaults/main.yml @@ -0,0 +1,4 @@ +--- +grafana_url: http://grafana:3000/ +grafana_username: admin +grafana_password: admin diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_organization_user/runme.sh b/ansible_collections/community/grafana/tests/integration/targets/grafana_organization_user/runme.sh new file mode 100755 index 000000000..9daa487db --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_organization_user/runme.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -eux + +ansible-playbook site.yml --check +ansible-playbook site.yml diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_organization_user/site.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_organization_user/site.yml new file mode 100644 index 000000000..80e5ea916 --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_organization_user/site.yml @@ -0,0 +1,6 @@ +--- +- name: Run tests for grafana_organization_user + hosts: localhost + tasks: + - ansible.builtin.include_role: + name: ../../grafana_organization_user diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_organization_user/tasks/main.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_organization_user/tasks/main.yml new file mode 100644 index 000000000..73b0482ac --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_organization_user/tasks/main.yml @@ -0,0 +1,172 @@ +--- +- name: Create test user (default org 1) + community.grafana.grafana_user: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + name: orgtest + email: orgtest@example.com + login: orgtest + password: userpassword + state: present + register: result + +- name: Remove user from organization (default org 1) + community.grafana.grafana_organization_user: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + login: orgtest + state: absent + register: result +- ansible.builtin.assert: + that: + - result.failed == false + - result.changed == true + when: not ansible_check_mode + +- name: Check idempotency on user removal from org + community.grafana.grafana_organization_user: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + login: orgtest + state: absent + register: result +- ansible.builtin.assert: + that: + - result.failed == false + - result.changed == false + when: not ansible_check_mode + +- name: Add user to organization + community.grafana.grafana_organization_user: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + login: orgtest + role: viewer + state: present + register: result +- ansible.builtin.assert: + that: + - result.failed == false + - result.changed == true + - result.user.orgId == 1 + - result.user.role == 'Viewer' + when: not ansible_check_mode + +- name: Update existing user role + community.grafana.grafana_organization_user: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + login: orgtest + role: editor + state: present + register: result +- ansible.builtin.assert: + that: + - result.failed == false + - result.changed == true + - result.user.orgId == 1 + - result.user.role == 'Editor' + when: not ansible_check_mode + +- name: Check idempotency on user update + community.grafana.grafana_organization_user: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + login: orgtest + role: editor + state: present + register: result +- ansible.builtin.assert: + that: + - result.failed == false + - result.changed == false + when: not ansible_check_mode + +- name: Create a new organization + community.grafana.grafana_organization: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + name: neworgtest + state: present + register: org + +- name: Add user to the new organization by org_id + community.grafana.grafana_organization_user: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + org_id: "{{ org.org.id }}" + login: orgtest + role: admin + state: present + register: result + when: not ansible_check_mode + +- ansible.builtin.assert: + that: + - result.failed == false + - result.changed == true + - result.user.orgId == org.org.id + - result.user.role == 'Admin' + when: not ansible_check_mode + +- name: Remove user from new organization by org_id + community.grafana.grafana_organization_user: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + org_id: "{{ org.org.id }}" + login: orgtest + state: absent + register: result + when: not ansible_check_mode + +- ansible.builtin.assert: + that: + - result.failed == false + - result.changed == true + when: not ansible_check_mode + +- name: Add user to the new organization by org_name + community.grafana.grafana_organization_user: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + org_name: "{{ org.org.name }}" + login: orgtest + role: admin + state: present + register: result + when: not ansible_check_mode + +- ansible.builtin.assert: + that: + - result.failed == false + - result.changed == true + - result.user.orgId == org.org.id + - result.user.role == 'Admin' + when: not ansible_check_mode + +- name: Remove user from new organization by org_name + community.grafana.grafana_organization_user: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + org_name: "{{ org.org.name }}" + login: orgtest + state: absent + register: result + when: not ansible_check_mode + +- ansible.builtin.assert: + that: + - result.failed == false + - result.changed == true + when: not ansible_check_mode diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_team/defaults/main.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_team/defaults/main.yml index 8b9c9348a..4abf9bb43 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_team/defaults/main.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_team/defaults/main.yml @@ -1,7 +1,5 @@ --- -grafana_url: "http://grafana:3000/" -grafana_username: "admin" -grafana_password: "admin" - -... +grafana_url: http://grafana:3000/ +grafana_username: admin +grafana_password: admin diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_team/runme.sh b/ansible_collections/community/grafana/tests/integration/targets/grafana_team/runme.sh new file mode 100755 index 000000000..867afb0d3 --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_team/runme.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +set -eux + +ansible-playbook site.yml diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_team/site.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_team/site.yml new file mode 100644 index 000000000..c8a618891 --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_team/site.yml @@ -0,0 +1,6 @@ +--- +- name: Run tests for grafana_team + hosts: localhost + tasks: + - ansible.builtin.include_role: + name: ../../grafana_team diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_team/tasks/create_user.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_team/tasks/create_user.yml index 6971d07b6..9641e7185 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_team/tasks/create_user.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_team/tasks/create_user.yml @@ -1,29 +1,30 @@ +--- - name: Create John Doe for tests purpose through uri module - uri: + ansible.builtin.uri: url: "{{ grafana_url }}api/admin/users" method: POST user: "{{ grafana_username }}" password: "{{ grafana_password }}" - force_basic_auth: yes + force_basic_auth: true body: - name: "John" - email: "john+doe@example.com" - login: "john" - password: "userpassword" + name: John + email: john+doe@example.com + login: john + password: userpassword body_format: json status_code: 200 - name: Create Jane Doe for tests purpose through uri module - uri: + ansible.builtin.uri: url: "{{ grafana_url }}api/admin/users" method: POST user: "{{ grafana_username }}" password: "{{ grafana_password }}" - force_basic_auth: yes + force_basic_auth: true body: - name: "Jane" - email: "jane.doe@example.com" - login: "jane" - password: "userpassword" + name: Jane + email: jane.doe@example.com + login: jane + password: userpassword body_format: json status_code: 200 diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_team/tasks/main.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_team/tasks/main.yml index 2d74581b7..d43eb8286 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_team/tasks/main.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_team/tasks/main.yml @@ -1,187 +1,198 @@ --- - - name: Create a Team - grafana_team: - url: "{{ grafana_url }}" - url_username: "{{ grafana_username }}" - url_password: "{{ grafana_password }}" - name: "grafana_working_group" - email: "foo.bar@example.com" - state: present + community.grafana.grafana_team: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + name: grafana working group + email: foo.bar@example.com + state: present + skip_version_check: true register: result -- set_fact: +- ansible.builtin.set_fact: # From Grafana 9.0.0, the API user automatically becomes a member of the team auto_member: "{{ result.team.memberCount == 1 }}" -- set_fact: +- ansible.builtin.set_fact: expected_members: "{{ auto_member | ternary(['********@localhost'], []) }}" -- assert: +- ansible.builtin.assert: that: - - "result.changed == true" - - "result.team.name == 'grafana_working_group'" - - "result.team.email == 'foo.bar@example.com'" - - "result.team.memberCount == (expected_members|length)" - - "result.team.members == expected_members" + - result.changed == true + - result.team.name == 'grafana working group' + - result.team.email == 'foo.bar@example.com' + - result.team.memberCount == (expected_members|length) + - result.team.members == expected_members + when: not ansible_check_mode - name: Check idempotency on team creation - grafana_team: - url: "{{ grafana_url }}" - url_username: "{{ grafana_username }}" - url_password: "{{ grafana_password }}" - name: "grafana_working_group" - email: "foo.bar@example.com" - state: present + community.grafana.grafana_team: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + name: grafana working group + email: foo.bar@example.com + state: present register: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == false" - - "result.team.name == 'grafana_working_group'" - - "result.team.email == 'foo.bar@example.com'" - - "result.team.memberCount == (expected_members|length)" - - "result.team.members == expected_members" + - result.changed == false + - result.team.name == 'grafana working group' + - result.team.email == 'foo.bar@example.com' + - result.team.memberCount == (expected_members|length) + - result.team.members == expected_members + when: not ansible_check_mode - name: Check a team can be deleted - grafana_team: - url: "{{ grafana_url }}" - url_username: "{{ grafana_username }}" - url_password: "{{ grafana_password }}" - name: "grafana_working_group" - email: "foo.bar@example.com" - state: absent + community.grafana.grafana_team: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + name: grafana working group + email: foo.bar@example.com + state: absent register: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == true" - - "result.message == 'Team deleted'" + - result.changed == true + - result.message == 'Team deleted' + when: not ansible_check_mode - name: Check idempotency on team deletion - grafana_team: - url: "{{ grafana_url }}" - url_username: "{{ grafana_username }}" - url_password: "{{ grafana_password }}" - name: "grafana_working_group" - email: "foo.bar@example.com" - state: absent + community.grafana.grafana_team: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + name: grafana working group + email: foo.bar@example.com + state: absent register: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == false" - - "result.message == 'No team found'" + - result.changed == false + - result.message == 'No team found' + when: not ansible_check_mode - name: Create users for tests purpose - import_tasks: create_user.yml + ansible.builtin.import_tasks: + file: create_user.yml - name: Create a Team with members - grafana_team: - url: "{{ grafana_url }}" - url_username: "{{ grafana_username }}" - url_password: "{{ grafana_password }}" - name: "grafana_working_group" - email: "foo.bar@example.com" - members: - - "john+doe@example.com" - - "jane.doe@example.com" - state: present + community.grafana.grafana_team: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + name: grafana working group + email: foo.bar@example.com + members: + - john+doe@example.com + - jane.doe@example.com + state: present register: result -- set_fact: - expected_members: "{{ auto_member | ternary(['********@localhost', 'jane.doe@example.com', 'john+doe@example.com'], ['jane.doe@example.com', 'john+doe@example.com']) }}" +- ansible.builtin.set_fact: + expected_members: "{{ auto_member | ternary(['********@localhost', 'jane.doe@example.com', 'john+doe@example.com'], ['jane.doe@example.com', 'john+doe@example.com']) + }}" -- assert: +- ansible.builtin.assert: that: - - "result.changed == true" - - "result.team.name == 'grafana_working_group'" - - "result.team.email == 'foo.bar@example.com'" - - "result.team.memberCount == (expected_members|length)" - - "result.team.members == expected_members" + - result.changed == true + - result.team.name == 'grafana working group' + - result.team.email == 'foo.bar@example.com' + - result.team.memberCount == (expected_members|length) + - result.team.members == expected_members + when: not ansible_check_mode - name: Ensure a Team exists with member not enforced - grafana_team: - url: "{{ grafana_url }}" - url_username: "{{ grafana_username }}" - url_password: "{{ grafana_password }}" - name: "grafana_working_group" - email: "foo.bar@example.com" - members: - - "john+doe@example.com" - state: present + community.grafana.grafana_team: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + name: grafana working group + email: foo.bar@example.com + members: + - john+doe@example.com + state: present register: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == false" - - "result.team.name == 'grafana_working_group'" - - "result.team.email == 'foo.bar@example.com'" - - "result.team.memberCount == (expected_members|length)" - - "result.team.members == expected_members" - -- set_fact: + - result.changed == false + - result.team.name == 'grafana working group' + - result.team.email == 'foo.bar@example.com' + - result.team.memberCount == (expected_members|length) + - result.team.members == expected_members + when: not ansible_check_mode + +- ansible.builtin.set_fact: enforced_members: "{{ auto_member | ternary(['admin@localhost', 'john+doe@example.com'], ['john+doe@example.com']) }}" expected_members: "{{ auto_member | ternary(['********@localhost', 'john+doe@example.com'], ['john+doe@example.com']) }}" - name: Ensure a Team exists with member enforced - grafana_team: - url: "{{ grafana_url }}" - url_username: "{{ grafana_username }}" - url_password: "{{ grafana_password }}" - name: "grafana_working_group" - email: "foo.bar@example.com" - members: "{{ enforced_members }}" - enforce_members: true - state: present + community.grafana.grafana_team: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + name: grafana working group + email: foo.bar@example.com + members: "{{ enforced_members }}" + enforce_members: true + state: present register: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == true" - - "result.team.name == 'grafana_working_group'" - - "result.team.email == 'foo.bar@example.com'" - - "result.team.memberCount == (expected_members|length)" - - "result.team.members == expected_members" + - result.changed == true + - result.team.name == 'grafana working group' + - result.team.email == 'foo.bar@example.com' + - result.team.memberCount == (expected_members|length) + - result.team.members == expected_members - name: Ensure a Team exists with members omitted - grafana_team: - url: "{{ grafana_url }}" - url_username: "{{ grafana_username }}" - url_password: "{{ grafana_password }}" - name: "grafana_working_group" - email: "foo.bar@example.com" - state: present + community.grafana.grafana_team: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + name: grafana working group + email: foo.bar@example.com + state: present register: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == false" - - "result.team.name == 'grafana_working_group'" - - "result.team.email == 'foo.bar@example.com'" - - "result.team.memberCount == (expected_members|length)" - - "result.team.members == expected_members" + - result.changed == false + - result.team.name == 'grafana working group' + - result.team.email == 'foo.bar@example.com' + - result.team.memberCount == (expected_members|length) + - result.team.members == expected_members + when: not ansible_check_mode - name: Add new member to existing Team - grafana_team: - url: "{{ grafana_url }}" - url_username: "{{ grafana_username }}" - url_password: "{{ grafana_password }}" - name: "grafana_working_group" - email: "foo.bar@example.com" - members: - - "john+doe@example.com" - - "jane.doe@example.com" - state: present + community.grafana.grafana_team: + url: "{{ grafana_url }}" + url_username: "{{ grafana_username }}" + url_password: "{{ grafana_password }}" + name: grafana working group + email: foo.bar@example.com + members: + - john+doe@example.com + - jane.doe@example.com + state: present register: result -- set_fact: - expected_members: "{{ auto_member | ternary(['********@localhost', 'jane.doe@example.com', 'john+doe@example.com'], ['jane.doe@example.com', 'john+doe@example.com']) }}" +- ansible.builtin.set_fact: + expected_members: "{{ auto_member | ternary(['********@localhost', 'jane.doe@example.com', 'john+doe@example.com'], ['jane.doe@example.com', 'john+doe@example.com']) + }}" -- assert: +- ansible.builtin.assert: that: - - "result.changed == true" - - "result.team.name == 'grafana_working_group'" - - "result.team.email == 'foo.bar@example.com'" - - "result.team.memberCount == (expected_members|length)" - - "result.team.members == expected_members" + - result.changed == true + - result.team.name == 'grafana working group' + - result.team.email == 'foo.bar@example.com' + - result.team.memberCount == (expected_members|length) + - result.team.members == expected_members + when: not ansible_check_mode diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_user/defaults/main.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_user/defaults/main.yml index 7bb77ea3f..3edac8598 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_user/defaults/main.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_user/defaults/main.yml @@ -1,4 +1,4 @@ --- -grafana_url: "http://grafana:3000/" -grafana_username: "admin" -grafana_password: "admin" +grafana_url: http://grafana:3000/ +grafana_username: admin +grafana_password: admin diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_user/runme.sh b/ansible_collections/community/grafana/tests/integration/targets/grafana_user/runme.sh new file mode 100755 index 000000000..9daa487db --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_user/runme.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -eux + +ansible-playbook site.yml --check +ansible-playbook site.yml diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_user/site.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_user/site.yml new file mode 100644 index 000000000..b080803f8 --- /dev/null +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_user/site.yml @@ -0,0 +1,6 @@ +--- +- name: Run tests for grafana_user + hosts: localhost + tasks: + - ansible.builtin.include_role: + name: ../../grafana_user diff --git a/ansible_collections/community/grafana/tests/integration/targets/grafana_user/tasks/main.yml b/ansible_collections/community/grafana/tests/integration/targets/grafana_user/tasks/main.yml index c62801653..83a3891e1 100644 --- a/ansible_collections/community/grafana/tests/integration/targets/grafana_user/tasks/main.yml +++ b/ansible_collections/community/grafana/tests/integration/targets/grafana_user/tasks/main.yml @@ -1,237 +1,251 @@ --- - name: Create new admin - grafana_user: + community.grafana.grafana_user: url: "{{ grafana_url }}" url_username: "{{ grafana_username }}" url_password: "{{ grafana_password }}" - name: "Harley Quinn" + name: Harley Quinn email: harley.quinn@gotham.city login: harley password: Wy3ta6ob6M3wHELv58MPfqOe126RTnWpcYfEhyJm is_admin: true state: present register: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == true" - - "result.failed == false" - - "result.user.name == 'Harley Quinn'" - - "result.user.email == 'harley.quinn@gotham.city'" - - "result.user.isGrafanaAdmin == true" + - result.changed == true + - result.failed == false + - result.user.name == 'Harley Quinn' + - result.user.email == 'harley.quinn@gotham.city' + - result.user.isGrafanaAdmin == true + when: not ansible_check_mode - name: Check idempotency on admin creation - grafana_user: + community.grafana.grafana_user: url: "{{ grafana_url }}" url_username: "{{ grafana_username }}" url_password: "{{ grafana_password }}" - name: "Harley Quinn" + name: Harley Quinn email: harley.quinn@gotham.city login: harley password: Wy3ta6ob6M3wHELv58MPfqOe126RTnWpcYfEhyJm is_admin: true state: present register: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == false" - - "result.user.name == 'Harley Quinn'" - - "result.user.email == 'harley.quinn@gotham.city'" - - "result.user.isGrafanaAdmin == true" + - result.changed == false + - result.user.name == 'Harley Quinn' + - result.user.email == 'harley.quinn@gotham.city' + - result.user.isGrafanaAdmin == true + when: not ansible_check_mode - name: Check user creation with Grafana API - uri: + ansible.builtin.uri: url: "{{ grafana_url }}api/users/lookup?loginOrEmail=harley" user: "{{ grafana_username }}" password: "{{ grafana_password }}" - force_basic_auth: yes + force_basic_auth: true status_code: 200 headers: Accept: application/json Content-Type: application/json register: result -- assert: +- ansible.builtin.assert: that: - - "result.json.name == 'Harley Quinn'" - - "result.json.email == 'harley.quinn@gotham.city'" - - "result.json.isGrafanaAdmin == true" + - result.json.name == 'Harley Quinn' + - result.json.email == 'harley.quinn@gotham.city' + - result.json.isGrafanaAdmin == true + when: not ansible_check_mode - name: Create a Grafana user without password (expect failure) - grafana_user: + community.grafana.grafana_user: url: "{{ grafana_url }}" url_username: "{{ grafana_username }}" url_password: "{{ grafana_password }}" - name: "Bruce Wayne" + name: Bruce Wayne email: batman@gotham.city login: batman state: present register: result - ignore_errors: yes -- assert: + ignore_errors: true +- ansible.builtin.assert: that: - - "result.changed == false" - - "result.failed == true" + - result.changed == false + - result.failed == true - "result.msg == 'missing required arguments: password'" + when: not ansible_check_mode - name: Create a Grafana user - grafana_user: + community.grafana.grafana_user: url: "{{ grafana_url }}" url_username: "{{ grafana_username }}" url_password: "{{ grafana_password }}" - name: "Bruce Wayne" + name: Bruce Wayne email: batman@gotham.city login: batman password: robin state: present register: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == true" - - "result.user.name == 'Bruce Wayne'" - - "result.user.email == 'batman@gotham.city'" - - "result.user.isGrafanaAdmin == false" + - result.changed == true + - result.user.name == 'Bruce Wayne' + - result.user.email == 'batman@gotham.city' + - result.user.isGrafanaAdmin == false + when: not ansible_check_mode - name: Check idempotency on user creation (password not requiered) - grafana_user: + community.grafana.grafana_user: url: "{{ grafana_url }}" url_username: "{{ grafana_username }}" url_password: "{{ grafana_password }}" - name: "Bruce Wayne" + name: Bruce Wayne email: batman@gotham.city login: batman state: present register: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == false" - - "result.user.name == 'Bruce Wayne'" - - "result.user.email == 'batman@gotham.city'" - - "result.user.isGrafanaAdmin == false" + - result.changed == false + - result.user.name == 'Bruce Wayne' + - result.user.email == 'batman@gotham.city' + - result.user.isGrafanaAdmin == false + when: not ansible_check_mode - name: Check user creation with Grafana API - uri: + ansible.builtin.uri: url: "{{ grafana_url }}api/users/lookup?loginOrEmail=batman" user: "{{ grafana_username }}" password: "{{ grafana_password }}" - force_basic_auth: yes + force_basic_auth: true status_code: 200 headers: Accept: application/json Content-Type: application/json register: result -- assert: +- ansible.builtin.assert: that: - - "result.json.name == 'Bruce Wayne'" - - "result.json.email == 'batman@gotham.city'" - - "result.json.isGrafanaAdmin == false" + - result.json.name == 'Bruce Wayne' + - result.json.email == 'batman@gotham.city' + - result.json.isGrafanaAdmin == false + when: not ansible_check_mode - name: Update Grafana user - grafana_user: + community.grafana.grafana_user: url: "{{ grafana_url }}" url_username: "{{ grafana_username }}" url_password: "{{ grafana_password }}" - name: "The Dark Knight" + name: The Dark Knight email: thedarkknight@gotham.city login: batman password: robin is_admin: true state: present register: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == true" - - "result.user.name == 'The Dark Knight'" - - "result.user.email == 'thedarkknight@gotham.city'" - - "result.user.isGrafanaAdmin == true" + - result.changed == true + - result.user.name == 'The Dark Knight' + - result.user.email == 'thedarkknight@gotham.city' + - result.user.isGrafanaAdmin == true + when: not ansible_check_mode - name: Check user update with Grafana API - uri: + ansible.builtin.uri: url: "{{ grafana_url }}api/users/lookup?loginOrEmail=batman" user: "{{ grafana_username }}" password: "{{ grafana_password }}" - force_basic_auth: yes + force_basic_auth: true status_code: 200 headers: Accept: application/json Content-Type: application/json register: result -- assert: +- ansible.builtin.assert: that: - - "result.json.name == 'The Dark Knight'" - - "result.json.email == 'thedarkknight@gotham.city'" - - "result.json.isGrafanaAdmin == true" + - result.json.name == 'The Dark Knight' + - result.json.email == 'thedarkknight@gotham.city' + - result.json.isGrafanaAdmin == true + when: not ansible_check_mode - name: Delete a Grafana user - grafana_user: + community.grafana.grafana_user: url: "{{ grafana_url }}" url_username: "{{ grafana_username }}" url_password: "{{ grafana_password }}" login: batman state: absent register: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == true" - - "result.message == 'User deleted'" + - result.changed == true + - result.message == 'User deleted' + when: not ansible_check_mode - name: Check idempotency on user deletion - grafana_user: + community.grafana.grafana_user: url: "{{ grafana_url }}" url_username: "{{ grafana_username }}" url_password: "{{ grafana_password }}" login: batman state: absent register: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == false" - - "result.message == 'No user found, nothing to do'" + - result.changed == false + - result.message == 'No user found, nothing to do' + when: not ansible_check_mode - name: Check user deletion with Grafana API (expect 404 Not Found) - uri: + ansible.builtin.uri: url: "{{ grafana_url }}api/users/lookup?loginOrEmail=batman" user: "{{ grafana_username }}" password: "{{ grafana_password }}" - force_basic_auth: yes + force_basic_auth: true status_code: 404 headers: Accept: application/json Content-Type: application/json register: result -- assert: +- ansible.builtin.assert: that: - - "result.json.message | lower == 'user not found'" + - result.json.message | lower == 'user not found' + when: not ansible_check_mode - name: Create a Grafana user with character encoding - grafana_user: + community.grafana.grafana_user: url: "{{ grafana_url }}" url_username: "{{ grafana_username }}" url_password: "{{ grafana_password }}" - name: "Bruce Wayne" + name: Bruce Wayne email: bruce+wayne@gotham.city login: bruce+wayne@gotham.city password: robin state: present register: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == true" - - "result.user.name == 'Bruce Wayne'" - - "result.user.email == 'bruce+wayne@gotham.city'" - - "result.user.isGrafanaAdmin == false" + - result.changed == true + - result.user.name == 'Bruce Wayne' + - result.user.email == 'bruce+wayne@gotham.city' + - result.user.isGrafanaAdmin == false + when: not ansible_check_mode - name: Check idempotency on user creation (password not requiered) - grafana_user: + community.grafana.grafana_user: url: "{{ grafana_url }}" url_username: "{{ grafana_username }}" url_password: "{{ grafana_password }}" - name: "Bruce Wayne" + name: Bruce Wayne email: bruce+wayne@gotham.city login: bruce+wayne@gotham.city state: present register: result -- assert: +- ansible.builtin.assert: that: - - "result.changed == false" - - "result.user.name == 'Bruce Wayne'" - - "result.user.email == 'bruce+wayne@gotham.city'" - - "result.user.isGrafanaAdmin == false" + - result.changed == false + - result.user.name == 'Bruce Wayne' + - result.user.email == 'bruce+wayne@gotham.city' + - result.user.isGrafanaAdmin == false + when: not ansible_check_mode diff --git a/ansible_collections/community/grafana/tests/requirements.yml b/ansible_collections/community/grafana/tests/requirements.yml new file mode 100644 index 000000000..b9d14e2c3 --- /dev/null +++ b/ansible_collections/community/grafana/tests/requirements.yml @@ -0,0 +1,3 @@ +collections: + - name: community.grafana + version: 1.5.3 diff --git a/ansible_collections/community/grafana/tests/sanity/ignore-2.16.txt b/ansible_collections/community/grafana/tests/sanity/ignore-2.16.txt new file mode 100644 index 000000000..5c82494f9 --- /dev/null +++ b/ansible_collections/community/grafana/tests/sanity/ignore-2.16.txt @@ -0,0 +1,4 @@ +plugins/modules/grafana_dashboard.py validate-modules:invalid-argument-name +tests/unit/modules/grafana/grafana_plugin/test_grafana_plugin.py pep8:W291 +hacking/check_fragment.sh shebang +hacking/find_grafana_versions.py shebang diff --git a/ansible_collections/community/grafana/tests/sanity/ignore-2.17.txt b/ansible_collections/community/grafana/tests/sanity/ignore-2.17.txt new file mode 100644 index 000000000..5c82494f9 --- /dev/null +++ b/ansible_collections/community/grafana/tests/sanity/ignore-2.17.txt @@ -0,0 +1,4 @@ +plugins/modules/grafana_dashboard.py validate-modules:invalid-argument-name +tests/unit/modules/grafana/grafana_plugin/test_grafana_plugin.py pep8:W291 +hacking/check_fragment.sh shebang +hacking/find_grafana_versions.py shebang diff --git a/ansible_collections/community/grafana/tests/unit/modules/grafana/grafana_datasource/test_grafana_datasource.py b/ansible_collections/community/grafana/tests/unit/modules/grafana/grafana_datasource/test_grafana_datasource.py index d2fba0fe1..ff8e4f242 100644 --- a/ansible_collections/community/grafana/tests/unit/modules/grafana/grafana_datasource/test_grafana_datasource.py +++ b/ansible_collections/community/grafana/tests/unit/modules/grafana/grafana_datasource/test_grafana_datasource.py @@ -1,7 +1,7 @@ -from __future__ import (absolute_import, division, print_function) +from __future__ import absolute_import, division, print_function from unittest import TestCase -from unittest.mock import call, patch, MagicMock +from unittest.mock import patch from ansible_collections.community.grafana.plugins.modules import grafana_datasource from ansible.module_utils._text import to_bytes from ansible.module_utils import basic @@ -13,200 +13,207 @@ __metaclass__ = type def set_module_args(args): """prepare arguments so that they will be picked up during module creation""" - args = json.dumps({'ANSIBLE_MODULE_ARGS': args}) + args = json.dumps({"ANSIBLE_MODULE_ARGS": args}) basic._ANSIBLE_ARGS = to_bytes(args) def exit_json(*args, **kwargs): """function to patch over exit_json; package return data into an exception""" - if 'changed' not in kwargs: - kwargs['changed'] = False + if "changed" not in kwargs: + kwargs["changed"] = False raise AnsibleExitJson(kwargs) def fail_json(*args, **kwargs): """function to patch over fail_json; package return data into an exception""" - kwargs['failed'] = True + kwargs["failed"] = True raise AnsibleFailJson(kwargs) class AnsibleExitJson(Exception): """Exception class to be raised by module.exit_json and caught by the test case""" + pass class AnsibleFailJson(Exception): """Exception class to be raised by module.fail_json and caught by the test case""" + pass class GrafanaDatasource(TestCase): - def setUp(self): self.authorization = basic_auth_header("admin", "admin") - self.mock_module_helper = patch.multiple(basic.AnsibleModule, - exit_json=exit_json, - fail_json=fail_json) + self.mock_module_helper = patch.multiple( + basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json + ) self.mock_module_helper.start() self.addCleanup(self.mock_module_helper.stop) def test_payload_prometheus(self): expected_payload = { - 'access': 'proxy', - 'basicAuth': False, - 'database': '', - 'isDefault': False, - 'jsonData': { - 'tlsAuth': False, - 'tlsAuthWithCACert': False, - 'tlsSkipVerify': True + "access": "proxy", + "basicAuth": False, + "database": "", + "isDefault": False, + "jsonData": { + "tlsAuth": False, + "tlsAuthWithCACert": False, + "tlsSkipVerify": True, }, - 'name': 'openshift_prometheus', - 'uid': 'xyz123', - 'orgId': 1, - 'secureJsonData': {}, - 'type': 'prometheus', - 'url': 'https://openshift-monitoring.company.com', - 'user': '', - 'withCredentials': False + "name": "openshift_prometheus", + "uid": "xyz123", + "orgId": 1, + "secureJsonData": {}, + "type": "prometheus", + "url": "https://openshift-monitoring.company.com", + "user": "", + "withCredentials": False, } - set_module_args({ - 'url': 'https://grafana.example.com', - 'url_username': 'admin', - 'url_password': 'admin', - 'name': 'openshift_prometheus', - 'uid': 'xyz123', - 'ds_type': 'prometheus', - 'ds_url': 'https://openshift-monitoring.company.com', - 'access': 'proxy', - 'tls_skip_verify': 'true', - }) + set_module_args( + { + "url": "https://grafana.example.com", + "url_username": "admin", + "url_password": "admin", + "name": "openshift_prometheus", + "uid": "xyz123", + "ds_type": "prometheus", + "ds_url": "https://openshift-monitoring.company.com", + "access": "proxy", + "tls_skip_verify": "true", + } + ) module = grafana_datasource.setup_module_object() payload = grafana_datasource.get_datasource_payload(module.params) self.assertEqual(payload, expected_payload) def test_payload_prometheus_with_basic_auth(self): expected_payload = { - 'access': 'proxy', - 'basicAuth': True, - 'basicAuthUser': 'admin', - 'database': '', - 'isDefault': False, - 'jsonData': { - 'tlsAuth': False, - 'tlsAuthWithCACert': False, - 'tlsSkipVerify': True + "access": "proxy", + "basicAuth": True, + "basicAuthUser": "admin", + "database": "", + "isDefault": False, + "jsonData": { + "tlsAuth": False, + "tlsAuthWithCACert": False, + "tlsSkipVerify": True, }, - 'name': 'openshift_prometheus', - 'uid': 'xyz123', - 'orgId': 1, - 'secureJsonData': {'basicAuthPassword': 'admin'}, - 'type': 'prometheus', - 'url': 'https://openshift-monitoring.company.com', - 'user': '', - 'withCredentials': False + "name": "openshift_prometheus", + "uid": "xyz123", + "orgId": 1, + "secureJsonData": {"basicAuthPassword": "admin"}, + "type": "prometheus", + "url": "https://openshift-monitoring.company.com", + "user": "", + "withCredentials": False, } - set_module_args({ - 'url': 'https://grafana.example.com', - 'url_username': 'admin', - 'url_password': 'admin', - 'name': 'openshift_prometheus', - 'uid': 'xyz123', - 'ds_type': 'prometheus', - 'ds_url': 'https://openshift-monitoring.company.com', - 'access': 'proxy', - 'basic_auth_user': 'admin', - 'basic_auth_password': 'admin', - 'tls_skip_verify': 'true', - }) + set_module_args( + { + "url": "https://grafana.example.com", + "url_username": "admin", + "url_password": "admin", + "name": "openshift_prometheus", + "uid": "xyz123", + "ds_type": "prometheus", + "ds_url": "https://openshift-monitoring.company.com", + "access": "proxy", + "basic_auth_user": "admin", + "basic_auth_password": "admin", + "tls_skip_verify": "true", + } + ) module = grafana_datasource.setup_module_object() payload = grafana_datasource.get_datasource_payload(module.params) self.assertEqual(payload, expected_payload) def test_payload_influxdb(self): expected_payload = { - 'access': 'proxy', - 'basicAuth': False, - 'database': 'telegraf', - 'isDefault': False, - 'jsonData': { - 'timeInterval': '>10s', - 'tlsAuth': False, - 'tlsAuthWithCACert': True - }, - 'name': 'datasource-influxdb', - 'uid': 'xyz123', - 'orgId': 1, - 'secureJsonData': { - 'tlsCACert': '/etc/ssl/certs/ca.pem' + "access": "proxy", + "basicAuth": False, + "database": "telegraf", + "isDefault": False, + "jsonData": { + "timeInterval": ">10s", + "tlsAuth": False, + "tlsAuthWithCACert": True, }, - 'type': 'influxdb', - 'url': 'https://influx.company.com:8086', - 'user': '', - 'withCredentials': False + "name": "datasource-influxdb", + "uid": "xyz123", + "orgId": 1, + "secureJsonData": {"tlsCACert": "/etc/ssl/certs/ca.pem"}, + "type": "influxdb", + "url": "https://influx.company.com:8086", + "user": "", + "withCredentials": False, } - set_module_args({ - 'url': 'https://grafana.example.com', - 'url_username': 'admin', - 'url_password': 'admin', - 'name': 'datasource-influxdb', - 'uid': 'xyz123', - 'ds_type': 'influxdb', - 'ds_url': 'https://influx.company.com:8086', - 'database': 'telegraf', - 'time_interval': '>10s', - 'tls_ca_cert': '/etc/ssl/certs/ca.pem' - }) + set_module_args( + { + "url": "https://grafana.example.com", + "url_username": "admin", + "url_password": "admin", + "name": "datasource-influxdb", + "uid": "xyz123", + "ds_type": "influxdb", + "ds_url": "https://influx.company.com:8086", + "database": "telegraf", + "time_interval": ">10s", + "tls_ca_cert": "/etc/ssl/certs/ca.pem", + } + ) module = grafana_datasource.setup_module_object() payload = grafana_datasource.get_datasource_payload(module.params) self.assertEqual(payload, expected_payload) def test_payload_elastic(self): expected_payload = { - 'access': 'proxy', - 'basicAuth': True, - 'basicAuthUser': 'grafana', - 'database': '[logstash_]YYYY.MM.DD', - 'isDefault': False, - 'jsonData': { - 'esVersion': 56, - 'interval': 'Daily', - 'maxConcurrentShardRequests': 42, - 'timeField': '@timestamp', - 'timeInterval': '1m', - 'tlsAuth': False, - 'tlsAuthWithCACert': True + "access": "proxy", + "basicAuth": True, + "basicAuthUser": "grafana", + "database": "[logstash_]YYYY.MM.DD", + "isDefault": False, + "jsonData": { + "esVersion": 56, + "interval": "Daily", + "maxConcurrentShardRequests": 42, + "timeField": "@timestamp", + "timeInterval": "1m", + "tlsAuth": False, + "tlsAuthWithCACert": True, }, - 'name': 'datasource-elastic', - 'uid': 'xyz123', - 'orgId': 1, - 'secureJsonData': { - 'basicAuthPassword': 'grafana', - 'tlsCACert': '/etc/ssl/certs/ca.pem' + "name": "datasource-elastic", + "uid": "xyz123", + "orgId": 1, + "secureJsonData": { + "basicAuthPassword": "grafana", + "tlsCACert": "/etc/ssl/certs/ca.pem", }, - 'type': 'elasticsearch', - 'url': 'https://elastic.company.com:9200', - 'user': '', - 'withCredentials': False + "type": "elasticsearch", + "url": "https://elastic.company.com:9200", + "user": "", + "withCredentials": False, } - set_module_args({ - 'url': 'https://grafana.example.com', - 'url_username': 'admin', - 'url_password': 'admin', - 'name': 'datasource-elastic', - 'uid': 'xyz123', - 'ds_type': 'elasticsearch', - 'ds_url': 'https://elastic.company.com:9200', - 'database': '[logstash_]YYYY.MM.DD', - 'basic_auth_user': 'grafana', - 'basic_auth_password': 'grafana', - 'time_field': '@timestamp', - 'time_interval': '1m', - 'interval': 'Daily', - 'es_version': 56, - 'max_concurrent_shard_requests': 42, - 'tls_ca_cert': '/etc/ssl/certs/ca.pem' - }) + set_module_args( + { + "url": "https://grafana.example.com", + "url_username": "admin", + "url_password": "admin", + "name": "datasource-elastic", + "uid": "xyz123", + "ds_type": "elasticsearch", + "ds_url": "https://elastic.company.com:9200", + "database": "[logstash_]YYYY.MM.DD", + "basic_auth_user": "grafana", + "basic_auth_password": "grafana", + "time_field": "@timestamp", + "time_interval": "1m", + "interval": "Daily", + "es_version": 56, + "max_concurrent_shard_requests": 42, + "tls_ca_cert": "/etc/ssl/certs/ca.pem", + } + ) module = grafana_datasource.setup_module_object() payload = grafana_datasource.get_datasource_payload(module.params) self.assertEqual(payload, expected_payload) diff --git a/ansible_collections/community/grafana/tests/unit/modules/grafana/grafana_plugin/test_grafana_plugin.py b/ansible_collections/community/grafana/tests/unit/modules/grafana/grafana_plugin/test_grafana_plugin.py index b3b025c4e..ec691a467 100644 --- a/ansible_collections/community/grafana/tests/unit/modules/grafana/grafana_plugin/test_grafana_plugin.py +++ b/ansible_collections/community/grafana/tests/unit/modules/grafana/grafana_plugin/test_grafana_plugin.py @@ -1,4 +1,4 @@ -from __future__ import (absolute_import, division, print_function) +from __future__ import absolute_import, division, print_function from unittest import TestCase from unittest.mock import patch, MagicMock @@ -53,14 +53,13 @@ Error: ✗ plugin does not exist class GrafanaPlugin(TestCase): - - @patch('ansible_collections.community.grafana.plugins.modules.grafana_plugin.grafana_cli_bin') + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_plugin.grafana_cli_bin" + ) def test_plugin_install_zip(self, mock_grafana_cli_bin): mock_grafana_cli_bin.return_value = "grafana-cli plugins" - params = { - "name": "alexanderzobnin-zabbix-app" - } + params = {"name": "alexanderzobnin-zabbix-app"} module = MagicMock() module.run_command.return_value = run_command_install_zip() @@ -68,13 +67,13 @@ class GrafanaPlugin(TestCase): result = grafana_plugin.get_grafana_plugin_version(module, params) self.assertEqual(result, None) - @patch('ansible_collections.community.grafana.plugins.modules.grafana_plugin.grafana_cli_bin') + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_plugin.grafana_cli_bin" + ) def test_plugin_ls(self, mock_grafana_cli_bin): mock_grafana_cli_bin.return_value = "grafana-cli plugins" - params = { - "name": "alexanderzobnin-zabbix-app" - } + params = {"name": "alexanderzobnin-zabbix-app"} module = MagicMock() module.run_command.return_value = run_command_ls() @@ -82,13 +81,13 @@ class GrafanaPlugin(TestCase): result = grafana_plugin.get_grafana_plugin_version(module, params) self.assertEqual(result, "3.10.5") - @patch('ansible_collections.community.grafana.plugins.modules.grafana_plugin.grafana_cli_bin') + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_plugin.grafana_cli_bin" + ) def test_plugin_uninstall(self, mock_grafana_cli_bin): mock_grafana_cli_bin.return_value = "grafana-cli plugins" - params = { - "name": "alexanderzobnin-zabbix-app" - } + params = {"name": "alexanderzobnin-zabbix-app"} module = MagicMock() module.run_command.return_value = run_command_uninstall() @@ -96,13 +95,13 @@ class GrafanaPlugin(TestCase): result = grafana_plugin.get_grafana_plugin_version(module, params) self.assertEqual(result, None) - @patch('ansible_collections.community.grafana.plugins.modules.grafana_plugin.grafana_cli_bin') + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_plugin.grafana_cli_bin" + ) def test_plugin_uninstall_again(self, mock_grafana_cli_bin): mock_grafana_cli_bin.return_value = "grafana-cli plugins" - params = { - "name": "alexanderzobnin-zabbix-app" - } + params = {"name": "alexanderzobnin-zabbix-app"} module = MagicMock() module.run_command.return_value = run_command_uninstall_again() diff --git a/ansible_collections/community/grafana/tests/unit/modules/grafana/grafana_team/test_grafana_team.py b/ansible_collections/community/grafana/tests/unit/modules/grafana/grafana_team/test_grafana_team.py index c59953afa..8efba998b 100644 --- a/ansible_collections/community/grafana/tests/unit/modules/grafana/grafana_team/test_grafana_team.py +++ b/ansible_collections/community/grafana/tests/unit/modules/grafana/grafana_team/test_grafana_team.py @@ -1,7 +1,7 @@ -from __future__ import (absolute_import, division, print_function) +from __future__ import absolute_import, division, print_function from unittest import TestCase -from unittest.mock import patch, MagicMock +from unittest.mock import patch from ansible_collections.community.grafana.plugins.modules import grafana_team from ansible.module_utils._text import to_bytes from ansible.module_utils import basic @@ -21,30 +21,32 @@ class MockedReponse(object): def exit_json(*args, **kwargs): """function to patch over exit_json; package return data into an exception""" - if 'changed' not in kwargs: - kwargs['changed'] = False + if "changed" not in kwargs: + kwargs["changed"] = False raise AnsibleExitJson(kwargs) def fail_json(*args, **kwargs): """function to patch over fail_json; package return data into an exception""" - kwargs['failed'] = True + kwargs["failed"] = True raise AnsibleFailJson(kwargs) class AnsibleExitJson(Exception): """Exception class to be raised by module.exit_json and caught by the test case""" + pass class AnsibleFailJson(Exception): """Exception class to be raised by module.fail_json and caught by the test case""" + pass def set_module_args(args): """prepare arguments so that they will be picked up during module creation""" - args = json.dumps({'ANSIBLE_MODULE_ARGS': args}) + args = json.dumps({"ANSIBLE_MODULE_ARGS": args}) basic._ANSIBLE_ARGS = to_bytes(args) @@ -65,7 +67,10 @@ def get_low_version_resp(): def team_exists_resp(): - server_response = json.dumps({"totalCount": 1, "teams": [{"name": "MyTestTeam", "email": "email@test.com"}]}, sort_keys=True) + server_response = json.dumps( + {"totalCount": 1, "teams": [{"name": "MyTestTeam", "email": "email@test.com"}]}, + sort_keys=True, + ) return (MockedReponse(server_response), {"status": 200}) @@ -90,21 +95,26 @@ def team_deleted_resp(): def team_members_resp(): - server_response = json.dumps([{ - "orgId": 1, - "teamId": 2, - "userId": 3, - "email": "user1@email.com", - "login": "user1", - "avatarUrl": r"\/avatar\/1b3c32f6386b0185c40d359cdc733a79" - }, { - "orgId": 1, - "teamId": 2, - "userId": 2, - "email": "user2@email.com", - "login": "user2", - "avatarUrl": r"\/avatar\/cad3c68da76e45d10269e8ef02f8e73e" - }]) + server_response = json.dumps( + [ + { + "orgId": 1, + "teamId": 2, + "userId": 3, + "email": "user1@email.com", + "login": "user1", + "avatarUrl": r"\/avatar\/1b3c32f6386b0185c40d359cdc733a79", + }, + { + "orgId": 1, + "teamId": 2, + "userId": 2, + "email": "user2@email.com", + "login": "user2", + "avatarUrl": r"\/avatar\/cad3c68da76e45d10269e8ef02f8e73e", + }, + ] + ) return (MockedReponse(server_response), {"status": 200}) @@ -124,12 +134,11 @@ def delete_team_member_resp(): class GrafanaTeamsTest(TestCase): - def setUp(self): self.authorization = basic_auth_header("admin", "admin") - self.mock_module_helper = patch.multiple(basic.AnsibleModule, - exit_json=exit_json, - fail_json=fail_json) + self.mock_module_helper = patch.multiple( + basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json + ) self.mock_module_helper.start() self.addCleanup(self.mock_module_helper.stop) @@ -139,112 +148,148 @@ class GrafanaTeamsTest(TestCase): with self.assertRaises(AnsibleFailJson) as result: grafana_team.main() - err, arg_list = result.exception.args[0]['msg'].split(':') - missing_args = [item.strip() for item in arg_list.split(',')] - self.assertEqual(err, 'missing required arguments') + err, arg_list = result.exception.args[0]["msg"].split(":") + self.assertEqual(err, "missing required arguments") self.assertEqual(arg_list, ["name", "email", "url"]) def test_module_setup_fails_without_name(self): - set_module_args({ - 'email': 'email@test.com', - 'url': 'http://grafana.example.com' - }) + set_module_args( + {"email": "email@test.com", "url": "http://grafana.example.com"} + ) with self.assertRaises(AnsibleFailJson) as result: grafana_team.main() - self.assertEqual(result.exception.args[0]['msg'], 'missing required arguments: name') + self.assertEqual( + result.exception.args[0]["msg"], "missing required arguments: name" + ) def test_module_setup_fails_without_email(self): - set_module_args({ - 'name': 'MyTestTeam', - 'url': 'http://grafana.example.com' - }) + set_module_args({"name": "MyTestTeam", "url": "http://grafana.example.com"}) with self.assertRaises(AnsibleFailJson) as result: grafana_team.main() - self.assertEqual(result.exception.args[0]['msg'], 'missing required arguments: email') + self.assertEqual( + result.exception.args[0]["msg"], "missing required arguments: email" + ) def test_module_setup_fails_without_url(self): - set_module_args({ - 'name': 'MyTestTeam', - 'email': 'email@test.com', - }) + set_module_args( + { + "name": "MyTestTeam", + "email": "email@test.com", + } + ) with self.assertRaises(AnsibleFailJson) as result: grafana_team.main() - self.assertEqual(result.exception.args[0]['msg'], 'missing required arguments: url') + self.assertEqual( + result.exception.args[0]["msg"], "missing required arguments: url" + ) def test_module_setup_fails_with_mutually_exclusive_auth_methods(self): - set_module_args({ - 'name': 'MyTestTeam', - 'email': 'email@test.com', - 'url': 'http://grafana.example.com', - 'grafana_user': 'admin', - 'grafana_api_key': 'random_api_key', - }) + set_module_args( + { + "name": "MyTestTeam", + "email": "email@test.com", + "url": "http://grafana.example.com", + "grafana_user": "admin", + "grafana_api_key": "random_api_key", + } + ) with self.assertRaises(AnsibleFailJson) as result: grafana_team.main() - self.assertEqual(result.exception.args[0]['msg'], 'parameters are mutually exclusive: url_username|grafana_api_key') - - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version') + self.assertEqual( + result.exception.args[0]["msg"], + "parameters are mutually exclusive: url_username|grafana_api_key", + ) + + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version" + ) def test_module_fails_with_low_grafana_version(self, mock_get_version): - set_module_args({ - 'name': 'MyTestTeam', - 'email': 'email@test.com', - 'url': 'http://grafana.example.com', - 'grafana_user': 'admin', - 'grafana_password': 'admin', - }) + set_module_args( + { + "name": "MyTestTeam", + "email": "email@test.com", + "url": "http://grafana.example.com", + "grafana_user": "admin", + "grafana_password": "admin", + } + ) - module = grafana_team.setup_module_object() mock_get_version.return_value = get_low_version_resp() with self.assertRaises(AnsibleFailJson) as result: grafana_team.main() - self.assertEqual(result.exception.args[0]['msg'], 'Teams API is available starting Grafana v5') - - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version') - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url') - def test_module_failure_with_unauthorized_resp(self, mock_fetch_url, mock_get_version): - set_module_args({ - 'name': 'MyTestTeam', - 'email': 'email@test.com', - 'url': 'http://grafana.example.com', - }) - module = grafana_team.setup_module_object() + self.assertEqual( + result.exception.args[0]["msg"], + "Teams API is available starting Grafana v5", + ) + + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version" + ) + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url" + ) + def test_module_failure_with_unauthorized_resp( + self, mock_fetch_url, mock_get_version + ): + set_module_args( + { + "name": "MyTestTeam", + "email": "email@test.com", + "url": "http://grafana.example.com", + } + ) mock_fetch_url.return_value = unauthorized_resp() mock_get_version.return_value = get_version_resp() with self.assertRaises(AnsibleFailJson) as result: grafana_team.main() - self.assertTrue(result.exception.args[0]['msg'].startswith('Unauthorized to perform action')) - - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version') - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url') - def test_module_failure_with_permission_denied_resp(self, mock_fetch_url, mock_get_version): - set_module_args({ - 'name': 'MyTestTeam', - 'email': 'email@test.com', - 'url': 'http://grafana.example.com', - }) - module = grafana_team.setup_module_object() + self.assertTrue( + result.exception.args[0]["msg"].startswith("Unauthorized to perform action") + ) + + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version" + ) + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url" + ) + def test_module_failure_with_permission_denied_resp( + self, mock_fetch_url, mock_get_version + ): + set_module_args( + { + "name": "MyTestTeam", + "email": "email@test.com", + "url": "http://grafana.example.com", + } + ) mock_fetch_url.return_value = permission_denied_resp() mock_get_version.return_value = get_version_resp() with self.assertRaises(AnsibleFailJson) as result: grafana_team.main() - self.assertTrue(result.exception.args[0]['msg'].startswith('Permission Denied')) - - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version') - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url') + self.assertTrue(result.exception.args[0]["msg"].startswith("Permission Denied")) + + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version" + ) + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url" + ) def test_get_team_method_with_existing_team(self, mock_fetch_url, mock_get_version): - set_module_args({ - 'state': 'present', - 'name': 'MyTestTeam', - 'email': 'email@test.com', - 'url': 'http://grafana.example.com' - }) + set_module_args( + { + "state": "present", + "name": "MyTestTeam", + "email": "email@test.com", + "url": "http://grafana.example.com", + } + ) module = grafana_team.setup_module_object() mock_fetch_url.return_value = team_exists_resp() mock_get_version.return_value = get_version_resp() @@ -252,21 +297,34 @@ class GrafanaTeamsTest(TestCase): grafana_iface = grafana_team.GrafanaTeamInterface(module) res = grafana_iface.get_team("MyTestTeam") mock_fetch_url.assert_called_once_with( - module, 'http://grafana.example.com/api/teams/search?name=MyTestTeam', + module, + "http://grafana.example.com/api/teams/search?name=MyTestTeam", data=None, - headers={'Content-Type': 'application/json', 'Authorization': self.authorization}, - method='GET') - self.assertEquals(res, {"email": "email@test.com", "name": "MyTestTeam"}) - - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version') - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url') - def test_get_team_method_with_non_existing_team(self, mock_fetch_url, mock_get_version): - set_module_args({ - 'state': 'present', - 'name': 'MyTestTeam', - 'email': 'email@test.com', - 'url': 'http://grafana.example.com' - }) + headers={ + "Content-Type": "application/json", + "Authorization": self.authorization, + }, + method="GET", + ) + self.assertEqual(res, {"email": "email@test.com", "name": "MyTestTeam"}) + + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version" + ) + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url" + ) + def test_get_team_method_with_non_existing_team( + self, mock_fetch_url, mock_get_version + ): + set_module_args( + { + "state": "present", + "name": "MyTestTeam", + "email": "email@test.com", + "url": "http://grafana.example.com", + } + ) module = grafana_team.setup_module_object() mock_fetch_url.return_value = team_not_found_resp() mock_get_version.return_value = get_version_resp() @@ -274,21 +332,32 @@ class GrafanaTeamsTest(TestCase): grafana_iface = grafana_team.GrafanaTeamInterface(module) res = grafana_iface.get_team("MyTestTeam") mock_fetch_url.assert_called_once_with( - module, 'http://grafana.example.com/api/teams/search?name=MyTestTeam', + module, + "http://grafana.example.com/api/teams/search?name=MyTestTeam", data=None, - headers={'Content-Type': 'application/json', 'Authorization': self.authorization}, - method='GET') - self.assertEquals(res, None) - - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version') - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url') + headers={ + "Content-Type": "application/json", + "Authorization": self.authorization, + }, + method="GET", + ) + self.assertEqual(res, None) + + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version" + ) + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url" + ) def test_create_team_method(self, mock_fetch_url, mock_get_version): - set_module_args({ - 'state': 'present', - 'name': 'MyTestTeam', - 'email': 'email@test.com', - 'url': 'http://grafana.example.com' - }) + set_module_args( + { + "state": "present", + "name": "MyTestTeam", + "email": "email@test.com", + "url": "http://grafana.example.com", + } + ) module = grafana_team.setup_module_object() mock_fetch_url.return_value = team_created_resp() mock_get_version.return_value = get_version_resp() @@ -297,21 +366,34 @@ class GrafanaTeamsTest(TestCase): res = grafana_iface.create_team("MyTestTeam", "email@test.com") mock_fetch_url.assert_called_once_with( - module, 'http://grafana.example.com/api/teams', - data=json.dumps({"email": "email@test.com", "name": "MyTestTeam"}, sort_keys=True), - headers={'Content-Type': 'application/json', 'Authorization': self.authorization}, - method='POST') - self.assertEquals(res, {"message": "Team created", "teamId": 2}) - - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version') - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url') + module, + "http://grafana.example.com/api/teams", + data=json.dumps( + {"email": "email@test.com", "name": "MyTestTeam"}, sort_keys=True + ), + headers={ + "Content-Type": "application/json", + "Authorization": self.authorization, + }, + method="POST", + ) + self.assertEqual(res, {"message": "Team created", "teamId": 2}) + + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version" + ) + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url" + ) def test_update_team_method(self, mock_fetch_url, mock_get_version): - set_module_args({ - 'state': 'present', - 'name': 'MyTestTeam', - 'email': 'email@test.com', - 'url': 'http://grafana.example.com' - }) + set_module_args( + { + "state": "present", + "name": "MyTestTeam", + "email": "email@test.com", + "url": "http://grafana.example.com", + } + ) module = grafana_team.setup_module_object() mock_fetch_url.return_value = team_updated_resp() mock_get_version.return_value = get_version_resp() @@ -319,21 +401,34 @@ class GrafanaTeamsTest(TestCase): grafana_iface = grafana_team.GrafanaTeamInterface(module) res = grafana_iface.update_team(2, "MyTestTeam", "email@test.com") mock_fetch_url.assert_called_once_with( - module, 'http://grafana.example.com/api/teams/2', - data=json.dumps({"email": "email@test.com", "name": "MyTestTeam"}, sort_keys=True), - headers={'Content-Type': 'application/json', 'Authorization': self.authorization}, - method='PUT') - self.assertEquals(res, {"message": "Team updated"}) - - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version') - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url') + module, + "http://grafana.example.com/api/teams/2", + data=json.dumps( + {"email": "email@test.com", "name": "MyTestTeam"}, sort_keys=True + ), + headers={ + "Content-Type": "application/json", + "Authorization": self.authorization, + }, + method="PUT", + ) + self.assertEqual(res, {"message": "Team updated"}) + + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version" + ) + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url" + ) def test_delete_team_method(self, mock_fetch_url, mock_get_version): - set_module_args({ - 'state': 'absent', - 'name': 'MyTestTeam', - 'email': 'email@test.com', - 'url': 'http://grafana.example.com' - }) + set_module_args( + { + "state": "absent", + "name": "MyTestTeam", + "email": "email@test.com", + "url": "http://grafana.example.com", + } + ) module = grafana_team.setup_module_object() mock_fetch_url.return_value = team_deleted_resp() mock_get_version.return_value = get_version_resp() @@ -341,21 +436,32 @@ class GrafanaTeamsTest(TestCase): grafana_iface = grafana_team.GrafanaTeamInterface(module) res = grafana_iface.delete_team(2) mock_fetch_url.assert_called_once_with( - module, 'http://grafana.example.com/api/teams/2', + module, + "http://grafana.example.com/api/teams/2", data=None, - headers={'Content-Type': 'application/json', 'Authorization': self.authorization}, - method='DELETE') - self.assertEquals(res, {"message": "Team deleted"}) - - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version') - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url') + headers={ + "Content-Type": "application/json", + "Authorization": self.authorization, + }, + method="DELETE", + ) + self.assertEqual(res, {"message": "Team deleted"}) + + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version" + ) + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url" + ) def test_get_team_members_method(self, mock_fetch_url, mock_get_version): - set_module_args({ - 'state': 'present', - 'name': 'MyTestTeam', - 'email': 'email@test.com', - 'url': 'http://grafana.example.com' - }) + set_module_args( + { + "state": "present", + "name": "MyTestTeam", + "email": "email@test.com", + "url": "http://grafana.example.com", + } + ) module = grafana_team.setup_module_object() mock_fetch_url.return_value = team_members_resp() mock_get_version.return_value = get_version_resp() @@ -363,21 +469,34 @@ class GrafanaTeamsTest(TestCase): grafana_iface = grafana_team.GrafanaTeamInterface(module) res = grafana_iface.get_team_members(2) mock_fetch_url.assert_called_once_with( - module, 'http://grafana.example.com/api/teams/2/members', + module, + "http://grafana.example.com/api/teams/2/members", data=None, - headers={'Content-Type': 'application/json', 'Authorization': self.authorization}, - method='GET') - self.assertEquals(res, ["user1@email.com", "user2@email.com"]) - - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version') - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url') - def test_get_team_members_method_no_members_returned(self, mock_fetch_url, mock_get_version): - set_module_args({ - 'state': 'present', - 'name': 'MyTestTeam', - 'email': 'email@test.com', - 'url': 'http://grafana.example.com' - }) + headers={ + "Content-Type": "application/json", + "Authorization": self.authorization, + }, + method="GET", + ) + self.assertEqual(res, ["user1@email.com", "user2@email.com"]) + + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version" + ) + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url" + ) + def test_get_team_members_method_no_members_returned( + self, mock_fetch_url, mock_get_version + ): + set_module_args( + { + "state": "present", + "name": "MyTestTeam", + "email": "email@test.com", + "url": "http://grafana.example.com", + } + ) module = grafana_team.setup_module_object() mock_fetch_url.return_value = team_members_no_members_resp() mock_get_version.return_value = get_version_resp() @@ -385,63 +504,96 @@ class GrafanaTeamsTest(TestCase): grafana_iface = grafana_team.GrafanaTeamInterface(module) res = grafana_iface.get_team_members(2) mock_fetch_url.assert_called_once_with( - module, 'http://grafana.example.com/api/teams/2/members', + module, + "http://grafana.example.com/api/teams/2/members", data=None, - headers={'Content-Type': 'application/json', 'Authorization': self.authorization}, - method='GET') - self.assertEquals(res, []) - - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version') - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url') + headers={ + "Content-Type": "application/json", + "Authorization": self.authorization, + }, + method="GET", + ) + self.assertEqual(res, []) + + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version" + ) + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url" + ) def test_add_team_member_method(self, mock_fetch_url, mock_get_version): - set_module_args({ - 'state': 'present', - 'name': 'MyTestTeam', - 'email': 'email@test.com', - 'url': 'http://grafana.example.com' - }) + set_module_args( + { + "state": "present", + "name": "MyTestTeam", + "email": "email@test.com", + "url": "http://grafana.example.com", + } + ) module = grafana_team.setup_module_object() mock_fetch_url.return_value = add_team_member_resp() mock_get_version.return_value = get_version_resp() grafana_iface = grafana_team.GrafanaTeamInterface(module) - with patch.object(grafana_team.GrafanaTeamInterface, 'get_user_id_from_mail') as mock_get_user_id_from_mail: + with patch.object( + grafana_team.GrafanaTeamInterface, "get_user_id_from_mail" + ) as mock_get_user_id_from_mail: mock_get_user_id_from_mail.return_value = 42 res = grafana_iface.add_team_member(2, "another@test.com") mock_fetch_url.assert_called_once_with( - module, 'http://grafana.example.com/api/teams/2/members', - data=json.dumps({'userId': 42}), - headers={'Content-Type': 'application/json', 'Authorization': self.authorization}, - method='POST') - self.assertEquals(res, None) - - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version') - @patch('ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url') + module, + "http://grafana.example.com/api/teams/2/members", + data=json.dumps({"userId": 42}), + headers={ + "Content-Type": "application/json", + "Authorization": self.authorization, + }, + method="POST", + ) + self.assertEqual(res, None) + + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.GrafanaTeamInterface.get_version" + ) + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_team.fetch_url" + ) def test_delete_team_member_method(self, mock_fetch_url, mock_get_version): - set_module_args({ - 'state': 'present', - 'name': 'MyTestTeam', - 'email': 'email@test.com', - 'url': 'http://grafana.example.com' - }) + set_module_args( + { + "state": "present", + "name": "MyTestTeam", + "email": "email@test.com", + "url": "http://grafana.example.com", + } + ) module = grafana_team.setup_module_object() mock_fetch_url.return_value = delete_team_member_resp() mock_get_version.return_value = get_version_resp() grafana_iface = grafana_team.GrafanaTeamInterface(module) - with patch.object(grafana_team.GrafanaTeamInterface, 'get_user_id_from_mail') as mock_get_user_id_from_mail: + with patch.object( + grafana_team.GrafanaTeamInterface, "get_user_id_from_mail" + ) as mock_get_user_id_from_mail: mock_get_user_id_from_mail.return_value = 42 res = grafana_iface.delete_team_member(2, "another@test.com") mock_fetch_url.assert_called_once_with( - module, 'http://grafana.example.com/api/teams/2/members/42', + module, + "http://grafana.example.com/api/teams/2/members/42", data=None, - headers={'Content-Type': 'application/json', 'Authorization': self.authorization}, - method='DELETE') - self.assertEquals(res, None) + headers={ + "Content-Type": "application/json", + "Authorization": self.authorization, + }, + method="DELETE", + ) + self.assertEqual(res, None) def test_diff_members_function(self): list1 = ["foo@example.com", "bar@example.com"] list2 = ["bar@example.com", "random@example.com"] res = grafana_team.diff_members(list1, list2) - self.assertEquals(res, {"to_del": ["random@example.com"], "to_add": ["foo@example.com"]}) + self.assertEqual( + res, {"to_del": ["random@example.com"], "to_add": ["foo@example.com"]} + ) diff --git a/ansible_collections/community/grafana/tests/unit/modules/grafana/grafana_user/test_grafana_user.py b/ansible_collections/community/grafana/tests/unit/modules/grafana/grafana_user/test_grafana_user.py index 925c01655..09d0dce05 100644 --- a/ansible_collections/community/grafana/tests/unit/modules/grafana/grafana_user/test_grafana_user.py +++ b/ansible_collections/community/grafana/tests/unit/modules/grafana/grafana_user/test_grafana_user.py @@ -1,7 +1,7 @@ -from __future__ import (absolute_import, division, print_function) +from __future__ import absolute_import, division, print_function from unittest import TestCase -from unittest.mock import call, patch, MagicMock +from unittest.mock import call, patch from ansible_collections.community.grafana.plugins.modules import grafana_user from ansible.module_utils._text import to_bytes from ansible.module_utils import basic @@ -21,30 +21,32 @@ class MockedReponse(object): def exit_json(*args, **kwargs): """function to patch over exit_json; package return data into an exception""" - if 'changed' not in kwargs: - kwargs['changed'] = False + if "changed" not in kwargs: + kwargs["changed"] = False raise AnsibleExitJson(kwargs) def fail_json(*args, **kwargs): """function to patch over fail_json; package return data into an exception""" - kwargs['failed'] = True + kwargs["failed"] = True raise AnsibleFailJson(kwargs) class AnsibleExitJson(Exception): """Exception class to be raised by module.exit_json and caught by the test case""" + pass class AnsibleFailJson(Exception): """Exception class to be raised by module.fail_json and caught by the test case""" + pass def set_module_args(args): """prepare arguments so that they will be picked up during module creation""" - args = json.dumps({'ANSIBLE_MODULE_ARGS': args}) + args = json.dumps({"ANSIBLE_MODULE_ARGS": args}) basic._ANSIBLE_ARGS = to_bytes(args) @@ -59,75 +61,94 @@ def user_already_exists_resp(): def user_created_resp(): - server_response = json.dumps({ - "id": 2, - "email": "robin@gotham.com", - "name": "Robin", - "login": "adrobinmin", - "theme": "light", - "orgId": 1, - "isGrafanaAdmin": False, - "isDisabled": False, - "isExternal": False, - "authLabels": None, - "updatedAt": "2019-09-25T14:44:37+01:00", - "createdAt": "2019-09-25T14:44:37+01:00" - }, sort_keys=True) + server_response = json.dumps( + { + "id": 2, + "email": "robin@gotham.com", + "name": "Robin", + "login": "adrobinmin", + "theme": "light", + "orgId": 1, + "isGrafanaAdmin": False, + "isDisabled": False, + "isExternal": False, + "authLabels": None, + "updatedAt": "2019-09-25T14:44:37+01:00", + "createdAt": "2019-09-25T14:44:37+01:00", + }, + sort_keys=True, + ) return (MockedReponse(server_response), {"status": 200}) class GrafanaUserTest(TestCase): - def setUp(self): self.authorization = basic_auth_header("admin", "changeme") - self.mock_module_helper = patch.multiple(basic.AnsibleModule, - exit_json=exit_json, - fail_json=fail_json) + self.mock_module_helper = patch.multiple( + basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json + ) self.mock_module_helper.start() self.addCleanup(self.mock_module_helper.stop) # create an already existing user - @patch('ansible_collections.community.grafana.plugins.modules.grafana_user.fetch_url') + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_user.fetch_url" + ) def test_create_user_existing_user(self, mock_fetch_url): - set_module_args({ - 'url': 'https://grafana.example.com', - 'url_username': 'admin', - 'url_password': 'changeme', - 'name': 'Joker', - 'email': 'joker@gotham.com', - 'login': 'joker', - 'password': 'oups', - 'state': 'present' - }) + set_module_args( + { + "url": "https://grafana.example.com", + "url_username": "admin", + "url_password": "changeme", + "name": "Joker", + "email": "joker@gotham.com", + "login": "joker", + "password": "oups", + "state": "present", + } + ) module = grafana_user.setup_module_object() mock_fetch_url.return_value = user_already_exists_resp() grafana_iface = grafana_user.GrafanaUserInterface(module) with self.assertRaises(AnsibleFailJson): - grafana_iface.create_user( - 'Joker', 'joker@gotham.com', 'joker', 'oups') + grafana_iface.create_user("Joker", "joker@gotham.com", "joker", "oups") mock_fetch_url.assert_called_once_with( module, - 'https://grafana.example.com/api/admin/users', - data=json.dumps({'name': 'Joker', 'email': 'joker@gotham.com', - 'login': 'joker', 'password': 'oups'}, sort_keys=True), - headers={'Content-Type': 'application/json', - 'Authorization': self.authorization}, - method='POST') + "https://grafana.example.com/api/admin/users", + data=json.dumps( + { + "name": "Joker", + "email": "joker@gotham.com", + "login": "joker", + "password": "oups", + }, + sort_keys=True, + ), + headers={ + "Content-Type": "application/json", + "Authorization": self.authorization, + }, + method="POST", + ) # create a new user - @patch('ansible_collections.community.grafana.plugins.modules.grafana_user.fetch_url') + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_user.fetch_url" + ) def test_create_user_new_user(self, mock_fetch_url): - set_module_args({ - 'url': 'https://grafana.example.com', - 'url_username': 'admin', - 'url_password': 'changeme', - 'name': 'Robin', - 'email': 'robin@gotham.com', - 'login': 'robin', - 'password': 'oups', - 'state': 'present' - }) + set_module_args( + { + "url": "https://grafana.example.com", + "url_username": "admin", + "url_password": "changeme", + "name": "Robin", + "email": "robin@gotham.com", + "login": "robin", + "password": "oups", + "state": "present", + } + ) module = grafana_user.setup_module_object() mock_fetch_url.return_value = user_created_resp() @@ -136,54 +157,71 @@ class GrafanaUserTest(TestCase): # first call to create user call( module, - 'https://grafana.example.com/api/admin/users', - data=json.dumps({'name': 'Robin', 'email': 'robin@gotham.com', - 'login': 'robin', 'password': 'oups'}, sort_keys=True), - headers={'Content-Type': 'application/json', - 'Authorization': self.authorization}, - method='POST'), - + "https://grafana.example.com/api/admin/users", + data=json.dumps( + { + "name": "Robin", + "email": "robin@gotham.com", + "login": "robin", + "password": "oups", + }, + sort_keys=True, + ), + headers={ + "Content-Type": "application/json", + "Authorization": self.authorization, + }, + method="POST", + ), # second call to return created user call( module, - 'https://grafana.example.com/api/users/lookup?loginOrEmail=robin', + "https://grafana.example.com/api/users/lookup?loginOrEmail=robin", data=None, - headers={'Content-Type': 'application/json', - 'Authorization': self.authorization}, - method='GET'), + headers={ + "Content-Type": "application/json", + "Authorization": self.authorization, + }, + method="GET", + ), ] grafana_iface = grafana_user.GrafanaUserInterface(module) - result = grafana_iface.create_user( - 'Robin', 'robin@gotham.com', 'robin', 'oups') - - mock_fetch_url.assert_has_calls( - expected_fetch_url_calls, any_order=False) - - self.assertEquals(result, { - "id": 2, - "email": "robin@gotham.com", - "name": "Robin", - "login": "adrobinmin", - "theme": "light", - "orgId": 1, - "isGrafanaAdmin": False, - "isDisabled": False, - "isExternal": False, - "authLabels": None, - "updatedAt": "2019-09-25T14:44:37+01:00", - "createdAt": "2019-09-25T14:44:37+01:00" - }) - - @patch('ansible_collections.community.grafana.plugins.modules.grafana_user.fetch_url') + result = grafana_iface.create_user("Robin", "robin@gotham.com", "robin", "oups") + + mock_fetch_url.assert_has_calls(expected_fetch_url_calls, any_order=False) + + self.assertEqual( + result, + { + "id": 2, + "email": "robin@gotham.com", + "name": "Robin", + "login": "adrobinmin", + "theme": "light", + "orgId": 1, + "isGrafanaAdmin": False, + "isDisabled": False, + "isExternal": False, + "authLabels": None, + "updatedAt": "2019-09-25T14:44:37+01:00", + "createdAt": "2019-09-25T14:44:37+01:00", + }, + ) + + @patch( + "ansible_collections.community.grafana.plugins.modules.grafana_user.fetch_url" + ) def test_delete_user(self, mock_fetch_url): - set_module_args({ - 'url': 'https://grafana.example.com', - 'url_username': 'admin', - 'url_password': 'changeme', - 'login': 'batman', - 'state': 'absent' - }) + set_module_args( + { + "url": "https://grafana.example.com", + "url_username": "admin", + "url_password": "changeme", + "login": "batman", + "state": "absent", + } + ) module = grafana_user.setup_module_object() mock_fetch_url.return_value = user_deleted_resp() @@ -192,9 +230,12 @@ class GrafanaUserTest(TestCase): result = grafana_iface.delete_user(user_id) mock_fetch_url.assert_called_once_with( module, - 'https://grafana.example.com/api/admin/users/42', + "https://grafana.example.com/api/admin/users/42", data=None, - headers={'Content-Type': 'application/json', - 'Authorization': self.authorization}, - method='DELETE') - self.assertEquals(result, {"message": "User deleted"}) + headers={ + "Content-Type": "application/json", + "Authorization": self.authorization, + }, + method="DELETE", + ) + self.assertEqual(result, {"message": "User deleted"}) |