Merge "Add support running sahara in distributed mode"
diff --git a/HACKING.rst b/HACKING.rst
index 4971db2..a40af54 100644
--- a/HACKING.rst
+++ b/HACKING.rst
@@ -320,3 +320,48 @@
- function names should_have_underscores, NotCamelCase.
- functions should be declared as per the regex ^function foo {$
with code starting on the next line
+
+
+Review Criteria
+===============
+
+There are some broad criteria that will be followed when reviewing
+your change
+
+* **Is it passing tests** -- your change will not be reviewed
+ throughly unless the official CI has run successfully against it.
+
+* **Does this belong in DevStack** -- DevStack reviewers have a
+ default position of "no" but are ready to be convinced by your
+ change.
+
+ For very large changes, you should consider :doc:`the plugins system
+ <plugins>` to see if your code is better abstracted from the main
+ repository.
+
+ For smaller changes, you should always consider if the change can be
+ encapsulated by per-user settings in ``local.conf``. A common example
+ is adding a simple config-option to an ``ini`` file. Specific flags
+ are not usually required for this, although adding documentation
+ about how to achieve a larger goal (which might include turning on
+ various settings, etc) is always welcome.
+
+* **Work-arounds** -- often things get broken and DevStack can be in a
+ position to fix them. Work-arounds are fine, but should be
+ presented in the context of fixing the root-cause of the problem.
+ This means it is well-commented in the code and the change-log and
+ mostly likely includes links to changes or bugs that fix the
+ underlying problem.
+
+* **Should this be upstream** -- DevStack generally does not override
+ default choices provided by projects and attempts to not
+ unexpectedly modify behaviour.
+
+* **Context in commit messages** -- DevStack touches many different
+ areas and reviewers need context around changes to make good
+ decisions. We also always want it to be clear to someone -- perhaps
+ even years from now -- why we were motivated to make a change at the
+ time.
+
+* **Reviewers** -- please see ``MAINTAINERS.rst`` for a list of people
+ that should be added to reviews of various sub-systems.
diff --git a/MAINTAINERS.rst b/MAINTAINERS.rst
index a376eb0..20e8655 100644
--- a/MAINTAINERS.rst
+++ b/MAINTAINERS.rst
@@ -90,3 +90,7 @@
* Flavio Percoco <flaper87@gmail.com>
* Malini Kamalambal <malini.kamalambal@rackspace.com>
+
+Oracle Linux
+~~~~~~~~~~~~
+* Wiekus Beukes <wiekus.beukes@oracle.com>
diff --git a/clean.sh b/clean.sh
index ad4525b..035489c 100755
--- a/clean.sh
+++ b/clean.sh
@@ -49,7 +49,7 @@
source $TOP_DIR/lib/swift
source $TOP_DIR/lib/ceilometer
source $TOP_DIR/lib/heat
-source $TOP_DIR/lib/neutron
+source $TOP_DIR/lib/neutron-legacy
source $TOP_DIR/lib/ironic
source $TOP_DIR/lib/trove
diff --git a/doc/source/guides/devstack-with-lbaas-v2.rst b/doc/source/guides/devstack-with-lbaas-v2.rst
new file mode 100644
index 0000000..f679783
--- /dev/null
+++ b/doc/source/guides/devstack-with-lbaas-v2.rst
@@ -0,0 +1,99 @@
+Configure Load-Balancer in Kilo
+=================================
+
+The Kilo release of OpenStack will support Version 2 of the neutron load balancer. Until now, using OpenStack `LBaaS V2 <http://docs.openstack.org/api/openstack-network/2.0/content/lbaas_ext.html>`_ has required a good understanding of neutron and LBaaS architecture and several manual steps.
+
+
+Phase 1: Create DevStack + 2 nova instances
+--------------------------------------------
+
+First, set up a vm of your choice with at least 8 GB RAM and 16 GB disk space, make sure it is updated. Install git and any other developer tools you find useful.
+
+Install devstack
+
+ ::
+
+ git clone https://git.openstack.org/openstack-dev/devstack
+ cd devstack
+
+
+Edit your `local.conf` to look like
+
+ ::
+
+ [[local|localrc]]
+ # Load the external LBaaS plugin.
+ enable_plugin neutron-lbaas https://git.openstack.org/openstack/neutron-lbaas
+
+ # ===== BEGIN localrc =====
+ DATABASE_PASSWORD=password
+ ADMIN_PASSWORD=password
+ SERVICE_PASSWORD=password
+ SERVICE_TOKEN=password
+ RABBIT_PASSWORD=password
+ # Enable Logging
+ LOGFILE=$DEST/logs/stack.sh.log
+ VERBOSE=True
+ LOG_COLOR=True
+ SCREEN_LOGDIR=$DEST/logs
+ # Pre-requisite
+ ENABLED_SERVICES=rabbit,mysql,key
+ # Horizon
+ ENABLED_SERVICES+=,horizon
+ # Nova
+ ENABLED_SERVICES+=,n-api,n-crt,n-obj,n-cpu,n-cond,n-sch
+ IMAGE_URLS+=",https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img"
+ # Glance
+ ENABLED_SERVICES+=,g-api,g-reg
+ # Neutron
+ ENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta
+ # Enable LBaaS V2
+ ENABLED_SERVICES+=,q-lbaasv2
+ # Cinder
+ ENABLED_SERVICES+=,c-api,c-vol,c-sch
+ # Tempest
+ ENABLED_SERVICES+=,tempest
+ # ===== END localrc =====
+
+Run stack.sh and do some sanity checks
+
+ ::
+
+ ./stack.sh
+ . ./openrc
+
+ neutron net-list # should show public and private networks
+
+Create two nova instances that we can use as test http servers:
+
+ ::
+
+ #create nova instances on private network
+ nova boot --image $(nova image-list | awk '/ cirros-0.3.0-x86_64-disk / {print $2}') --flavor 1 --nic net-id=$(neutron net-list | awk '/ private / {print $2}') node1
+ nova boot --image $(nova image-list | awk '/ cirros-0.3.0-x86_64-disk / {print $2}') --flavor 1 --nic net-id=$(neutron net-list | awk '/ private / {print $2}') node2
+ nova list # should show the nova instances just created
+
+ #add secgroup rule to allow ssh etc..
+ neutron security-group-rule-create default --protocol icmp
+ neutron security-group-rule-create default --protocol tcp --port-range-min 22 --port-range-max 22
+ neutron security-group-rule-create default --protocol tcp --port-range-min 80 --port-range-max 80
+
+Set up a simple web server on each of these instances. ssh into each instance (username 'cirros', password 'cubswin:)') and run
+
+ ::
+
+ MYIP=$(ifconfig eth0|grep 'inet addr'|awk -F: '{print $2}'| awk '{print $1}')
+ while true; do echo -e "HTTP/1.0 200 OK\r\n\r\nWelcome to $MYIP" | sudo nc -l -p 80 ; done&
+
+Phase 2: Create your load balancers
+------------------------------------
+
+ ::
+
+ neutron lbaas-loadbalancer-create --name lb1 private-subnet
+ neutron lbaas-listener-create --loadbalancer lb1 --protocol HTTP --protocol-port 80 --name listener1
+ neutron lbaas-pool-create --lb-algorithm ROUND_ROBIN --listener listener1 --protocol HTTP --name pool1
+ neutron lbaas-member-create --subnet private-subnet --address 10.0.0.3 --protocol-port 80 pool1
+ neutron lbaas-member-create --subnet private-subnet --address 10.0.0.5 --protocol-port 80 pool1
+
+Please note here that the "10.0.0.3" and "10.0.0.5" in the above commands are the IPs of the nodes (in my test run-thru, they were actually 10.2 and 10.4), and the address of the created LB will be reported as "vip_address" from the lbaas-loadbalancer-create, and a quick test of that LB is "curl that-lb-ip", which should alternate between showing the IPs of the two nodes.
diff --git a/doc/source/index.rst b/doc/source/index.rst
index 0ffb15c..b701237 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -68,6 +68,7 @@
guides/neutron
guides/devstack-with-nested-kvm
guides/nova
+ guides/devstack-with-lbaas-v2
All-In-One Single VM
--------------------
@@ -165,7 +166,7 @@
* `lib/ironic <lib/ironic.html>`__
* `lib/keystone <lib/keystone.html>`__
* `lib/ldap <lib/ldap.html>`__
-* `lib/neutron <lib/neutron.html>`__
+* `lib/neutron-legacy <lib/neutron-legacy.html>`__
* `lib/nova <lib/nova.html>`__
* `lib/oslo <lib/oslo.html>`__
* `lib/rpc\_backend <lib/rpc_backend.html>`__
diff --git a/exercises/boot_from_volume.sh b/exercises/boot_from_volume.sh
index a2ae275..aa34830 100755
--- a/exercises/boot_from_volume.sh
+++ b/exercises/boot_from_volume.sh
@@ -32,7 +32,7 @@
# Import project functions
source $TOP_DIR/lib/cinder
-source $TOP_DIR/lib/neutron
+source $TOP_DIR/lib/neutron-legacy
# Import configuration
source $TOP_DIR/openrc
diff --git a/exercises/euca.sh b/exercises/euca.sh
index f9c4752..df5e233 100755
--- a/exercises/euca.sh
+++ b/exercises/euca.sh
@@ -37,7 +37,7 @@
source $TOP_DIR/exerciserc
# Import project functions
-source $TOP_DIR/lib/neutron
+source $TOP_DIR/lib/neutron-legacy
# If nova api is not enabled we exit with exitcode 55 so that
# the exercise is skipped
diff --git a/exercises/floating_ips.sh b/exercises/floating_ips.sh
index 57f48e0..59444e1 100755
--- a/exercises/floating_ips.sh
+++ b/exercises/floating_ips.sh
@@ -31,7 +31,7 @@
source $TOP_DIR/openrc
# Import project functions
-source $TOP_DIR/lib/neutron
+source $TOP_DIR/lib/neutron-legacy
# Import exercise configuration
source $TOP_DIR/exerciserc
diff --git a/exercises/neutron-adv-test.sh b/exercises/neutron-adv-test.sh
index 5b3281b..9230587 100755
--- a/exercises/neutron-adv-test.sh
+++ b/exercises/neutron-adv-test.sh
@@ -49,7 +49,7 @@
source $TOP_DIR/openrc
# Import neutron functions
-source $TOP_DIR/lib/neutron
+source $TOP_DIR/lib/neutron-legacy
# If neutron is not enabled we exit with exitcode 55, which means exercise is skipped.
neutron_plugin_check_adv_test_requirements || exit 55
diff --git a/exercises/volumes.sh b/exercises/volumes.sh
index 504fba1..3ac2016 100755
--- a/exercises/volumes.sh
+++ b/exercises/volumes.sh
@@ -32,7 +32,7 @@
# Import project functions
source $TOP_DIR/lib/cinder
-source $TOP_DIR/lib/neutron
+source $TOP_DIR/lib/neutron-legacy
# Import exercise configuration
source $TOP_DIR/exerciserc
diff --git a/files/debs/general b/files/debs/general
index 84d4302..5f10a20 100644
--- a/files/debs/general
+++ b/files/debs/general
@@ -6,7 +6,7 @@
gcc
g++
git
-graphviz # testonly - docs
+graphviz # needed for docs
lsof # useful when debugging
openssh-server
openssl
diff --git a/files/debs/glance b/files/debs/glance
index 9fda6a6..37877a8 100644
--- a/files/debs/glance
+++ b/files/debs/glance
@@ -1,6 +1,6 @@
-libmysqlclient-dev # testonly
-libpq-dev # testonly
-libssl-dev # testonly
+libmysqlclient-dev
+libpq-dev
+libssl-dev
libxml2-dev
-libxslt1-dev # testonly
-zlib1g-dev # testonly
+libxslt1-dev
+zlib1g-dev
diff --git a/files/debs/neutron b/files/debs/neutron
index aa3d709..2d69a71 100644
--- a/files/debs/neutron
+++ b/files/debs/neutron
@@ -1,12 +1,12 @@
-acl # testonly
+acl
ebtables
iptables
iputils-ping
iputils-arping
-libmysqlclient-dev # testonly
+libmysqlclient-dev
mysql-server #NOPRIME
sudo
-postgresql-server-dev-all # testonly
+postgresql-server-dev-all
python-mysqldb
python-mysql.connector
python-qpid # NOPRIME
diff --git a/files/debs/nova b/files/debs/nova
index 0c31385..9d9acde 100644
--- a/files/debs/nova
+++ b/files/debs/nova
@@ -4,7 +4,7 @@
kpartx
parted
iputils-arping
-libmysqlclient-dev # testonly
+libmysqlclient-dev
mysql-server # NOPRIME
python-mysqldb
python-mysql.connector
diff --git a/files/debs/trove b/files/debs/trove
index 09dcee8..96f8f29 100644
--- a/files/debs/trove
+++ b/files/debs/trove
@@ -1 +1 @@
-libxslt1-dev # testonly
+libxslt1-dev
diff --git a/files/rpms-suse/general b/files/rpms-suse/general
index 63cf14b..2219426 100644
--- a/files/rpms-suse/general
+++ b/files/rpms-suse/general
@@ -6,7 +6,7 @@
gcc
gcc-c++
git-core
-graphviz # testonly - docs
+graphviz # docs
iputils
libopenssl-devel # to rebuild pyOpenSSL if needed
lsof # useful when debugging
diff --git a/files/rpms-suse/neutron b/files/rpms-suse/neutron
index 66d6e4c..d278363 100644
--- a/files/rpms-suse/neutron
+++ b/files/rpms-suse/neutron
@@ -1,11 +1,11 @@
-acl # testonly
+acl
dnsmasq
dnsmasq-utils # dist:opensuse-12.3,opensuse-13.1
ebtables
iptables
iputils
mariadb # NOPRIME
-postgresql-devel # testonly
+postgresql-devel
python-eventlet
python-greenlet
python-iso8601
diff --git a/files/rpms-suse/trove b/files/rpms-suse/trove
index 09dcee8..96f8f29 100644
--- a/files/rpms-suse/trove
+++ b/files/rpms-suse/trove
@@ -1 +1 @@
-libxslt1-dev # testonly
+libxslt1-dev
diff --git a/files/rpms/general b/files/rpms/general
index eac4ec3..d74ecc6 100644
--- a/files/rpms/general
+++ b/files/rpms/general
@@ -5,7 +5,7 @@
gcc
gcc-c++
git-core
-graphviz # testonly - docs
+graphviz # needed only for docs
openssh-server
openssl
openssl-devel # to rebuild pyOpenSSL if needed
diff --git a/files/rpms/glance b/files/rpms/glance
index 119492a..479194f 100644
--- a/files/rpms/glance
+++ b/files/rpms/glance
@@ -1,6 +1,6 @@
-libxml2-devel # testonly
-libxslt-devel # testonly
-mysql-devel # testonly
-openssl-devel # testonly
-postgresql-devel # testonly
-zlib-devel # testonly
+libxml2-devel
+libxslt-devel
+mysql-devel
+openssl-devel
+postgresql-devel
+zlib-devel
diff --git a/files/rpms/neutron b/files/rpms/neutron
index c0dee78..8292e7b 100644
--- a/files/rpms/neutron
+++ b/files/rpms/neutron
@@ -1,15 +1,15 @@
MySQL-python
-acl # testonly
+acl
dnsmasq # for q-dhcp
dnsmasq-utils # for dhcp_release
ebtables
iptables
iputils
mysql-connector-python
-mysql-devel # testonly
+mysql-devel
mysql-server # NOPRIME
openvswitch # NOPRIME
-postgresql-devel # testonly
+postgresql-devel
rabbitmq-server # NOPRIME
qpid-cpp-server # NOPRIME
sqlite
diff --git a/files/rpms/nova b/files/rpms/nova
index 527928a..ebd6674 100644
--- a/files/rpms/nova
+++ b/files/rpms/nova
@@ -17,7 +17,7 @@
numpy # needed by websockify for spice console
m2crypto
mysql-connector-python
-mysql-devel # testonly
+mysql-devel
mysql-server # NOPRIME
parted
polkit
diff --git a/files/rpms/trove b/files/rpms/trove
index c5cbdea..e7bbd43 100644
--- a/files/rpms/trove
+++ b/files/rpms/trove
@@ -1 +1 @@
-libxslt-devel # testonly
+libxslt-devel
diff --git a/files/venv-requirements.txt b/files/venv-requirements.txt
index e473a2f..73d0579 100644
--- a/files/venv-requirements.txt
+++ b/files/venv-requirements.txt
@@ -1,10 +1,11 @@
+# Once we can prebuild wheels before a devstack run, uncomment the skipped libraries
cryptography
-lxml
+# lxml # still install from from packages
MySQL-python
-netifaces
+# netifaces # still install from packages
#numpy # slowest wheel by far, stop building until we are actually using the output
posix-ipc
-psycopg2
+# psycopg # still install from packages
pycrypto
pyOpenSSL
PyYAML
diff --git a/functions-common b/functions-common
index b94e134..48e400d 100644
--- a/functions-common
+++ b/functions-common
@@ -246,6 +246,7 @@
# CentOS Linux release 6.0 (Final)
# Fedora release 16 (Verne)
# XenServer release 6.2.0-70446c (xenenterprise)
+ # Oracle Linux release 7
os_CODENAME=""
for r in "Red Hat" CentOS Fedora XenServer; do
os_VENDOR=$r
@@ -259,6 +260,9 @@
fi
os_VENDOR=""
done
+ if [ "$os_VENDOR" = "Red Hat" ] && [[ -r /etc/oracle-release ]]; then
+ os_VENDOR=OracleLinux
+ fi
os_PACKAGE="rpm"
elif [[ -r /etc/SuSE-release ]]; then
for r in openSUSE "SUSE Linux"; do
@@ -310,7 +314,7 @@
fi
elif [[ "$os_VENDOR" =~ (Red Hat) || \
"$os_VENDOR" =~ (CentOS) || \
- "$os_VENDOR" =~ (OracleServer) ]]; then
+ "$os_VENDOR" =~ (OracleLinux) ]]; then
# Drop the . release as we assume it's compatible
DISTRO="rhel${os_RELEASE::1}"
elif [[ "$os_VENDOR" =~ (XenServer) ]]; then
@@ -328,6 +332,17 @@
[[ "$(uname -m)" == "$1" ]]
}
+# Determine if current distribution is an Oracle distribution
+# is_oraclelinux
+function is_oraclelinux {
+ if [[ -z "$os_VENDOR" ]]; then
+ GetOSVersion
+ fi
+
+ [ "$os_VENDOR" = "OracleLinux" ]
+}
+
+
# Determine if current distribution is a Fedora-based distribution
# (Fedora, RHEL, CentOS, etc).
# is_fedora
@@ -337,7 +352,7 @@
fi
[ "$os_VENDOR" = "Fedora" ] || [ "$os_VENDOR" = "Red Hat" ] || \
- [ "$os_VENDOR" = "CentOS" ] || [ "$os_VENDOR" = "OracleServer" ]
+ [ "$os_VENDOR" = "CentOS" ] || [ "$os_VENDOR" = "OracleLinux" ]
}
@@ -868,16 +883,6 @@
fi
fi
- # Look for # testonly in comment
- if [[ $line =~ (.*)#.*testonly.* ]]; then
- package=${BASH_REMATCH[1]}
- # Are we installing test packages? (test for the default value)
- if [[ $INSTALL_TESTONLY_PACKAGES = "False" ]]; then
- # If not installing test packages the skip this package
- inst_pkg=0
- fi
- fi
-
if [[ $inst_pkg = 1 ]]; then
echo $package
fi
diff --git a/inc/python b/inc/python
index 229c540..2d76081 100644
--- a/inc/python
+++ b/inc/python
@@ -101,18 +101,17 @@
$cmd_pip install \
$@
- INSTALL_TESTONLY_PACKAGES=$(trueorfalse False INSTALL_TESTONLY_PACKAGES)
- if [[ "$INSTALL_TESTONLY_PACKAGES" == "True" ]]; then
- local test_req="$@/test-requirements.txt"
- if [[ -e "$test_req" ]]; then
- $sudo_pip \
- http_proxy=${http_proxy:-} \
- https_proxy=${https_proxy:-} \
- no_proxy=${no_proxy:-} \
- PIP_FIND_LINKS=$PIP_FIND_LINKS \
- $cmd_pip install \
- -r $test_req
- fi
+ # Also install test requirements
+ local test_req="$@/test-requirements.txt"
+ if [[ -e "$test_req" ]]; then
+ echo "Installing test-requirements for $test_req"
+ $sudo_pip \
+ http_proxy=${http_proxy:-} \
+ https_proxy=${https_proxy:-} \
+ no_proxy=${no_proxy:-} \
+ PIP_FIND_LINKS=$PIP_FIND_LINKS \
+ $cmd_pip install \
+ -r $test_req
fi
}
diff --git a/lib/databases/mysql b/lib/databases/mysql
index 70073c4..dabd7d0 100644
--- a/lib/databases/mysql
+++ b/lib/databases/mysql
@@ -16,7 +16,7 @@
# Linux distros, thank you for being incredibly consistent
MYSQL=mysql
-if is_fedora; then
+if is_fedora && ! is_oraclelinux; then
MYSQL=mariadb
fi
@@ -32,12 +32,12 @@
sudo rm -rf /var/lib/mysql
sudo rm -rf /etc/mysql
return
+ elif is_suse || is_oraclelinux; then
+ uninstall_package mysql-community-server
+ sudo rm -rf /var/lib/mysql
elif is_fedora; then
uninstall_package mariadb-server
sudo rm -rf /var/lib/mysql
- elif is_suse; then
- uninstall_package mysql-community-server
- sudo rm -rf /var/lib/mysql
else
return
fi
@@ -56,12 +56,12 @@
if is_ubuntu; then
my_conf=/etc/mysql/my.cnf
mysql=mysql
+ elif is_suse || is_oraclelinux; then
+ my_conf=/etc/my.cnf
+ mysql=mysql
elif is_fedora; then
mysql=mariadb
my_conf=/etc/my.cnf
- elif is_suse; then
- my_conf=/etc/my.cnf
- mysql=mysql
else
exit_distro_not_supported "mysql configuration"
fi
@@ -140,14 +140,14 @@
chmod 0600 $HOME/.my.cnf
fi
# Install mysql-server
- if is_fedora; then
- install_package mariadb-server
- elif is_ubuntu; then
- install_package mysql-server
- elif is_suse; then
+ if is_suse || is_oraclelinux; then
if ! is_package_installed mariadb; then
install_package mysql-community-server
fi
+ elif is_fedora; then
+ install_package mariadb-server
+ elif is_ubuntu; then
+ install_package mysql-server
else
exit_distro_not_supported "mysql installation"
fi
diff --git a/lib/heat b/lib/heat
index f69e803..c7abd3b 100644
--- a/lib/heat
+++ b/lib/heat
@@ -36,6 +36,7 @@
HEAT_CFNTOOLS_DIR=$DEST/heat-cfntools
HEAT_TEMPLATES_REPO_DIR=$DEST/heat-templates
OCC_DIR=$DEST/os-collect-config
+DIB_UTILS_DIR=$DEST/dib-utils
ORC_DIR=$DEST/os-refresh-config
OAC_DIR=$DEST/os-apply-config
@@ -216,6 +217,10 @@
function install_heat_other {
git_clone $HEAT_CFNTOOLS_REPO $HEAT_CFNTOOLS_DIR $HEAT_CFNTOOLS_BRANCH
git_clone $HEAT_TEMPLATES_REPO $HEAT_TEMPLATES_REPO_DIR $HEAT_TEMPLATES_BRANCH
+ git_clone $OAC_REPO $OAC_DIR $OAC_BRANCH
+ git_clone $OCC_REPO $OCC_DIR $OCC_BRANCH
+ git_clone $ORC_REPO $ORC_DIR $ORC_BRANCH
+ git_clone $DIB_UTILS_REPO $DIB_UTILS_DIR $DIB_UTILS_BRANCH
}
# start_heat() - Start running processes, including screen
@@ -296,7 +301,7 @@
# build_heat_pip_mirror() - Build a pip mirror containing heat agent projects
function build_heat_pip_mirror {
- local project_dirs="$OCC_DIR $OAC_DIR $ORC_DIR $HEAT_CFNTOOLS_DIR"
+ local project_dirs="$OCC_DIR $OAC_DIR $ORC_DIR $HEAT_CFNTOOLS_DIR $DIB_UTILS_DIR"
local projpath proj package
rm -rf $HEAT_PIP_REPO
diff --git a/lib/ironic b/lib/ironic
index 58cc2fa..b99e325 100644
--- a/lib/ironic
+++ b/lib/ironic
@@ -181,7 +181,11 @@
# install_ironic() - Collect source and prepare
function install_ironic {
# make sure all needed service were enabled
- for srv in nova glance key; do
+ local req_services="mysql rabbit key"
+ if [[ "$VIRT_DRIVER" == "ironic" ]]; then
+ req_services+=" nova glance neutron"
+ fi
+ for srv in $req_services; do
if ! is_service_enabled "$srv"; then
die $LINENO "$srv should be enabled for Ironic."
fi
diff --git a/lib/keystone b/lib/keystone
index 0dc8595..23773fa 100644
--- a/lib/keystone
+++ b/lib/keystone
@@ -227,21 +227,21 @@
# Set the URL advertised in the ``versions`` structure returned by the '/' route
iniset $KEYSTONE_CONF DEFAULT public_endpoint "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/"
iniset $KEYSTONE_CONF DEFAULT admin_endpoint "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_AUTH_PORT/"
- iniset $KEYSTONE_CONF DEFAULT admin_bind_host "$KEYSTONE_ADMIN_BIND_HOST"
+ iniset $KEYSTONE_CONF eventlet_server admin_bind_host "$KEYSTONE_ADMIN_BIND_HOST"
# Register SSL certificates if provided
if is_ssl_enabled_service key; then
ensure_certificates KEYSTONE
- iniset $KEYSTONE_CONF ssl enable True
- iniset $KEYSTONE_CONF ssl certfile $KEYSTONE_SSL_CERT
- iniset $KEYSTONE_CONF ssl keyfile $KEYSTONE_SSL_KEY
+ iniset $KEYSTONE_CONF eventlet_server_ssl enable True
+ iniset $KEYSTONE_CONF eventlet_server_ssl certfile $KEYSTONE_SSL_CERT
+ iniset $KEYSTONE_CONF eventlet_server_ssl keyfile $KEYSTONE_SSL_KEY
fi
if is_service_enabled tls-proxy; then
# Set the service ports for a proxy to take the originals
- iniset $KEYSTONE_CONF DEFAULT public_port $KEYSTONE_SERVICE_PORT_INT
- iniset $KEYSTONE_CONF DEFAULT admin_port $KEYSTONE_AUTH_PORT_INT
+ iniset $KEYSTONE_CONF eventlet_server public_port $KEYSTONE_SERVICE_PORT_INT
+ iniset $KEYSTONE_CONF eventlet_server admin_port $KEYSTONE_AUTH_PORT_INT
fi
iniset $KEYSTONE_CONF DEFAULT admin_token "$SERVICE_TOKEN"
@@ -317,7 +317,7 @@
iniset $KEYSTONE_CONF DEFAULT max_token_size 16384
- iniset $KEYSTONE_CONF DEFAULT admin_workers "$API_WORKERS"
+ iniset $KEYSTONE_CONF eventlet_server admin_workers "$API_WORKERS"
# Public workers will use the server default, typically number of CPU.
}
diff --git a/lib/neutron b/lib/neutron
new file mode 120000
index 0000000..00cd722
--- /dev/null
+++ b/lib/neutron
@@ -0,0 +1 @@
+neutron-legacy
\ No newline at end of file
diff --git a/lib/neutron b/lib/neutron-legacy
similarity index 100%
rename from lib/neutron
rename to lib/neutron-legacy
diff --git a/lib/neutron_plugins/README.md b/lib/neutron_plugins/README.md
index 7192a05..4b220d3 100644
--- a/lib/neutron_plugins/README.md
+++ b/lib/neutron_plugins/README.md
@@ -13,7 +13,7 @@
functions
---------
-``lib/neutron`` calls the following functions when the ``$Q_PLUGIN`` is enabled
+``lib/neutron-legacy`` calls the following functions when the ``$Q_PLUGIN`` is enabled
* ``neutron_plugin_create_nova_conf`` :
set ``NOVA_VIF_DRIVER`` and optionally set options in nova_conf
diff --git a/lib/neutron_thirdparty/README.md b/lib/neutron_thirdparty/README.md
index 5655e0b..905ae77 100644
--- a/lib/neutron_thirdparty/README.md
+++ b/lib/neutron_thirdparty/README.md
@@ -10,7 +10,7 @@
functions
---------
-``lib/neutron`` calls the following functions when the ``<third_party>`` is enabled
+``lib/neutron-legacy`` calls the following functions when the ``<third_party>`` is enabled
functions to be implemented
* ``configure_<third_party>``:
diff --git a/lib/nova b/lib/nova
index 7fbade0..502bb35 100644
--- a/lib/nova
+++ b/lib/nova
@@ -81,7 +81,7 @@
# Option to enable/disable config drive
# NOTE: Set FORCE_CONFIG_DRIVE="False" to turn OFF config drive
-FORCE_CONFIG_DRIVE=${FORCE_CONFIG_DRIVE:-"always"}
+FORCE_CONFIG_DRIVE=${FORCE_CONFIG_DRIVE:-"True"}
# Nova supports pluggable schedulers. The default ``FilterScheduler``
# should work in most cases.
diff --git a/lib/nova_plugins/hypervisor-ironic b/lib/nova_plugins/hypervisor-ironic
index 0169d73..b9e286d 100644
--- a/lib/nova_plugins/hypervisor-ironic
+++ b/lib/nova_plugins/hypervisor-ironic
@@ -54,9 +54,7 @@
# install_nova_hypervisor() - Install external components
function install_nova_hypervisor {
- if ! is_service_enabled neutron; then
- die $LINENO "Neutron should be enabled for usage of the Ironic Nova driver."
- elif is_ironic_hardware; then
+ if is_ironic_hardware; then
return
fi
install_libvirt
diff --git a/lib/rpc_backend b/lib/rpc_backend
index 3d4ef76..3033cbe 100644
--- a/lib/rpc_backend
+++ b/lib/rpc_backend
@@ -272,9 +272,9 @@
fi
elif is_service_enabled rabbit || { [ -n "$RABBIT_HOST" ] && [ -n "$RABBIT_PASSWORD" ]; }; then
iniset $file $section rpc_backend "rabbit"
- iniset $file $section rabbit_hosts $RABBIT_HOST
- iniset $file $section rabbit_password $RABBIT_PASSWORD
- iniset $file $section rabbit_userid $RABBIT_USERID
+ iniset $file oslo_messaging_rabbit rabbit_hosts $RABBIT_HOST
+ iniset $file oslo_messaging_rabbit rabbit_password $RABBIT_PASSWORD
+ iniset $file oslo_messaging_rabbit rabbit_userid $RABBIT_USERID
fi
}
diff --git a/lib/swift b/lib/swift
index af19c68..28ef7de 100644
--- a/lib/swift
+++ b/lib/swift
@@ -64,11 +64,19 @@
S3_SERVICE_PORT=${S3_SERVICE_PORT:-8080}
fi
-# DevStack will create a loop-back disk formatted as XFS to store the
-# swift data. Set ``SWIFT_LOOPBACK_DISK_SIZE`` to the disk size in
-# kilobytes.
-# Default is 1 gigabyte.
-SWIFT_LOOPBACK_DISK_SIZE_DEFAULT=1G
+if is_service_enabled g-api; then
+ # Minimum Cinder volume size is 1G so if Swift backend for Glance is
+ # only 1G we can not upload volume to image.
+ # Increase Swift disk size up to 2G
+ SWIFT_LOOPBACK_DISK_SIZE_DEFAULT=2G
+else
+ # DevStack will create a loop-back disk formatted as XFS to store the
+ # swift data. Set ``SWIFT_LOOPBACK_DISK_SIZE`` to the disk size in
+ # kilobytes.
+ # Default is 1 gigabyte.
+ SWIFT_LOOPBACK_DISK_SIZE_DEFAULT=1G
+fi
+
# if tempest enabled the default size is 6 Gigabyte.
if is_service_enabled tempest; then
SWIFT_LOOPBACK_DISK_SIZE_DEFAULT=${SWIFT_LOOPBACK_DISK_SIZE:-6G}
diff --git a/lib/tempest b/lib/tempest
index 443915c..8672a14 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -175,6 +175,10 @@
password=${ADMIN_PASSWORD:-secrete}
+ # Do we want to make a configuration where Tempest has admin on
+ # the cloud. We don't always want to so that we can ensure Tempest
+ # would work on a public cloud.
+ TEMPEST_HAS_ADMIN=$(trueorfalse True TEMPEST_HAS_ADMIN)
# See files/keystone_data.sh and stack.sh where admin, demo and alt_demo
# user and tenant are set up...
ADMIN_USERNAME=${ADMIN_USERNAME:-admin}
@@ -292,11 +296,13 @@
iniset $TEMPEST_CONFIG identity alt_username $ALT_USERNAME
iniset $TEMPEST_CONFIG identity alt_password "$password"
iniset $TEMPEST_CONFIG identity alt_tenant_name $ALT_TENANT_NAME
- iniset $TEMPEST_CONFIG identity admin_username $ADMIN_USERNAME
- iniset $TEMPEST_CONFIG identity admin_password "$password"
- iniset $TEMPEST_CONFIG identity admin_tenant_name $ADMIN_TENANT_NAME
- iniset $TEMPEST_CONFIG identity admin_tenant_id $ADMIN_TENANT_ID
- iniset $TEMPEST_CONFIG identity admin_domain_name $ADMIN_DOMAIN_NAME
+ if [[ "$TEMPEST_HAS_ADMIN" == "True" ]]; then
+ iniset $TEMPEST_CONFIG identity admin_username $ADMIN_USERNAME
+ iniset $TEMPEST_CONFIG identity admin_password "$password"
+ iniset $TEMPEST_CONFIG identity admin_tenant_name $ADMIN_TENANT_NAME
+ iniset $TEMPEST_CONFIG identity admin_tenant_id $ADMIN_TENANT_ID
+ iniset $TEMPEST_CONFIG identity admin_domain_name $ADMIN_DOMAIN_NAME
+ fi
iniset $TEMPEST_CONFIG identity auth_version ${TEMPEST_AUTH_VERSION:-v2}
if is_ssl_enabled_service "key" || is_service_enabled tls-proxy; then
iniset $TEMPEST_CONFIG identity ca_certificates_file $SSL_BUNDLE_FILE
@@ -310,10 +316,11 @@
fi
# Auth
+ #
+ #
+ TEMPEST_ALLOW_TENANT_ISOLATION=${TEMPEST_ALLOW_TENANT_ISOLATION:-$TEMPEST_HAS_ADMIN}
iniset $TEMPEST_CONFIG auth allow_tenant_isolation ${TEMPEST_ALLOW_TENANT_ISOLATION:-True}
- if [[ "$TEMPEST_AUTH_VERSION" == "v3" ]]; then
- iniset $TEMPEST_CONFIG auth tempest_roles "Member"
- fi
+ iniset $TEMPEST_CONFIG auth tempest_roles "Member"
# Compute
iniset $TEMPEST_CONFIG compute ssh_user ${DEFAULT_INSTANCE_USER:-cirros} # DEPRECATED
@@ -333,7 +340,7 @@
# NOTE(mtreinish): This must be done after auth settings are added to the tempest config
local tmp_cfg_file=$(mktemp)
cd $TEMPEST_DIR
- tox -evenv -- verify-tempest-config -uro $tmp_cfg_file
+ tox -revenv -- verify-tempest-config -uro $tmp_cfg_file
local compute_api_extensions=${COMPUTE_API_EXTENSIONS:-"all"}
if [[ ! -z "$DISABLE_COMPUTE_API_EXTENSIONS" ]]; then
diff --git a/lib/trove b/lib/trove
index 4c5a438..5dd4f23 100644
--- a/lib/trove
+++ b/lib/trove
@@ -33,12 +33,12 @@
GITDIR["python-troveclient"]=$DEST/python-troveclient
TROVE_DIR=$DEST/trove
-TROVE_CONF_DIR=/etc/trove
-TROVE_CONF=$TROVE_CONF_DIR/trove.conf
-TROVE_TASKMANAGER_CONF=$TROVE_CONF_DIR/trove-taskmanager.conf
-TROVE_CONDUCTOR_CONF=$TROVE_CONF_DIR/trove-conductor.conf
-TROVE_GUESTAGENT_CONF=$TROVE_CONF_DIR/trove-guestagent.conf
-TROVE_API_PASTE_INI=$TROVE_CONF_DIR/api-paste.ini
+TROVE_CONF_DIR=${TROVE_CONF_DIR:-/etc/trove}
+TROVE_CONF=${TROVE_CONF:-$TROVE_CONF_DIR/trove.conf}
+TROVE_TASKMANAGER_CONF=${TROVE_TASKMANAGER_CONF:-$TROVE_CONF_DIR/trove-taskmanager.conf}
+TROVE_CONDUCTOR_CONF=${TROVE_CONDUCTOR_CONF:-$TROVE_CONF_DIR/trove-conductor.conf}
+TROVE_GUESTAGENT_CONF=${TROVE_GUESTAGENT_CONF:-$TROVE_CONF_DIR/trove-guestagent.conf}
+TROVE_API_PASTE_INI=${TROVE_API_PASTE_INI:-$TROVE_CONF_DIR/api-paste.ini}
TROVE_LOCAL_CONF_DIR=$TROVE_DIR/etc/trove
TROVE_LOCAL_API_PASTE_INI=$TROVE_LOCAL_CONF_DIR/api-paste.ini
diff --git a/stack.sh b/stack.sh
index 0e22804..79f8fa3 100755
--- a/stack.sh
+++ b/stack.sh
@@ -89,6 +89,9 @@
exit 1
fi
+# Print the kernel version
+uname -a
+
# Prepare the environment
# -----------------------
@@ -278,6 +281,10 @@
die $LINENO "Error installing RDO repo, cannot continue"
fi
+ if is_oraclelinux; then
+ sudo yum-config-manager --enable ol7_optional_latest ol7_addons ol7_MySQL56
+ fi
+
fi
@@ -521,7 +528,7 @@
source $TOP_DIR/lib/swift
source $TOP_DIR/lib/ceilometer
source $TOP_DIR/lib/heat
-source $TOP_DIR/lib/neutron
+source $TOP_DIR/lib/neutron-legacy
source $TOP_DIR/lib/ldap
source $TOP_DIR/lib/dstat
diff --git a/stackrc b/stackrc
index 02b12a3..bca434e 100644
--- a/stackrc
+++ b/stackrc
@@ -427,6 +427,10 @@
#
##################
+# run-parts script required by os-refresh-config
+DIB_UTILS_REPO=${DIB_UTILS_REPO:-${GIT_BASE}/openstack/dib-utils.git}
+DIB_UTILS_BRANCH=${DIB_UTILS_BRANCH:-master}
+
# os-apply-config configuration template tool
OAC_REPO=${OAC_REPO:-${GIT_BASE}/openstack/os-apply-config.git}
OAC_BRANCH=${OAC_BRANCH:-master}
@@ -556,18 +560,6 @@
IMAGE_URLS=${IMAGE_URLS:-"http://download.cirros-cloud.net/${CIRROS_VERSION}/cirros-${CIRROS_VERSION}-${CIRROS_ARCH}-uec.tar.gz"};;
esac
-# Use 64bit fedora image if heat is enabled
-if [[ "$ENABLED_SERVICES" =~ 'h-api' ]]; then
- case "$VIRT_DRIVER" in
- libvirt|ironic)
- HEAT_CFN_IMAGE_URL=${HEAT_CFN_IMAGE_URL:-"https://download.fedoraproject.org/pub/alt/openstack/20/x86_64/Fedora-x86_64-20-20140618-sda.qcow2"}
- IMAGE_URLS+=",$HEAT_CFN_IMAGE_URL"
- ;;
- *)
- ;;
- esac
-fi
-
# Trove needs a custom image for its work
if [[ "$ENABLED_SERVICES" =~ 'tr-api' ]]; then
case "$VIRT_DRIVER" in
@@ -580,17 +572,6 @@
esac
fi
-# Staging Area for New Images, have them here for at least 24hrs for nodepool
-# to cache them otherwise the failure rates in the gate are too high
-PRECACHE_IMAGES=$(trueorfalse False PRECACHE_IMAGES)
-if [[ "$PRECACHE_IMAGES" == "True" ]]; then
- # staging in update for nodepool
- IMAGE_URL="https://download.fedoraproject.org/pub/alt/openstack/20/x86_64/Fedora-x86_64-20-20140618-sda.qcow2"
- if ! [[ "$IMAGE_URLS" =~ "$IMAGE_URL" ]]; then
- IMAGE_URLS+=",$IMAGE_URL"
- fi
-fi
-
# 10Gb default volume backing file size
VOLUME_BACKING_FILE_SIZE=${VOLUME_BACKING_FILE_SIZE:-10250M}
@@ -611,9 +592,6 @@
# Set default screen name
SCREEN_NAME=${SCREEN_NAME:-stack}
-# Do not install packages tagged with 'testonly' by default
-INSTALL_TESTONLY_PACKAGES=${INSTALL_TESTONLY_PACKAGES:-False}
-
# Undo requirements changes by global requirements
UNDO_REQUIREMENTS=${UNDO_REQUIREMENTS:-True}
diff --git a/unstack.sh b/unstack.sh
index a6aeec5..a66370b 100755
--- a/unstack.sh
+++ b/unstack.sh
@@ -63,7 +63,7 @@
source $TOP_DIR/lib/swift
source $TOP_DIR/lib/ceilometer
source $TOP_DIR/lib/heat
-source $TOP_DIR/lib/neutron
+source $TOP_DIR/lib/neutron-legacy
source $TOP_DIR/lib/ldap
source $TOP_DIR/lib/dstat
@@ -173,7 +173,9 @@
cleanup_trove
fi
-stop_dstat
+if is_service_enabled dstat; then
+ stop_dstat
+fi
# Clean up the remainder of the screen processes
SCREEN=$(which screen)