This commit adds a devstack multinode Zuul CI job. Playbooks to
install requirements on the hosts as well as set them up for SSH
access are included.

Change-Id: I1dce6bdab8cb54de50d787e58ccadce03ea44a2b
This commit is contained in:
Artom Lifshitz 2019-10-24 14:46:38 -04:00
parent 8b3181615a
commit 2720f4bb54
4 changed files with 103 additions and 0 deletions

View File

@ -1,3 +1,64 @@
# TODO(artom) Once https://review.opendev.org/#/c/679656/ merges, we can unify
# the nodeset names and use the one in Nova. Until then, have a different name
# here.
- nodeset:
name: multi-numa-multinode
nodes:
- name: controller
label: multi-numa-ubuntu-bionic
- name: compute
label: multi-numa-ubuntu-bionic
groups:
# Node where tests are executed and test results collected
- name: tempest
nodes:
- controller
# Nodes running the compute service
- name: compute
nodes:
- controller
- compute
# Nodes that are not the controller
- name: subnode
nodes:
- compute
# Switch node for multinode networking setup
- name: switch
nodes:
- controller
# Peer nodes for multinode networking setup
- name: peers
nodes:
- compute
- job:
name: whitebox-multinode-devstack
nodeset: multi-numa-multinode
parent: tempest-multinode-full-py3
description: |
Devstack multinode job.
required-projects:
x/whitebox-tempest-plugin
pre-run: playbooks/whitebox.yaml
vars:
tox_envlist: all
tempest_concurrency: 1
tempest_test_regex: ^whitebox_tempest_plugin\.
devstack_plugins:
whitebox-tempest-plugin: https://opendev.org/x/whitebox-tempest-plugin.git
devstack_localrc:
MAX_COMPUTE_NODES: 2
LIBVIRT_TYPE: kvm
TEMPEST_PLUGINS: /opt/stack/whitebox-tempest-plugin
WHITEBOX_PRIVKEY_PATH: /home/tempest/.ssh/id_rsa
group-vars:
subnode:
num_hugepages: 2048
devstack_localrc:
LIBVIRT_TYPE: kvm
tempest:
num_hugepages: 512
- project:
name: x/whitebox-tempest-plugin
templates:
@ -5,3 +66,9 @@
- openstack-python35-jobs
- openstack-python36-jobs
- openstack-python37-jobs
check:
jobs:
- whitebox-multinode-devstack
gate:
jobs:
- whitebox-multinode-devstack

4
playbooks/whitebox.yaml Normal file
View File

@ -0,0 +1,4 @@
- hosts: all
roles:
- whitebox-common
- whitebox-nova-compute

View File

@ -0,0 +1,23 @@
# NOTE(artom) We need to install cruini and iniparse from source until
# https://github.com/pixelb/crudini/issues/58 and
# https://github.com/candlepin/python-iniparse/issues/5 are on fixed PyPi.
- name: crudini and iniparse
pip:
name: "{{ item }}"
state: present
with_items:
- git+https://github.com/pixelb/crudini.git#egg=crudini
- git+https://github.com/candlepin/python-iniparse.git#egg=iniparse
become: yes
# NOTE(artom) The run-tempest role runs as the tempest user, so we need to give
# the tempest user SSH access to all hosts. Devstack's orchestrate-devstack
# role should have put a pubkey into the stack user's authorized_keys, so if we
# put the corresponding private key in the tempest user's .ssh, things should
# magically work.
- name: Setup tempest SSH key
include_role:
name: copy-build-sshkey
vars:
copy_sshkey_target_user: 'tempest'
become: yes

View File

@ -0,0 +1,9 @@
- name: Install numactl
package:
name: numactl
state: present
become: yes
- name: Allocate hugepages
shell: echo {{ num_hugepages }} > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
become: yes