diff --git a/tests/integration/targets/gcp_compute_instance/tasks/attach-disks.yml b/tests/integration/targets/gcp_compute_instance/tasks/attach-disks.yml new file mode 100644 index 00000000..ac68a767 --- /dev/null +++ b/tests/integration/targets/gcp_compute_instance/tasks/attach-disks.yml @@ -0,0 +1,104 @@ +--- +- block: + - name: Create instance + google.cloud.gcp_compute_instance: + name: "{{ resource_name }}-attach-vm" + machine_type: n1-standard-1 + state: present + disks: + - auto_delete: true + boot: true + initialize_params: + source_image: "{{ gcp_disk_image }}" + disk_type: pd-standard + network_interfaces: + - network: "{{ _network }}" + zone: "{{ gcp_zone }}" + project: "{{ gcp_project }}" + auth_kind: "{{ gcp_cred_kind }}" + service_account_file: "{{ gcp_cred_file | default(omit) }}" + register: _result1 + + - name: Verify instance info post-create + google.cloud.gcp_compute_instance_info: + filters: + - name = {{ _result1.name }} + zone: "{{ gcp_zone }}" + project: "{{ gcp_project }}" + auth_kind: "{{ gcp_cred_kind }}" + service_account_file: "{{ gcp_cred_file | default(omit) }}" + scopes: + - https://www.googleapis.com/auth/compute + register: _info1 + + - name: Create extra disk + google.cloud.gcp_compute_disk: + name: "{{ resource_name }}-extra" + state: present + zone: "{{ gcp_zone }}" + size_gb: 20 + project: "{{ gcp_project }}" + auth_kind: "{{ gcp_cred_kind }}" + service_account_file: "{{ gcp_cred_file | default(omit) }}" + register: _disk + + - name: Attach extra disk to instance + google.cloud.gcp_compute_instance: + name: "{{ resource_name }}-attach-vm" + machine_type: n1-standard-1 + state: present + disks: + - auto_delete: true + boot: true + initialize_params: + source_image: "{{ gcp_disk_image }}" + disk_type: pd-standard + - source: "{{ _disk }}" + network_interfaces: + - network: "{{ _network }}" + zone: "{{ gcp_zone }}" + project: "{{ gcp_project }}" + auth_kind: "{{ gcp_cred_kind }}" + service_account_file: "{{ gcp_cred_file | default(omit) }}" + register: _result2 + + - name: Verify instance info post-change + google.cloud.gcp_compute_instance_info: + filters: + - name = {{ _result2.name }} + zone: "{{ gcp_zone }}" + project: "{{ gcp_project }}" + auth_kind: "{{ gcp_cred_kind }}" + service_account_file: "{{ gcp_cred_file | default(omit) }}" + scopes: + - https://www.googleapis.com/auth/compute + register: _info2 + + - name: Run assertions + ansible.builtin.assert: + that: + - _info1.resources | length > 0 + - _info1.resources[0].disks | length == 1 + - _info2.resources | length > 0 + - _info2.resources[0].disks | length == 2 + + always: + # teardown + - name: Destroy instance + google.cloud.gcp_compute_instance: + name: "{{ resource_name }}-attach-vm" + state: absent + machine_type: n1-standard-1 + zone: "{{ gcp_zone }}" + project: "{{ gcp_project }}" + auth_kind: "{{ gcp_cred_kind }}" + service_account_file: "{{ gcp_cred_file | default(omit) }}" + + - name: Destroy extra disk + google.cloud.gcp_compute_disk: + name: "{{ resource_name }}-extra" + state: absent + zone: "{{ gcp_zone }}" + project: "{{ gcp_project }}" + auth_kind: "{{ gcp_cred_kind }}" + service_account_file: "{{ gcp_cred_file | default(omit) }}" diff --git a/tests/integration/targets/gcp_compute_instance/tasks/gvnic.yml b/tests/integration/targets/gcp_compute_instance/tasks/gvnic.yml index bc5db37c..70442eaa 100644 --- a/tests/integration/targets/gcp_compute_instance/tasks/gvnic.yml +++ b/tests/integration/targets/gcp_compute_instance/tasks/gvnic.yml @@ -9,8 +9,8 @@ google.cloud.gcp_compute_disk: name: "{{ resource_prefix }}-{{ item.key }}" size_gb: 50 - source_image: projects/rhel-cloud/global/images/rhel-9-v20250513 - zone: us-central1-a + source_image: "{{ gcp_disk_image }}" + zone: "{{ gcp_zone }}" project: "{{ gcp_project }}" auth_kind: "{{ gcp_cred_kind }}" service_account_file: "{{ gcp_cred_file | default(omit) }}" @@ -28,7 +28,7 @@ network_interfaces: - network: "{{ _network }}" nic_type: "{{ item.value if item.value != 'default' else omit }}" - zone: us-central1-a + zone: "{{ gcp_zone }}" project: "{{ gcp_project }}" auth_kind: "{{ gcp_cred_kind }}" service_account_file: "{{ gcp_cred_file | default(omit) }}" @@ -39,7 +39,7 @@ google.cloud.gcp_compute_instance_info: filters: - name = {{ resource_name }}-{{ item.key }} - zone: us-central1-a + zone: "{{ gcp_zone }}" project: "{{ gcp_project }}" auth_kind: "{{ gcp_cred_kind }}" service_account_file: "{{ gcp_cred_file | default(omit) }}" @@ -60,7 +60,7 @@ google.cloud.gcp_compute_instance: name: "{{ resource_name }}-{{ item.key }}" machine_type: n1-standard-1 - zone: us-central1-a + zone: "{{ gcp_zone }}" project: "{{ gcp_project }}" auth_kind: "{{ gcp_cred_kind }}" service_account_file: "{{ gcp_cred_file | default(omit) }}" @@ -69,7 +69,7 @@ - name: Delete disk google.cloud.gcp_compute_disk: name: "{{ resource_prefix }}-{{ item.key }}" - zone: us-central1-a + zone: "{{ gcp_zone }}" project: "{{ gcp_project }}" auth_kind: "{{ gcp_cred_kind }}" service_account_file: "{{ gcp_cred_file | default(omit) }}" diff --git a/tests/integration/targets/gcp_compute_instance/tasks/main.yml b/tests/integration/targets/gcp_compute_instance/tasks/main.yml index 1cd682ce..bb66eed7 100644 --- a/tests/integration/targets/gcp_compute_instance/tasks/main.yml +++ b/tests/integration/targets/gcp_compute_instance/tasks/main.yml @@ -2,7 +2,7 @@ - name: Generated tests ansible.builtin.include_tasks: autogen.yml -- name: Test nic_type scenarios +- name: Extra non-autogen tests block: - name: Create network google.cloud.gcp_compute_network: @@ -14,15 +14,23 @@ state: present register: _network - - name: Loop over testcase + - name: Test GVNIC test cases ansible.builtin.include_tasks: gvnic.yml loop: "{{ testcases | dict2items }}" vars: + gcp_disk_image: projects/centos-cloud/global/images/family/centos-stream-9 + gcp_zone: us-central1-a testcases: gvnic: GVNIC virtio: VIRTIO_NET default: default + - name: Test attach disks + ansible.builtin.include_tasks: attach-disks.yml + vars: + gcp_disk_image: projects/centos-cloud/global/images/family/centos-stream-9 + gcp_zone: us-central1-a + always: - name: Delete network google.cloud.gcp_compute_network: