From 8e068359bd8e230d6fa59a11ef4080ca44cd6506 Mon Sep 17 00:00:00 2001 From: Evan-Adam <152897682+Evan-Adam@users.noreply.github.com> Date: Thu, 2 May 2024 11:11:03 +0200 Subject: [PATCH] ci(plugins-tests) Use docker to install and test each plugins Co-authored-by: May <110405507+paul-oureib@users.noreply.github.com> REF:CTOR-474 --- .github/actions/test-plugins/action.yml | 28 ++++ .../Dockerfile.packaging-plugins-alma8 | 0 .../Dockerfile.packaging-plugins-alma9 | 0 .../Dockerfile.packaging-plugins-bookworm | 0 .../Dockerfile.packaging-plugins-bullseye | 0 .../Dockerfile.packaging-plugins-centos7 | 0 .../Dockerfile.packaging-plugins-jammy | 0 .../testing/Dockerfile.testing-plugins-alma8 | 68 +++++++++ .../testing/Dockerfile.testing-plugins-alma9 | 67 +++++++++ .../Dockerfile.testing-plugins-bookworm | 48 +++++++ .../Dockerfile.testing-plugins-bullseye | 47 +++++++ .../testing/Dockerfile.testing-plugins-jammy | 45 ++++++ .github/scripts/process-plugins.py | 2 +- .github/scripts/test-all-plugins.py | 133 ++++++++++++++++++ .../docker-builder-packaging-plugins.yml | 6 +- .../docker-builder-testing-plugins.yml | 73 ++++++++++ .github/workflows/plugins.yml | 51 ++++++- .github/workflows/tests-functional.yml | 76 ---------- .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 .../deb.json | 0 .../pkg.json | 0 .../rpm.json | 0 69 files changed, 562 insertions(+), 82 deletions(-) create mode 100644 .github/actions/test-plugins/action.yml rename .github/docker/{ => packaging}/Dockerfile.packaging-plugins-alma8 (100%) rename .github/docker/{ => packaging}/Dockerfile.packaging-plugins-alma9 (100%) rename .github/docker/{ => packaging}/Dockerfile.packaging-plugins-bookworm (100%) rename .github/docker/{ => packaging}/Dockerfile.packaging-plugins-bullseye (100%) rename .github/docker/{ => packaging}/Dockerfile.packaging-plugins-centos7 (100%) rename .github/docker/{ => packaging}/Dockerfile.packaging-plugins-jammy (100%) create mode 100644 .github/docker/testing/Dockerfile.testing-plugins-alma8 create mode 100644 .github/docker/testing/Dockerfile.testing-plugins-alma9 create mode 100644 .github/docker/testing/Dockerfile.testing-plugins-bookworm create mode 100644 .github/docker/testing/Dockerfile.testing-plugins-bullseye create mode 100644 .github/docker/testing/Dockerfile.testing-plugins-jammy create mode 100644 .github/scripts/test-all-plugins.py create mode 100644 .github/workflows/docker-builder-testing-plugins.yml delete mode 100644 .github/workflows/tests-functional.yml rename packaging/{centreon-plugin-Applications-Antivirus-Clamav-Ssh => centreon-plugin-Applications-Clamav-Ssh}/deb.json (100%) rename packaging/{centreon-plugin-Applications-Antivirus-Clamav-Ssh => centreon-plugin-Applications-Clamav-Ssh}/pkg.json (100%) rename packaging/{centreon-plugin-Applications-Antivirus-Clamav-Ssh => centreon-plugin-Applications-Clamav-Ssh}/rpm.json (100%) rename packaging/{centreon-plugin-Applications-Databases-Cassandra-Jmx => centreon-plugin-Applications-Database-Cassandra-Jmx}/deb.json (100%) rename packaging/{centreon-plugin-Applications-Databases-Cassandra-Jmx => centreon-plugin-Applications-Database-Cassandra-Jmx}/pkg.json (100%) rename packaging/{centreon-plugin-Applications-Databases-Cassandra-Jmx => centreon-plugin-Applications-Database-Cassandra-Jmx}/rpm.json (100%) rename packaging/{centreon-plugin-Applications-Databases-Couchdb-Restapi => centreon-plugin-Applications-Database-Couchdb-Restapi}/deb.json (100%) rename packaging/{centreon-plugin-Applications-Databases-Couchdb-Restapi => centreon-plugin-Applications-Database-Couchdb-Restapi}/pkg.json (100%) rename packaging/{centreon-plugin-Applications-Databases-Couchdb-Restapi => centreon-plugin-Applications-Database-Couchdb-Restapi}/rpm.json (100%) rename packaging/{centreon-plugin-Applications-Netbackup-SSH => centreon-plugin-Applications-Netbackup-Ssh}/deb.json (100%) rename packaging/{centreon-plugin-Applications-Netbackup-SSH => centreon-plugin-Applications-Netbackup-Ssh}/pkg.json (100%) rename packaging/{centreon-plugin-Applications-Netbackup-SSH => centreon-plugin-Applications-Netbackup-Ssh}/rpm.json (100%) rename packaging/{centreon-plugin-Applications-Pacemaker-SSH => centreon-plugin-Applications-Pacemaker-Ssh}/deb.json (100%) rename packaging/{centreon-plugin-Applications-Pacemaker-SSH => centreon-plugin-Applications-Pacemaker-Ssh}/pkg.json (100%) rename packaging/{centreon-plugin-Applications-Pacemaker-SSH => centreon-plugin-Applications-Pacemaker-Ssh}/rpm.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-DataFactory-Factory-Api => centreon-plugin-Cloud-Azure-DataFactory-Factories-Api}/deb.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-DataFactory-Factory-Api => centreon-plugin-Cloud-Azure-DataFactory-Factories-Api}/pkg.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-DataFactory-Factory-Api => centreon-plugin-Cloud-Azure-DataFactory-Factories-Api}/rpm.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Database-Mariadb-Api => centreon-plugin-Cloud-Azure-Database-MariaDB-Api}/deb.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Database-Mariadb-Api => centreon-plugin-Cloud-Azure-Database-MariaDB-Api}/pkg.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Database-Mariadb-Api => centreon-plugin-Cloud-Azure-Database-MariaDB-Api}/rpm.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Database-Mysql-Api => centreon-plugin-Cloud-Azure-Database-MySQL-Api}/deb.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Database-Mysql-Api => centreon-plugin-Cloud-Azure-Database-MySQL-Api}/pkg.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Database-Mysql-Api => centreon-plugin-Cloud-Azure-Database-MySQL-Api}/rpm.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Database-SqlManagedInstance => centreon-plugin-Cloud-Azure-Database-SqlManagedInstance-Api}/deb.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Database-SqlManagedInstance => centreon-plugin-Cloud-Azure-Database-SqlManagedInstance-Api}/pkg.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Database-SqlManagedInstance => centreon-plugin-Cloud-Azure-Database-SqlManagedInstance-Api}/rpm.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Devtools-Appconfiguration => centreon-plugin-Cloud-Azure-DevTools-AppConfiguration-Api}/deb.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Devtools-Appconfiguration => centreon-plugin-Cloud-Azure-DevTools-AppConfiguration-Api}/pkg.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Devtools-Appconfiguration => centreon-plugin-Cloud-Azure-DevTools-AppConfiguration-Api}/rpm.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Integration-Eventgrid-Api => centreon-plugin-Cloud-Azure-Integration-EventGrid-Api}/deb.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Integration-Eventgrid-Api => centreon-plugin-Cloud-Azure-Integration-EventGrid-Api}/pkg.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Integration-Eventgrid-Api => centreon-plugin-Cloud-Azure-Integration-EventGrid-Api}/rpm.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Network-TrafficManager => centreon-plugin-Cloud-Azure-Network-TrafficManager-Api}/deb.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Network-TrafficManager => centreon-plugin-Cloud-Azure-Network-TrafficManager-Api}/pkg.json (100%) rename packaging/{centreon-plugin-Cloud-Azure-Network-TrafficManager => centreon-plugin-Cloud-Azure-Network-TrafficManager-Api}/rpm.json (100%) rename packaging/{centreon-plugin-Hardware-Sensors-Rittal-Cmc3-Snmp => centreon-plugin-Hardware-Sensors-Rittal-Cmc-Snmp}/deb.json (100%) rename packaging/{centreon-plugin-Hardware-Sensors-Rittal-Cmc3-Snmp => centreon-plugin-Hardware-Sensors-Rittal-Cmc-Snmp}/pkg.json (100%) rename packaging/{centreon-plugin-Hardware-Sensors-Rittal-Cmc3-Snmp => centreon-plugin-Hardware-Sensors-Rittal-Cmc-Snmp}/rpm.json (100%) rename packaging/{centreon-plugin-Network-Switchs-Dell-Os10-Snmp => centreon-plugin-Network-Dell-Os10-Snmp}/deb.json (100%) rename packaging/{centreon-plugin-Network-Switchs-Dell-Os10-Snmp => centreon-plugin-Network-Dell-Os10-Snmp}/pkg.json (100%) rename packaging/{centreon-plugin-Network-Switchs-Dell-Os10-Snmp => centreon-plugin-Network-Dell-Os10-Snmp}/rpm.json (100%) rename packaging/{centreon-plugin-Network-Switchs-Dell-Xseries-Snmp => centreon-plugin-Network-Dell-Xseries-Snmp}/deb.json (100%) rename packaging/{centreon-plugin-Network-Switchs-Dell-Xseries-Snmp => centreon-plugin-Network-Dell-Xseries-Snmp}/pkg.json (100%) rename packaging/{centreon-plugin-Network-Switchs-Dell-Xseries-Snmp => centreon-plugin-Network-Dell-Xseries-Snmp}/rpm.json (100%) rename packaging/{centreon-plugin-Network-Firewalls-Juniper-Mag-Snmp => centreon-plugin-Network-Juniper-Mag-Snmp}/deb.json (100%) rename packaging/{centreon-plugin-Network-Firewalls-Juniper-Mag-Snmp => centreon-plugin-Network-Juniper-Mag-Snmp}/pkg.json (100%) rename packaging/{centreon-plugin-Network-Firewalls-Juniper-Mag-Snmp => centreon-plugin-Network-Juniper-Mag-Snmp}/rpm.json (100%) rename packaging/{centreon-plugin-Network-Sonus-Sbc-Snmp => centreon-plugin-Network-Sonus-SBC-Snmp}/deb.json (100%) rename packaging/{centreon-plugin-Network-Sonus-Sbc-Snmp => centreon-plugin-Network-Sonus-SBC-Snmp}/pkg.json (100%) rename packaging/{centreon-plugin-Network-Sonus-Sbc-Snmp => centreon-plugin-Network-Sonus-SBC-Snmp}/rpm.json (100%) diff --git a/.github/actions/test-plugins/action.yml b/.github/actions/test-plugins/action.yml new file mode 100644 index 0000000000..84aab55c97 --- /dev/null +++ b/.github/actions/test-plugins/action.yml @@ -0,0 +1,28 @@ +name: "test-plugins" +description: "Test plugin that are passed as parameters" +inputs: + cache-key: + description: "The packaged plugin's cache key" + required: true + plugin-list: + description: "List of plugins to install from the cache" + required: true + package-extension: + description: "Either 'rpm' or 'deb'. Needed to determine the package manager command (dnf or apt-get)." + required: true + +runs: + using: "composite" + steps: + + - name: get the cached plugin + uses: actions/cache/restore@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + with: + path: ./*.${{ inputs.package-extension }} + key: ${{ inputs.cache-key }} + fail-on-cache-miss: true + + - name: Install, test and remove plugin + shell: bash + run: | + python3 .github/scripts/test-all-plugins.py ${{ inputs.package-extension }} ${{ inputs.plugin-list }} diff --git a/.github/docker/Dockerfile.packaging-plugins-alma8 b/.github/docker/packaging/Dockerfile.packaging-plugins-alma8 similarity index 100% rename from .github/docker/Dockerfile.packaging-plugins-alma8 rename to .github/docker/packaging/Dockerfile.packaging-plugins-alma8 diff --git a/.github/docker/Dockerfile.packaging-plugins-alma9 b/.github/docker/packaging/Dockerfile.packaging-plugins-alma9 similarity index 100% rename from .github/docker/Dockerfile.packaging-plugins-alma9 rename to .github/docker/packaging/Dockerfile.packaging-plugins-alma9 diff --git a/.github/docker/Dockerfile.packaging-plugins-bookworm b/.github/docker/packaging/Dockerfile.packaging-plugins-bookworm similarity index 100% rename from .github/docker/Dockerfile.packaging-plugins-bookworm rename to .github/docker/packaging/Dockerfile.packaging-plugins-bookworm diff --git a/.github/docker/Dockerfile.packaging-plugins-bullseye b/.github/docker/packaging/Dockerfile.packaging-plugins-bullseye similarity index 100% rename from .github/docker/Dockerfile.packaging-plugins-bullseye rename to .github/docker/packaging/Dockerfile.packaging-plugins-bullseye diff --git a/.github/docker/Dockerfile.packaging-plugins-centos7 b/.github/docker/packaging/Dockerfile.packaging-plugins-centos7 similarity index 100% rename from .github/docker/Dockerfile.packaging-plugins-centos7 rename to .github/docker/packaging/Dockerfile.packaging-plugins-centos7 diff --git a/.github/docker/Dockerfile.packaging-plugins-jammy b/.github/docker/packaging/Dockerfile.packaging-plugins-jammy similarity index 100% rename from .github/docker/Dockerfile.packaging-plugins-jammy rename to .github/docker/packaging/Dockerfile.packaging-plugins-jammy diff --git a/.github/docker/testing/Dockerfile.testing-plugins-alma8 b/.github/docker/testing/Dockerfile.testing-plugins-alma8 new file mode 100644 index 0000000000..47c2ffdba0 --- /dev/null +++ b/.github/docker/testing/Dockerfile.testing-plugins-alma8 @@ -0,0 +1,68 @@ +ARG REGISTRY_URL + +FROM ${REGISTRY_URL}/almalinux:8 + +RUN bash -e <> /etc/yum.repos.d/centreon-plugins.repo + +mkdir -p /var/lib/centreon/centplugins/ +chmod 777 /var/lib/centreon/centplugins/ + +dnf clean all + +EOF diff --git a/.github/docker/testing/Dockerfile.testing-plugins-alma9 b/.github/docker/testing/Dockerfile.testing-plugins-alma9 new file mode 100644 index 0000000000..6761366c85 --- /dev/null +++ b/.github/docker/testing/Dockerfile.testing-plugins-alma9 @@ -0,0 +1,67 @@ +ARG REGISTRY_URL + +FROM ${REGISTRY_URL}/almalinux:9 + +RUN bash -e <> /etc/yum.repos.d/centreon-plugins.repo + +mkdir -p /var/lib/centreon/centplugins/ +chmod 777 /var/lib/centreon/centplugins/ + +dnf clean all + +EOF diff --git a/.github/docker/testing/Dockerfile.testing-plugins-bookworm b/.github/docker/testing/Dockerfile.testing-plugins-bookworm new file mode 100644 index 0000000000..2ff56f473d --- /dev/null +++ b/.github/docker/testing/Dockerfile.testing-plugins-bookworm @@ -0,0 +1,48 @@ +ARG REGISTRY_URL + +FROM ${REGISTRY_URL}/debian:bookworm + +ENV DEBIAN_FRONTEND noninteractive + +# fix locale +RUN bash -e < /dev/null 2>&1 +apt-get update + +mkdir -p /var/lib/centreon/centplugins/ +chmod 777 /var/lib/centreon/centplugins/ + +apt-get clean + +EOF diff --git a/.github/docker/testing/Dockerfile.testing-plugins-bullseye b/.github/docker/testing/Dockerfile.testing-plugins-bullseye new file mode 100644 index 0000000000..72c2b2ec6a --- /dev/null +++ b/.github/docker/testing/Dockerfile.testing-plugins-bullseye @@ -0,0 +1,47 @@ +ARG REGISTRY_URL + +FROM ${REGISTRY_URL}/debian:bullseye + +ENV DEBIAN_FRONTEND noninteractive + +# fix locale +RUN bash -e < /dev/null 2>&1 +apt-get update + +mkdir -p /var/lib/centreon/centplugins/ +chmod 777 /var/lib/centreon/centplugins/ + +apt-get clean + + +EOF diff --git a/.github/docker/testing/Dockerfile.testing-plugins-jammy b/.github/docker/testing/Dockerfile.testing-plugins-jammy new file mode 100644 index 0000000000..9df67d9d98 --- /dev/null +++ b/.github/docker/testing/Dockerfile.testing-plugins-jammy @@ -0,0 +1,45 @@ +ARG REGISTRY_URL + +FROM ${REGISTRY_URL}/ubuntu:jammy + +ENV DEBIAN_FRONTEND noninteractive + +# fix locale +RUN bash -e < /dev/null 2>&1 +apt-get update + +mkdir -p /var/lib/centreon/centplugins/ +chmod 777 /var/lib/centreon/centplugins/ + +apt-get clean + +EOF diff --git a/.github/scripts/process-plugins.py b/.github/scripts/process-plugins.py index f4c80badbd..336ccd4353 100644 --- a/.github/scripts/process-plugins.py +++ b/.github/scripts/process-plugins.py @@ -43,7 +43,7 @@ packaging_path = re.search('.*\/(centreon-plugin-.*)\/pkg.json', filepath).group(1) if not packaging_path == packaging["pkg_name"]: - packaging_path = packaging_path + "=>" + packaging["pkg_name"] + packaging_path = packaging["pkg_name"] directory_path = re.search('^(.+)\/pkg.json', filepath).group(1) diff --git a/.github/scripts/test-all-plugins.py b/.github/scripts/test-all-plugins.py new file mode 100644 index 0000000000..176e7eaba0 --- /dev/null +++ b/.github/scripts/test-all-plugins.py @@ -0,0 +1,133 @@ +#!/usr/bin/env python3 +import subprocess +import sys +import os +import json + + +def get_tests_folders(plugin_name): + folder_list = [] + pkg_file = open("./packaging/" + plugin_name + "/pkg.json") + packaging = json.load(pkg_file) + for file in packaging["files"]: # loop on "files" array in pkg.json file. + if file.endswith("/") and os.path.exists("tests/robot/" + file): # if this is a directory and there is test for it. + folder_list.append("tests/robot/" + file) + return folder_list + + +def get_plugin_full_path(plugin_name): + pkg_file = open("./packaging/" + plugin_name + "/pkg.json") + packaging = json.load(pkg_file) + return "/usr/lib/centreon/plugins/" + packaging["plugin_name"] + + +def test_plugin(plugin_name): + folders_list = get_tests_folders(plugin_name) + print(f"{plugin_name} folders_list : {folders_list}") + if len(folders_list) == 0: + return 0 # no tests present at the moment, but we still have tested the plugin can be installed. + robot_results = subprocess.run("robot -v ''CENTREON_PLUGINS:" + get_plugin_full_path(plugin_name) + " " + " ".join(folders_list), + shell=True, check=False) + return robot_results.returncode + + +def try_command(cmd, error): + return_obj = subprocess.run(cmd, shell=True, check=False) + print(return_obj) + if return_obj.returncode != 0: + print(error) + sys.exit(1) + + +def launch_snmp_sim(): + subprocess.run("useradd snmp", shell=True, check=False) + # we don't want to quit if this fail because it often means the user already exist. + + # this folder seem needed to launch snmp plugins. I didn't reproduce in my env, but without it, + # the first snmp plugin launched by robot prepend the message "Created directory: /var/lib/snmp/cert_indexes". + try_command(cmd="mkdir -p /var/lib/snmp/cert_indexes/", error="can't create /var/lib/snmp/cert_indexes/ dir") + try_command(cmd="chown snmp:snmp -R /var/lib/snmp/cert_indexes/", error="can't set cert_indexes folder permissions") + + snmpsim_cmd = "snmpsim-command-responder --logging-method=null --agent-udpv4-endpoint=127.0.0.1:2024 --process-user=snmp --process-group=snmp --data-dir='./tests/robot' &" + try_command(cmd=snmpsim_cmd, error="can't launch snmp sim daemon.") + + +def install_plugin(plugin, archi): + with open('/var/log/robot-plugins-installation-tests.log', "a") as outfile: + if archi == "deb": + outfile.write("apt install -o 'Binary::apt::APT::Keep-Downloaded-Packages=1;' -y ./" + plugin.lower() + "*.deb\n") + output_status = (subprocess.run( + "apt install -o 'Binary::apt::APT::Keep-Downloaded-Packages=1;' -y ./" + plugin.lower() + "*.deb", + shell=True, check=False, stderr=subprocess.STDOUT, stdout=outfile)).returncode + elif archi == "rpm": + outfile.write("dnf install -y ./" + plugin + "*.rpm\n") + output_status = (subprocess.run("dnf install -y ./" + plugin + "*.rpm", shell=True, check=False, + stderr=subprocess.STDOUT, stdout=outfile)).returncode + else: + print(f"Unknown architecture, expected deb or rpm, got {archi}. Exiting.") + exit(1) + return output_status + + +def remove_plugin(plugin, archi): + with open('/var/log/robot-plugins-installation-tests.log', "a") as outfile: + if archi == "deb": + outfile.write("apt -o 'Binary::apt::APT::Keep-Downloaded-Packages=1;' autoremove -y " + plugin.lower() + "\n") + output_status = (subprocess.run( + "apt -o 'Binary::apt::APT::Keep-Downloaded-Packages=1;' autoremove -y " + plugin.lower(), + shell=True, check=False, stderr=subprocess.STDOUT, stdout=outfile)).returncode + # -o 'Binary::apt::APT::Keep-Downloaded-Packages=1;' is an option to force apt to keep the package in + # /var/cache/apt/archives, so it do not re download them for every installation. + # 'autoremove', contrary to 'remove' all dependancy while removing the original package. + + elif archi == "rpm": + outfile.write("dnf remove -y " + plugin + "\n") + output_status = (subprocess.run("dnf remove -y " + plugin, shell=True, check=False, + stderr=subprocess.STDOUT, stdout=outfile)).returncode + else: + print(f"Unknown architecture, expected deb or rpm, got {archi}. Exiting.") + exit(1) + return output_status + + +if __name__ == '__main__': + print("starting program") + if len(sys.argv) < 2: + print("please provide architecture (deb or rpm) and list of plugin to test as arguments (one plugin name per " + "argument, separated by space)") + sys.exit(1) + + launch_snmp_sim() + archi = sys.argv.pop(1) # expected either deb or rpm. + script_name = sys.argv.pop(0) + + error_install = 0 + error_tests = 0 + error_purge = 0 + nb_plugins = 0 + list_plugin_error = [] + for plugin in sys.argv: + print("plugin : ", plugin) + nb_plugins += 1 + tmp = install_plugin(plugin, archi) + if tmp > 0: + list_plugin_error.append(plugin) + error_install += tmp + tmp = test_plugin(plugin) + if tmp > 0: + list_plugin_error.append(plugin) + error_tests += tmp + tmp = remove_plugin(plugin, archi) + if tmp > 0: + list_plugin_error.append(plugin) + error_purge += tmp + + print(f"{nb_plugins} plugins tested.\n there was {error_install} installation error, {error_tests} test " + f"errors, and {error_purge} removal error list of error : {list_plugin_error}",) + + if error_install != 0 or error_tests != 0 or error_purge != 0: + exit(1) + exit(0) + # the snmpsim daemon is still runing when we exit, as this script is mainly run in a docker on CI, it will be + # cleared up eventually. + # to clear it up manually, use ps -ax | grep snmpsim-command-respond | cut -dp -f1 | sudo xargs kill diff --git a/.github/workflows/docker-builder-packaging-plugins.yml b/.github/workflows/docker-builder-packaging-plugins.yml index f55989d4b5..99cdb0da5e 100644 --- a/.github/workflows/docker-builder-packaging-plugins.yml +++ b/.github/workflows/docker-builder-packaging-plugins.yml @@ -11,11 +11,11 @@ on: - develop paths: - ".github/workflows/docker-builder-packaging-plugins.yml" - - ".github/docker/*" + - ".github/docker/packaging/*" pull_request: paths: - ".github/workflows/docker-builder-packaging-plugins.yml" - - ".github/docker/*" + - ".github/docker/packaging/*" jobs: create-and-push-docker: @@ -68,7 +68,7 @@ jobs: - uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0 with: - file: .github/docker/Dockerfile.${{ matrix.dockerfile }} + file: .github/docker/packaging/Dockerfile.${{ matrix.dockerfile }} context: . build-args: "REGISTRY_URL=${{ vars.DOCKER_PROXY_REGISTRY_URL }}" pull: true diff --git a/.github/workflows/docker-builder-testing-plugins.yml b/.github/workflows/docker-builder-testing-plugins.yml new file mode 100644 index 0000000000..9ffc0aaf87 --- /dev/null +++ b/.github/workflows/docker-builder-testing-plugins.yml @@ -0,0 +1,73 @@ +name: docker-builder-testing-plugins + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +on: + workflow_dispatch: + push: + branches: + - develop + paths: + - ".github/workflows/docker-builder-testing-plugins.yml" + - ".github/docker/testing/*" + pull_request: + paths: + - ".github/workflows/docker-builder-testing-plugins.yml" + - ".github/docker/testing/*" + +jobs: + create-and-push-docker: + strategy: + matrix: + include: + - runner: ubuntu-22.04 + dockerfile: alma8 + image: alma8 + - runner: ubuntu-22.04 + dockerfile: alma9 + image: alma9 + - runner: ubuntu-22.04 + dockerfile: bullseye + image: bullseye + - runner: ["self-hosted", "collect-arm64"] + dockerfile: bullseye + image: bullseye-arm64 + - runner: ubuntu-22.04 + dockerfile: bookworm + image: bookworm + - runner: ubuntu-22.04 + dockerfile: jammy + image: jammy + + runs-on: ${{ matrix.runner }} + + steps: + - name: Checkout sources + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Login to Registry + uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + with: + registry: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }} + username: ${{ secrets.DOCKER_REGISTRY_ID }} + password: ${{ secrets.DOCKER_REGISTRY_PASSWD }} + + - name: Login to proxy registry + uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 + with: + registry: ${{ vars.DOCKER_PROXY_REGISTRY_URL }} + username: ${{ secrets.DOCKER_REGISTRY_ID }} + password: ${{ secrets.DOCKER_REGISTRY_PASSWD }} + + - uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0 + + - uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5.1.0 + with: + file: .github/docker/testing/Dockerfile.testing-plugins-${{ matrix.dockerfile }} + context: . + build-args: "REGISTRY_URL=${{ vars.DOCKER_PROXY_REGISTRY_URL }}" + pull: true + push: true + tags: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/testing-plugins-${{ matrix.image }}:latest diff --git a/.github/workflows/plugins.yml b/.github/workflows/plugins.yml index c5d579dfd6..9a788e960b 100644 --- a/.github/workflows/plugins.yml +++ b/.github/workflows/plugins.yml @@ -76,10 +76,10 @@ jobs: PLUGINS="$(python3 .github/scripts/process-plugins.py '${{ steps.filter.outputs.common == 'true' }}')" echo "plugins=$(echo $PLUGINS)" >> $GITHUB_OUTPUT - if [ "$PLUGINS" == '' ]; then echo "::notice::There are no modifications to the plugins packages" fi + shell: bash fatpacker: @@ -243,8 +243,55 @@ jobs: rpm_gpg_signing_passphrase: ${{ secrets.RPM_GPG_SIGNING_PASSPHRASE }} stability: ${{ needs.get-environment.outputs.stability }} + test-plugins: + needs: [get-environment, get-plugins, package] + strategy: + fail-fast: false + matrix: + distrib: [el8, el9, jammy, bullseye, bookworm] + include: + - package_extension: rpm + image: testing-plugins-alma8 + distrib: el8 + - package_extension: rpm + image: testing-plugins-alma9 + distrib: el9 + - package_extension: deb + image: testing-plugins-bullseye + distrib: bullseye + - package_extension: deb + image: testing-plugins-bookworm + distrib: bookworm + - package_extension: deb + image: testing-plugins-jammy + distrib: jammy + + runs-on: ubuntu-22.04 + container: + image: ${{ vars.DOCKER_INTERNAL_REGISTRY_URL }}/${{ matrix.image }} + credentials: + username: ${{ secrets.DOCKER_REGISTRY_ID }} + password: ${{ secrets.DOCKER_REGISTRY_PASSWD }} + steps: + - name: Checkout sources + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - uses: ./.github/actions/test-plugins + with: + cache-key: ${{ github.sha }}-${{ github.run_id }}-${{ matrix.package_extension }}-${{ matrix.distrib }} + package-extension: ${{ matrix.package_extension }} + plugin-list: ${{ needs.get-plugins.outputs.plugins }} + + - name: Upload apt/dnf logs as artifacts if tests failed + if: failure() + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + with: + name: plugin-installation-${{ matrix.distrib }} + path: /var/log/robot-plugins-installation-tests.log + retention-days: 1 + deliver: - needs: [get-environment, package] + needs: [get-environment, package, test-plugins] if: ${{ contains(fromJson('["stable", "testing", "unstable"]'), needs.get-environment.outputs.stability) }} uses: ./.github/workflows/plugin-delivery.yml with: diff --git a/.github/workflows/tests-functional.yml b/.github/workflows/tests-functional.yml deleted file mode 100644 index b604dc57c0..0000000000 --- a/.github/workflows/tests-functional.yml +++ /dev/null @@ -1,76 +0,0 @@ -name: functional-tests - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -on: - workflow_dispatch: - pull_request: - paths: - - '.github/workflows/tests-functional.yml' - - 'src/**' - - 'tests/functional/**' - - 'tests/resources/mockoon/**' - - 'tests/resources/snmp/**' - -jobs: - functional-tests-with-robot: - runs-on: ubuntu-22.04 - - steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - - name: Install libs - run: | - sudo apt update - sudo apt-get install -y libcurl4-openssl-dev - sudo apt-get install -qqy snmpsim - - - name: Install Node.js - uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 - with: - node-version: 21 - - - name: Install Mockoon CLI - run: npm install -g -D @mockoon/cli@7.0.0 - - - name: Install perl dependencies - uses: shogo82148/actions-setup-perl@28eae78d12c2bba1163aec45d123f6d9228bc307 # v1.29.0 - with: - perl-version: '5.34' - install-modules-with: cpm - install-modules: | - Alien::SNMP - DateTime - Net::Curl::Easy - Paws - Net::SNMP - URI::Encode - XML::LibXML - DBI - DBD::mysql - POSIX - Time::HiRes - JSON::XS - - - name: Install Python - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 - with: - python-version: '3.11' - - - name: Install Robot Framework - run: | - pip3.11 install robotframework - pip3.11 install RobotFramework-Examples - shell: bash - - - name: Run Robot Framework tests - run: | - sudo mkdir -p /var/lib/centreon/centplugins/ - sudo chmod 777 /var/lib/centreon/centplugins/ - sudo useradd snmp - sudo mkdir -p /usr/snmpsim/data - sudo cp -r tests/robot/* /usr/snmpsim/data/ - snmpsimd --logging-method=null --agent-udpv4-endpoint=127.0.0.1:2024 --process-user=snmp --process-group=snmp & - robot tests/robot diff --git a/packaging/centreon-plugin-Applications-Antivirus-Clamav-Ssh/deb.json b/packaging/centreon-plugin-Applications-Clamav-Ssh/deb.json similarity index 100% rename from packaging/centreon-plugin-Applications-Antivirus-Clamav-Ssh/deb.json rename to packaging/centreon-plugin-Applications-Clamav-Ssh/deb.json diff --git a/packaging/centreon-plugin-Applications-Antivirus-Clamav-Ssh/pkg.json b/packaging/centreon-plugin-Applications-Clamav-Ssh/pkg.json similarity index 100% rename from packaging/centreon-plugin-Applications-Antivirus-Clamav-Ssh/pkg.json rename to packaging/centreon-plugin-Applications-Clamav-Ssh/pkg.json diff --git a/packaging/centreon-plugin-Applications-Antivirus-Clamav-Ssh/rpm.json b/packaging/centreon-plugin-Applications-Clamav-Ssh/rpm.json similarity index 100% rename from packaging/centreon-plugin-Applications-Antivirus-Clamav-Ssh/rpm.json rename to packaging/centreon-plugin-Applications-Clamav-Ssh/rpm.json diff --git a/packaging/centreon-plugin-Applications-Databases-Cassandra-Jmx/deb.json b/packaging/centreon-plugin-Applications-Database-Cassandra-Jmx/deb.json similarity index 100% rename from packaging/centreon-plugin-Applications-Databases-Cassandra-Jmx/deb.json rename to packaging/centreon-plugin-Applications-Database-Cassandra-Jmx/deb.json diff --git a/packaging/centreon-plugin-Applications-Databases-Cassandra-Jmx/pkg.json b/packaging/centreon-plugin-Applications-Database-Cassandra-Jmx/pkg.json similarity index 100% rename from packaging/centreon-plugin-Applications-Databases-Cassandra-Jmx/pkg.json rename to packaging/centreon-plugin-Applications-Database-Cassandra-Jmx/pkg.json diff --git a/packaging/centreon-plugin-Applications-Databases-Cassandra-Jmx/rpm.json b/packaging/centreon-plugin-Applications-Database-Cassandra-Jmx/rpm.json similarity index 100% rename from packaging/centreon-plugin-Applications-Databases-Cassandra-Jmx/rpm.json rename to packaging/centreon-plugin-Applications-Database-Cassandra-Jmx/rpm.json diff --git a/packaging/centreon-plugin-Applications-Databases-Couchdb-Restapi/deb.json b/packaging/centreon-plugin-Applications-Database-Couchdb-Restapi/deb.json similarity index 100% rename from packaging/centreon-plugin-Applications-Databases-Couchdb-Restapi/deb.json rename to packaging/centreon-plugin-Applications-Database-Couchdb-Restapi/deb.json diff --git a/packaging/centreon-plugin-Applications-Databases-Couchdb-Restapi/pkg.json b/packaging/centreon-plugin-Applications-Database-Couchdb-Restapi/pkg.json similarity index 100% rename from packaging/centreon-plugin-Applications-Databases-Couchdb-Restapi/pkg.json rename to packaging/centreon-plugin-Applications-Database-Couchdb-Restapi/pkg.json diff --git a/packaging/centreon-plugin-Applications-Databases-Couchdb-Restapi/rpm.json b/packaging/centreon-plugin-Applications-Database-Couchdb-Restapi/rpm.json similarity index 100% rename from packaging/centreon-plugin-Applications-Databases-Couchdb-Restapi/rpm.json rename to packaging/centreon-plugin-Applications-Database-Couchdb-Restapi/rpm.json diff --git a/packaging/centreon-plugin-Applications-Netbackup-SSH/deb.json b/packaging/centreon-plugin-Applications-Netbackup-Ssh/deb.json similarity index 100% rename from packaging/centreon-plugin-Applications-Netbackup-SSH/deb.json rename to packaging/centreon-plugin-Applications-Netbackup-Ssh/deb.json diff --git a/packaging/centreon-plugin-Applications-Netbackup-SSH/pkg.json b/packaging/centreon-plugin-Applications-Netbackup-Ssh/pkg.json similarity index 100% rename from packaging/centreon-plugin-Applications-Netbackup-SSH/pkg.json rename to packaging/centreon-plugin-Applications-Netbackup-Ssh/pkg.json diff --git a/packaging/centreon-plugin-Applications-Netbackup-SSH/rpm.json b/packaging/centreon-plugin-Applications-Netbackup-Ssh/rpm.json similarity index 100% rename from packaging/centreon-plugin-Applications-Netbackup-SSH/rpm.json rename to packaging/centreon-plugin-Applications-Netbackup-Ssh/rpm.json diff --git a/packaging/centreon-plugin-Applications-Pacemaker-SSH/deb.json b/packaging/centreon-plugin-Applications-Pacemaker-Ssh/deb.json similarity index 100% rename from packaging/centreon-plugin-Applications-Pacemaker-SSH/deb.json rename to packaging/centreon-plugin-Applications-Pacemaker-Ssh/deb.json diff --git a/packaging/centreon-plugin-Applications-Pacemaker-SSH/pkg.json b/packaging/centreon-plugin-Applications-Pacemaker-Ssh/pkg.json similarity index 100% rename from packaging/centreon-plugin-Applications-Pacemaker-SSH/pkg.json rename to packaging/centreon-plugin-Applications-Pacemaker-Ssh/pkg.json diff --git a/packaging/centreon-plugin-Applications-Pacemaker-SSH/rpm.json b/packaging/centreon-plugin-Applications-Pacemaker-Ssh/rpm.json similarity index 100% rename from packaging/centreon-plugin-Applications-Pacemaker-SSH/rpm.json rename to packaging/centreon-plugin-Applications-Pacemaker-Ssh/rpm.json diff --git a/packaging/centreon-plugin-Cloud-Azure-DataFactory-Factory-Api/deb.json b/packaging/centreon-plugin-Cloud-Azure-DataFactory-Factories-Api/deb.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-DataFactory-Factory-Api/deb.json rename to packaging/centreon-plugin-Cloud-Azure-DataFactory-Factories-Api/deb.json diff --git a/packaging/centreon-plugin-Cloud-Azure-DataFactory-Factory-Api/pkg.json b/packaging/centreon-plugin-Cloud-Azure-DataFactory-Factories-Api/pkg.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-DataFactory-Factory-Api/pkg.json rename to packaging/centreon-plugin-Cloud-Azure-DataFactory-Factories-Api/pkg.json diff --git a/packaging/centreon-plugin-Cloud-Azure-DataFactory-Factory-Api/rpm.json b/packaging/centreon-plugin-Cloud-Azure-DataFactory-Factories-Api/rpm.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-DataFactory-Factory-Api/rpm.json rename to packaging/centreon-plugin-Cloud-Azure-DataFactory-Factories-Api/rpm.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Database-Mariadb-Api/deb.json b/packaging/centreon-plugin-Cloud-Azure-Database-MariaDB-Api/deb.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Database-Mariadb-Api/deb.json rename to packaging/centreon-plugin-Cloud-Azure-Database-MariaDB-Api/deb.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Database-Mariadb-Api/pkg.json b/packaging/centreon-plugin-Cloud-Azure-Database-MariaDB-Api/pkg.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Database-Mariadb-Api/pkg.json rename to packaging/centreon-plugin-Cloud-Azure-Database-MariaDB-Api/pkg.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Database-Mariadb-Api/rpm.json b/packaging/centreon-plugin-Cloud-Azure-Database-MariaDB-Api/rpm.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Database-Mariadb-Api/rpm.json rename to packaging/centreon-plugin-Cloud-Azure-Database-MariaDB-Api/rpm.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Database-Mysql-Api/deb.json b/packaging/centreon-plugin-Cloud-Azure-Database-MySQL-Api/deb.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Database-Mysql-Api/deb.json rename to packaging/centreon-plugin-Cloud-Azure-Database-MySQL-Api/deb.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Database-Mysql-Api/pkg.json b/packaging/centreon-plugin-Cloud-Azure-Database-MySQL-Api/pkg.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Database-Mysql-Api/pkg.json rename to packaging/centreon-plugin-Cloud-Azure-Database-MySQL-Api/pkg.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Database-Mysql-Api/rpm.json b/packaging/centreon-plugin-Cloud-Azure-Database-MySQL-Api/rpm.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Database-Mysql-Api/rpm.json rename to packaging/centreon-plugin-Cloud-Azure-Database-MySQL-Api/rpm.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Database-SqlManagedInstance/deb.json b/packaging/centreon-plugin-Cloud-Azure-Database-SqlManagedInstance-Api/deb.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Database-SqlManagedInstance/deb.json rename to packaging/centreon-plugin-Cloud-Azure-Database-SqlManagedInstance-Api/deb.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Database-SqlManagedInstance/pkg.json b/packaging/centreon-plugin-Cloud-Azure-Database-SqlManagedInstance-Api/pkg.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Database-SqlManagedInstance/pkg.json rename to packaging/centreon-plugin-Cloud-Azure-Database-SqlManagedInstance-Api/pkg.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Database-SqlManagedInstance/rpm.json b/packaging/centreon-plugin-Cloud-Azure-Database-SqlManagedInstance-Api/rpm.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Database-SqlManagedInstance/rpm.json rename to packaging/centreon-plugin-Cloud-Azure-Database-SqlManagedInstance-Api/rpm.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Devtools-Appconfiguration/deb.json b/packaging/centreon-plugin-Cloud-Azure-DevTools-AppConfiguration-Api/deb.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Devtools-Appconfiguration/deb.json rename to packaging/centreon-plugin-Cloud-Azure-DevTools-AppConfiguration-Api/deb.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Devtools-Appconfiguration/pkg.json b/packaging/centreon-plugin-Cloud-Azure-DevTools-AppConfiguration-Api/pkg.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Devtools-Appconfiguration/pkg.json rename to packaging/centreon-plugin-Cloud-Azure-DevTools-AppConfiguration-Api/pkg.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Devtools-Appconfiguration/rpm.json b/packaging/centreon-plugin-Cloud-Azure-DevTools-AppConfiguration-Api/rpm.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Devtools-Appconfiguration/rpm.json rename to packaging/centreon-plugin-Cloud-Azure-DevTools-AppConfiguration-Api/rpm.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Integration-Eventgrid-Api/deb.json b/packaging/centreon-plugin-Cloud-Azure-Integration-EventGrid-Api/deb.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Integration-Eventgrid-Api/deb.json rename to packaging/centreon-plugin-Cloud-Azure-Integration-EventGrid-Api/deb.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Integration-Eventgrid-Api/pkg.json b/packaging/centreon-plugin-Cloud-Azure-Integration-EventGrid-Api/pkg.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Integration-Eventgrid-Api/pkg.json rename to packaging/centreon-plugin-Cloud-Azure-Integration-EventGrid-Api/pkg.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Integration-Eventgrid-Api/rpm.json b/packaging/centreon-plugin-Cloud-Azure-Integration-EventGrid-Api/rpm.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Integration-Eventgrid-Api/rpm.json rename to packaging/centreon-plugin-Cloud-Azure-Integration-EventGrid-Api/rpm.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Network-TrafficManager/deb.json b/packaging/centreon-plugin-Cloud-Azure-Network-TrafficManager-Api/deb.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Network-TrafficManager/deb.json rename to packaging/centreon-plugin-Cloud-Azure-Network-TrafficManager-Api/deb.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Network-TrafficManager/pkg.json b/packaging/centreon-plugin-Cloud-Azure-Network-TrafficManager-Api/pkg.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Network-TrafficManager/pkg.json rename to packaging/centreon-plugin-Cloud-Azure-Network-TrafficManager-Api/pkg.json diff --git a/packaging/centreon-plugin-Cloud-Azure-Network-TrafficManager/rpm.json b/packaging/centreon-plugin-Cloud-Azure-Network-TrafficManager-Api/rpm.json similarity index 100% rename from packaging/centreon-plugin-Cloud-Azure-Network-TrafficManager/rpm.json rename to packaging/centreon-plugin-Cloud-Azure-Network-TrafficManager-Api/rpm.json diff --git a/packaging/centreon-plugin-Hardware-Sensors-Rittal-Cmc3-Snmp/deb.json b/packaging/centreon-plugin-Hardware-Sensors-Rittal-Cmc-Snmp/deb.json similarity index 100% rename from packaging/centreon-plugin-Hardware-Sensors-Rittal-Cmc3-Snmp/deb.json rename to packaging/centreon-plugin-Hardware-Sensors-Rittal-Cmc-Snmp/deb.json diff --git a/packaging/centreon-plugin-Hardware-Sensors-Rittal-Cmc3-Snmp/pkg.json b/packaging/centreon-plugin-Hardware-Sensors-Rittal-Cmc-Snmp/pkg.json similarity index 100% rename from packaging/centreon-plugin-Hardware-Sensors-Rittal-Cmc3-Snmp/pkg.json rename to packaging/centreon-plugin-Hardware-Sensors-Rittal-Cmc-Snmp/pkg.json diff --git a/packaging/centreon-plugin-Hardware-Sensors-Rittal-Cmc3-Snmp/rpm.json b/packaging/centreon-plugin-Hardware-Sensors-Rittal-Cmc-Snmp/rpm.json similarity index 100% rename from packaging/centreon-plugin-Hardware-Sensors-Rittal-Cmc3-Snmp/rpm.json rename to packaging/centreon-plugin-Hardware-Sensors-Rittal-Cmc-Snmp/rpm.json diff --git a/packaging/centreon-plugin-Network-Switchs-Dell-Os10-Snmp/deb.json b/packaging/centreon-plugin-Network-Dell-Os10-Snmp/deb.json similarity index 100% rename from packaging/centreon-plugin-Network-Switchs-Dell-Os10-Snmp/deb.json rename to packaging/centreon-plugin-Network-Dell-Os10-Snmp/deb.json diff --git a/packaging/centreon-plugin-Network-Switchs-Dell-Os10-Snmp/pkg.json b/packaging/centreon-plugin-Network-Dell-Os10-Snmp/pkg.json similarity index 100% rename from packaging/centreon-plugin-Network-Switchs-Dell-Os10-Snmp/pkg.json rename to packaging/centreon-plugin-Network-Dell-Os10-Snmp/pkg.json diff --git a/packaging/centreon-plugin-Network-Switchs-Dell-Os10-Snmp/rpm.json b/packaging/centreon-plugin-Network-Dell-Os10-Snmp/rpm.json similarity index 100% rename from packaging/centreon-plugin-Network-Switchs-Dell-Os10-Snmp/rpm.json rename to packaging/centreon-plugin-Network-Dell-Os10-Snmp/rpm.json diff --git a/packaging/centreon-plugin-Network-Switchs-Dell-Xseries-Snmp/deb.json b/packaging/centreon-plugin-Network-Dell-Xseries-Snmp/deb.json similarity index 100% rename from packaging/centreon-plugin-Network-Switchs-Dell-Xseries-Snmp/deb.json rename to packaging/centreon-plugin-Network-Dell-Xseries-Snmp/deb.json diff --git a/packaging/centreon-plugin-Network-Switchs-Dell-Xseries-Snmp/pkg.json b/packaging/centreon-plugin-Network-Dell-Xseries-Snmp/pkg.json similarity index 100% rename from packaging/centreon-plugin-Network-Switchs-Dell-Xseries-Snmp/pkg.json rename to packaging/centreon-plugin-Network-Dell-Xseries-Snmp/pkg.json diff --git a/packaging/centreon-plugin-Network-Switchs-Dell-Xseries-Snmp/rpm.json b/packaging/centreon-plugin-Network-Dell-Xseries-Snmp/rpm.json similarity index 100% rename from packaging/centreon-plugin-Network-Switchs-Dell-Xseries-Snmp/rpm.json rename to packaging/centreon-plugin-Network-Dell-Xseries-Snmp/rpm.json diff --git a/packaging/centreon-plugin-Network-Firewalls-Juniper-Mag-Snmp/deb.json b/packaging/centreon-plugin-Network-Juniper-Mag-Snmp/deb.json similarity index 100% rename from packaging/centreon-plugin-Network-Firewalls-Juniper-Mag-Snmp/deb.json rename to packaging/centreon-plugin-Network-Juniper-Mag-Snmp/deb.json diff --git a/packaging/centreon-plugin-Network-Firewalls-Juniper-Mag-Snmp/pkg.json b/packaging/centreon-plugin-Network-Juniper-Mag-Snmp/pkg.json similarity index 100% rename from packaging/centreon-plugin-Network-Firewalls-Juniper-Mag-Snmp/pkg.json rename to packaging/centreon-plugin-Network-Juniper-Mag-Snmp/pkg.json diff --git a/packaging/centreon-plugin-Network-Firewalls-Juniper-Mag-Snmp/rpm.json b/packaging/centreon-plugin-Network-Juniper-Mag-Snmp/rpm.json similarity index 100% rename from packaging/centreon-plugin-Network-Firewalls-Juniper-Mag-Snmp/rpm.json rename to packaging/centreon-plugin-Network-Juniper-Mag-Snmp/rpm.json diff --git a/packaging/centreon-plugin-Network-Sonus-Sbc-Snmp/deb.json b/packaging/centreon-plugin-Network-Sonus-SBC-Snmp/deb.json similarity index 100% rename from packaging/centreon-plugin-Network-Sonus-Sbc-Snmp/deb.json rename to packaging/centreon-plugin-Network-Sonus-SBC-Snmp/deb.json diff --git a/packaging/centreon-plugin-Network-Sonus-Sbc-Snmp/pkg.json b/packaging/centreon-plugin-Network-Sonus-SBC-Snmp/pkg.json similarity index 100% rename from packaging/centreon-plugin-Network-Sonus-Sbc-Snmp/pkg.json rename to packaging/centreon-plugin-Network-Sonus-SBC-Snmp/pkg.json diff --git a/packaging/centreon-plugin-Network-Sonus-Sbc-Snmp/rpm.json b/packaging/centreon-plugin-Network-Sonus-SBC-Snmp/rpm.json similarity index 100% rename from packaging/centreon-plugin-Network-Sonus-Sbc-Snmp/rpm.json rename to packaging/centreon-plugin-Network-Sonus-SBC-Snmp/rpm.json