Browse Source

Remove DevStack support from tobiko repository

- Use Tobiko project as default tests directory on zuul jobs
- Remove DevStack plugin

Change-Id: I3f1ab818d835bb5db050d6cbe64dc20fc98b6610
changes/62/755262/8
Federico Ressi 1 year ago
parent
commit
b9574a0aa4
  1. 123
      Vagrantfile
  2. 26
      devstack/README.rst
  3. 171
      devstack/plugin.sh
  4. 43
      devstack/settings
  5. 74
      devstack/vagrant/local.conf
  6. 97
      devstack/vagrant/ovn-local.conf
  7. 53
      devstack/vagrant/provision.bash
  8. 6
      playbooks/devstack/post.yaml
  9. 12
      playbooks/devstack/pre.yaml
  10. 20
      playbooks/devstack/run.yaml
  11. 2
      roles/tobiko-zuul/vars/main.yaml
  12. 30
      vagrant/devstack/local.conf
  13. 22
      vagrant/devstack/provision.yaml
  14. 231
      zuul.d/devstack.yaml
  15. 72
      zuul.d/nodes.yaml
  16. 9
      zuul.d/project.yaml

123
Vagrantfile

@ -1,123 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
# Customize the count of CPU cores on the VM
CPUS = 4
# Customize the amount of memory on the VM
MEMORY = ENV.fetch("VM_SIZE", "4096").to_i
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
BOX = ENV.fetch("VM_BOX", "generic/centos8")
# Machine host name
HOSTNAME = "tobiko"
# Top vagrantfile dir
VAGRANTFILE_DIR = File.dirname(__FILE__)
# Source provision playbook
PROVISION_PLAYBOOK = ENV.fetch(
"PROVISION_PLAYBOOK", "#{VAGRANTFILE_DIR}/vagrant/devstack/provision.yaml")
# Host IP address to be assigned to OpenStack in DevStack
HOST_IP = "192.168.33.10"
# Red Hat supscription parameters
REDHAT_ACTIVATIONKEY = ENV.fetch("REDHAT_ACTIVATIONKEY", "")
REDHAT_USERNAME = ENV.fetch("REDHAT_USERNAME", "")
REDHAT_PASSWORD = ENV.fetch("REDHAT_PASSWORD", "")
# Local directory from where look for devstack project
DEVSTACK_SRC_DIR = ENV.fetch(
"DEVSTACK_SRC_DIR", "#{File.dirname(VAGRANTFILE_DIR)}/devstack")
# Local directory from where looking for tobiko project files
TOBIKO_SRC_DIR = ENV.fetch("TOBIKO_SRC_DIR", VAGRANTFILE_DIR)
# Local directory from where looking for requirements project files
REQUIREMENTS_SRC_DIR = ENV.fetch(
"REQUIREMENTS_SRC_DIR", "#{File.dirname(VAGRANTFILE_DIR)}/requirements")
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = BOX
# config.vm.box_version = "< 3.0"
config.vm.hostname = HOSTNAME
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# Create a private network, which allows host-only access to the machine
# using a specific IP.
config.vm.network "private_network", ip: HOST_IP
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = false
vb.cpus = CPUS
vb.memory = MEMORY
end
config.vm.provider "libvirt" do |libvirt|
libvirt.cpus = CPUS
libvirt.memory = MEMORY
end
# Run provision playbook
config.vm.provision "ansible" do |ansible|
ansible.limit = 'all'
ansible.playbook = PROVISION_PLAYBOOK
ansible.extra_vars = ansible.extra_vars = {
'redhat_activationkey' => REDHAT_ACTIVATIONKEY,
'redhat_username' => REDHAT_USERNAME,
'redhat_password' => REDHAT_PASSWORD,
'devstack_src_dir' => DEVSTACK_SRC_DIR,
'requirements_src_dir' => REQUIREMENTS_SRC_DIR,
'tobiko_src_dir' => TOBIKO_SRC_DIR,
}
end
end

26
devstack/README.rst

@ -1,26 +0,0 @@
====================
Enabling in Devstack
====================
**WARNING**: the stack.sh script must be run in a disposable VM that is not
being created automatically, see the README.md file in the "devstack"
repository. See contrib/vagrant to create a vagrant VM.
1. Download DevStack::
git clone https://opendev.org/openstack/devstack.git
cd devstack
2. Add this repo as an external repository::
> cat local.conf
[[local|localrc]]
enable_plugin tobiko https://opendev.org/x/tobiko
3. Tobiko require Heat to be enabled, so heat should be also enabled::
[[local|localrc]]
enable_plugin heat https://opendev.org/openstack/heat
3. Run ``stack.sh``

171
devstack/plugin.sh

@ -1,171 +0,0 @@
# Directory where this plugin.sh file is
TOBIKO_PLUGIN_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
function install_tobiko_deps {
if [ "${TOBIKO_BINDEP}" != "" ]; then
install_python3
install_bindep "${TOBIKO_DIR}/bindep.txt" test
fi
}
function configure_tobiko {
# Ensure any user can write to log file
local log_dir=$(dirname ${TOBIKO_LOG_FILE})
if ! [ -d "${log_dir}" ]; then
sudo mkdir -p "${log_dir}"
fi
if ! [ -w "${TOBIKO_LOG_FILE}" ]; then
sudo touch "${TOBIKO_LOG_FILE}"
sudo chmod ugo+rw "${TOBIKO_LOG_FILE}"
fi
# Write configuration to a new temporary file
local tobiko_conf_file=$(mktemp)
if [ -f "${TOBIKO_CONF_FILE}" ]; then
# Start from existing tobiko.conf file
cp "${TOBIKO_CONF_FILE}" "${tobiko_conf_file}"
fi
configure_tobiko_default "${tobiko_conf_file}"
configure_tobiko_cirros "${tobiko_conf_file}"
configure_tobiko_glance "${tobiko_conf_file}"
configure_tobiko_keystone "${tobiko_conf_file}"
configure_tobiko_nova "${tobiko_conf_file}"
configure_tobiko_neutron "${tobiko_conf_file}"
echo_summary "Apply changes to actual ${TOBIKO_CONF_FILE} file."
sudo mkdir -p $(dirname "${TOBIKO_CONF_FILE}")
sudo mv "${tobiko_conf_file}" "${TOBIKO_CONF_FILE}"
sudo chmod ugo+r "${TOBIKO_CONF_FILE}"
echo "${TOBIKO_CONF_FILE} file content:"
echo --------------------------------
cat "${TOBIKO_CONF_FILE}"
echo --------------------------------
}
function configure_tobiko_cirros {
echo_summary "Write [cirros] section to ${TOBIKO_CONF_FILE}"
local tobiko_conf_file=$1
iniset_nonempty "${tobiko_conf_file}" cirros name "${TOBIKO_CIRROS_IMAGE_NAME}"
iniset_nonempty "${tobiko_conf_file}" cirros url "${TOBIKO_CIRROS_IMAGE_URL}"
iniset_nonempty "${tobiko_conf_file}" cirros file "${TOBIKO_CIRROS_IMAGE_FILE}"
iniset_nonempty "${tobiko_conf_file}" cirros username "${TOBIKO_CIRROS_USERNAME}"
iniset_nonempty "${tobiko_conf_file}" cirros password "${TOBIKO_CIRROS_PASSWORD}"
}
function configure_tobiko_default {
echo_summary "Write [DEFAULT] section to ${TOBIKO_CONF_FILE}"
local tobiko_conf_file=$1
iniset ${tobiko_conf_file} DEFAULT debug "${TOBIKO_DEBUG}"
iniset ${tobiko_conf_file} DEFAULT log_dir $(dirname "${TOBIKO_LOG_FILE}")
iniset ${tobiko_conf_file} DEFAULT log_file $(basename "${TOBIKO_LOG_FILE}")
}
function configure_tobiko_glance {
echo_summary "Write [glance] section to ${TOBIKO_CONF_FILE}"
local tobiko_conf_file=$1
iniset_nonempty "${tobiko_conf_file}" glance image_dir "${TOBIKO_GLANCE_IMAGE_DIR}"
}
function configure_tobiko_keystone {
echo_summary "Write [keystone] section to ${TOBIKO_CONF_FILE}"
local tobiko_conf_file=$1
local api_version=${IDENTITY_API_VERSION}
if [ "${api_version}" == '2' ]; then
local auth_url=${KEYSTONE_AUTH_URI/v2.0}
else
local auth_url=${KEYSTONE_AUTH_URI_V3:-${KEYSTONE_AUTH_URI/v3}}
fi
local project_id=$(get_or_create_project \
"${TOBIKO_KEYSTONE_PROJECT_NAME}" \
"${TOBIKO_KEYSTONE_PROJECT_DOMAIN_NAME}")
local user_id=$(get_or_create_user \
"${TOBIKO_KEYSTONE_USERNAME}" \
"${TOBIKO_KEYSTONE_PASSWORD}" \
"${TOBIKO_KEYSTONE_USER_DOMAIN_NAME}")
local user_project_role_id=$(get_or_add_user_project_role \
"${TOBIKO_KEYSTONE_USER_ROLE}" \
"${user_id}" \
"${project_id}")
local user_domain_role_id=$(get_or_add_user_domain_role \
"${TOBIKO_KEYSTONE_USER_ROLE}" \
"${user_id}" \
"${TOBIKO_KEYSTONE_USER_DOMAIN_NAME}")
iniset "${tobiko_conf_file}" keystone cloud_name "${TOBIKO_KEYSTONE_CLOUD_NAME}"
iniset "${tobiko_conf_file}" keystone api_version "${api_version}"
iniset "${tobiko_conf_file}" keystone auth_url "${auth_url}"
iniset "${tobiko_conf_file}" keystone username "${TOBIKO_KEYSTONE_USERNAME}"
iniset "${tobiko_conf_file}" keystone password "${TOBIKO_KEYSTONE_PASSWORD}"
iniset "${tobiko_conf_file}" keystone project_name "${TOBIKO_KEYSTONE_PROJECT_NAME}"
if [ "${api_version}" != '2' ]; then
iniset "${tobiko_conf_file}" keystone domain_name "${TOBIKO_KEYSTONE_DOMAIN_NAME}"
iniset "${tobiko_conf_file}" keystone user_domain_name \
"${TOBIKO_KEYSTONE_USER_DOMAIN_NAME}"
iniset "${tobiko_conf_file}" keystone project_domain_name \
"${TOBIKO_KEYSTONE_PROJECT_DOMAIN_NAME}"
iniset "${tobiko_conf_file}" keystone trust_id "${TOBIKO_KEYSTONE_TRUST_ID}"
fi
}
function configure_tobiko_nova {
echo_summary "Write [nova] section to ${TOBIKO_CONF_FILE}"
local tobiko_conf_file=$1
# Write key_file
local key_file=${TOBIKO_NOVA_KEY_FILE:-}
if [ "${key_file}" != "" ]; then
iniset "${tobiko_conf_file}" nova key_file "${key_file}"
fi
}
function configure_tobiko_neutron {
echo_summary "Write [neutron] section to ${TOBIKO_CONF_FILE}"
local tobiko_conf_file=$1
# Write floating network
local floating_network=${TOBIKO_NEUTRON_FLOATING_NETWORK}
if [ "${floating_network}" != "" ]; then
iniset "${tobiko_conf_file}" neutron floating_network "${floating_network}"
fi
}
function iniset_nonempty {
# Calls iniset only when option value is not an empty string
if [ -n "$4" ]; then
iniset "$@"
fi
}
if [[ "$1" == "stack" ]]; then
case "$2" in
install)
echo_summary "Installing Tobiko dependencies"
install_tobiko_deps
;;
test-config)
echo_summary "Configuring Tobiko test cases"
configure_tobiko
;;
esac
fi

43
devstack/settings

@ -1,43 +0,0 @@
define_plugin tobiko
plugin_requires tobiko heat
# --- General settings ----
TOBIKO_REPO=${TOBIKO_REPO:-${GIT_BASE}/x/tobiko.git}
GITREPO["tobiko"]=${TOBIKO_REPO}
TOBIKO_VERSION=${TOBIKO_BRANCH:-master}
GITBRANCH["tobiko"]=${TOBIKO_VERSION}
TOBIKO_DIR=${TOBIKO_DIR:-${DEST}/tobiko}
GITDIR["tobiko"]=${TOBIKO_DIR}
TOBIKO_CONF_FILE=${TOBIKO_CONF_FILE:-/etc/tobiko/tobiko.conf}
TOBIKO_DEBUG=${TOBIKO_DEBUG:-True}
TOBIKO_LOG_FILE=${TOBIKO_LOG_FILE:-${LOGDIR}/tobiko.log}
TOBIKO_BINDEP=${BINDEP_CMD:+-bindep}
# --- Glance settings ---
TOBIKO_GLANCE_IMAGE_DIR=${TOBIKO_GLANCE_IMAGE_DIR:-}
# --- Cirros image settings ---
TOBIKO_CIRROS_IMAGE_NAME=${TOBIKO_CIRROS_IMAGE_NAME:-}
TOBIKO_CIRROS_IMAGE_URL=${TOBIKO_CIRROS_IMAGE_URL:-}
TOBIKO_CIRROS_IMAGE_FILE=${TOBIKO_CIRROS_IMAGE_FILE:-}
TOBIKO_CIRROS_USERNAME=${TOBIKO_CIRROS_USERNAME:-}
TOBIKO_CIRROS_PASSWORD=${TOBIKO_CIRROS_PASSWORD:-}
# --- Keystone settings ---
# See ``lib/keystone`` where these users and tenants are set up
TOBIKO_KEYSTONE_CLOUD_NAME=${TOBIKO_KEYSTONE_CLOUD_NAME:-devstack-admin}
TOBIKO_KEYSTONE_USERNAME=${TOBIKO_KEYSTONE_USERNAME:-${ADMIN_USERNAME:-admin}}
TOBIKO_KEYSTONE_PASSWORD=${TOBIKO_KEYSTONE_PASSWORD:-${ADMIN_PASSWORD:-secret}}
TOBIKO_KEYSTONE_PROJECT_NAME=${TOBIKO_KEYSTONE_PROJECT_NAME:-${ADMIN_TENANT_NAME:-admin}}
TOBIKO_KEYSTONE_USER_DOMAIN_NAME=${TOBIKO_KEYSTONE_USER_DOMAIN_NAME:-${ADMIN_DOMAIN_NAME:-Default}}
TOBIKO_KEYSTONE_PROJECT_DOMAIN_NAME=${TOBIKO_KEYSTONE_PROJECT_DOMAIN_NAME:-${ADMIN_DOMAIN_NAME:-Default}}
TOBIKO_KEYSTONE_TRUST_ID=${TOBIKO_KEYSTONE_TRUST_ID:-}
TOBIKO_KEYSTONE_USER_ROLE=${TOBIKO_KEYSTONE_USER_ROLE:-admin}
# --- Nova settings ---
TOBIKO_NOVA_KEY_FILE=${TOBIKO_NOVA_KEY_FILE:-}
# --- Neutron settings ---
TOBIKO_NEUTRON_FLOATING_NETWORK=${TOBIKO_NEUTRON_FLOATING_NETWORK:-${PUBLIC_NETWORK_NAME}}

74
devstack/vagrant/local.conf

@ -1,74 +0,0 @@
[[local|localrc]]
MULTI_HOST=0
# Configure IPS
HOST_IP=172.18.161.6
SERVICE_HOST=172.18.161.6
MYSQL_HOST=172.18.161.6
RABBIT_HOST=172.18.161.6
GLANCE_HOSTPORT=172.18.161.6:9292
# Configure passwords
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
# Use python 3
USE_PYTHON3=true
# Configure Heat --------------------------------------------------------------
enable_plugin heat https://git.openstack.org/openstack/heat
# Configure Glance ------------------------------------------------------------
# download and register a VM image that heat can launch
# IMAGE_URL_SITE="https://download.fedoraproject.org"
# IMAGE_URL_PATH="/pub/fedora/linux/releases/29/Cloud/x86_64/images/"
# IMAGE_URL_FILE="Fedora-Cloud-Base-29-1.2.x86_64.qcow2"
# IMAGE_URLS+=","$IMAGE_URL_SITE$IMAGE_URL_PATH$IMAGE_URL_FILE
# Configure Nova --------------------------------------------------------------
# DEFAULT_INSTANCE_TYPE=ds512M
# Configure Neutron -----------------------------------------------------------
enable_service neutron
NETWORK_API_EXTENSIONS=address-scope,agent,allowed-address-pairs,auto-allocated-topology,availability_zone,binding,default-subnetpools,dhcp_agent_scheduler,dns-domain-ports,dns-integration,dvr,empty-string-filtering,ext-gw-mode,external-net,extra_dhcp_opt,extraroute,filter-validation,fip-port-details,flavors,ip-substring-filtering,l3-flavors,l3-ha,l3_agent_scheduler,logging,metering,multi-provider,net-mtu,net-mtu-writable,network-ip-availability,network_availability_zone,pagination,port-security,project-id,provider,qos,qos-bw-minimum-ingress,qos-fip,quotas,quota_details,rbac-policies,router,router_availability_zone,security-group,port-mac-address-regenerate,port-security-groups-filtering,segment,service-type,sorting,standard-attr-description,standard-attr-revisions,standard-attr-segment,standard-attr-timestamp,standard-attr-tag,subnet_allocation,trunk,trunk-details,uplink-status-propagation
## Neutron options
Q_USE_SECGROUP=True
FLOATING_RANGE="172.18.161.0/24"
IPV4_ADDRS_SAFE_TO_USE="10.0.0.0/22"
Q_FLOATING_ALLOCATION_POOL=start=172.18.161.200,end=172.18.161.254
PUBLIC_NETWORK_GATEWAY=172.18.161.1
PUBLIC_INTERFACE=eth1
# Open vSwitch provider networking configuration
Q_USE_PROVIDERNET_FOR_PUBLIC=True
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_BRIDGE=br-ex
OVS_BRIDGE_MAPPINGS=public:br-ex
IP_VERSION=4
# enable IPv6
# IP_VERSION=4+6
# IPV6_RA_MODE=slaac
# IPV6_ADDRESS_MODE=slaac
# IPV6_ADDRS_SAFE_TO_USE=fd$IPV6_GLOBAL_ID::/56
# IPV6_PRIVATE_NETWORK_GATEWAY=fd$IPV6_GLOBAL_ID::1
# Configure Octavia -----------------------------------------------------------
enable_plugin octavia https://opendev.org/openstack/octavia
ENABLED_SERVICES+=,octavia,o-cw,o-hk,o-hm,o-api
# Configure Tobiko ------------------------------------------------------------
enable_plugin tobiko /vagrant

97
devstack/vagrant/ovn-local.conf

@ -1,97 +0,0 @@
[[local|localrc]]
MULTI_HOST=0
# Configure IPS
HOST_IP=172.18.161.6
SERVICE_HOST=172.18.161.6
MYSQL_HOST=172.18.161.6
RABBIT_HOST=172.18.161.6
GLANCE_HOSTPORT=172.18.161.6:9292
# Configure passwords
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
# Use python 3
USE_PYTHON3=true
# Configure Heat --------------------------------------------------------------
enable_plugin heat https://git.openstack.org/openstack/heat
# Configure Glance ------------------------------------------------------------
# download and register a VM image that heat can launch
# IMAGE_URL_SITE="https://download.fedoraproject.org"
# IMAGE_URL_PATH="/pub/fedora/linux/releases/29/Cloud/x86_64/images/"
# IMAGE_URL_FILE="Fedora-Cloud-Base-29-1.2.x86_64.qcow2"
# IMAGE_URLS+=","$IMAGE_URL_SITE$IMAGE_URL_PATH$IMAGE_URL_FILE
# Configure Nova --------------------------------------------------------------
# DEFAULT_INSTANCE_TYPE=ds512M
disable_service n-net
# Configure Neutron -----------------------------------------------------------
# Enable services that are required by OVN.
enable_plugin neutron https://opendev.org/openstack/neutron
enable_service q-svc
enable_service q-trunk
enable_service q-dns
#enable_service q-qos
# Disable Neutron agents not used with OVN.
disable_service q-agt
disable_service q-l3
disable_service q-dhcp
disable_service q-meta
# enable_service neutron
NETWORK_API_EXTENSIONS=address-scope,agent,allowed-address-pairs,auto-allocated-topology,availability_zone,binding,default-subnetpools,dhcp_agent_scheduler,dns-domain-ports,dns-integration,dvr,empty-string-filtering,ext-gw-mode,external-net,extra_dhcp_opt,extraroute,filter-validation,fip-port-details,flavors,ip-substring-filtering,l3-flavors,l3-ha,l3_agent_scheduler,logging,metering,multi-provider,net-mtu,net-mtu-writable,network-ip-availability,network_availability_zone,pagination,port-security,project-id,provider,qos,qos-bw-minimum-ingress,qos-fip,quotas,quota_details,rbac-policies,router,router_availability_zone,security-group,port-mac-address-regenerate,port-security-groups-filtering,segment,service-type,sorting,standard-attr-description,standard-attr-revisions,standard-attr-segment,standard-attr-timestamp,standard-attr-tag,subnet_allocation,trunk,trunk-details,uplink-status-propagation
## Neutron options
Q_USE_SECGROUP=True
FLOATING_RANGE="172.18.161.0/24"
IPV4_ADDRS_SAFE_TO_USE="10.0.0.0/22"
Q_FLOATING_ALLOCATION_POOL=start=172.18.161.200,end=172.18.161.254
PUBLIC_NETWORK_GATEWAY=172.18.161.1
PUBLIC_INTERFACE=eth1
# Open vSwitch provider networking configuration
Q_USE_PROVIDERNET_FOR_PUBLIC=True
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_BRIDGE=br-ex
OVS_BRIDGE_MAPPINGS=public:br-ex
IP_VERSION=4
# enable IPv6
# IP_VERSION=4+6
# IPV6_RA_MODE=slaac
# IPV6_ADDRESS_MODE=slaac
# IPV6_ADDRS_SAFE_TO_USE=fd$IPV6_GLOBAL_ID::/56
# IPV6_PRIVATE_NETWORK_GATEWAY=fd$IPV6_GLOBAL_ID::1
# Configure OVN ---------------------------------------------------------------
enable_plugin networking-ovn https://opendev.org/openstack/networking-ovn
enable_service ovn-northd
enable_service ovn-controller
enable_service networking-ovn-metadata-agent
# Configure Octavia -----------------------------------------------------------
enable_plugin octavia https://opendev.org/openstack/octavia
ENABLED_SERVICES+=,octavia,o-cw,o-hk,o-hm,o-api
# Configure Tobiko ------------------------------------------------------------
enable_plugin tobiko /vagrant

53
devstack/vagrant/provision.bash

@ -1,53 +0,0 @@
#!/bin/bash
set -eux
if [ -r "./provisionrc" ]; then
echo "Load parameters from RC file"
source "./provisionrc" || true
fi
echo "Process script parameters and set default values when needed"
export PROVISION_DIR=${PROVISION_DIR:-$(cd "$(dirname "$0")" && pwd)}
export GIT_BASE=${OPENSTACK_GIT_BASE:-https://git.openstack.org}
export DEVSTACK_GIT_REPO=${DEVSTACK_GIT_REPO:-${GIT_BASE}/openstack-dev/devstack}
export DEVSTACK_GIT_BRANCH=${DEVSTACK_GIT_BRANCH:-stable/queens}
export DEST=${DEVSTACK_DEST_DIR:-/opt/stack}
export DEVSTACK_SRC_DIR=${DEVSTACK_SRC_DIR:-${DEST}/devstack}
export TOBIKO_SRC_DIR=${TOBIKO_SRC_DIR:-/vagrant}
export HOST_IP=${DEVSTACK_HOST_IP:-172.18.161.6}
export DEVSTACK_CONF_FILENAME=${DEVSTACK_CONF_FILENAME:-local.conf}
echo "Provisioning DevStack on host $(hostname) as user ${USER}"
echo "Current directory is $(pwd)"
echo "Make sure stack user has rigths to write to ${DEST} folder"
sudo chown -fR "${USER}.${USER}" "${DEST}"
sudo chmod ug+rwx "${DEST}"
if ! which git; then
echo "Install Git"
sudo yum install -y git
fi
if ! which python3; then
echo "Install Git"
# DevStack is not able to install Python3 on its own on CentOS 7
sudo yum install -y python3
fi
if ! [ -d "${DEVSTACK_SRC_DIR}" ]; then
echo "Download DevStack source files from ${DEVSTACK_GIT_REPO}#${DEVSTACK_GIT_BRANCH}"
mkdir -p $(basename "${DEVSTACK_SRC_DIR}")
git clone "${DEVSTACK_GIT_REPO}" -b "${DEVSTACK_GIT_BRANCH}" "${DEVSTACK_SRC_DIR}"
fi
echo "Configure DevStack"
cp "${PROVISION_DIR}/${DEVSTACK_CONF_FILENAME}" "${DEVSTACK_SRC_DIR}/local.conf"
cd "${DEVSTACK_SRC_DIR}"
echo "Run DevStack from directory: $(pwd)"
./stack.sh

6
playbooks/devstack/post.yaml

@ -1,6 +0,0 @@
---
- hosts: tempest
roles:
- tobiko-zuul
- tobiko-collect

12
playbooks/devstack/pre.yaml

@ -1,12 +0,0 @@
---
- hosts: tempest
roles:
- tobiko-zuul
- tobiko-configure
- hosts: all
roles:
- role: multi-node-setup
- role: orchestrate-devstack

20
playbooks/devstack/run.yaml

@ -1,20 +0,0 @@
# Copyright 2018 Red Hat
#
# 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.
---
- hosts: tempest
roles:
- tobiko-zuul
- tobiko-run

2
roles/tobiko-zuul/vars/main.yaml

@ -2,5 +2,5 @@
tobiko_dir: "{{ ansible_user_dir }}/{{ zuul.projects['opendev.org/x/tobiko'].src_dir }}"
test_dir: '{{ ansible_user_dir }}/{{ zuul.project.src_dir }}'
test_dir: '{{ tobiko_dir }}'
test_collect_dir: '{{ zuul.executor.log_root }}'

30
vagrant/devstack/local.conf

@ -1,30 +0,0 @@
[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
LOGFILE=/opt/stack/devstack/stack.log
LOG_COLOR=False
# Disable unrequired services -------------------------------------------------
disable_service horizon
disable_service tempest
# Configure Neutron -----------------------------------------------------------
HOST_IP=192.168.33.10
IP_VERSION=4
# Configure Heat --------------------------------------------------------------
enable_plugin heat https://git.openstack.org/openstack/heat
# Configure Tobiko ------------------------------------------------------------
enable_plugin tobiko https://git.openstack.org/x/tobiko

22
vagrant/devstack/provision.yaml

@ -1,22 +0,0 @@
---
- hosts: all
vars:
tobiko_src_dir: "{{ playbook_dir | realpath | dirname | dirname }}"
pre_tasks:
- name: "update APT database"
apt:
update_cache: yes
cache_valid_time: 3600
become: yes
when:
- ansible_os_family == 'Debian'
roles:
- tobiko-copy-resolv-conf
- tobiko-redhat-subscription
- tobiko-ensure-ssh-keys
- tobiko-ensure-python3
- tobiko-devstack

231
zuul.d/devstack.yaml

@ -1,231 +0,0 @@
- job:
name: tobiko-devstack-base
parent: devstack
abstract: true
description: |
Base Tobiko devstack job.
This job provides the base for both the single and multi-node
test setup. To run a multi-node test inherit from tobiko-devstack and
set the nodeset to a multi-node one.
required-projects:
- openstack/devstack-gate
- openstack/heat
- openstack/neutron
- openstack/requirements
- openstack/validations-libs
- x/tobiko
timeout: 7200
vars:
devstack_localrc:
MULTI_HOST: 0
LOG_COLOR: false
NETWORK_API_EXTENSIONS: address-scope,agent,allowed-address-pairs,auto-allocated-topology,availability_zone,binding,default-subnetpools,dhcp_agent_scheduler,dns-domain-ports,dns-integration,dvr,empty-string-filtering,ext-gw-mode,external-net,extra_dhcp_opt,extraroute,filter-validation,fip-port-details,flavors,ip-substring-filtering,l3-flavors,l3-ha,l3_agent_scheduler,logging,metering,multi-provider,net-mtu,net-mtu-writable,network-ip-availability,network_availability_zone,pagination,port-security,project-id,provider,qos,qos-bw-minimum-ingress,qos-fip,quotas,quota_details,rbac-policies,router,router_availability_zone,security-group,port-mac-address-regenerate,port-security-groups-filtering,segment,service-type,sorting,standard-attr-description,standard-attr-revisions,standard-attr-segment,standard-attr-timestamp,standard-attr-tag,subnet_allocation,trunk,trunk-details,uplink-status-propagation
devstack_plugins:
heat: https://opendev.org/openstack/heat.git
neutron: https://opendev.org/openstack/neutron.git
tobiko: https://opendev.org/x/tobiko.git
devstack_services:
heat: true
h-api: true
h-api-cfn: true
h-eng: true
n-cpu: true
# NOTE(slaweq): we need to enable it as "legacy" service because for Fedora job
# it has to be disabled. If it would be disabled as "neutron-dns: false" then it
# devstack would consider that neutron-legacy isn't used and would not load proper
# files
q-dns: true
# see bug #1860753 (https://bugs.launchpad.net/devstack/+bug/1860753)
memory_tracker: false
neutron-qos: true
neutron-segments: true
neutron-trunk: true
neutron-uplink-status-propagation: true
tempest: false
tls-proxy: false
# NOTE(slaweq): Swift can't run with python3 currently
s-account: false
s-container: false
s-object: false
s-proxy: false
# NOTE(slaweq): without Swift, c-bak cannot run (in the Gate at least)
c-bak: false
devstack_local_conf:
post-config:
$NEUTRON_CONF:
QUOTAS:
quota_router: 100
quota_floatingip: 500
quota_security_group: 100
quota_security_group_rule: 1000
$NOVA_CONF:
quota:
instances: 20
zuul_copy_output:
'{{ stage_dir }}/stackviz': logs
extensions_to_txt:
conf: true
log: true
yaml: true
yml: true
test_log_debug: true
test_case_timeout: 1200
tobiko_dir: '/opt/stack/tobiko'
tox_run_tests_timeout: 3600
upper_constraints_file: '{{ ansible_user_dir }}/src/opendev.org/openstack/requirements/upper-constraints.txt'
pre-run: playbooks/devstack/pre.yaml
run: playbooks/devstack/run.yaml
post-run: playbooks/devstack/post.yaml
irrelevant-files:
- ^.*\.rst$
- ^doc/
- ^infrared_plugin/
- ^releasenotes/
- ^report/
- ^tobiko/tests/unit/
- job:
name: tobiko-devstack-octavia
parent: tobiko-devstack-base
abstract: true
description: |
Base Tobiko devstack job to be used with Octavia.
required-projects:
- openstack/barbican
- openstack/diskimage-builder
- openstack/octavia
- openstack/octavia-lib
- openstack/python-barbicanclient
- openstack/tripleo-image-elements
timeout: 7800
vars:
devstack_services:
# Octavia
octavia: true
o-cw: true
o-hk: true
o-hm: true
o-api: true
zuul_copy_output:
'/var/log/dib-build/': logs
'/var/log/octavia-tenant-traffic.log': logs
'/var/log/octavia-amphora.log': logs
extensions_to_txt:
conf: true
log: true
yaml: true
yml: true
- job:
name: tobiko-devstack
parent: tobiko-devstack-octavia
abstract: true
- job:
name: tobiko-devstack-functional
parent: tobiko-devstack
description: |
Base Tobiko devstack job to execute functional tests.
vars:
test_workflow: functional
irrelevant-files:
- ^.*\.rst$
- ^doc/
- ^infrared_plugin/
- ^releasenotes/
- ^report/
- ^tobiko/tests/faults/
- ^tobiko/tests/scenario/
- ^tobiko/tests/unit/
- job:
name: tobiko-devstack-functional-centos-8
parent: tobiko-devstack-functional
nodeset: devstack-single-node-centos-8
voting: true
- job:
name: tobiko-devstack-functional-ubuntu-focal
parent: tobiko-devstack-functional
nodeset: openstack-single-node-focal
voting: false
- job:
name: tobiko-devstack-multinode
parent: tobiko-devstack
abstract: true
description: Base Tobiko devstack job with multinode.
vars:
topology: multinode
devstack_localrc:
ENABLE_FILE_INJECTION: true
MULTI_HOST: 1
devstack_services:
n-cpu: false
group-vars:
subnode:
devstack_services:
c-vol: true
dstat: true
heat: false
h-api: false
h-api-cfn: false
h-eng: false
n-api-meta: true
placement-client: true
n-cpu: true
neutron-agent: true
# see bug #1860753 (https://bugs.launchpad.net/devstack/+bug/1860753)
memory_tracker: false
q-agt: true
q-l3: true
q-meta: true
tls-proxy: false
- job:
name: tobiko-devstack-faults
parent: tobiko-devstack-multinode
abstract: true
description: |
Base Tobiko devstack job to execute scenario+faults+scenario test cases.
vars:
test_workflow: faults
irrelevant-files:
- ^.*\.rst$
- ^doc/
- ^infrared_plugin/
- ^releasenotes/
- ^report/
- ^tobiko/tests/functional/
- ^tobiko/tests/unit/
- job:
name: tobiko-devstack-faults-centos-8
parent: tobiko-devstack-faults
nodeset: tobiko-three-node-centos-8
voting: false
- job:
name: tobiko-devstack-faults-ubuntu-focal
parent: tobiko-devstack-faults
nodeset: tobiko-three-node-focal
voting: false
vars:
devstack_services:
tls-proxy: true
group-vars:
subnode:
devstack_services:
tls-proxy: true

72
zuul.d/nodes.yaml

@ -35,75 +35,3 @@
- name: subnodes
nodes:
- secondary
- nodeset:
name: tobiko-three-node-centos-8
nodes:
- name: controller
label: centos-8
- name: compute1
label: centos-8
- name: compute2
label: centos-8
groups:
# Node where tests are executed and test results collected
- name: tempest
nodes:
- controller
# Nodes running the compute service
- name: compute
nodes:
- compute1
- compute2
# Nodes that are not the controller
- name: subnode
nodes:
- compute1
- compute2
# Switch node for multinode networking setup
- name: switch
nodes:
- controller
# Peer nodes for multinode networking setup
- name: peers
nodes:
- compute1
- compute2
- nodeset:
name: tobiko-three-node-focal
nodes:
- name: controller
label: ubuntu-focal
- name: compute1
label: ubuntu-focal
- name: compute2
label: ubuntu-focal
groups:
# Node where tests are executed and test results collected
- name: tempest
nodes:
- controller
# Nodes running the compute service
- name: compute
nodes:
- compute1
- compute2
# Nodes that are not the controller
- name: subnode
nodes:
- compute1
- compute2
# Switch node for multinode networking setup
- name: switch
nodes:
- controller
# Peer nodes for multinode networking setup
- name: peers
nodes:
- compute1
- compute2

9
zuul.d/project.yaml

@ -14,10 +14,6 @@
check:
jobs:
- tobiko-devstack-functional-centos-8
- tobiko-devstack-functional-ubuntu-focal
- tobiko-devstack-faults-centos-8
- tobiko-devstack-faults-ubuntu-focal
- tobiko-tox-infrared-centos-7
- tobiko-tox-infrared-centos-8
- tobiko-tox-infrared-fedora-latest
@ -25,14 +21,9 @@
gate:
jobs:
- tobiko-devstack-functional-centos-8
- tobiko-tox-infrared-centos-8
periodic:
jobs:
- tobiko-devstack-functional-centos-8
- tobiko-devstack-functional-ubuntu-focal
- tobiko-devstack-faults-centos-8
- tobiko-devstack-faults-ubuntu-focal
- tobiko-tripleo-functional
- tobiko-tripleo-faults

Loading…
Cancel
Save