From 722d8136b2f87601a722956465745c5e5d372e62 Mon Sep 17 00:00:00 2001 From: Rui Chen Date: Fri, 13 Jul 2018 14:57:07 +0800 Subject: [PATCH] Run ansible tests against specific public cloud We want to run ansible tests against some public cloud, but there are always some API policy limits for regular users in public cloud, like: can not create external network. So we define some variables that can be changed for different limit scenairoes. 1. Create port in external or internal network. 2. Specified public pool name when launching server. 3. Create simple router, then add interface and external gateway, change test step order, so that do not create external network when network_external=false. 4. Create subnet with enable_dhcp true or false. 5. Make ANSIBLE_VAR_* environment variables can be passed into virtual env. Change-Id: I69473756b23a6cb525e0f9bb40d09e6ed9880782 --- .../ansible/roles/port/defaults/main.yml | 1 + .../tests/ansible/roles/port/tasks/main.yml | 2 +- .../ansible/roles/router/defaults/main.yml | 1 + .../tests/ansible/roles/router/tasks/main.yml | 57 ++++++++++++------- .../ansible/roles/server/defaults/main.yaml | 1 + .../tests/ansible/roles/server/tasks/main.yml | 2 +- .../ansible/roles/subnet/defaults/main.yml | 1 + .../tests/ansible/roles/subnet/tasks/main.yml | 2 +- tox.ini | 2 +- 9 files changed, 46 insertions(+), 23 deletions(-) diff --git a/openstack/tests/ansible/roles/port/defaults/main.yml b/openstack/tests/ansible/roles/port/defaults/main.yml index a81f6a2ea..212afe346 100644 --- a/openstack/tests/ansible/roles/port/defaults/main.yml +++ b/openstack/tests/ansible/roles/port/defaults/main.yml @@ -1,4 +1,5 @@ network_name: ansible_port_network +network_external: true subnet_name: ansible_port_subnet port_name: ansible_port secgroup_name: ansible_port_secgroup diff --git a/openstack/tests/ansible/roles/port/tasks/main.yml b/openstack/tests/ansible/roles/port/tasks/main.yml index 05ce1e20f..5011d97ba 100644 --- a/openstack/tests/ansible/roles/port/tasks/main.yml +++ b/openstack/tests/ansible/roles/port/tasks/main.yml @@ -4,7 +4,7 @@ cloud: "{{ cloud }}" state: present name: "{{ network_name }}" - external: True + external: "{{ network_external }}" - name: Create subnet os_subnet: diff --git a/openstack/tests/ansible/roles/router/defaults/main.yml b/openstack/tests/ansible/roles/router/defaults/main.yml index df5cbeb55..f7d53933a 100644 --- a/openstack/tests/ansible/roles/router/defaults/main.yml +++ b/openstack/tests/ansible/roles/router/defaults/main.yml @@ -1,2 +1,3 @@ external_network_name: ansible_external_net +network_external: true router_name: ansible_router diff --git a/openstack/tests/ansible/roles/router/tasks/main.yml b/openstack/tests/ansible/roles/router/tasks/main.yml index 9987f4c9b..083d4f066 100644 --- a/openstack/tests/ansible/roles/router/tasks/main.yml +++ b/openstack/tests/ansible/roles/router/tasks/main.yml @@ -1,11 +1,5 @@ --- -- name: Create external network - os_network: - cloud: "{{ cloud }}" - state: present - name: "{{ external_network_name }}" - external: true - +# Regular user operation - name: Create internal network os_network: cloud: "{{ cloud }}" @@ -14,19 +8,11 @@ external: false - name: Create subnet1 - os_subnet: - cloud: "{{ cloud }}" - state: present - network_name: "{{ external_network_name }}" - name: shade_subnet1 - cidr: 10.6.6.0/24 - -- name: Create subnet2 os_subnet: cloud: "{{ cloud }}" state: present network_name: "{{ network_name }}" - name: shade_subnet2 + name: shade_subnet1 cidr: 10.7.7.0/24 - name: Create router @@ -34,16 +20,45 @@ cloud: "{{ cloud }}" state: present name: "{{ router_name }}" - network: "{{ external_network_name }}" -- name: Update router +- name: Update router (add interface) + os_router: + cloud: "{{ cloud }}" + state: present + name: "{{ router_name }}" + interfaces: + - shade_subnet1 + +# Admin operation +- name: Create external network + os_network: + cloud: "{{ cloud }}" + state: present + name: "{{ external_network_name }}" + external: "{{ network_external }}" + when: + - network_external + +- name: Create subnet2 + os_subnet: + cloud: "{{ cloud }}" + state: present + network_name: "{{ external_network_name }}" + name: shade_subnet2 + cidr: 10.6.6.0/24 + when: + - network_external + +- name: Update router (add external gateway) os_router: cloud: "{{ cloud }}" state: present name: "{{ router_name }}" network: "{{ external_network_name }}" interfaces: - - shade_subnet2 + - shade_subnet1 + when: + - network_external - name: Delete router os_router: @@ -62,6 +77,8 @@ cloud: "{{ cloud }}" state: absent name: shade_subnet2 + when: + - network_external - name: Delete internal network os_network: @@ -74,3 +91,5 @@ cloud: "{{ cloud }}" state: absent name: "{{ external_network_name }}" + when: + - network_external diff --git a/openstack/tests/ansible/roles/server/defaults/main.yaml b/openstack/tests/ansible/roles/server/defaults/main.yaml index 3db7edf8a..7d7ec01dc 100644 --- a/openstack/tests/ansible/roles/server/defaults/main.yaml +++ b/openstack/tests/ansible/roles/server/defaults/main.yaml @@ -1,3 +1,4 @@ server_network: private server_name: ansible_server flavor: m1.tiny +floating_ip_pool_name: public diff --git a/openstack/tests/ansible/roles/server/tasks/main.yml b/openstack/tests/ansible/roles/server/tasks/main.yml index f25bc2ef6..f2ff6f639 100644 --- a/openstack/tests/ansible/roles/server/tasks/main.yml +++ b/openstack/tests/ansible/roles/server/tasks/main.yml @@ -54,7 +54,7 @@ flavor: "{{ flavor }}" network: "{{ server_network }}" floating_ip_pools: - - public + - "{{ floating_ip_pool_name }}" wait: true register: server diff --git a/openstack/tests/ansible/roles/subnet/defaults/main.yml b/openstack/tests/ansible/roles/subnet/defaults/main.yml index b9df9212a..5ccc85abc 100644 --- a/openstack/tests/ansible/roles/subnet/defaults/main.yml +++ b/openstack/tests/ansible/roles/subnet/defaults/main.yml @@ -1 +1,2 @@ subnet_name: shade_subnet +enable_subnet_dhcp: false diff --git a/openstack/tests/ansible/roles/subnet/tasks/main.yml b/openstack/tests/ansible/roles/subnet/tasks/main.yml index 8d70cd2b5..a7ca490ad 100644 --- a/openstack/tests/ansible/roles/subnet/tasks/main.yml +++ b/openstack/tests/ansible/roles/subnet/tasks/main.yml @@ -11,7 +11,7 @@ network_name: "{{ network_name }}" name: "{{ subnet_name }}" state: present - enable_dhcp: false + enable_dhcp: "{{ enable_subnet_dhcp }}" dns_nameservers: - 8.8.8.7 - 8.8.8.8 diff --git a/tox.ini b/tox.ini index 3f1666631..b70fd9563 100644 --- a/tox.ini +++ b/tox.ini @@ -75,7 +75,7 @@ commands = [testenv:ansible] # Need to pass some env vars for the Ansible playbooks basepython = {env:OPENSTACKSDK_TOX_PYTHON:python2} -passenv = HOME USER +passenv = HOME USER ANSIBLE_VAR_* deps = {[testenv]deps} ansible