Start Stein development

- Update references from Rocky to Stein.
- Switch to using chef-workstation
- Exclude integration group from Berksfile. This is to ensure ChefSpec tests
  should always work regardless if we're working on integration related
  cookbooks that don't interact with those tests.
- Temporarily disable voting for integration tests due to cookbook version
  conflicts
- Add tests for openstack-common::etcd and openstack-common::completions
- Update tests for Stein
- Update OVS port to check
- Add tests for lbaas but only for kitchen, not for CI pipeline
- Add suite and tests for integration-test

Change-Id: Id451b08e361acc709879a65d0d92b35640a5dba9
This commit is contained in:
Dr. Jens Harbott 2020-01-03 13:45:08 +00:00 committed by Lance Albertson
parent 1fe9d31295
commit 5111603bb5
31 changed files with 292 additions and 82 deletions

View File

@ -1,5 +1,5 @@
[local_phases]
unit = 'berks vendor cookbooks'
unit = 'berks vendor -e integration cookbooks'
lint = 'cookstyle --display-cop-names --extra-details'
syntax = "./scripts/json_check.sh"
provision = "echo skipping"

View File

@ -65,6 +65,7 @@ suites:
run_list:
- recipe[openstack_test]
- role[common]
- role[common_test]
- name: openstackclient
run_list:
- recipe[openstack_test]
@ -90,8 +91,21 @@ suites:
- name: network
run_list:
- recipe[openstack_test]
- role[identity]
- recipe[openstack-network::lbaas]
- role[network]
- role[network_test]
attributes:
openstack:
network:
conf:
DEFAULT:
service_plugins: 'router,neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2'
network_lbaas:
enabled: true
verifier:
inspec_tests:
- path: test/integration/network-optional/inspec
- name: compute
run_list:
- recipe[openstack_test]
@ -127,3 +141,8 @@ suites:
- recipe[openstack_test]
- role[dashboard]
- role[dashboard_test]
- name: integration
run_list:
- recipe[openstack_test]
- role[integration]
- role[integration_test]

View File

@ -1,5 +1,3 @@
inherit_from: .rubocop_todo.yml
AllCops:
Include:
- '**/*.rb'

View File

@ -1,14 +0,0 @@
# This configuration was generated by
# `rubocop --auto-gen-config`
# on 2017-12-22 17:48:38 -0800 using RuboCop version 0.49.1.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.
# Offense count: 1
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: for, each
Style/For:
Exclude:
- 'Rakefile'

View File

@ -6,7 +6,6 @@
pre-run: playbooks/pre-delivery.yaml
run: playbooks/delivery.yaml
timeout: 1800
voting: false
- job:
name: openstack-chef-integration-ubuntu
@ -18,7 +17,7 @@
run: playbooks/integration.yaml
post-run: playbooks/post.yaml
timeout: 5400
voting: false
voting: false # TODO(ramereth): Remove after this gets merged
- job:
name: openstack-chef-minimal-integration-ubuntu
@ -42,7 +41,7 @@
run: playbooks/integration.yaml
post-run: playbooks/post.yaml
timeout: 5400
voting: false
voting: false # TODO(ramereth): Remove after this gets merged
- job:
name: openstack-chef-minimal-integration-centos
@ -56,6 +55,20 @@
timeout: 5400
voting: false
- project-template:
name: openstack-chef-repo-jobs
check:
jobs:
- openstack-chef-delivery
- openstack-chef-integration-ubuntu
- openstack-chef-integration-centos
gate:
queue: openstack-chef
jobs:
- openstack-chef-delivery
#- openstack-chef-integration-ubuntu
#- openstack-chef-integration-centos
- project-template:
name: openstack-chef-jobs
check:
@ -69,13 +82,13 @@
queue: openstack-chef
jobs:
- openstack-chef-delivery
- openstack-chef-integration-ubuntu
- openstack-chef-integration-centos
- openstack-chef-minimal-integration-ubuntu
- openstack-chef-minimal-integration-centos
#- openstack-chef-integration-ubuntu
#- openstack-chef-integration-centos
#- openstack-chef-minimal-integration-ubuntu
#- openstack-chef-minimal-integration-centos
- project:
templates:
- deploy-guide-jobs
- publish-openstack-docs-pti
- openstack-chef-jobs
- openstack-chef-repo-jobs

View File

@ -17,7 +17,7 @@ Architectures and a sane example on how to start with OpenStack using
Chef.
With the ``master`` branch of the cookbooks, which is currently tied to
the base OpenStack Rocky release, this supports deploying to Ubuntu
the base OpenStack Stein release, this supports deploying to Ubuntu
18.04 and CentOS 7 in monolithic, or allinone, and non-HA multinode
configurations with Neutron. The cookbooks support a fully HA
configuration, but we do not test for that as there are far numerous
@ -30,10 +30,10 @@ Prerequisites
-------------
- Chef 15 or higher
- `ChefDK`_ 3.2.30 or later
- `Chef Workstation`_ 0.15.18 or later
- `Vagrant`_ 2.0 or later with `VirtualBox>`_ or some other provider
.. _ChefDK: https://downloads.chef.io/chef-dk/
.. _Chef Workstation: https://downloads.chef.io/chef-workstation/
.. _Vagrant: https://www.vagrantup.com/downloads.html
.. _VirtualBox: https://www.virtualbox.org/wiki/Downloads
@ -79,8 +79,8 @@ proof of concept deployments.
Kitchen Test Scenarios
----------------------
Initialize the ChefDK
~~~~~~~~~~~~~~~~~~~~~
Initialize Chef Workstation
~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: console
@ -204,7 +204,7 @@ Verifying OpenStack With Tempest
If you log in to the ``controller`` machine you can test via the most
recent `Tempest`_ release.
.. _Tempest: https://github.com/openstack/tempest
.. _Tempest: https://opendev.org/openstack/tempest
.. code-block:: console

View File

@ -165,14 +165,12 @@ task integration: %i(create_key berks_vendor) do
'minimal'
when 'cookbook_openstackclient'
'openstackclient'
when 'integration_test'
'integration'
else
project_name
end
if ENV['CHEF_MINIMAL'] == 'yes'
if project_name == 'minimal'
puts 'Project is openstack-chef, no need to run this job twice so exiting...'
exit
end
# If CHEF_MINIMAL is set, then let's assume we're running the full minimal suite
project_name = 'minimal'
end

View File

@ -18,25 +18,29 @@ Releases Summary
+----------------------------+------------------------------+------------------------+
| 9.y.z | Icehouse | no - EOL (2015-07-02) |
+----------------------------+------------------------------+------------------------+
| 10.z.y | Juno | no - EOL (2015-12-07) |
| 10.y.z | Juno | no - EOL (2015-12-07) |
+----------------------------+------------------------------+------------------------+
| 11.z.y | Kilo | no - EOL (2016-05-02) |
| 11.y.z | Kilo | no - EOL (2016-05-02) |
+----------------------------+------------------------------+------------------------+
| 12.z.y | Liberty | no - EOL (2016-11-17) |
| 12.y.z | Liberty | no - EOL (2016-11-17) |
+----------------------------+------------------------------+------------------------+
| 13.z.y | Mitaka | no - EOL (2017-04-10) |
| 13.y.z | Mitaka | no - EOL (2017-04-10) |
+----------------------------+------------------------------+------------------------+
| 14.z.y | Newton | no - EOL (2017-10-11) |
| 14.y.z | Newton | no - EOL (2017-10-11) |
+----------------------------+------------------------------+------------------------+
| 15.z.y | Ocata | no - Extended Maint. |
| 15.y.z | Ocata | no - EOL (2019-12-12) |
+----------------------------+------------------------------+------------------------+
| 16.z.y | Pike | yes |
| 16.y.z | Pike | no - EOL (2019-12-12) |
+----------------------------+------------------------------+------------------------+
| 17.z.y | Queens | yes |
| 17.y.z | Queens | yes |
+----------------------------+------------------------------+------------------------+
| 18.z.y | Rocky | yes (current master) |
| 18.y.z | Rocky | yes |
+----------------------------+------------------------------+------------------------+
| 19.z.y | Stein | Future |
| 19.y.z | Stein | yes (current master) |
+----------------------------+------------------------------+------------------------+
| 20.y.z | Train | Future |
+----------------------------+------------------------------+------------------------+
| 21.y.z | Ussuri | Future |
+----------------------------+------------------------------+------------------------+
Supermarket releases
@ -51,8 +55,8 @@ How to release Chef cookbooks
- A core member will create the new branch based on the desired SHA.
Example: https://review.openstack.org/#/admin/projects/openstack/cookbook-openstack-compute,branches
- For all cookbooks to be released: update .gitreview, Berksfile,
and bootstrap.sh to stable/<release>
- For all cookbooks to be released: update .gitreview and Berksfile
to stable/<release>
Example: https://review.openstack.org/547505
- Create a review with the above and propose it against the stable/<release> branch.
- Solicit for reviews and approval.

View File

@ -4,14 +4,12 @@ Supported Platforms
The following operating systems and versions are supported by the OpenStack cookbooks:
* Ubuntu 18.04 LTS (Bionic Beaver)
* CentOS 7
The cookbooks are tested and verified to work on the Chef stable track using
the `Chef Development Kit <https://docs.chef.io/about_chefdk.html>`_.
the `Chef Workstation <https://www.chef.sh/docs/chef-workstation/getting-started/>`_.
Support for RHEL / CentOS 7 is mostly still present, but currently not maintained or
tested. Contributions are welcome.
Your success rate may vary with the bleeding edge. Chef 12 and older is NOT
Your success rate may vary with the bleeding edge. Chef 14 and older is NOT
supported.
Have a look at

View File

@ -19,8 +19,8 @@ import openstackdocstheme
# -- Chef OpenStack configuration --------------------------------------------
target_name = 'openstack-chef'
description = 'Chef OpenStack uses Chef to deploy OpenStack environments.'
previous_series_name = 'queens'
current_series_name = 'rocky'
previous_series_name = 'rocky'
current_series_name = 'stein'
# -- Project information -----------------------------------------------------

View File

@ -7,6 +7,15 @@
]
},
"openstack": {
"network": {
"conf": {
"DEFAULT": {
"service_plugins": "router"
}
}
}
},
"yum": {
"epel": {
"baseurl": "http://epel.osuosl.org/7/$basearch",
@ -37,13 +46,6 @@
"mq": {
"user": "admin"
},
"network": {
"conf": {
"DEFAULT": {
"service_plugins": "router"
}
}
},
"image": {
"image_upload": true
},

View File

@ -6,16 +6,19 @@
- hosts: all
vars:
release: 3.2.30
chefdk: chefdk_{{ release }}-1_amd64.deb
release: 0.15.18
chef_workstation: chef-workstation_{{ release }}-1_amd64.deb
tasks:
- name: Fetch chefdk package
- name: Fetch chef-workstation package
get_url:
dest: /tmp/{{ chefdk }}
url: https://packages.chef.io/files/stable/chefdk/{{ release }}/ubuntu/18.04/{{ chefdk }}
- name: Install chefdk package
shell: dpkg -i /tmp/{{ chefdk }}
dest: /tmp/{{ chef_workstation }}
url: https://packages.chef.io/files/stable/chef-workstation/{{ release }}/ubuntu/18.04/{{ chef_workstation }}
- name: Install chef-workstation package
shell: dpkg -i /tmp/{{ chef_workstation }}
become: yes
- name: Show chef environment, accept chef license as side effect
shell: chef env --chef-license accept
become: yes
- name: Install newer fog-openstack gem
shell: chef gem install fog-openstack --version '~> 1.0.0' --no-user-install --no-ri --no-rdoc
shell: chef gem install fog-openstack --version '~> 1.0.0' --no-user-install -N
become: yes

View File

@ -3,5 +3,7 @@
"description": "common cookbook tests",
"override_attributes": {},
"run_list": [
"openstack-common::etcd",
"openstack-common::completions"
]
}

11
roles/integration.json Normal file
View File

@ -0,0 +1,11 @@
{
"name": "integration",
"description": "Run integration-test cookbook",
"run_list": [
"role[compute]",
"recipe[openstack-integration-test::create_network]",
"recipe[openstack-integration-test::dns]",
"recipe[openstack-integration-test::orchestration]",
"recipe[openstack-integration-test::setup]"
]
}

View File

@ -1,7 +1,7 @@
# Use OSUOSL mirrors as they are more stable than upstream
execute 'Update /etc/apt/sources.list' do
command 'sed -i -e "s/archive.ubuntu.com/ubuntu.osuosl.org/g" /etc/apt/sources.list'
only_if { node['platform_family'] == 'debian' }
only_if { platform_family?('debian') }
not_if 'grep -q ubuntu.osuosl.org /etc/apt/sources.list'
action :nothing
end.run_action(:run)

View File

@ -0,0 +1 @@
../../common/inspec/common_spec.rb

View File

@ -29,7 +29,7 @@ end
describe command "#{openrc} cinder-manage db version\"" do
its('exit_status') { should eq 0 }
its('stdout') { should match /^123$/ }
its('stdout') { should match /^128$/ }
end
describe command "#{openrc} openstack user list -f value -c Name\"" do

View File

@ -0,0 +1,15 @@
# openstack-common::etcd
describe service 'etcd-openstack' do
it { should be_enabled }
it { should be_running }
end
# openstack-common::etcd
describe package 'bash-completion' do
it { should be_installed }
end
describe file '/etc/bash_completion.d/osc.bash_completion' do
it { should exist }
its('content') { should match /_openstack/ }
end

View File

@ -10,10 +10,11 @@ os_family = os.family
describe command 'openstack --version' do
its('exit_status') { should eq 0 }
# RHEL sends output to stderr while Ubuntu sends it to stdout
if os_family == 'redhat'
its('stderr') { should match /^openstack 3.16.[0-9]+$/ }
its('stderr') { should match /^openstack 3.18.[0-9]+$/ }
else
its('stdout') { should match /^openstack 3.16.[0-9]+$/ }
its('stdout') { should match /^openstack 3.18.[0-9]+$/ }
end
end
@ -33,12 +34,12 @@ if os.family == 'redhat'
end
end
describe yum.repo('RDO-rocky') do
describe yum.repo('RDO-stein') do
it { should exist }
it { should be_enabled }
end
describe yum.repo('RDO-rocky-deps') do
describe yum.repo('RDO-stein-deps') do
it { should_not exist }
it { should_not be_enabled }
end
@ -60,7 +61,7 @@ else
# apt InSpec resource is not working properly
describe file '/etc/apt/sources.list.d/openstack-ppa.list' do
its('content') { should include 'http://ubuntu-cloud.archive.canonical.com/ubuntu bionic-updates/rocky main' }
its('content') { should include 'http://ubuntu-cloud.archive.canonical.com/ubuntu bionic-updates/stein main' }
end
describe file '/etc/apt/sources.list.d/openstack-ppa-proposed.list' do

View File

@ -0,0 +1 @@
../../common/inspec/common_spec.rb

View File

@ -40,12 +40,12 @@ openrc = 'bash -c "source /root/openrc && '
describe command "#{openrc} nova-manage version\"" do
its('exit_status') { should eq 0 }
its('stdout') { should match /^18.[0-9]+/ }
its('stdout') { should match /^19.[0-9]+/ }
end
describe command "#{openrc} nova-manage db version\"" do
its('exit_status') { should eq 0 }
its('stdout') { should match /^390$/ }
its('stdout') { should match /^391$/ }
end
describe command "#{openrc} openstack user list -f value -c Name\"" do

View File

@ -36,7 +36,7 @@ end
describe command "#{openrc} designate-manage database version\"" do
its('exit_status') { should eq 0 }
its('stdout') { should match /^Current: 100 Latest: 100$/ }
its('stdout') { should match /^Current: 102 Latest: 102$/ }
end
describe command "#{openrc} openstack dns service list -f value -c service_name -c status\"" do

View File

@ -0,0 +1 @@
../../common/inspec/common_spec.rb

View File

@ -0,0 +1 @@
../../common/inspec/common_spec.rb

View File

@ -0,0 +1,96 @@
openrc = 'bash -c "source /root/openrc && '
describe command "#{openrc} openstack network show local_net -f shell -c admin_state_up -c status\"" do
its('exit_status') { should eq 0 }
its('stdout') { should include 'admin_state_up="UP"' }
its('stdout') { should include 'status="ACTIVE"' }
end
describe command "#{openrc} openstack subnet show local_subnet -f shell -c enable_dhcp -c cidr -c allocation_pools\"" do
its('exit_status') { should eq 0 }
its('stdout') { should include 'allocation_pools="192.168.180.2-192.168.180.254"' }
its('stdout') { should include 'cidr="192.168.180.0/24"' }
its('stdout') { should include 'enable_dhcp="True"' }
end
describe port '53' do
it { should be_listening }
its('processes') { should include 'named' }
its('protocols') { should include 'tcp' }
its('protocols') { should include 'udp' }
end
describe port '953' do
it { should be_listening }
its('processes') { should include 'named' }
its('protocols') { should include 'tcp' }
end
os_family = os.family
case os_family
when 'redhat'
service_name = 'named'
service_path = 'named'
service_user = 'named'
when 'debian'
service_name = 'bind9'
service_path = 'bind'
service_user = 'bind'
end
describe service service_name do
it { should be_enabled }
it { should be_running }
end
describe file "/etc/#{service_path}/rndc.key" do
its('owner') { should cmp service_user }
its('group') { should cmp service_user }
its('mode') { should cmp '0440' }
its('content') { should match /secret "nN4XQnMMhIeWpQHz0l6qG5UUj1WMEKLqHJSwl8fcR1I=";/ }
end
describe file "/etc/#{service_path}/named.designate" do
its('owner') { should cmp service_user }
its('group') { should cmp service_user }
end
describe file '/etc/resolv.conf' do
its('content') { should match /nameserver 1.0.0.1/ }
its('content') { should match /nameserver 8.8.8.8/ }
end
describe file '/tmp/heat_key.priv' do
its('content') { should match /BEGIN RSA PRIVATE KEY/ }
end
describe command "#{openrc} openstack flavor show m1.small\"" do
its('exit_status') { should eq 0 }
end
describe file '/tmp/heat.yml' do
it { should exist }
end
describe command '/opt/tempest-venv/bin/tempest --version' do
its('exit_status') { should eq 0 }
case os_family
when 'redhat'
its('stderr') { should match /^tempest 22.1.0$/ }
when 'debian'
its('stdout') { should match /^tempest 22.1.0$/ }
end
end
describe file '/opt/tempest-venv/tempest.sh' do
its('mode') { should cmp '0755' }
end
describe file '/opt/tempest/etc/tempest-blacklist' do
it { should exist }
end
describe file '/opt/tempest/etc/tempest.conf' do
it { should exist }
end

View File

@ -0,0 +1,53 @@
openrc = 'bash -c "source /root/openrc && '
uuid = /[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}/
describe command "#{openrc} neutron lbaas-loadbalancer-create --name test-lb -f shell local_subnet\"" do
its('exit_status') { should eq 0 }
[
/^admin_state_up="True"$/,
/^name="test-lb"$/,
/^provider="haproxy"$/,
/^vip_address="192.168.180.[0-9]+"$/,
].each do |line|
its('stdout') { should match line }
end
end
describe command "#{openrc} neutron lbaas-loadbalancer-show -f shell test-lb\"" do
its('exit_status') { should eq 0 }
[
/^operating_status="ONLINE"$/,
/^provisioning_status="ACTIVE"$/,
].each do |line|
its('stdout') { should match line }
end
end
lb_listener_opts = '--name test-lb-http --loadbalancer test-lb --protocol HTTP --protocol-port 80 -f shell'
describe command "#{openrc} neutron lbaas-listener-create #{lb_listener_opts}\"" do
its('exit_status') { should eq 0 }
[
/^admin_state_up="True"$/,
/^loadbalancers="\[{u?'id': u?'#{uuid}'}\]"$/,
/^name="test-lb-http"$/,
/^protocol="HTTP"$/,
/^protocol_port="80"$/,
].each do |line|
its('stdout') { should match line }
end
end
describe command "#{openrc} openstack extension list --network -f value -c Alias\"" do
its('exit_status') { should eq 0 }
%w(
hm_max_retries_down
l7
lbaas_agent_schedulerv2
lbaasv2
lb-graph
lb_network_vip
shared_pools
).each do |ext|
its('stdout') { should match /^#{ext}$/ }
end
end

View File

@ -0,0 +1 @@
../../common/inspec/common_spec.rb

View File

@ -2,7 +2,7 @@ openrc = 'bash -c "source /root/openrc && '
%w(
9696
6633
6640
).each do |p|
describe port p do
it { should be_listening }
@ -65,6 +65,7 @@ describe command "#{openrc} openstack extension list --network -f value -c Alias
%w(
address-scope
agent
agent-resources-synced
allowed-address-pairs
auto-allocated-topology
availability_zone
@ -79,13 +80,14 @@ describe command "#{openrc} openstack extension list --network -f value -c Alias
ext-gw-mode
extra_dhcp_opt
extraroute
filter-validation
fip-port-details
flavors
floatingip-pools
ip-substring-filtering
l3_agent_scheduler
l3-flavors
l3-ha
l3-port-ip-change-not-allowed
multi-provider
net-mtu
net-mtu-writable
@ -99,6 +101,7 @@ describe command "#{openrc} openstack extension list --network -f value -c Alias
quota_details
quotas
rbac-policies
rbac-security-groups
revision-if-match
router
router_availability_zone
@ -110,6 +113,7 @@ describe command "#{openrc} openstack extension list --network -f value -c Alias
standard-attr-tag
standard-attr-timestamp
subnet_allocation
subnet_onboard
subnet-service-types
).each do |ext|
its('stdout') { should match /^#{ext}$/ }

View File

@ -0,0 +1 @@
../../common/inspec/common_spec.rb

View File

@ -0,0 +1 @@
../../common/inspec/common_spec.rb

View File

@ -3,7 +3,7 @@
# Test patches against the testing repo
#
# Author: Mark Vanderwiel (<vanderwl@us.ibm.com>)
# Copyright (c) 2015, IBM, Corp.
# Copyright:: (c) 2015, IBM, Corp.
require 'fileutils'
require 'English'