Skip to content

Commit

Permalink
add first integration CI test to run on eco vcenter
Browse files Browse the repository at this point in the history
  • Loading branch information
shellymiron committed May 31, 2024
1 parent 8ea803d commit 30019be
Show file tree
Hide file tree
Showing 13 changed files with 95 additions and 16 deletions.
14 changes: 11 additions & 3 deletions CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
* @bardielle
* @machacekondra
* @mikemorency
# Default code owners for all files and directories
* @bardielle @machacekondra @mikemorency

# Integration tests permissions
/tests/integration/ @shellymiron @elsapassaro

# Specific workflow file permissions
.github/workflows/eco-vcenter-ci.yaml @shellymiron @elsapassaro

# Scripts directory permissions
/scripts/ @shellymiron @elsapassaro
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ install-ansible-collections:
integration: install-python-packages install-ansible-collections
ansible-test integration --no-temp-workdir

.PHONY: eco-vcenter-ci
eco-vcenter-ci: install-python-packages install-ansible-collections
ansible-test integration --no-temp-workdir info_test

.PHONY: ee-clean
ee-clean:
rm -rf context/
Expand Down
4 changes: 4 additions & 0 deletions changelogs/fragments/42__eco-vcenter-ci-integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
major_changes:
- info_test - adding a CI for validated content repo to run on a real vcenter env,
and include this test within the pr
2 changes: 1 addition & 1 deletion meta/runtime.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
requires_ansible: ">=2.15.0"
requires_ansible: '>=2.15.0'
14 changes: 14 additions & 0 deletions scripts/generate_integration_config.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash
# shellcheck disable=SC2155,SC2086

# Resolve the script's directory reliably
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && pwd)"
cd "$SCRIPT_DIR" || exit 1

# Truncate the output file
truncate -s 0 integration_config.yml

# Read the template and substitute environment variables
while read -r line; do
eval 'echo "'"$line"'"' >> integration_config.yml
done < "integration_config.yml.tpl"
5 changes: 5 additions & 0 deletions scripts/integration_config.yml.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
vcenter_hostname: ${VCENTER_HOSTNAME}
vcenter_username: ${VCENTER_USERNAME}
vcenter_password: ${VCENTER_PASSWORD}
ansible_tags: eco-vcenter-ci
2 changes: 1 addition & 1 deletion tests/integration/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ ansible-core

# see the cluster_settings role README.md for an explanation on the <7.0.3 restriction
pyVmomi>=6.7,<7.0.3

git+https://github.com/vmware/vsphere-automation-sdk-python.git
13 changes: 13 additions & 0 deletions tests/integration/targets/info_test/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
info_hostname: "{{ vcenter_hostname }}"
info_username: "{{ vcenter_username }}"
info_password: "{{ vcenter_password }}"
info_validate_certs: false
info_appliance_file: "/tmp/info_appliance_file"
info_license_file: "/tmp/info_license_file"
info_storage_file: "/tmp/info_storage_file"
info_guest_file: "/tmp/guest_info_file"
info_license: true
info_storage: true
info_cluster: true
info_guest: true
info_appliance: true
31 changes: 23 additions & 8 deletions tests/integration/targets/info_test/run.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,34 @@
- hosts: localhost
gather_facts: no
- name: Run Info Test Tasks
hosts: localhost
gather_facts: false
collections:
- community.general
vars_files:
- vars.yml

tasks:
- name: Vcsim
ansible.builtin.import_role:
name: prepare_soap

- name: Vcsim
- name: Import eco-vcenter credentials
ansible.builtin.include_vars:
file: ../../../../scripts/integration_config.yml
tags: eco-vcenter-ci

- name: Import simulator vars
ansible.builtin.include_vars:
file: vars.yml
tags: integration-ci

- name: Prepare Rest
ansible.builtin.import_role:
name: prepare_rest
tags: integration-ci

- name: Prepare Soap (vcsim)
ansible.builtin.import_role:
name: prepare_soap
tags: integration-ci

- name: Import info role
ansible.builtin.import_role:
name: info_test
tags:
- eco-vcenter-ci
- integration-ci
13 changes: 12 additions & 1 deletion tests/integration/targets/info_test/runme.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
#!/usr/bin/env bash
source ../init.sh
exec ansible-playbook run.yml

# Extract the ansible_tags from integration_config.yml
ANSIBLE_TAGS=$(awk '/ansible_tags/ {print $2}' ../../../../scripts/integration_config.yml)

# Check if the ANSIBLE_TAGS variable is set
if [[ -n "$ANSIBLE_TAGS" ]]; then
echo "ANSIBLE_TAGS is set to: $ANSIBLE_TAGS"
exec ansible-playbook run.yml --tags "$ANSIBLE_TAGS"
else
echo "ANSIBLE_TAGS is not set for Eco vCenter. Running on simulator."
exec ansible-playbook run.yml --tags integration-ci
fi
6 changes: 5 additions & 1 deletion tests/integration/targets/init.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
#!/usr/bin/env bash
# shellcheck disable=SC2155,SC2086

BASE_DIR=$(dirname "${BASH_SOURCE[0]}")
# Export the collections path
export ANSIBLE_COLLECTIONS_PATH="$ANSIBLE_COLLECTIONS_PATH/ansible_collections"

echo "ANSIBLE_COLLECTIONS_PATH: $ANSIBLE_COLLECTIONS_PATH"
BASE_DIR=$(dirname "$(realpath "${BASH_SOURCE[0]}")")
export ANSIBLE_ROLES_PATH=${BASE_DIR}
1 change: 1 addition & 0 deletions tests/integration/targets/prepare_rest/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
name:
- requests
- aiohttp
- git+https://github.com/vmware/vsphere-automation-sdk-python.git

- name: Run rest
containers.podman.podman_container:
Expand Down
2 changes: 1 addition & 1 deletion tests/integration/targets/prepare_soap/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
name:
- requests
- pyVmomi
- git+https://github.com/vmware/vsphere-automation-sdk-python.git

- name: Run soap vcSim
containers.podman.podman_container:
name: vmwaresoap

image: docker.io/vmware/vcsim:latest
state: started
recreate: yes
Expand Down

0 comments on commit 30019be

Please sign in to comment.