From 89be01f2a2c2bd7a7bfdb634e1e1640e0326ef4e Mon Sep 17 00:00:00 2001
From: Rene Moser <mail@renemoser.net>
Date: Fri, 7 Jul 2017 13:47:44 +0200
Subject: [PATCH] cloudstack: cs_instance_nic: add integration tests

---
 .../targets/cs_instance_nic/aliases           |   2 +
 .../targets/cs_instance_nic/meta/main.yml     |   3 +
 .../targets/cs_instance_nic/tasks/main.yml    | 306 ++++++++++++++++++
 3 files changed, 311 insertions(+)
 create mode 100644 test/integration/targets/cs_instance_nic/aliases
 create mode 100644 test/integration/targets/cs_instance_nic/meta/main.yml
 create mode 100644 test/integration/targets/cs_instance_nic/tasks/main.yml

diff --git a/test/integration/targets/cs_instance_nic/aliases b/test/integration/targets/cs_instance_nic/aliases
new file mode 100644
index 00000000000..ba249b99d73
--- /dev/null
+++ b/test/integration/targets/cs_instance_nic/aliases
@@ -0,0 +1,2 @@
+cloud/cs
+posix/ci/cloud/cs
diff --git a/test/integration/targets/cs_instance_nic/meta/main.yml b/test/integration/targets/cs_instance_nic/meta/main.yml
new file mode 100644
index 00000000000..e9a5b9eeaef
--- /dev/null
+++ b/test/integration/targets/cs_instance_nic/meta/main.yml
@@ -0,0 +1,3 @@
+---
+dependencies:
+  - cs_common
diff --git a/test/integration/targets/cs_instance_nic/tasks/main.yml b/test/integration/targets/cs_instance_nic/tasks/main.yml
new file mode 100644
index 00000000000..3a2e541cbe3
--- /dev/null
+++ b/test/integration/targets/cs_instance_nic/tasks/main.yml
@@ -0,0 +1,306 @@
+---
+- name: setup network
+  cs_network:
+    name: "net_nic"
+    zone: "{{ cs_common_zone_adv }}"
+    network_offering: DefaultSharedNetworkOffering
+    network_domain: example.com
+    vlan: 1234
+    start_ip: 10.100.123.11
+    end_ip: 10.100.123.250
+    gateway: 10.100.123.1
+    netmask: 255.255.255.0
+  register: net
+- name: verify setup network
+  assert:
+    that:
+    - net|success
+    - net.name == "net_nic"
+
+- name: setup instance
+  cs_instance:
+    name: "instance-nic-vm"
+    template: "{{ cs_common_template }}"
+    service_offering: "{{ cs_common_service_offering }}"
+    zone: "{{ cs_common_zone_adv }}"
+    network: "net_nic"
+    state: stopped
+  register: instance
+- name: verify setup instance
+  assert:
+    that:
+    - instance|success
+    - instance.name == "instance-nic-vm"
+    - instance.state == "Stopped"
+
+- name: setup network 2
+  cs_network:
+    name: "net_nic2"
+    zone: "{{ cs_common_zone_adv }}"
+    network_offering: DefaultSharedNetworkOffering
+    network_domain: example.com
+    vlan: 1235
+    start_ip: 10.100.124.11
+    end_ip: 10.100.124.250
+    gateway: 10.100.124.1
+    netmask: 255.255.255.0
+  register: net
+- name: verify setup network 2
+  assert:
+    that:
+    - net|success
+    - net.name == "net_nic2"
+
+- name: setup absent nic
+  cs_instance_nic:
+    vm: "instance-nic-vm"
+    network: "net_nic2"
+    zone: "{{ cs_common_zone_adv }}"
+    state: absent
+  register: nic
+- name: verify setup absent nic
+  assert:
+    that:
+    - nic|success
+
+- name: test fail missing params
+  cs_instance_nic:
+  ignore_errors: true
+  register: nic
+- name: verify test fail missing params
+  assert:
+    that:
+    - nic|failed
+    - "nic.msg.startswith('missing required arguments: ')"
+
+- name: test create nic in check mode
+  cs_instance_nic:
+    vm: "instance-nic-vm"
+    network: "net_nic2"
+    zone: "{{ cs_common_zone_adv }}"
+  check_mode: yes
+  register: nic
+- name: verify test create nic in check mode
+  assert:
+    that:
+    - nic|success
+    - nic|changed
+    - nic.network == "net_nic2"
+    - nic.vm == "instance-nic-vm"
+    - nic.zone == "{{ cs_common_zone_adv }}"
+
+- name: test create nic
+  cs_instance_nic:
+    vm: "instance-nic-vm"
+    network: "net_nic2"
+    ip_address: 10.100.124.42
+    zone: "{{ cs_common_zone_adv }}"
+  register: nic
+- name: verify test create nic
+  assert:
+    that:
+    - nic|success
+    - nic|changed
+    - nic.ip_address == "10.100.124.42"
+    - nic.netmask == "255.255.255.0"
+    - nic.network == "net_nic2"
+    - nic.vm == "instance-nic-vm"
+    - nic.zone == "{{ cs_common_zone_adv }}"
+    - nic.mac_address is defined
+
+- name: test create nic idempotence
+  cs_instance_nic:
+    vm: "instance-nic-vm"
+    network: "net_nic2"
+    ip_address: 10.100.124.42
+    zone: "{{ cs_common_zone_adv }}"
+  register: nic
+- name: verify test create nic idempotence
+  assert:
+    that:
+    - nic|success
+    - not nic|changed
+    - nic.ip_address == "10.100.124.42"
+    - nic.netmask == "255.255.255.0"
+    - nic.network == "net_nic2"
+    - nic.vm == "instance-nic-vm"
+    - nic.zone == "{{ cs_common_zone_adv }}"
+    - nic.mac_address is defined
+
+- name: test create nic without ip address idempotence
+  cs_instance_nic:
+    vm: "instance-nic-vm"
+    network: "net_nic2"
+    zone: "{{ cs_common_zone_adv }}"
+  register: nic
+- name: verify test create nic without ip address idempotence
+  assert:
+    that:
+    - nic|success
+    - not nic|changed
+    - nic.ip_address == "10.100.124.42"
+    - nic.netmask == "255.255.255.0"
+    - nic.network == "net_nic2"
+    - nic.vm == "instance-nic-vm"
+    - nic.zone == "{{ cs_common_zone_adv }}"
+    - nic.mac_address is defined
+
+- name: test update nic in check mode
+  cs_instance_nic:
+    vm: "instance-nic-vm"
+    network: "net_nic2"
+    ip_address: 10.100.124.23
+    zone: "{{ cs_common_zone_adv }}"
+  check_mode: yes
+  register: nic
+- name: verify test update nic in check mode
+  assert:
+    that:
+    - nic|success
+    - nic|changed
+    - nic.ip_address == "10.100.124.42"
+    - nic.netmask == "255.255.255.0"
+    - nic.network == "net_nic2"
+    - nic.vm == "instance-nic-vm"
+    - nic.zone == "{{ cs_common_zone_adv }}"
+    - nic.mac_address is defined
+
+- name: test update nic
+  cs_instance_nic:
+    vm: "instance-nic-vm"
+    network: "net_nic2"
+    ip_address: 10.100.124.23
+    zone: "{{ cs_common_zone_adv }}"
+  register: nic
+- name: verify test update nic
+  assert:
+    that:
+    - nic|success
+    - nic|changed
+    - nic.ip_address == "10.100.124.23"
+    - nic.netmask == "255.255.255.0"
+    - nic.network == "net_nic2"
+    - nic.vm == "instance-nic-vm"
+    - nic.zone == "{{ cs_common_zone_adv }}"
+    - nic.mac_address is defined
+
+- name: test update nic idempotence
+  cs_instance_nic:
+    vm: "instance-nic-vm"
+    network: "net_nic2"
+    ip_address: 10.100.124.23
+    zone: "{{ cs_common_zone_adv }}"
+  register: nic
+- name: verify test update nic idempotence
+  assert:
+    that:
+    - nic|success
+    - not nic|changed
+    - nic.ip_address == "10.100.124.23"
+    - nic.netmask == "255.255.255.0"
+    - nic.network == "net_nic2"
+    - nic.vm == "instance-nic-vm"
+    - nic.zone == "{{ cs_common_zone_adv }}"
+    - nic.mac_address is defined
+
+- name: test update nic without ip address idempotence
+  cs_instance_nic:
+    vm: "instance-nic-vm"
+    network: "net_nic2"
+    zone: "{{ cs_common_zone_adv }}"
+  register: nic
+- name: verify test update nic without ip address idempotence
+  assert:
+    that:
+    - nic|success
+    - not nic|changed
+    - nic.ip_address == "10.100.124.23"
+    - nic.netmask == "255.255.255.0"
+    - nic.network == "net_nic2"
+    - nic.vm == "instance-nic-vm"
+    - nic.zone == "{{ cs_common_zone_adv }}"
+    - nic.mac_address is defined
+
+- name: test remove nic in check mode
+  cs_instance_nic:
+    vm: "instance-nic-vm"
+    network: "net_nic2"
+    zone: "{{ cs_common_zone_adv }}"
+    state: absent
+  check_mode: yes
+  register: nic
+- name: verify test remove nic in check mode
+  assert:
+    that:
+    - nic|success
+    - nic|changed
+    - nic.ip_address == "10.100.124.23"
+    - nic.netmask == "255.255.255.0"
+    - nic.network == "net_nic2"
+    - nic.vm == "instance-nic-vm"
+    - nic.zone == "{{ cs_common_zone_adv }}"
+    - nic.mac_address is defined
+
+- name: test remove nic
+  cs_instance_nic:
+    vm: "instance-nic-vm"
+    network: "net_nic2"
+    zone: "{{ cs_common_zone_adv }}"
+    state: absent
+  register: nic
+- name: verify test remove nic
+  assert:
+    that:
+    - nic|success
+    - nic|changed
+    - nic.ip_address == "10.100.124.23"
+    - nic.netmask == "255.255.255.0"
+    - nic.network == "net_nic2"
+    - nic.vm == "instance-nic-vm"
+    - nic.zone == "{{ cs_common_zone_adv }}"
+    - nic.mac_address is defined
+
+- name: test remove nic idempotence
+  cs_instance_nic:
+    vm: "instance-nic-vm"
+    network: "net_nic2"
+    zone: "{{ cs_common_zone_adv }}"
+    state: absent
+  register: nic
+- name: verify test remove nic idempotence
+  assert:
+    that:
+    - nic|success
+    - not nic|changed
+
+- name: cleanup instance
+  cs_instance:
+    name: "instance-nic-vm"
+    state: expunged
+  register: instance
+- name: verify cleanup instance
+  assert:
+    that:
+    - instance|success
+
+- name: cleanup network
+  cs_network:
+    name: "net_nic"
+    zone: "{{ cs_common_zone_adv }}"
+    state: absent
+  register: net
+- name: verify cleanup network
+  assert:
+    that:
+    - net|success
+
+- name: cleanup network 2
+  cs_network:
+    name: "net_nic2"
+    zone: "{{ cs_common_zone_adv }}"
+    state: absent
+  register: net
+- name: verify cleanup network 2
+  assert:
+    that:
+    - net|success