Clean up tests a bit

1. Remove tests/test-configure-octavia.yml because the 'shade' package
   does not need to be installed again - this is already done by the
   role test preparation.

2. Remove the key generation as the keys are already generated in the
   common tests playbook 'test-prepare-keys.yml'.

3. Add some spacing between tasks to make it more readable.

4. Implement the extra packages needed in test-requirements.txt instead
   of trying to use a task to install them, because doing it in Ansible
   makes understanding the venv in relation to the inventory complicated..

5. Move the vars_files argument to the top of the play to make it easier
   to find and more uniform with other plays in OSA.

6. Switch from using octavia_ansible_endpoint_type to a hard-coded
   endpoint, then remove the octavia_ansible_endpoint_type var.

7. Switch from using the 'endpoint_type' argument for the openstack
   modules to using the more modern 'interface' argument.

8. Remove the 'run_once' argument on the 'Upload key to nova' task
   because only localhost is targeted, so the argument is moot.

9. Remove the 'Set VIP fact' task in favor of just using the 'vip_output'
   register in the 'Test the Listener' task. Setting a fact is pointless.

10. To help the existing patches pass, we add python-pip to the distro
    packages. This will be reverted later once the required changes
    to remove this requirement have merged.

Depends-On: https://review.openstack.org/589248
Change-Id: I46962090f7baf4227e838e125fd318245f2bcb85
This commit is contained in:
Jesse Pretorius 2018-08-06 19:28:33 +01:00
parent 1a5eeb06d8
commit bd9f0c0723
5 changed files with 28 additions and 78 deletions

7
test-requirements.txt Normal file
View File

@ -0,0 +1,7 @@
# These requirements are used in addition to the test-requirements.txt
# set out in the openstack-ansible-tests repository. Requirements here
# should *only* be for the purpose of including in the runtime venv
# for test purposes. Anything that is destined to be used in production
# should not be here, but instead in a *_pip_packages list.
python-octaviaclient>=1.6.0 # Apache-2.0

View File

@ -1,34 +0,0 @@
---
# Copyright 2016, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
- name: Setup localhost requirements
hosts: localhost
become: True
gather_facts: True
tasks:
- name: Install pip requirements
pip:
name: "shade"
state: "{{ octavia_pip_package_state }}"
extra_args: >-
{{ octavia_developer_mode | ternary(pip_install_developer_constraints | default('--constraint /opt/developer-pip-constraints.txt'), '') }}
{{ (pip_install_upper_constraints is defined) | ternary('--constraint ' + pip_install_upper_constraints | default(''),'') }}
{{ pip_install_options | default('') }}
register: install_packages
until: install_packages is success
retries: 5
delay: 2
vars_files:
- common/test-vars.yml

View File

@ -15,14 +15,16 @@
- name: Test Octavia - name: Test Octavia
hosts: localhost hosts: localhost
user: root connection: local
gather_facts: false gather_facts: no
vars_files:
- common/test-vars.yml
vars: vars:
ansible_python_interpreter: "{{ ansible_playbook_python }}"
octavia_service_user_name: octavia octavia_service_user_name: octavia
octavia_service_project_name: service octavia_service_project_name: service
octavia_service_user_domain_id: default octavia_service_user_domain_id: default
octavia_service_project_domain_id: default octavia_service_project_domain_id: default
octavia_ansible_endpoint_type: internal
env: env:
OS_ENDPOINT_TYPE: internalURL OS_ENDPOINT_TYPE: internalURL
OS_INTERFACE: internalURL OS_INTERFACE: internalURL
@ -38,26 +40,6 @@
OS_IDENTITY_API_VERSION: 3 OS_IDENTITY_API_VERSION: 3
OS_AUTH_VERSION: 3 OS_AUTH_VERSION: 3
tasks: tasks:
- name: Install pip requirements
pip:
name: "{{ item }}"
state: "{{ octavia_pip_package_state }}"
extra_args: >-
{{ octavia_developer_mode | ternary(pip_install_developer_constraints | default('--constraint /opt/developer-pip-constraints.txt'), '') }}
{{ (pip_install_upper_constraints is defined) | ternary('--constraint ' + pip_install_upper_constraints | default(''),'') }}
{{ pip_install_options | default('') }}
register: install_packages
until: install_packages is success
retries: 5
delay: 2
with_items:
- "python-neutronclient"
- "python-glanceclient"
- "shade"
- "python-octaviaclient"
- "python-openstackclient"
- "cmd2<0.9.0" # >=0.9.0 is python3 only
- name: Ensure public network exists - name: Ensure public network exists
os_network: os_network:
auth: auth:
@ -67,12 +49,13 @@
project_name: "{{ octavia_service_project_name }}" project_name: "{{ octavia_service_project_name }}"
user_domain_name: "{{ octavia_service_user_domain_id }}" user_domain_name: "{{ octavia_service_user_domain_id }}"
project_domain_name: "{{ octavia_service_project_domain_id }}" project_domain_name: "{{ octavia_service_project_domain_id }}"
endpoint_type: "{{ octavia_ansible_endpoint_type }}" interface: admin
state: present state: present
name: "public" name: "public"
provider_network_type: "flat" provider_network_type: "flat"
provider_physical_network: "flat" provider_physical_network: "flat"
external: True external: True
- name: Ensure public subnet exists - name: Ensure public subnet exists
os_subnet: os_subnet:
auth: auth:
@ -82,18 +65,12 @@
project_name: "{{ octavia_service_project_name }}" project_name: "{{ octavia_service_project_name }}"
user_domain_name: "{{ octavia_service_user_domain_id }}" user_domain_name: "{{ octavia_service_user_domain_id }}"
project_domain_name: "{{ octavia_service_project_domain_id }}" project_domain_name: "{{ octavia_service_project_domain_id }}"
endpoint_type: "{{ octavia_ansible_endpoint_type }}" interface: admin
state: present state: present
network_name: "public" network_name: "public"
name: "public-subnet" name: "public-subnet"
cidr: "10.1.3.0/24" cidr: "10.1.3.0/24"
- name: Create ssh-key
shell: >
cat /dev/zero | ssh-keygen -q -N ""
args:
creates: "{{ lookup('env', 'HOME') }}/.ssh/id_rsa"
tags:
- skip_ansible_lint
- name: Upload key to nova - name: Upload key to nova
os_keypair: os_keypair:
auth: auth:
@ -103,11 +80,10 @@
project_name: "{{ octavia_service_project_name }}" project_name: "{{ octavia_service_project_name }}"
user_domain_name: "{{ octavia_service_user_domain_id }}" user_domain_name: "{{ octavia_service_user_domain_id }}"
project_domain_name: "{{ octavia_service_project_domain_id }}" project_domain_name: "{{ octavia_service_project_domain_id }}"
endpoint_type: "{{ octavia_ansible_endpoint_type }}" interface: admin
state: present state: present
name: "octavia_key" name: "octavia_key"
public_key_file: "{{ lookup('env', 'HOME') }}/.ssh/id_rsa.pub" public_key_file: "{{ lookup('env', 'HOME') }}/.ssh/id_rsa.pub"
run_once: true
- name: Create a loadbalancer - name: Create a loadbalancer
shell: > shell: >
@ -115,6 +91,7 @@
environment: "{{ env }}" environment: "{{ env }}"
tags: tags:
- skip_ansible_lint - skip_ansible_lint
- name: Wait until LB is active - name: Wait until LB is active
shell: > shell: >
openstack loadbalancer show test-lb -c provisioning_status -f value openstack loadbalancer show test-lb -c provisioning_status -f value
@ -126,12 +103,14 @@
delay: 10 delay: 10
tags: tags:
- skip_ansible_lint - skip_ansible_lint
- name: Create a listener - name: Create a listener
shell: > shell: >
openstack loadbalancer listener create --protocol HTTP --protocol-port 80 --name listener test-lb openstack loadbalancer listener create --protocol HTTP --protocol-port 80 --name listener test-lb
environment: "{{ env }}" environment: "{{ env }}"
tags: tags:
- skip_ansible_lint - skip_ansible_lint
- name: Wait until Listener is active - name: Wait until Listener is active
shell: > shell: >
openstack loadbalancer show test-lb -c provisioning_status -f value openstack loadbalancer show test-lb -c provisioning_status -f value
@ -143,6 +122,7 @@
delay: 10 delay: 10
tags: tags:
- skip_ansible_lint - skip_ansible_lint
- name: Run Show (for debugging) - name: Run Show (for debugging)
shell: > shell: >
openstack loadbalancer show test-lb openstack loadbalancer show test-lb
@ -159,14 +139,13 @@
register: vip_output register: vip_output
tags: tags:
- skip_ansible_lint - skip_ansible_lint
- name: Set VIP fact
set_fact:
vip: "{{ vip_output.stdout }}"
- name: Test the Listener - name: Test the Listener
uri: uri:
url: "http://{{ vip }}" url: "http://{{ vip_output.stdout }}"
status_code: 503 status_code: 503
when: test_octavia_amphora | bool when: test_octavia_amphora | bool
- name: Delete LoadBalancer - name: Delete LoadBalancer
shell: > shell: >
openstack loadbalancer delete --cascade test-lb openstack loadbalancer delete --cascade test-lb
@ -177,5 +156,3 @@
delay: 15 delay: 15
tags: tags:
- skip_ansible_lint - skip_ansible_lint
vars_files:
- common/test-vars.yml

View File

@ -35,7 +35,6 @@
- include: common/test-install-nova.yml - include: common/test-install-nova.yml
# Install Octavia # Install Octavia
- include: test-configure-octavia.yml
- include: test-install-octavia.yml - include: test-install-octavia.yml
# Test # Test

View File

@ -17,7 +17,8 @@
cache_timeout: 600 cache_timeout: 600
octavia_distro_packages: octavia_distro_packages:
- iptables-persistent
- netfilter-persistent
- libxml2-dev
- git - git
- iptables-persistent
- libxml2-dev
- netfilter-persistent
- python-pip