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

enable snapshot_management integration target to run on eco vcenter #54

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ integration: install-python-packages install-ansible-collections

.PHONY: eco-vcenter-ci
eco-vcenter-ci: install-python-packages install-ansible-collections install-pyvmomy-latest
ansible-test integration --no-temp-workdir info_test
@for dir in $(shell ansible-test integration --list-target --no-temp-workdir | grep 'vmware_ops_'); do \
ansible-test integration --no-temp-workdir $$dir; \
done

.PHONY: ee-clean
ee-clean:
Expand Down
13 changes: 0 additions & 13 deletions tests/integration/targets/snapshot_management_test/run.yml

This file was deleted.

3 changes: 0 additions & 3 deletions tests/integration/targets/snapshot_management_test/runme.sh

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
- hosts: localhost
gather_facts: no
collections:
- community.general

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

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

- name: Vcsim
ansible.builtin.include_role:
name: prepare_soap
tags: integration-ci

- name: Import manage VM snapshot role
ansible.builtin.include_role:
name: vmware_ops_snapshot_management_test
tags:
- eco-vcenter-ci
- integration-ci
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash
source ../init.sh

# Extract the ansible_tags from integration_config.yml
ANSIBLE_TAGS=$(awk '/ansible_tags/ {print $2}' ../../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
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
- name: "Check snapshot existence for VM {{ manage_snapshot_vm_name }}"
community.vmware.vmware_guest_snapshot_info:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
validate_certs: "{{ snapshot_management_validate_certs }}"
datacenter: "{{ snapshot_management_datacenter }}"
folder: "{{ snapshot_management_folder }}"
name: "{{ manage_snapshot_vm_name }}"
register: snapshot_info

- name: Fail the task if the VM doesn't exist
ansible.builtin.fail:
msg: "No snapshot is present for VM {{ manage_snapshot_vm_name }}"
when: snapshot_info is not defined or snapshot_info.failed

- name: Print snapshot_info for {{ manage_snapshot_vm_name }}
ansible.builtin.debug:
var: snapshot_info
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
- name: Create VM snapshot
#Ignore the errors due to an error in the response SOAP call from vcsim
ignore_errors: true
ansible.builtin.import_role:
name: cloud.vmware_ops.snapshot_management
tags: integration-ci

- name: Test VM snapshot management role in vCenter Environment
block:
- name: Setup test - Provision VM
ansible.builtin.import_role:
name: cloud.vmware_ops.provision_vm

- name: Create snapshot of provisioned VM
loop: "{{ vm_snapshots }}"
ansible.builtin.include_tasks: manage_snapshot.yml

- name: Verify snapshots
ansible.builtin.include_tasks: verify_snapshot_test.yml
vars:
snapshots: "{{ vm_snapshots }}"
snapshot_names: "{{ snapshots | flatten | map(attribute='snapshot_management_snapshot_name') }}"
snapshot_descriptions: "{{ snapshots | flatten | map(attribute='snapshot_management_description') }}"

- name: Update snapshots
loop: "{{ vm_snapshots_updated }}"
ansible.builtin.include_tasks: manage_snapshot.yml

- name: Verify updated snapshots
ansible.builtin.include_tasks: verify_snapshot_test.yml
vars:
snapshots: "{{ vm_snapshots_updated }}"
snapshot_names: "{{ snapshots | flatten | map(attribute='snapshot_management_new_snapshot_name') }}"
snapshot_descriptions: "{{ snapshots | flatten | map(attribute='snapshot_management_new_description') }}"

- name: Remove snapshots
loop: "{{ vm_snapshots_updated }}"
ansible.builtin.include_tasks: remove_snapshot.yml

always:
- name: Remove VM
ansible.builtin.import_role:
name: cloud.vmware_ops.provision_vm
vars:
provision_vm_state: absent
provision_vm_force: true
tags: eco-vcenter-ci
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
- name: Manage snapshot of existing VM
ansible.builtin.import_role:
name: snapshot_management
vars:
snapshot_management_vm_name: "{{ item.snapshot_management_vm_name | default(omit) }}"
snapshot_management_state: "{{ item.snapshot_management_state | default(omit) }}"
snapshot_management_uuid: "{{ item.snapshot_management_uuid | default(omit) }}"
snapshot_management_moid: "{{ item.snapshot_management_moid | default(omit) }}"
snapshot_management_snapshot_name: "{{ item.snapshot_management_snapshot_name | default(omit) }}"
snapshot_management_snapshot_id: "{{ item.snapshot_management_snapshot_id | default(omit) }}"
snapshot_management_description: "{{ item.snapshot_management_description | default(omit) }}"
snapshot_management_new_snapshot_name: "{{ item.snapshot_management_new_snapshot_name | default(omit) }}"
snapshot_management_new_description: "{{ item.snapshot_management_new_description | default(omit) }}"
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
- name: Remove snapshot {{ item.snapshot_management_new_snapshot_name }}
ansible.builtin.include_role:
name: snapshot_management
vars:
snapshot_management_vm_name: "{{ item.snapshot_management_vm_name }}"
snapshot_management_snapshot_name: "{{ item.snapshot_management_new_snapshot_name }}"
snapshot_management_state: "absent"

- name: Verify that the snapshot is removed
ansible.builtin.include_tasks: verify_snapshot_post_removal_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
- name: "Check that the following snapshot does not exist: {{ item.snapshot_management_new_snapshot_name }}"
community.vmware.vmware_guest_snapshot_info:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
validate_certs: "{{ snapshot_management_validate_certs }}"
datacenter: "{{ snapshot_management_datacenter }}"
folder: "{{ snapshot_management_folder }}"
name: "{{ item.snapshot_management_vm_name }}"
register: snapshot_info

- name: "Fail the task"
block:
- name: "Fail the task if the following snapshot exists: {{ item.snapshot_management_new_snapshot_name }}"
ansible.builtin.fail:
msg: "Snapshot {{ item.snapshot_management_new_snapshot_name }} still exists"
when: snapshot_info.guest_snapshots.snapshots | map(attribute='name') | list is ansible.builtin.contains(item.snapshot_management_new_snapshot_name)
when: "'snapshots' in snapshot_info.guest_snapshots"
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
- name: Get info about the snapshot
ansible.builtin.include_tasks: get_snapshot_info.yml

- name: "Validate the properties of the snapshots"
loop: "{{ snapshots }}"
loop_control:
index_var: index
ansible.builtin.assert:
that:
- snapshot_info.guest_snapshots.snapshots[index].name == snapshot_names[index]
- snapshot_info.guest_snapshots.snapshots[index].description == snapshot_descriptions[index]
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
---
- name: Create VM snapshot
#Ignore the errors due to an error in the response SOAP call from vcsim
ignore_errors: true
ansible.builtin.import_role:
name: cloud.vmware_ops.snapshot_management
vars:
snapshot_management_hostname: "127.0.0.1"
snapshot_management_username: "test"
snapshot_management_password: "test"
Expand All @@ -15,4 +8,4 @@
snapshot_management_port: "8989"
snapshot_management_state: present
snapshot_management_snapshot_name: "snap1"
snapshot_management_snapshot_description: "snap1_description"
snapshot_management_snapshot_description: "snap1_description"
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# vars.yaml
snapshot_management_hostname: "{{ vcenter_hostname }}"
snapshot_management_username: "{{ vcenter_username }}"
snapshot_management_password: "{{ vcenter_password }}"
snapshot_management_validate_certs: false

snapshot_management_folder: "/Eco-Datacenter/vm/e2e-qe"
snapshot_management_datacenter: "Eco-Datacenter"

vm_snapshots:
- snapshot_management_snapshot_name: "{{ manage_snapshot_vm_name }}-snapshot-1"
snapshot_management_vm_name: "{{ manage_snapshot_vm_name }}"
snapshot_management_description: "This is the first snapshot of VM {{ manage_snapshot_vm_name }}"
- snapshot_management_snapshot_name: "{{ manage_snapshot_vm_name }}-snapshot-2"
snapshot_management_vm_name: "{{ manage_snapshot_vm_name }}"
snapshot_management_state: present
snapshot_management_description: "This is the second snapshot of VM {{ manage_snapshot_vm_name }}"

manage_snapshot_vm_name: "manage-snapshot-vm-rhel-9"

vm_snapshots_updated:
- snapshot_management_snapshot_name: "{{ manage_snapshot_vm_name }}-snapshot-1"
snapshot_management_vm_name: "{{ manage_snapshot_vm_name }}"
snapshot_management_new_description: "This is the updated description for snapshot-1-updated"
snapshot_management_new_snapshot_name: "snapshot-1-updated"
- snapshot_management_snapshot_name: "{{ manage_snapshot_vm_name }}-snapshot-2"
snapshot_management_vm_name: "{{ manage_snapshot_vm_name }}"
snapshot_management_state: present
snapshot_management_new_snapshot_name: "snapshot-2-updated"
snapshot_management_new_description: "This is the updated description for snapshot-2-updated"

provision_vm_hostname: "{{ snapshot_management_hostname }}"
provision_vm_username: "{{ snapshot_management_username }}"
provision_vm_password: "{{ snapshot_management_password }}"
provision_vm_validate_certs: "{{ snapshot_management_validate_certs }}"

provision_vm_cluster: "Eco-Cluster"
provision_vm_folder: "{{ snapshot_management_folder }}"
provision_vm_datacenter: "{{ snapshot_management_datacenter }}"

# RHEL9 VM
provision_vm_name: "{{ manage_snapshot_vm_name }}"
provision_vm_state: "poweredon"
provision_vm_cdrom:
- controller_number: 0
unit_number: 0
state: present
type: iso
iso_path: "[datastore1] ISO/rhel-9.3-x86_64-dvd.iso"
provision_vm_networks:
- name: "VM Network"
device_type: "vmxnet3"
mac: "00:50:56:bd:d2:9e"
type: "dhcp"
provision_vm_resource_pool: null
provision_vm_disk:
- size_gb: 50
type: thin
datastore: "datastore1"
provision_vm_hardware:
memory_mb: 2000
num_cpus: 4
boot_firmware: efi
secure_boot: true
provision_vm_guest_id: "rhel9_64Guest"
provision_vm_datastore: "datastore1"
Loading