From c384424c0e2478386e2e4dd0c5b6ea29fcf25201 Mon Sep 17 00:00:00 2001 From: Mahendra Paipuri Date: Sat, 24 Feb 2024 13:19:12 +0100 Subject: [PATCH 01/10] chore: Fix names in roles Signed-off-by: Mahendra Paipuri --- .../ceems_api_server/meta/argument_specs.yml | 4 +-- roles/ceems_exporter/meta/argument_specs.yml | 6 ++--- roles/ceems_lb/defaults/main.yml | 2 +- roles/ceems_lb/meta/argument_specs.yml | 4 +-- .../alternative/tests/test_alternative.py | 25 ++++++++++--------- .../molecule/default/tests/test_default.py | 23 +++++++++-------- .../molecule/latest/tests/test_latest.py | 23 +++++++++-------- 7 files changed, 45 insertions(+), 42 deletions(-) diff --git a/roles/ceems_api_server/meta/argument_specs.yml b/roles/ceems_api_server/meta/argument_specs.yml index fb26364..ca2bafa 100644 --- a/roles/ceems_api_server/meta/argument_specs.yml +++ b/roles/ceems_api_server/meta/argument_specs.yml @@ -88,12 +88,12 @@ argument_specs: description: - I(Advanced) - System group for batch job stats server - default: batchjob-stats + default: ceems ceems_api_server_system_user: description: - I(Advanced) - CEEMS API server user - default: batchjob-stats + default: ceems ceems_api_server_cli_args: description: - I(Advanced) diff --git a/roles/ceems_exporter/meta/argument_specs.yml b/roles/ceems_exporter/meta/argument_specs.yml index a049844..c2615ee 100644 --- a/roles/ceems_exporter/meta/argument_specs.yml +++ b/roles/ceems_exporter/meta/argument_specs.yml @@ -96,13 +96,13 @@ argument_specs: ceems_exporter_system_group: description: - I(Advanced) - - System group for batch job exporter - default: ceems-exp + - System group for CEEMS exporter + default: ceemsexp ceems_exporter_system_user: description: - I(Advanced) - CEEMS exporter user - default: ceems-exp + default: ceemsexp ceems_exporter_cli_args: description: - I(Advanced) diff --git a/roles/ceems_lb/defaults/main.yml b/roles/ceems_lb/defaults/main.yml index c454d1f..4912005 100644 --- a/roles/ceems_lb/defaults/main.yml +++ b/roles/ceems_lb/defaults/main.yml @@ -17,5 +17,5 @@ ceems_lb_db_path: "" ceems_lb_cli_args: [] ceems_lb_env_vars: {} ceems_lb_binary_install_dir: /usr/local/bin -ceems_lb_system_group: ceems +ceems_lb_system_group: ceemslb ceems_lb_system_user: "{{ ceems_lb_system_group }}" diff --git a/roles/ceems_lb/meta/argument_specs.yml b/roles/ceems_lb/meta/argument_specs.yml index b65d3b2..25fa478 100644 --- a/roles/ceems_lb/meta/argument_specs.yml +++ b/roles/ceems_lb/meta/argument_specs.yml @@ -68,12 +68,12 @@ argument_specs: description: - I(Advanced) - System group for batch job stats server - default: batchjob-stats + default: ceemslb ceems_lb_system_user: description: - I(Advanced) - CEEMS Load Balancer user - default: batchjob-stats + default: ceemslb ceems_lb_cli_args: description: - I(Advanced) diff --git a/roles/ceems_lb/molecule/alternative/tests/test_alternative.py b/roles/ceems_lb/molecule/alternative/tests/test_alternative.py index 48d8484..4f863b2 100644 --- a/roles/ceems_lb/molecule/alternative/tests/test_alternative.py +++ b/roles/ceems_lb/molecule/alternative/tests/test_alternative.py @@ -10,8 +10,8 @@ def test_directories(host): dirs = [ - "/var/lib/ceems_api_server", - "/tmp/ceems_api_server" + "/var/lib/ceems_lb", + "/tmp/ceems_lb" ] for dir in dirs: d = host.file(dir) @@ -21,8 +21,9 @@ def test_directories(host): def test_files(host): files = [ - "/etc/systemd/system/ceems_api_server.service", - "/usr/local/bin/ceems_api_server" + "/etc/systemd/system/ceems_lb.service", + "/etc/ceems_lb/config.yaml", + "/usr/local/bin/ceems_lb" ] for file in files: f = host.file(file) @@ -46,27 +47,27 @@ def test_permissions_didnt_change(host): def test_user(host): - assert host.group("batchjob-stats").exists - assert "batchjob-stats" in host.user("batchjob-stats").groups - assert host.user("batchjob-stats").shell == "/usr/sbin/nologin" - assert host.user("batchjob-stats").home == "/" + assert host.group("ceemslb").exists + assert "ceemslb" in host.user("ceemslb").groups + assert host.user("ceemslb").shell == "/usr/sbin/nologin" + assert host.user("ceemslb").home == "/" def test_service(host): - s = host.service("ceems_api_server") + s = host.service("ceems_lb") try: assert s.is_running except AssertionError: # Capture service logs - journal_output = host.run('journalctl -u ceems_api_server --since "1 hour ago"') - print("\n==== journalctl -u ceems_api_server Output ====\n") + journal_output = host.run('journalctl -u ceems_lb --since "1 hour ago"') + print("\n==== journalctl -u ceems_lb Output ====\n") print(journal_output) print("\n============================================\n") raise # Re-raise the original assertion error def test_systemd_properties(host): - s = host.service("ceems_api_server") + s = host.service("ceems_lb") p = s.systemd_properties assert p.get("ProtectHome") == "yes" assert p.get("Environment") == "foo=bar" diff --git a/roles/ceems_lb/molecule/default/tests/test_default.py b/roles/ceems_lb/molecule/default/tests/test_default.py index 18bf459..d4c151e 100644 --- a/roles/ceems_lb/molecule/default/tests/test_default.py +++ b/roles/ceems_lb/molecule/default/tests/test_default.py @@ -10,7 +10,7 @@ def test_directories(host): dirs = [ - "/var/lib/ceems_api_server" + "/var/lib/ceems_lb" ] for dir in dirs: d = host.file(dir) @@ -20,8 +20,9 @@ def test_directories(host): def test_files(host): files = [ - "/etc/systemd/system/ceems_api_server.service", - "/usr/local/bin/ceems_api_server" + "/etc/systemd/system/ceems_lb.service", + "/etc/ceems_lb/config.yaml", + "/usr/local/bin/ceems_lb" ] for file in files: f = host.file(file) @@ -45,27 +46,27 @@ def test_permissions_didnt_change(host): def test_user(host): - assert host.group("ceems").exists - assert "ceems" in host.user("ceems").groups - assert host.user("ceems").shell == "/usr/sbin/nologin" - assert host.user("ceems").home == "/" + assert host.group("ceemslb").exists + assert "ceemslb" in host.user("ceemslb").groups + assert host.user("ceemslb").shell == "/usr/sbin/nologin" + assert host.user("ceemslb").home == "/" def test_service(host): - s = host.service("ceems_api_server") + s = host.service("ceems_lb") try: assert s.is_running except AssertionError: # Capture service logs - journal_output = host.run('journalctl -u ceems_api_server --since "1 hour ago"') - print("\n==== journalctl -u ceems_api_server Output ====\n") + journal_output = host.run('journalctl -u ceems_lb --since "1 hour ago"') + print("\n==== journalctl -u ceems_lb Output ====\n") print(journal_output) print("\n============================================\n") raise # Re-raise the original assertion error def test_protecthome_property(host): - s = host.service("ceems_api_server") + s = host.service("ceems_lb") p = s.systemd_properties assert p.get("ProtectHome") == "yes" diff --git a/roles/ceems_lb/molecule/latest/tests/test_latest.py b/roles/ceems_lb/molecule/latest/tests/test_latest.py index 18bf459..d4c151e 100644 --- a/roles/ceems_lb/molecule/latest/tests/test_latest.py +++ b/roles/ceems_lb/molecule/latest/tests/test_latest.py @@ -10,7 +10,7 @@ def test_directories(host): dirs = [ - "/var/lib/ceems_api_server" + "/var/lib/ceems_lb" ] for dir in dirs: d = host.file(dir) @@ -20,8 +20,9 @@ def test_directories(host): def test_files(host): files = [ - "/etc/systemd/system/ceems_api_server.service", - "/usr/local/bin/ceems_api_server" + "/etc/systemd/system/ceems_lb.service", + "/etc/ceems_lb/config.yaml", + "/usr/local/bin/ceems_lb" ] for file in files: f = host.file(file) @@ -45,27 +46,27 @@ def test_permissions_didnt_change(host): def test_user(host): - assert host.group("ceems").exists - assert "ceems" in host.user("ceems").groups - assert host.user("ceems").shell == "/usr/sbin/nologin" - assert host.user("ceems").home == "/" + assert host.group("ceemslb").exists + assert "ceemslb" in host.user("ceemslb").groups + assert host.user("ceemslb").shell == "/usr/sbin/nologin" + assert host.user("ceemslb").home == "/" def test_service(host): - s = host.service("ceems_api_server") + s = host.service("ceems_lb") try: assert s.is_running except AssertionError: # Capture service logs - journal_output = host.run('journalctl -u ceems_api_server --since "1 hour ago"') - print("\n==== journalctl -u ceems_api_server Output ====\n") + journal_output = host.run('journalctl -u ceems_lb --since "1 hour ago"') + print("\n==== journalctl -u ceems_lb Output ====\n") print(journal_output) print("\n============================================\n") raise # Re-raise the original assertion error def test_protecthome_property(host): - s = host.service("ceems_api_server") + s = host.service("ceems_lb") p = s.systemd_properties assert p.get("ProtectHome") == "yes" From 454473720041bfdc61d9b9a5d43e31bad46fe167 Mon Sep 17 00:00:00 2001 From: Mahendra Paipuri Date: Sat, 24 Feb 2024 13:26:03 +0100 Subject: [PATCH 02/10] Fix YAML lint Signed-off-by: Mahendra Paipuri --- .github/version-drafter.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/version-drafter.yml b/.github/version-drafter.yml index cad72fe..a5415f6 100644 --- a/.github/version-drafter.yml +++ b/.github/version-drafter.yml @@ -1,4 +1,4 @@ --- -major-labels: [semver:major, major, breaking] -minor-labels: [semver:minor, minor, enhancement, deprecated, removed, security] -patch-labels: [semver:patch, bug, trivial, bugfix] +major-labels: ['semver:major', 'major', 'breaking'] +minor-labels: ['semver:minor', 'minor', 'enhancement', 'deprecated', 'removed', 'security'] +patch-labels: ['semver:patch', 'bug', 'trivial', 'bugfix'] From 43749cca4613a8bdc2090669da772ad57d6b508b Mon Sep 17 00:00:00 2001 From: Mahendra Paipuri Date: Sat, 24 Feb 2024 13:36:02 +0100 Subject: [PATCH 03/10] Fix task names Signed-off-by: Mahendra Paipuri --- roles/ceems_api_server/tasks/main.yml | 2 +- roles/ceems_exporter/tasks/main.yml | 2 +- roles/ceems_lb/tasks/main.yml | 2 +- roles/nvidia_dcgm_exporter/tasks/main.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/roles/ceems_api_server/tasks/main.yml b/roles/ceems_api_server/tasks/main.yml index 76152d9..9ce868e 100644 --- a/roles/ceems_api_server/tasks/main.yml +++ b/roles/ceems_api_server/tasks/main.yml @@ -50,7 +50,7 @@ tags: - ceems_api_server_configure -- name: Ensure Node Exporter is enabled on boot +- name: Ensure CEEMS API Server is enabled on boot become: true ansible.builtin.systemd: daemon_reload: true diff --git a/roles/ceems_exporter/tasks/main.yml b/roles/ceems_exporter/tasks/main.yml index b2b2dee..ac53cb4 100644 --- a/roles/ceems_exporter/tasks/main.yml +++ b/roles/ceems_exporter/tasks/main.yml @@ -50,7 +50,7 @@ tags: - ceems_exporter_configure -- name: Ensure Node Exporter is enabled on boot +- name: Ensure CEEMS Exporter is enabled on boot become: true ansible.builtin.systemd: daemon_reload: true diff --git a/roles/ceems_lb/tasks/main.yml b/roles/ceems_lb/tasks/main.yml index d8113e6..e73d5e0 100644 --- a/roles/ceems_lb/tasks/main.yml +++ b/roles/ceems_lb/tasks/main.yml @@ -51,7 +51,7 @@ tags: - ceems_lb_configure -- name: Ensure Node Exporter is enabled on boot +- name: Ensure CEEMS Load balancer is enabled on boot become: true ansible.builtin.systemd: daemon_reload: true diff --git a/roles/nvidia_dcgm_exporter/tasks/main.yml b/roles/nvidia_dcgm_exporter/tasks/main.yml index 38a4b5f..96c593e 100644 --- a/roles/nvidia_dcgm_exporter/tasks/main.yml +++ b/roles/nvidia_dcgm_exporter/tasks/main.yml @@ -50,7 +50,7 @@ tags: - dcgm_exporter_configure -- name: Ensure Node Exporter is enabled on boot +- name: Ensure DCGM Exporter is enabled on boot become: true ansible.builtin.systemd: daemon_reload: true From 220b2848d21f91012fff4a55439c0842a748bb15 Mon Sep 17 00:00:00 2001 From: Mahendra Paipuri Date: Sat, 24 Feb 2024 13:36:15 +0100 Subject: [PATCH 04/10] Fix CEEMS exporter URL var Signed-off-by: Mahendra Paipuri --- roles/ceems_exporter/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/ceems_exporter/defaults/main.yml b/roles/ceems_exporter/defaults/main.yml index f646079..152d239 100644 --- a/roles/ceems_exporter/defaults/main.yml +++ b/roles/ceems_exporter/defaults/main.yml @@ -1,8 +1,8 @@ --- ceems_exporter_version: "0.1.0-rc.4" ceems_exporter_binary_local_dir: "" -ceems_exporter_binary_url: https://github.com/{{ _ceems_exporter_repo }}/releases/download/v{{ ceems_exporter_version }}/\ - ceems-{{ ceems_exporter_version }}.linux-{{ go_arch }}.tar.gz +ceems_exporter_binary_url: "https://github.com/{{ _ceems_exporter_repo }}/releases/download/v{{ ceems_exporter_version }}/\ + ceems-{{ ceems_exporter_version }}.linux-{{ go_arch }}.tar.gz" ceems_exporter_checksums_url: https://github.com/{{ _ceems_exporter_repo }}/releases/download/v{{ ceems_exporter_version }}/sha256sums.txt ceems_exporter_skip_install: false From a875fc80fa04e9cfc903547483e3366497202a9a Mon Sep 17 00:00:00 2001 From: Mahendra Paipuri Date: Sat, 24 Feb 2024 13:54:26 +0100 Subject: [PATCH 05/10] Fix failing scenarios Signed-off-by: Mahendra Paipuri --- roles/ceems_api_server/tasks/configure.yml | 4 ++-- .../molecule/alternative/tests/test_alternative.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/roles/ceems_api_server/tasks/configure.yml b/roles/ceems_api_server/tasks/configure.yml index 38fb5fa..6357279 100644 --- a/roles/ceems_api_server/tasks/configure.yml +++ b/roles/ceems_api_server/tasks/configure.yml @@ -21,9 +21,9 @@ path: "{{ ceems_api_server_data_backup_path }}" state: directory owner: "{{ ceems_api_server_system_user }}" - group: "{{ ceems_api_server_system_user }}" + group: "{{ ceems_api_server_system_group }}" mode: u+rwX,g+rwX,o-rwX - when: ceems_api_server_data_backup_path + when: ceems_api_server_data_backup_path | length > 0 - name: Copy the ceems_api_server config file ansible.builtin.template: diff --git a/roles/ceems_exporter/molecule/alternative/tests/test_alternative.py b/roles/ceems_exporter/molecule/alternative/tests/test_alternative.py index 5d5eb95..4614f40 100644 --- a/roles/ceems_exporter/molecule/alternative/tests/test_alternative.py +++ b/roles/ceems_exporter/molecule/alternative/tests/test_alternative.py @@ -34,7 +34,7 @@ def test_systemd_properties(host): p = s.systemd_properties assert p.get("ProtectHome") == "yes" assert p.get("AmbientCapabilities") == "cap_setgid cap_setuid" - assert p.get("Environment") == "EMAPS_API=foo" + assert p.get("Environment") == "EMAPS_API_TOKEN=foo" @pytest.mark.parametrize("sockets", [ From 808faacedbaab8afaea38826de22fffa9396ff65 Mon Sep 17 00:00:00 2001 From: Mahendra Paipuri Date: Sat, 24 Feb 2024 15:20:46 +0100 Subject: [PATCH 06/10] Correct names of services in unit files Signed-off-by: Mahendra Paipuri --- .config/molecule/config-podman.yml | 120 +++++++++--------- .../templates/ceems_api_server.service.j2 | 2 +- .../templates/ceems_exporter.service.j2 | 2 +- roles/ceems_lb/templates/ceems_lb.service.j2 | 2 +- 4 files changed, 63 insertions(+), 63 deletions(-) diff --git a/.config/molecule/config-podman.yml b/.config/molecule/config-podman.yml index a6e9ffb..27b7df3 100644 --- a/.config/molecule/config-podman.yml +++ b/.config/molecule/config-podman.yml @@ -5,66 +5,66 @@ prerun: false driver: name: podman platforms: - # - name: almalinux-8 - # image: dokken/almalinux-8 - # pre_build_image: true - # privileged: true - # cgroup_parent: docker.slice - # command: /lib/systemd/systemd - # - name: almalinux-9 - # image: dokken/almalinux-9 - # pre_build_image: true - # privileged: true - # cgroup_parent: docker.slice - # command: /lib/systemd/systemd - # - name: centos-7 - # image: dokken/centos-7 - # pre_build_image: true - # privileged: true - # cgroup_parent: docker.slice - # command: /usr/lib/systemd/systemd - # - name: centos-stream-8 - # image: dokken/centos-stream-8 - # pre_build_image: true - # privileged: true - # cgroup_parent: docker.slice - # command: /lib/systemd/systemd - # - name: centos-stream-9 - # image: dokken/centos-stream-9 - # pre_build_image: true - # privileged: true - # cgroup_parent: docker.slice - # command: /lib/systemd/systemd - # - name: debian-10 - # image: dokken/debian-10 - # pre_build_image: true - # privileged: true - # cgroup_parent: docker.slice - # command: /lib/systemd/systemd - # - name: debian-11 - # image: dokken/debian-11 - # pre_build_image: true - # privileged: true - # cgroup_parent: docker.slice - # command: /lib/systemd/systemd - # - name: fedora-37 - # image: dokken/fedora-37 - # pre_build_image: true - # privileged: true - # cgroup_parent: docker.slice - # command: /lib/systemd/systemd - # - name: fedora-38 - # image: dokken/fedora-38 - # pre_build_image: true - # privileged: true - # cgroup_parent: docker.slice - # command: /lib/systemd/systemd - # - name: ubuntu-20.04 - # image: dokken/ubuntu-20.04 - # pre_build_image: true - # privileged: true - # cgroup_parent: docker.slice - # command: /lib/systemd/systemd + - name: almalinux-8 + image: dokken/almalinux-8 + pre_build_image: true + privileged: true + cgroup_parent: docker.slice + command: /lib/systemd/systemd + - name: almalinux-9 + image: dokken/almalinux-9 + pre_build_image: true + privileged: true + cgroup_parent: docker.slice + command: /lib/systemd/systemd + - name: centos-7 + image: dokken/centos-7 + pre_build_image: true + privileged: true + cgroup_parent: docker.slice + command: /usr/lib/systemd/systemd + - name: centos-stream-8 + image: dokken/centos-stream-8 + pre_build_image: true + privileged: true + cgroup_parent: docker.slice + command: /lib/systemd/systemd + - name: centos-stream-9 + image: dokken/centos-stream-9 + pre_build_image: true + privileged: true + cgroup_parent: docker.slice + command: /lib/systemd/systemd + - name: debian-10 + image: dokken/debian-10 + pre_build_image: true + privileged: true + cgroup_parent: docker.slice + command: /lib/systemd/systemd + - name: debian-11 + image: dokken/debian-11 + pre_build_image: true + privileged: true + cgroup_parent: docker.slice + command: /lib/systemd/systemd + - name: fedora-37 + image: dokken/fedora-37 + pre_build_image: true + privileged: true + cgroup_parent: docker.slice + command: /lib/systemd/systemd + - name: fedora-38 + image: dokken/fedora-38 + pre_build_image: true + privileged: true + cgroup_parent: docker.slice + command: /lib/systemd/systemd + - name: ubuntu-20.04 + image: dokken/ubuntu-20.04 + pre_build_image: true + privileged: true + cgroup_parent: docker.slice + command: /lib/systemd/systemd - name: ubuntu-22.04 image: dokken/ubuntu-22.04 pre_build_image: true diff --git a/roles/ceems_api_server/templates/ceems_api_server.service.j2 b/roles/ceems_api_server/templates/ceems_api_server.service.j2 index 8d96cbb..29d48b2 100644 --- a/roles/ceems_api_server/templates/ceems_api_server.service.j2 +++ b/roles/ceems_api_server/templates/ceems_api_server.service.j2 @@ -1,7 +1,7 @@ {{ ansible_managed | comment }} [Unit] -Description=Batch Job Stats API Server +Description=CEEMS API Server After=network-online.target [Service] diff --git a/roles/ceems_exporter/templates/ceems_exporter.service.j2 b/roles/ceems_exporter/templates/ceems_exporter.service.j2 index 4e6723f..4e82947 100644 --- a/roles/ceems_exporter/templates/ceems_exporter.service.j2 +++ b/roles/ceems_exporter/templates/ceems_exporter.service.j2 @@ -1,7 +1,7 @@ {{ ansible_managed | comment }} [Unit] -Description=Prometheus Batch Job Exporter +Description=Prometheus CEEMS Exporter After=network-online.target [Service] diff --git a/roles/ceems_lb/templates/ceems_lb.service.j2 b/roles/ceems_lb/templates/ceems_lb.service.j2 index ef2f791..4427439 100644 --- a/roles/ceems_lb/templates/ceems_lb.service.j2 +++ b/roles/ceems_lb/templates/ceems_lb.service.j2 @@ -1,7 +1,7 @@ {{ ansible_managed | comment }} [Unit] -Description=Batch Job Stats API Server +Description=CEEMS load balancer After=network-online.target [Service] From d4477f60f7b69aa61e439990427057512acaf4e8 Mon Sep 17 00:00:00 2001 From: Mahendra Paipuri Date: Sat, 24 Feb 2024 15:21:55 +0100 Subject: [PATCH 07/10] Correct dcgm version Signed-off-by: Mahendra Paipuri --- roles/nvidia_dcgm_exporter/defaults/main.yml | 2 +- roles/nvidia_dcgm_exporter/tasks/install.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/roles/nvidia_dcgm_exporter/defaults/main.yml b/roles/nvidia_dcgm_exporter/defaults/main.yml index 565c940..c42339a 100644 --- a/roles/nvidia_dcgm_exporter/defaults/main.yml +++ b/roles/nvidia_dcgm_exporter/defaults/main.yml @@ -1,5 +1,5 @@ --- -dcgm_exporter_version: 3.3.0-3.3.1 +dcgm_exporter_version: 3.3.3-3.3.1 golang_version: 1.21.5 dcgm_exporter_binary_local_dir: "" diff --git a/roles/nvidia_dcgm_exporter/tasks/install.yml b/roles/nvidia_dcgm_exporter/tasks/install.yml index 5f5b34f..ceb7842 100644 --- a/roles/nvidia_dcgm_exporter/tasks/install.yml +++ b/roles/nvidia_dcgm_exporter/tasks/install.yml @@ -18,6 +18,7 @@ when: dcgm_exporter_system_user != "root" - name: Get binary + run_once: true when: - dcgm_exporter_binary_local_dir | length == 0 - not dcgm_exporter_skip_install From 35ec3177256185dae6500e8d2acdddafa7e506a4 Mon Sep 17 00:00:00 2001 From: Mahendra Paipuri Date: Sat, 24 Feb 2024 15:22:16 +0100 Subject: [PATCH 08/10] Fix failing pytest Signed-off-by: Mahendra Paipuri --- .../molecule/alternative/tests/test_alternative.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/roles/ceems_exporter/molecule/alternative/tests/test_alternative.py b/roles/ceems_exporter/molecule/alternative/tests/test_alternative.py index 4614f40..6a6ea2d 100644 --- a/roles/ceems_exporter/molecule/alternative/tests/test_alternative.py +++ b/roles/ceems_exporter/molecule/alternative/tests/test_alternative.py @@ -10,10 +10,10 @@ def test_directories(host): - dirs = [] + dirs = ["/etc/ceems_exporter/"] for dir in dirs: d = host.file(dir) - assert not d.exists + assert d.exists def test_service(host): @@ -33,8 +33,11 @@ def test_systemd_properties(host): s = host.service("ceems_exporter") p = s.systemd_properties assert p.get("ProtectHome") == "yes" - assert p.get("AmbientCapabilities") == "cap_setgid cap_setuid" assert p.get("Environment") == "EMAPS_API_TOKEN=foo" + # Seems like this test will fail on centos 7 + if host.system_info.distribution != "centos" and host.system_info.release != "7": + assert p.get("AmbientCapabilities") == "cap_setgid cap_setuid" + assert p.get("CapabilityBoundingSet") == "cap_setgid cap_setuid" @pytest.mark.parametrize("sockets", [ From 41325741767d284929fa5c5ab1964b006a50892f Mon Sep 17 00:00:00 2001 From: Mahendra Paipuri Date: Sat, 24 Feb 2024 15:55:53 +0100 Subject: [PATCH 09/10] Set go on PATH for compiling dcgm-exporter Signed-off-by: Mahendra Paipuri --- roles/nvidia_dcgm_exporter/tasks/install.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/roles/nvidia_dcgm_exporter/tasks/install.yml b/roles/nvidia_dcgm_exporter/tasks/install.yml index ceb7842..c0d4dd6 100644 --- a/roles/nvidia_dcgm_exporter/tasks/install.yml +++ b/roles/nvidia_dcgm_exporter/tasks/install.yml @@ -43,7 +43,7 @@ ansible.builtin.unarchive: src: /tmp/golang-{{ golang_version }}.linux-{{ go_arch }}.tar.gz dest: /tmp - creates: /tmp/golang-{{ golang_version }}.linux-{{ go_arch }}/go + creates: /tmp/go delegate_to: localhost check_mode: false @@ -62,6 +62,9 @@ chdir: /tmp/dcgm_exporter target: binary delegate_to: localhost + environment: + PATH: "/tmp/go/bin:{{ ansible_env.PATH }}" + GOPATH: "/tmp/gopath" - name: Propagate dcgm_exporter binaries ansible.builtin.copy: From d6e7e2ffecf84fbb95866492794132c940a69c70 Mon Sep 17 00:00:00 2001 From: Mahendra Paipuri Date: Sat, 24 Feb 2024 18:09:59 +0100 Subject: [PATCH 10/10] Fix more failing tests Signed-off-by: Mahendra Paipuri --- .../alternative/tests/test_alternative.py | 38 ++++----- .../molecule/default/tests/test_default.py | 81 ++++++++----------- .../molecule/latest/tests/test_latest.py | 35 +++----- roles/nvidia_dcgm_exporter/tasks/install.yml | 5 +- 4 files changed, 66 insertions(+), 93 deletions(-) diff --git a/roles/nvidia_dcgm_exporter/molecule/alternative/tests/test_alternative.py b/roles/nvidia_dcgm_exporter/molecule/alternative/tests/test_alternative.py index d05ff71..e3137c0 100644 --- a/roles/nvidia_dcgm_exporter/molecule/alternative/tests/test_alternative.py +++ b/roles/nvidia_dcgm_exporter/molecule/alternative/tests/test_alternative.py @@ -3,29 +3,31 @@ import os import testinfra.utils.ansible_runner +import pytest testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') -def test_directories(host): - dirs = [] - for dir in dirs: - d = host.file(dir) - assert not d.exists - - -# def test_service(host): -# s = host.service("dcgm_exporter") -# try: -# assert s.is_running -# except AssertionError: -# # Capture service logs -# journal_output = host.run('journalctl -u dcgm_exporter --since "1 hour ago"') -# print("\n==== journalctl -u dcgm_exporter Output ====\n") -# print(journal_output) -# print("\n============================================\n") -# raise # Re-raise the original assertion error +@pytest.mark.parametrize("dir", [ + "/etc/dcgm_exporter", +]) +def test_directories(host, dir): + d = host.file(dir) + assert d.is_directory + assert d.exists + + +@pytest.mark.parametrize("file", [ + "/etc/systemd/system/dcgm_exporter.service", + "/usr/local/bin/dcgm_exporter", + "/etc/dcgm_exporter/counters.csv", + "/etc/dcgm_exporter/config.yaml", +]) +def test_files(host, file): + f = host.file(file) + assert f.exists + assert f.is_file def test_protecthome_property(host): diff --git a/roles/nvidia_dcgm_exporter/molecule/default/tests/test_default.py b/roles/nvidia_dcgm_exporter/molecule/default/tests/test_default.py index fe3b59e..5469e54 100644 --- a/roles/nvidia_dcgm_exporter/molecule/default/tests/test_default.py +++ b/roles/nvidia_dcgm_exporter/molecule/default/tests/test_default.py @@ -3,46 +3,44 @@ import os import testinfra.utils.ansible_runner +import pytest testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') -def test_directories(host): - dirs = [ - "/etc/dcgm_exporter" - ] - for dir in dirs: - d = host.file(dir) - assert d.is_directory - assert d.exists - - -def test_files(host): - files = [ - "/etc/systemd/system/dcgm_exporter.service", - "/usr/local/bin/dcgm_exporter", - "/etc/dcgm_exporter/counters.csv" - ] - for file in files: - f = host.file(file) - assert f.exists - assert f.is_file - - -def test_permissions_didnt_change(host): - dirs = [ - "/etc", - "/root", - "/usr", - "/var" - ] - for file in dirs: - f = host.file(file) - assert f.exists - assert f.is_directory - assert f.user == "root" - assert f.group == "root" +@pytest.mark.parametrize("dir", [ + "/etc/dcgm_exporter", +]) +def test_directories(host, dir): + d = host.file(dir) + assert d.is_directory + assert d.exists + + +@pytest.mark.parametrize("file", [ + "/etc/systemd/system/dcgm_exporter.service", + "/usr/local/bin/dcgm_exporter", + "/etc/dcgm_exporter/counters.csv" +]) +def test_files(host, file): + f = host.file(file) + assert f.exists + assert f.is_file + + +@pytest.mark.parametrize("dir", [ + "/etc", + "/root", + "/usr", + "/var", +]) +def test_permissions_didnt_change(host, dir): + f = host.file(dir) + assert f.exists + assert f.is_directory + assert f.user == "root" + assert f.group == "root" def test_user(host): @@ -52,19 +50,6 @@ def test_user(host): assert host.user("dcgmexp").home == "/" -# def test_service(host): -# s = host.service("dcgm_exporter") -# try: -# assert s.is_running -# except AssertionError: -# # Capture service logs -# journal_output = host.run('journalctl -u dcgm_exporter --since "1 hour ago"') -# print("\n==== journalctl -u dcgm_exporter Output ====\n") -# print(journal_output) -# print("\n============================================\n") -# raise # Re-raise the original assertion error - - def test_protecthome_property(host): s = host.service("dcgm_exporter") p = s.systemd_properties diff --git a/roles/nvidia_dcgm_exporter/molecule/latest/tests/test_latest.py b/roles/nvidia_dcgm_exporter/molecule/latest/tests/test_latest.py index c638fc1..6a69d8b 100644 --- a/roles/nvidia_dcgm_exporter/molecule/latest/tests/test_latest.py +++ b/roles/nvidia_dcgm_exporter/molecule/latest/tests/test_latest.py @@ -9,6 +9,15 @@ os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') +@pytest.mark.parametrize("dir", [ + "/etc/dcgm_exporter", +]) +def test_directories(host, dir): + d = host.file(dir) + assert d.is_directory + assert d.exists + + @pytest.mark.parametrize("files", [ "/etc/systemd/system/dcgm_exporter.service", "/usr/local/bin/dcgm_exporter" @@ -17,29 +26,3 @@ def test_files(host, files): f = host.file(files) assert f.exists assert f.is_file - - -def test_directories(host): - dirs = [] - for dir in dirs: - d = host.file(dir) - assert d.is_directory - assert d.exists - - -# def test_service(host): -# s = host.service("dcgm_exporter") -# try: -# assert s.is_running -# except AssertionError: -# # Capture service logs -# journal_output = host.run('journalctl -u dcgm_exporter --since "1 hour ago"') -# print("\n==== journalctl -u dcgm_exporter Output ====\n") -# print(journal_output) -# print("\n============================================\n") -# raise # Re-raise the original assertion error - - -# def test_socket(host): -# s = host.socket("tcp://0.0.0.0:9010") -# assert s.is_listening diff --git a/roles/nvidia_dcgm_exporter/tasks/install.yml b/roles/nvidia_dcgm_exporter/tasks/install.yml index c0d4dd6..874e1b5 100644 --- a/roles/nvidia_dcgm_exporter/tasks/install.yml +++ b/roles/nvidia_dcgm_exporter/tasks/install.yml @@ -18,7 +18,6 @@ when: dcgm_exporter_system_user != "root" - name: Get binary - run_once: true when: - dcgm_exporter_binary_local_dir | length == 0 - not dcgm_exporter_skip_install @@ -27,6 +26,7 @@ block: - name: Download golang to local folder become: false + run_once: true ansible.builtin.get_url: url: "{{ _golang_download_url }}" dest: /tmp/golang-{{ golang_version }}.linux-{{ go_arch }}.tar.gz @@ -40,6 +40,7 @@ - name: Unpack golang become: false + run_once: true ansible.builtin.unarchive: src: /tmp/golang-{{ golang_version }}.linux-{{ go_arch }}.tar.gz dest: /tmp @@ -49,6 +50,7 @@ - name: Clone dcgm_exporter repository to local folder become: false + run_once: true ansible.builtin.git: repo: "{{ dcgm_exporter_git_url }}" dest: /tmp/dcgm_exporter @@ -58,6 +60,7 @@ - name: Compile dcgm-exporter binary become: false + run_once: true community.general.make: chdir: /tmp/dcgm_exporter target: binary