Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rework test offline workflow #187

Closed
4 tasks done
c-bordon opened this issue Dec 26, 2024 · 4 comments · Fixed by #191
Closed
4 tasks done

Rework test offline workflow #187

c-bordon opened this issue Dec 26, 2024 · 4 comments · Fixed by #191
Assignees
Labels
level/task Task issue type/change Change performed in a resource or Wazuh Cloud environment

Comments

@c-bordon
Copy link
Member

c-bordon commented Dec 26, 2024

Related #161

Desciption

Due to some errors found in the test, it is necessary to rework it to simulate a more realistic situation than what a user would do when installing the product in a real environment without the internet.

Tasks

  • Configure the script to run on the GitHub Runner to download all the files needed for the offline installation
  • Configure the testing node with the Security group sg-03c53339089a65829
  • Copy all the files from the Runner node to the testing node
  • Run the tests validating the correct installation and the functioning of the components after the installation
@c-bordon c-bordon added level/task Task issue type/change Change performed in a resource or Wazuh Cloud environment labels Dec 26, 2024
@wazuhci wazuhci moved this to Backlog in XDR+SIEM/Release 4.11.0 Dec 26, 2024
@wazuhci wazuhci moved this from Backlog to In progress in XDR+SIEM/Release 4.11.0 Dec 30, 2024
@fcaffieri
Copy link
Member

fcaffieri commented Jan 2, 2025

Update report

SG change has been configured within the workflow.
Work is being done on separating the installation of dependencies and the downloading of components and packages, removing it from the tests.

name: Offline installation test

on:
  pull_request:
    paths:
      - 'install_functions/wazuh-offline-download.sh'
      - 'install_functions/wazuh-offline-installation.sh'
  workflow_dispatch:
    inputs:
      WAZUH_INSTALLATION_ASSISTANT_REFERENCE:
        description: "Branch or tag of the wazuh-installation-assistant repository."
        required: true
        default: 4.10.1
      AUTOMATION_REFERENCE:
        description: 'Branch or tag of the wazuh-automation repository'
        required: true
        default: 'v4.10.1'
      PKG_REPOSITORY:
        description: 'Repository environment'
        required: true
        default: 'pre-release'
        type: choice
        options:
          - staging
          - pre-release
      SYSTEMS:
        description: "Operating Systems (list of comma-separated quoted strings enclosed in square brackets)."
        required: true
        default: '["Ubuntu_22", "CentOS_8"]'
        type: string
      VERBOSITY:
        description: 'Verbosity level on playbooks execution'
        required: true
        default: '-v'
        type: choice
        options:
          - -v
          - -vv
          - -vvv
          - -vvvv
      DESTROY:
        description: 'Destroy instances after run'
        required: true
        default: true
        type: boolean

env:
  WAZUH_INSTALLATION_ASSISTANT_REFERENCE: ${{ github.event_name == 'pull_request' && github.head_ref || inputs.WAZUH_INSTALLATION_ASSISTANT_REFERENCE }}
  AUTOMATION_REFERENCE: ${{ inputs.AUTOMATION_REFERENCE }}
  WAZUH_VERSION: "4.10"
  PKG_REPOSITORY: ${{ github.event_name == 'pull_request' && 'pre-release' || inputs.PKG_REPOSITORY }}
  VERBOSITY: ${{ github.event_name == 'pull_request' && '-v' || inputs.VERBOSITY }}
  COMPOSITE_NAME: "linux-SUBNAME-amd64"
  REGION: "us-east-1"
  TMP_PATH: "/tmp/test"
  REPOSITORY_URL: "${{ github.server_url }}/${{ github.repository }}.git"
  ALLOCATOR_PATH: "/tmp/allocator_instance"
  ANSIBLE_CALLBACK: "yaml"

permissions:
  id-token: write
  contents: read

jobs:
  Create-allocator-instances:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        system: ${{ github.event_name == 'pull_request' && fromJson('["Ubuntu_22", "CentOS_8"]') || fromJson(inputs.SYSTEMS) }}

    steps:
    - name: View parameters
      run: echo "${{ toJson(inputs) }}"

    - name: Checkout code
      uses: actions/checkout@v4
      with:
        ref: ${{ env.WAZUH_INSTALLATION_ASSISTANT_REFERENCE }}

    - name: Checkout wazuh/wazuh-automation repository
      uses: actions/checkout@v4
      with:
        repository: wazuh/wazuh-automation
        ref: ${{ env.AUTOMATION_REFERENCE }}
        token: ${{ secrets.GH_CLONE_TOKEN }}
        path: wazuh-automation

    - name: Set COMPOSITE_NAME variable
      run: |
        case "${{ matrix.system }}" in
          "CentOS_7")
            SUBNAME="centos-7"
            ;;
          "CentOS_8")
            SUBNAME="centos-8"
            ;;
          "AmazonLinux_2")
            SUBNAME="amazon-2"
            ;;
          "Ubuntu_16")
            SUBNAME="ubuntu-16.04"
            ;;
          "Ubuntu_18")
            SUBNAME="ubuntu-18.04"
            ;;
          "Ubuntu_20")
            SUBNAME="ubuntu-20.04"
            ;;
          "Ubuntu_22")
            SUBNAME="ubuntu-22.04"
            ;;
          "RHEL7")
            SUBNAME="redhat-7"
            ;;
          "RHEL8")
            SUBNAME="redhat-8"
            ;;
          *)
            echo "Invalid SYSTEM selection" >&2
            exit 1
            ;;
        esac
        COMPOSITE_NAME="${COMPOSITE_NAME/SUBNAME/$SUBNAME}"
        echo "COMPOSITE_NAME=$COMPOSITE_NAME" >> $GITHUB_ENV

    - name: Install python and create virtual environment
      run: |
        sudo apt-get update
        sudo apt-get install -y python3 python3-venv
        python3 -m venv testing_venv
        source testing_venv/bin/activate
        python3 -m pip install --upgrade pip
        echo PATH=$PATH >> $GITHUB_ENV

    - name: Install and set allocator requirements
      run: pip3 install -r wazuh-automation/deployability/deps/requirements.txt

    - name: Set up AWS credentials
      uses: aws-actions/configure-aws-credentials@v3
      with:
        role-to-assume: ${{ secrets.AWS_IAM_ROLE }}
        aws-region: ${{ env.REGION }}

    - name: Allocate test instance and set SSH variables
      id: allocator_instance
      run: |
        python3 wazuh-automation/deployability/modules/allocation/main.py --action create --provider aws --size large --composite-name ${{ env.COMPOSITE_NAME }} --working-dir $ALLOCATOR_PATH \
          --track-output $ALLOCATOR_PATH/track.yml --inventory-output $ALLOCATOR_PATH/inventory.yml --instance-name gha_${{ env.COMPOSITE_NAME }}_${{ github.run_id }}_assistant_test \
          --label-team devops --label-termination-date 1d

        sed 's/: */=/g' $ALLOCATOR_PATH/inventory.yml > $ALLOCATOR_PATH/inventory_mod.yml
        sed -i 's/-o StrictHostKeyChecking=no/\"-o StrictHostKeyChecking=no\"/g' $ALLOCATOR_PATH/inventory_mod.yml
        source $ALLOCATOR_PATH/inventory_mod.yml

        echo "[gha_instance]" > $ALLOCATOR_PATH/inventory
        echo "$ansible_host ansible_port=$ansible_port ansible_user=$ansible_user ansible_ssh_private_key_file=$ansible_ssh_private_key_file ansible_ssh_common_args='$ansible_ssh_common_args'" >> $ALLOCATOR_PATH/inventory

    - name: Install Ansible
      run: pip install ansible-core==2.16

    - name: configure ansible
      run: |
        ansible-galaxy collection install community.general

    - name: Execute provision playbook
      run: |
        INSTALL_DEPS=true
        INSTALL_PYTHON=true
        INSTALL_PIP_DEPS=true

        ANSIBLE_STDOUT_CALLBACK=$ANSIBLE_CALLBACK ansible-playbook .github/workflows/ansible-playbooks/provision.yml \
        -i $ALLOCATOR_PATH/inventory \
        -l all \
        -e "repository=$REPOSITORY_URL" \
        -e "reference=$WAZUH_INSTALLATION_ASSISTANT_REFERENCE" \
        -e "tmp_path=$TMP_PATH" \
        -e "install_deps=$INSTALL_DEPS" \
        -e "install_python=$INSTALL_PYTHON" \
        -e "install_pip_deps=$INSTALL_PIP_DEPS" \
        "$VERBOSITY"

    - name: Download required packages
      run: |
        curl -v 

    - name: Copy required packages
      run: |
        curl -v 
        

    - name: Get instance-id
      run: |
        INSTANCE_ID=$(aws ec2 describe-instances --query 'Reservations[0].Instances[0].InstanceId' --filters "Name=tag:Name,Values=gha_${{ env.COMPOSITE_NAME }}_${{ github.run_id }}_assistant_test" --output text)
        echo "INSTANCE_ID=$INSTANCE_ID" >> $GITHUB_ENV

    - name: Change security group
      run: |
        aws ec2 modify-instance-attribute --instance-id ${{ env.INSTANCE_ID }} --groups sg-03c53339089a65829

    - name: Execute offline installation playbook
      run: |
        ANSIBLE_STDOUT_CALLBACK=$ANSIBLE_CALLBACK ansible-playbook .github/workflows/ansible-playbooks/offline_installation.yml \
        -i $ALLOCATOR_PATH/inventory \
        -l all \
        -e "tmp_path=$TMP_PATH" \
        -e "pkg_repository=$PKG_REPOSITORY" \
        -e "wazuh_version=$WAZUH_VERSION" \
        "$VERBOSITY"

    #- name: Delete allocated VM
    #  if: always() && steps.allocator_instance.outcome == 'success' && (inputs.DESTROY == true || github.event_name == 'pull_request')
    #  run: python3 wazuh-automation/deployability/modules/allocation/main.py --action delete --track-output $ALLOCATOR_PATH/track.yml

@fcaffieri
Copy link
Member

fcaffieri commented Jan 3, 2025

Update report

New playbooks added:

Image

Remove common.sh only use offline-installation.sh to simplify.

The new Workflow:

name: Offline installation test

on:
  pull_request:
    paths:
      - 'install_functions/wazuh-offline-download.sh'
      - 'install_functions/wazuh-offline-installation.sh'
  workflow_dispatch:
    inputs:
      WAZUH_INSTALLATION_ASSISTANT_REFERENCE:
        description: "Branch or tag of the wazuh-installation-assistant repository."
        required: true
        default: 4.10.1
      AUTOMATION_REFERENCE:
        description: 'Branch or tag of the wazuh-automation repository'
        required: true
        default: '4.10.1'
      PKG_REPOSITORY:
        description: 'Repository environment'
        required: true
        default: 'pre-release'
        type: choice
        options:
          - staging
          - pre-release
      SYSTEMS:
        description: "Operating Systems (list of comma-separated quoted strings enclosed in square brackets)."
        required: true
        default: '["CentOS_8"]'
        type: string
      VERBOSITY:
        description: 'Verbosity level on playbooks execution'
        required: true
        default: '-v'
        type: choice
        options:
          - -v
          - -vv
          - -vvv
          - -vvvv
      DESTROY:
        description: 'Destroy instances after run'
        required: true
        default: true
        type: boolean

env:
  WAZUH_INSTALLATION_ASSISTANT_REFERENCE: ${{ github.event_name == 'pull_request' && github.head_ref || inputs.WAZUH_INSTALLATION_ASSISTANT_REFERENCE }}
  AUTOMATION_REFERENCE: ${{ inputs.AUTOMATION_REFERENCE }}
  WAZUH_VERSION: "4.10"
  PKG_REPOSITORY: ${{ github.event_name == 'pull_request' && 'pre-release' || inputs.PKG_REPOSITORY }}
  VERBOSITY: ${{ github.event_name == 'pull_request' && '-v' || inputs.VERBOSITY }}
  COMPOSITE_NAME: "linux-SUBNAME-amd64"
  REGION: "us-east-1"
  TMP_PATH: "/tmp/test"
  REPOSITORY_URL: "${{ github.server_url }}/${{ github.repository }}.git"
  ALLOCATOR_PATH: "/tmp/allocator_instance"
  ANSIBLE_CALLBACK: "yaml"

permissions:
  id-token: write
  contents: read

jobs:
  Create-allocator-instances:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        system: ${{ github.event_name == 'pull_request' && fromJson('["Ubuntu_22", "CentOS_8"]') || fromJson(inputs.SYSTEMS) }}

    steps:
    - name: View parameters
      run: echo "${{ toJson(inputs) }}"

    - name: Checkout code
      uses: actions/checkout@v4
      with:
        ref: ${{ env.WAZUH_INSTALLATION_ASSISTANT_REFERENCE }}

    - name: Checkout wazuh/wazuh-automation repository
      uses: actions/checkout@v4
      with:
        repository: wazuh/wazuh-automation
        ref: ${{ env.AUTOMATION_REFERENCE }}
        token: ${{ secrets.GH_CLONE_TOKEN }}
        path: wazuh-automation

    - name: Set COMPOSITE_NAME variable
      run: |
        case "${{ matrix.system }}" in
          "CentOS_7")
            SUBNAME="centos-7"
            ;;
          "CentOS_8")
            SUBNAME="centos-8"
            ;;
          "AmazonLinux_2")
            SUBNAME="amazon-2"
            ;;
          "Ubuntu_16")
            SUBNAME="ubuntu-16.04"
            ;;
          "Ubuntu_18")
            SUBNAME="ubuntu-18.04"
            ;;
          "Ubuntu_20")
            SUBNAME="ubuntu-20.04"
            ;;
          "Ubuntu_22")
            SUBNAME="ubuntu-22.04"
            ;;
          "RHEL7")
            SUBNAME="redhat-7"
            ;;
          "RHEL8")
            SUBNAME="redhat-8"
            ;;
          *)
            echo "Invalid SYSTEM selection" >&2
            exit 1
            ;;
        esac
        COMPOSITE_NAME="${COMPOSITE_NAME/SUBNAME/$SUBNAME}"
        echo "COMPOSITE_NAME=$COMPOSITE_NAME" >> $GITHUB_ENV

    - name: Install python and create virtual environment
      run: |
        sudo apt-get update
        sudo apt-get install -y python3 python3-venv
        python3 -m venv testing_venv
        source testing_venv/bin/activate
        python3 -m pip install --upgrade pip
        echo PATH=$PATH >> $GITHUB_ENV

    - name: Install and set allocator requirements
      run: pip3 install -r wazuh-automation/deployability/deps/requirements.txt

    - name: Set up AWS credentials
      uses: aws-actions/configure-aws-credentials@v3
      with:
        role-to-assume: ${{ secrets.AWS_IAM_ROLE }}
        aws-region: ${{ env.REGION }}

    - name: Allocate test instance and set SSH variables
      id: allocator_instance
      run: |
        python3 wazuh-automation/deployability/modules/allocation/main.py --action create --provider aws --size large --composite-name ${{ env.COMPOSITE_NAME }} --working-dir $ALLOCATOR_PATH \
          --track-output $ALLOCATOR_PATH/track.yml --inventory-output $ALLOCATOR_PATH/inventory.yml --instance-name gha_${{ env.COMPOSITE_NAME }}_${{ github.run_id }}_assistant_test \
          --label-team devops --label-termination-date 1d

        sed 's/: */=/g' $ALLOCATOR_PATH/inventory.yml > $ALLOCATOR_PATH/inventory_mod.yml
        sed -i 's/-o StrictHostKeyChecking=no/\"-o StrictHostKeyChecking=no\"/g' $ALLOCATOR_PATH/inventory_mod.yml
        source $ALLOCATOR_PATH/inventory_mod.yml

        echo "[gha_instance]" > $ALLOCATOR_PATH/inventory
        echo "$ansible_host ansible_port=$ansible_port ansible_user=$ansible_user ansible_ssh_private_key_file=$ansible_ssh_private_key_file ansible_ssh_common_args='$ansible_ssh_common_args'" >> $ALLOCATOR_PATH/inventory

    - name: Install Ansible
      run: pip install ansible-core==2.16

    - name: Configure ansible
      run: |
        ansible-galaxy collection install community.general

    - name: Get system type
      id: get-system-type
      run: |
        set +e
        SYSTEM_TYPE=$(ansible-playbook .github/workflows/ansible-playbooks/offline-installation/get_system_type.yml \
        -i $ALLOCATOR_PATH/inventory \
        -l all \
        "$VERBOSITY")
        echo $SYSTEM_TYPE

        if [ "$SYSTEM_TYPE" != "rpm" ] && [ "$SYSTEM_TYPE" != "deb" ]; then
          echo "ERROR: Unsupported system type. Could not determine if system is RPM or DEB based."
          exit 1
        fi
        echo "SYSTEM_TYPE=${SYSTEM_TYPE}" >> $GITHUB_ENV

    - name: Display system type
      run: |
        echo "Detected system type from env: ${{ env.SYSTEM_TYPE }}"

    - name: Execute provision playbook
      run: |
        INSTALL_DEPS=true
        INSTALL_PYTHON=true
        INSTALL_PIP_DEPS=true

        ANSIBLE_STDOUT_CALLBACK=$ANSIBLE_CALLBACK ansible-playbook .github/workflows/ansible-playbooks/provision.yml \
        -i $ALLOCATOR_PATH/inventory \
        -l all \
        -e "repository=$REPOSITORY_URL" \
        -e "reference=$WAZUH_INSTALLATION_ASSISTANT_REFERENCE" \
        -e "tmp_path=$TMP_PATH" \
        -e "install_deps=$INSTALL_DEPS" \
        -e "install_python=$INSTALL_PYTHON" \
        -e "install_pip_deps=$INSTALL_PIP_DEPS" \
        -e "sys_type=${{ env.SYSTEM_TYPE }}" \
        "$VERBOSITY"

    - name: Execute provision playbook
      run: |
        ls -ltR .github/workflows/ansible-playbooks

    - name: Download and copy configuration files and assets
      run: |
        ANSIBLE_STDOUT_CALLBACK=$ANSIBLE_CALLBACK ansible-playbook .github/workflows/ansible-playbooks/offline-installation/download.yml \
        -i $ALLOCATOR_PATH/inventory \
        -l all \
        -e "tmp_path=$TMP_PATH" \
        -e "pkg_repository=$PKG_REPOSITORY" \
        -e "wazuh_version=$WAZUH_VERSION" \
        -e "sys_type=${{ env.SYSTEM_TYPE }}" \
        "$VERBOSITY"

    - name: Get instance-id
      run: |
        INSTANCE_ID=$(aws ec2 describe-instances --query 'Reservations[0].Instances[0].InstanceId' --filters "Name=tag:Name,Values=gha_${{ env.COMPOSITE_NAME }}_${{ github.run_id }}_assistant_test" --output text)
        echo "INSTANCE_ID=$INSTANCE_ID" >> $GITHUB_ENV

    - name: Change security group
      run: |
        aws ec2 modify-instance-attribute --instance-id ${{ env.INSTANCE_ID }} --groups sg-03c53339089a65829

    - name: Execute offline installation playbook
      run: |
        ANSIBLE_STDOUT_CALLBACK=$ANSIBLE_CALLBACK ansible-playbook .github/workflows/ansible-playbooks/offline-installation/test.yml \
        -i $ALLOCATOR_PATH/inventory \
        -l all \
        -e "tmp_path=$TMP_PATH" \
        -e "pkg_repository=$PKG_REPOSITORY" \
        -e "wazuh_version=$WAZUH_VERSION" \
        -e "sys_type=${{ env.SYSTEM_TYPE }}" \
        "$VERBOSITY"

    - name: Delete allocated VM
      if: always() && steps.allocator_instance.outcome == 'success' && (inputs.DESTROY == true || github.event_name == 'pull_request')
      run: python3 wazuh-automation/deployability/modules/allocation/main.py --action delete --track-output $ALLOCATOR_PATH/track.yml

I have a problem with the download files:

Image

@fcaffieri
Copy link
Member

Update report

Fixed the problem with the provision of the steps added to install the OpenSSL dependencies for deb and rpm

Then when running massive tests the following results were found:

Test 1:
https://github.com/wazuh/wazuh-installation-assistant/actions/runs/12639615087

Image

Error:

fatal: [ec2-54-159-92-238.compute-1.amazonaws.com]: FAILED! => changed=false
 msg: python-apt must be installed and visible from /usr/bin/python.

All tests failed due to the installation of python in the provision.
This was fixed and the following result was obtained.

Test 2:
https://github.com/wazuh/wazuh-installation-assistant/actions/runs/12639922993/job/35219260033
Image

Ubuntu Bionix and Xenial systems had problems installing pip:

Error:

TASK [Install pip Ubuntu Bionic/Xenial] ****************************************
task path: /home/runner/work/wazuh-installation-assistant/wazuh-installation-assistant/.github/workflows/ansible-playbooks/provision.yml:160
[WARNING]: Updating cache and auto-installing missing dependency: python3-apt
fatal: [ec2-34-204-96-25.compute-1.amazonaws.com]: FAILED! => changed=false
 msg: python3-apt must be installed and visible from /usr/bin/python3.

The problem was fixed, but in Ubuntu 18 another bug was detected.

Test 3:
https://github.com/wazuh/wazuh-installation-assistant/actions/runs/12640454839/job/35220900236

Image

Error:

TASK [Install pip Ubuntu Bionic/Xenial] ****************************************
task path: /home/runner/work/wazuh-installation-assistant/wazuh-installation-assistant/.github/workflows/ansible-playbooks/provision.yml:162
[WARNING]: Updating cache and auto-installing missing dependency: python3-apt
fatal: [ec2-52-70-15-3.compute-1.amazonaws.com]: FAILED! => changed=false 
  cmd: apt-get update
  msg: |-
    Traceback (most recent call last):
      File "/usr/lib/cnf-update-db", line 8, in <module>
        from CommandNotFound.db.creator import DbCreator
      File "/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py", line 11, in <module>
        import apt_pkg
    ModuleNotFoundError: No module named 'apt_pkg'
    E: The repository 'http://ppa.launchpad.net/jblgf0/python/ubuntu bionic Release' does not have a Release file.
    E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi'
    E: Sub-process returned an error code
  rc: 100
  stderr: |-
    Traceback (most recent call last):
      File "/usr/lib/cnf-update-db", line 8, in <module>
        from CommandNotFound.db.creator import DbCreator
      File "/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py", line 11, in <module>
        import apt_pkg
    ModuleNotFoundError: No module named 'apt_pkg'
    E: The repository 'http://ppa.launchpad.net/jblgf0/python/ubuntu bionic Release' does not have a Release file.
    E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi'
    E: Sub-process returned an error code
  stderr_lines: <omitted>
  stdout: |-
    Hit:1 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic InRelease
    Hit:2 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates InRelease
    Hit:3 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-backports InRelease
    Hit:4 http://security.ubuntu.com/ubuntu bionic-security InRelease
    Ign:5 http://ppa.launchpad.net/jblgf0/python/ubuntu bionic InRelease
    Err:6 http://ppa.launchpad.net/jblgf0/python/ubuntu bionic Release
      404  Not Found [IP: 185.125.190.80 80]
    Reading package lists...
  stdout_lines: <omitted>

PLAY RECAP *********************************************************************
ec2-52-70-15-3.compute-1.amazonaws.com : ok=5    changed=3    unreachable=0    failed=1    skipped=7    rescued=0    ignored=0

Another different problem when installing pip. It is fixed, but a new issue with the python version arises in later steps.

Test 4:
https://github.com/wazuh/wazuh-installation-assistant/actions/runs/12640822131/job/35221964409

Error:

Image

Analyzing the problem

@fcaffieri fcaffieri linked a pull request Jan 7, 2025 that will close this issue
@fcaffieri
Copy link
Member

Update report

The problem was resolve, and all test pass.

Image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
level/task Task issue type/change Change performed in a resource or Wazuh Cloud environment
Projects
No open projects
Status: Done
Development

Successfully merging a pull request may close this issue.

2 participants