Merge "match devstack-gate format"
diff --git a/clean.sh b/clean.sh
index 09f08dc..b2a9405 100755
--- a/clean.sh
+++ b/clean.sh
@@ -101,11 +101,6 @@
cleanup_nova_hypervisor
fi
-#if mount | grep $DATA_DIR/swift/drives; then
-# sudo umount $DATA_DIR/swift/drives/sdb1
-#fi
-
-
# Clean out /etc
sudo rm -rf /etc/keystone /etc/glance /etc/nova /etc/cinder /etc/swift
@@ -123,9 +118,5 @@
sudo rm -rf $SCREEN_LOGDIR
fi
-# Clean up networking...
-# should this be in nova?
-# FIXED_IP_ADDR in br100
-
# Clean up files
rm -f $TOP_DIR/.stackenv
diff --git a/driver_certs/cinder_driver_cert.sh b/driver_certs/cinder_driver_cert.sh
index 99b2c8e..e45b7f8 100755
--- a/driver_certs/cinder_driver_cert.sh
+++ b/driver_certs/cinder_driver_cert.sh
@@ -16,6 +16,7 @@
# It also assumes default install location (/opt/stack/xxx)
# to aid in debug, you should also verify that you've added
# an output directory for screen logs:
+#
# SCREEN_LOGDIR=/opt/stack/screen-logs
CERT_DIR=$(cd $(dirname "$0") && pwd)
diff --git a/extras.d/50-ironic.sh b/extras.d/50-ironic.sh
index f68a146..9e61dc5 100644
--- a/extras.d/50-ironic.sh
+++ b/extras.d/50-ironic.sh
@@ -28,6 +28,9 @@
if [[ "$1" == "unstack" ]]; then
stop_ironic
+ fi
+
+ if [[ "$1" == "clean" ]]; then
cleanup_ironic
fi
fi
diff --git a/files/default_catalog.templates b/files/default_catalog.templates
index e64f68f..ff00e38 100644
--- a/files/default_catalog.templates
+++ b/files/default_catalog.templates
@@ -50,12 +50,12 @@
catalog.RegionOne.cloudformation.publicURL = http://%SERVICE_HOST%:8000/v1
catalog.RegionOne.cloudformation.adminURL = http://%SERVICE_HOST%:8000/v1
catalog.RegionOne.cloudformation.internalURL = http://%SERVICE_HOST%:8000/v1
-catalog.RegionOne.cloudformation.name = Heat CloudFormation Service
+catalog.RegionOne.cloudformation.name = CloudFormation service
catalog.RegionOne.orchestration.publicURL = http://%SERVICE_HOST%:8004/v1/$(tenant_id)s
catalog.RegionOne.orchestration.adminURL = http://%SERVICE_HOST%:8004/v1/$(tenant_id)s
catalog.RegionOne.orchestration.internalURL = http://%SERVICE_HOST%:8004/v1/$(tenant_id)s
-catalog.RegionOne.orchestration.name = Heat Service
+catalog.RegionOne.orchestration.name = Orchestration Service
catalog.RegionOne.metering.publicURL = http://%SERVICE_HOST%:8777/v1
catalog.RegionOne.metering.adminURL = http://%SERVICE_HOST%:8777/v1
diff --git a/files/rpms/cinder b/files/rpms/cinder
index 623c13e..199ae10 100644
--- a/files/rpms/cinder
+++ b/files/rpms/cinder
@@ -4,4 +4,4 @@
python-devel
postgresql-devel
iscsi-initiator-utils
-python-lxml #dist:f18,f19,f20
+python-lxml #dist:f18,f19,f20,rhel7
diff --git a/files/rpms/glance b/files/rpms/glance
index fffd9c8..785ce25 100644
--- a/files/rpms/glance
+++ b/files/rpms/glance
@@ -9,8 +9,8 @@
python-devel
python-eventlet
python-greenlet
-python-lxml #dist:f18,f19,f20
-python-paste-deploy #dist:f18,f19,f20
+python-lxml #dist:f18,f19,f20,rhel7
+python-paste-deploy #dist:f18,f19,f20,rhel7
python-routes
python-sqlalchemy
python-wsgiref
diff --git a/files/rpms/neutron b/files/rpms/neutron
index 67bf523..42d7f68 100644
--- a/files/rpms/neutron
+++ b/files/rpms/neutron
@@ -11,8 +11,8 @@
python-iso8601
python-kombu
#rhel6 gets via pip
-python-paste # dist:f18,f19,f20
-python-paste-deploy # dist:f18,f19,f20
+python-paste # dist:f18,f19,f20,rhel7
+python-paste-deploy # dist:f18,f19,f20,rhel7
python-qpid
python-routes
python-sqlalchemy
diff --git a/files/rpms/nova b/files/rpms/nova
index ac70ac5..a607d92 100644
--- a/files/rpms/nova
+++ b/files/rpms/nova
@@ -28,11 +28,11 @@
python-lockfile
python-migrate
python-mox
-python-paramiko # dist:f18,f19,f20
-# ^ on RHEL, brings in python-crypto which conflicts with version from
+python-paramiko # dist:f18,f19,f20,rhel7
+# ^ on RHEL6, brings in python-crypto which conflicts with version from
# pip we need
-python-paste # dist:f18,f19,f20
-python-paste-deploy # dist:f18,f19,f20
+python-paste # dist:f18,f19,f20,rhel7
+python-paste-deploy # dist:f18,f19,f20,rhel7
python-qpid
python-routes
python-sqlalchemy
diff --git a/files/rpms/swift b/files/rpms/swift
index 32432bc..72253f7 100644
--- a/files/rpms/swift
+++ b/files/rpms/swift
@@ -9,7 +9,7 @@
python-greenlet
python-netifaces
python-nose
-python-paste-deploy # dist:f18,f19,f20
+python-paste-deploy # dist:f18,f19,f20,rhel7
python-simplejson
python-webob
pyxattr
diff --git a/functions b/functions
index 5eae7fe..6979c6c 100644
--- a/functions
+++ b/functions
@@ -2,10 +2,15 @@
#
# The following variables are assumed to be defined by certain functions:
#
+# - ``DATABASE_BACKENDS``
# - ``ENABLED_SERVICES``
# - ``FILES``
# - ``GLANCE_HOSTPORT``
+# - ``REQUIREMENTS_DIR``
+# - ``STACK_USER``
# - ``TRACK_DEPENDS``
+# - ``UNDO_REQUIREMENTS``
+#
# Include the common functions
FUNC_DIR=$(cd $(dirname "${BASH_SOURCE:-$0}") && pwd)
@@ -45,7 +50,7 @@
# Updates the dependencies in project_dir from the
# openstack/requirements global list before installing anything.
#
-# Uses globals ``TRACK_DEPENDS``, ``REQUIREMENTS_DIR``
+# Uses globals ``TRACK_DEPENDS``, ``REQUIREMENTS_DIR``, ``UNDO_REQUIREMENTS``
# setup_develop directory
function setup_develop() {
local project_dir=$1
diff --git a/functions-common b/functions-common
index 0cecb0b..d92e39c 100644
--- a/functions-common
+++ b/functions-common
@@ -460,6 +460,17 @@
# Git Functions
# =============
+# Returns openstack release name for a given branch name
+# ``get_release_name_from_branch branch-name``
+function get_release_name_from_branch(){
+ local branch=$1
+ if [[ $branch =~ "stable/" ]]; then
+ echo ${branch#*/}
+ else
+ echo "master"
+ fi
+}
+
# git clone only if directory doesn't exist already. Since ``DEST`` might not
# be owned by the installation user, we create the directory and change the
# ownership to the proper user.
@@ -792,7 +803,9 @@
# install_package package [package ...]
function install_package() {
if is_ubuntu; then
- [[ "$NO_UPDATE_REPOS" = "True" ]] || apt_get update
+ # if there are transient errors pulling the updates, that's fine. It may
+ # be secondary repositories that we don't really care about.
+ [[ "$NO_UPDATE_REPOS" = "True" ]] || apt_get update || /bin/true
NO_UPDATE_REPOS=True
apt_get install "$@"
diff --git a/lib/apache b/lib/apache
index 8ae78b2..0e5712f 100644
--- a/lib/apache
+++ b/lib/apache
@@ -4,8 +4,8 @@
# Dependencies:
#
# - ``functions`` file
-# -``STACK_USER`` must be defined
-
+# - ``STACK_USER`` must be defined
+#
# lib/apache exports the following functions:
#
# - is_apache_enabled_service
diff --git a/lib/ceilometer b/lib/ceilometer
index 4ca77bb..6c87d03 100644
--- a/lib/ceilometer
+++ b/lib/ceilometer
@@ -71,33 +71,33 @@
create_ceilometer_accounts() {
- SERVICE_TENANT=$(keystone tenant-list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
- ADMIN_ROLE=$(keystone role-list | awk "/ admin / { print \$2 }")
+ SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
+ ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
# Ceilometer
if [[ "$ENABLED_SERVICES" =~ "ceilometer-api" ]]; then
- CEILOMETER_USER=$(keystone user-create \
- --name=ceilometer \
- --pass="$SERVICE_PASSWORD" \
- --tenant_id $SERVICE_TENANT \
- --email=ceilometer@example.com \
+ CEILOMETER_USER=$(openstack user create \
+ ceilometer \
+ --password "$SERVICE_PASSWORD" \
+ --project $SERVICE_TENANT \
+ --email ceilometer@example.com \
| grep " id " | get_field 2)
- keystone user-role-add \
- --tenant-id $SERVICE_TENANT \
- --user-id $CEILOMETER_USER \
- --role-id $ADMIN_ROLE
+ openstack role add \
+ $ADMIN_ROLE \
+ --project $SERVICE_TENANT \
+ --user $CEILOMETER_USER
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- CEILOMETER_SERVICE=$(keystone service-create \
- --name=ceilometer \
+ CEILOMETER_SERVICE=$(openstack service create \
+ ceilometer \
--type=metering \
--description="OpenStack Telemetry Service" \
| grep " id " | get_field 2)
- keystone endpoint-create \
+ openstack endpoint create \
+ $CEILOMETER_SERVICE \
--region RegionOne \
- --service_id $CEILOMETER_SERVICE \
- --publicurl "$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:$CEILOMETER_SERVICE_PORT" \
- --adminurl "$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:$CEILOMETER_SERVICE_PORT" \
- --internalurl "$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:$CEILOMETER_SERVICE_PORT"
+ --publicurl "$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:$CEILOMETER_SERVICE_PORT/" \
+ --adminurl "$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:$CEILOMETER_SERVICE_PORT/" \
+ --internalurl "$CEILOMETER_SERVICE_PROTOCOL://$CEILOMETER_SERVICE_HOST:$CEILOMETER_SERVICE_PORT/"
fi
fi
}
diff --git a/lib/cinder b/lib/cinder
index d5e78bb..c8c90c0 100644
--- a/lib/cinder
+++ b/lib/cinder
@@ -330,45 +330,44 @@
# Migrated from keystone_data.sh
create_cinder_accounts() {
- SERVICE_TENANT=$(keystone tenant-list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
- ADMIN_ROLE=$(keystone role-list | awk "/ admin / { print \$2 }")
+ SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
+ ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
# Cinder
if [[ "$ENABLED_SERVICES" =~ "c-api" ]]; then
- CINDER_USER=$(keystone user-create \
- --name=cinder \
- --pass="$SERVICE_PASSWORD" \
- --tenant-id $SERVICE_TENANT \
- --email=cinder@example.com \
+ CINDER_USER=$(openstack user create \
+ cinder \
+ --password "$SERVICE_PASSWORD" \
+ --project $SERVICE_TENANT \
+ --email cinder@example.com \
| grep " id " | get_field 2)
- keystone user-role-add \
- --tenant-id $SERVICE_TENANT \
- --user-id $CINDER_USER \
- --role-id $ADMIN_ROLE
+ openstack role add \
+ $ADMIN_ROLE \
+ --project $SERVICE_TENANT \
+ --user $CINDER_USER
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- CINDER_SERVICE=$(keystone service-create \
- --name=cinder \
+ CINDER_SERVICE=$(openstack service create \
+ cinder \
--type=volume \
--description="Cinder Volume Service" \
| grep " id " | get_field 2)
- keystone endpoint-create \
+ openstack endpoint create \
+ $CINDER_SERVICE \
--region RegionOne \
- --service_id $CINDER_SERVICE \
--publicurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\$(tenant_id)s" \
--adminurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\$(tenant_id)s" \
--internalurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v1/\$(tenant_id)s"
- CINDER_V2_SERVICE=$(keystone service-create \
- --name=cinderv2 \
+ CINDER_V2_SERVICE=$(openstack service create \
+ cinderv2 \
--type=volumev2 \
--description="Cinder Volume Service V2" \
| grep " id " | get_field 2)
- keystone endpoint-create \
+ openstack endpoint create \
+ $CINDER_V2_SERVICE \
--region RegionOne \
- --service_id $CINDER_V2_SERVICE \
--publicurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v2/\$(tenant_id)s" \
--adminurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v2/\$(tenant_id)s" \
--internalurl "$CINDER_SERVICE_PROTOCOL://$CINDER_SERVICE_HOST:$CINDER_SERVICE_PORT/v2/\$(tenant_id)s"
-
fi
fi
}
diff --git a/lib/databases/mysql b/lib/databases/mysql
index 476b4b9..31e7163 100644
--- a/lib/databases/mysql
+++ b/lib/databases/mysql
@@ -25,7 +25,11 @@
sudo rm -rf /var/lib/mysql
return
elif is_fedora; then
- MYSQL=mysqld
+ if [[ $DISTRO =~ (rhel7) ]]; then
+ MYSQL=mariadb
+ else
+ MYSQL=mysqld
+ fi
elif is_suse; then
MYSQL=mysql
else
@@ -48,8 +52,12 @@
MY_CONF=/etc/mysql/my.cnf
MYSQL=mysql
elif is_fedora; then
+ if [[ $DISTRO =~ (rhel7) ]]; then
+ MYSQL=mariadb
+ else
+ MYSQL=mysqld
+ fi
MY_CONF=/etc/my.cnf
- MYSQL=mysqld
elif is_suse; then
MY_CONF=/etc/my.cnf
MYSQL=mysql
@@ -135,7 +143,11 @@
fi
# Install mysql-server
if is_ubuntu || is_fedora; then
- install_package mysql-server
+ if [[ $DISTRO =~ (rhel7) ]]; then
+ install_package mariadb-server
+ else
+ install_package mysql-server
+ fi
elif is_suse; then
if ! is_package_installed mariadb; then
install_package mysql-community-server
diff --git a/lib/heat b/lib/heat
index 9f5dd8b..af10fa6 100644
--- a/lib/heat
+++ b/lib/heat
@@ -196,6 +196,19 @@
upload_image "http://localhost/$output.qcow2" $TOKEN
}
+# create_heat_accounts() - Set up common required heat accounts
+# Note this is in addition to what is in files/keystone_data.sh
+function create_heat_accounts() {
+ # Note we have to pass token/endpoint here because the current endpoint and
+ # version negotiation in OSC means just --os-identity-api-version=3 won't work
+ KS_ENDPOINT_V3="$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v3"
+ D_ID=$(openstack --os-token $OS_TOKEN --os-url=$KS_ENDPOINT_V3 \
+ --os-identity-api-version=3 domain create heat \
+ --description "Owns users and projects created by heat" \
+ | grep ' id ' | get_field 2)
+ iniset $HEAT_CONF DEFAULT stack_user_domain ${D_ID}
+}
+
# Restore xtrace
$XTRACE
diff --git a/lib/ironic b/lib/ironic
index 3c0e3cb..607b131 100644
--- a/lib/ironic
+++ b/lib/ironic
@@ -145,30 +145,30 @@
# service ironic admin # if enabled
create_ironic_accounts() {
- SERVICE_TENANT=$(keystone tenant-list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
- ADMIN_ROLE=$(keystone role-list | awk "/ admin / { print \$2 }")
+ SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
+ ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
# Ironic
if [[ "$ENABLED_SERVICES" =~ "ir-api" ]]; then
- IRONIC_USER=$(keystone user-create \
- --name=ironic \
- --pass="$SERVICE_PASSWORD" \
- --tenant-id $SERVICE_TENANT \
- --email=ironic@example.com \
+ IRONIC_USER=$(openstack user create \
+ ironic \
+ --password "$SERVICE_PASSWORD" \
+ --project $SERVICE_TENANT \
+ --email ironic@example.com \
| grep " id " | get_field 2)
- keystone user-role-add \
- --tenant-id $SERVICE_TENANT \
- --user_id $IRONIC_USER \
- --role_id $ADMIN_ROLE
+ openstack role add \
+ $ADMIN_ROLE \
+ --project $SERVICE_TENANT \
+ --user $IRONIC_USER
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- IRONIC_SERVICE=$(keystone service-create \
- --name=ironic \
+ IRONIC_SERVICE=$(openstack service create \
+ ironic \
--type=baremetal \
--description="Ironic baremetal provisioning service" \
| grep " id " | get_field 2)
- keystone endpoint-create \
+ openstack endpoint create \
+ $IRONIC_SERVICE \
--region RegionOne \
- --service_id $IRONIC_SERVICE \
--publicurl "$IRONIC_SERVICE_PROTOCOL://$IRONIC_HOSTPORT" \
--adminurl "$IRONIC_SERVICE_PROTOCOL://$IRONIC_HOSTPORT" \
--internalurl "$IRONIC_SERVICE_PROTOCOL://$IRONIC_HOSTPORT"
diff --git a/lib/keystone b/lib/keystone
index 4f7f68b..cebb4d3 100644
--- a/lib/keystone
+++ b/lib/keystone
@@ -201,7 +201,7 @@
iniset $KEYSTONE_CONF token provider keystone.token.providers.uuid.Provider
fi
- iniset $KEYSTONE_CONF sql connection `database_connection_url keystone`
+ iniset $KEYSTONE_CONF database connection `database_connection_url keystone`
iniset $KEYSTONE_CONF ec2 driver "keystone.contrib.ec2.backends.sql.Ec2"
if [[ "$KEYSTONE_TOKEN_BACKEND" = "sql" ]]; then
@@ -275,60 +275,69 @@
create_keystone_accounts() {
# admin
- ADMIN_TENANT=$(keystone tenant-create \
- --name admin \
+ ADMIN_TENANT=$(openstack project create \
+ admin \
| grep " id " | get_field 2)
- ADMIN_USER=$(keystone user-create \
- --name admin \
- --pass "$ADMIN_PASSWORD" \
+ ADMIN_USER=$(openstack user create \
+ admin \
+ --project "$ADMIN_TENANT" \
--email admin@example.com \
+ --password "$ADMIN_PASSWORD" \
| grep " id " | get_field 2)
- ADMIN_ROLE=$(keystone role-create \
- --name admin \
+ ADMIN_ROLE=$(openstack role create \
+ admin \
| grep " id " | get_field 2)
- keystone user-role-add \
- --user-id $ADMIN_USER \
- --role-id $ADMIN_ROLE \
- --tenant-id $ADMIN_TENANT
+ openstack role add \
+ $ADMIN_ROLE \
+ --project $ADMIN_TENANT \
+ --user $ADMIN_USER
# service
- SERVICE_TENANT=$(keystone tenant-create \
- --name $SERVICE_TENANT_NAME \
+ SERVICE_TENANT=$(openstack project create \
+ $SERVICE_TENANT_NAME \
| grep " id " | get_field 2)
# The Member role is used by Horizon and Swift so we need to keep it:
- MEMBER_ROLE=$(keystone role-create --name=Member | grep " id " | get_field 2)
+ MEMBER_ROLE=$(openstack role create \
+ Member \
+ | grep " id " | get_field 2)
# ANOTHER_ROLE demonstrates that an arbitrary role may be created and used
# TODO(sleepsonthefloor): show how this can be used for rbac in the future!
- ANOTHER_ROLE=$(keystone role-create --name=anotherrole | grep " id " | get_field 2)
+ ANOTHER_ROLE=$(openstack role create \
+ anotherrole \
+ | grep " id " | get_field 2)
# invisible tenant - admin can't see this one
- INVIS_TENANT=$(keystone tenant-create --name=invisible_to_admin | grep " id " | get_field 2)
+ INVIS_TENANT=$(openstack project create \
+ invisible_to_admin \
+ | grep " id " | get_field 2)
# demo
- DEMO_TENANT=$(keystone tenant-create \
- --name=demo \
+ DEMO_TENANT=$(openstack project create \
+ demo \
| grep " id " | get_field 2)
- DEMO_USER=$(keystone user-create \
- --name demo \
- --pass "$ADMIN_PASSWORD" \
+ DEMO_USER=$(openstack user create \
+ demo \
+ --project $DEMO_TENANT \
--email demo@example.com \
+ --password "$ADMIN_PASSWORD" \
| grep " id " | get_field 2)
- keystone user-role-add --user-id $DEMO_USER --role-id $MEMBER_ROLE --tenant-id $DEMO_TENANT
- keystone user-role-add --user-id $ADMIN_USER --role-id $ADMIN_ROLE --tenant-id $DEMO_TENANT
- keystone user-role-add --user-id $DEMO_USER --role-id $ANOTHER_ROLE --tenant-id $DEMO_TENANT
- keystone user-role-add --user-id $DEMO_USER --role-id $MEMBER_ROLE --tenant-id $INVIS_TENANT
+
+ openstack role add --project $DEMO_TENANT --user $DEMO_USER $MEMBER_ROLE
+ openstack role add --project $DEMO_TENANT --user $ADMIN_USER $ADMIN_ROLE
+ openstack role add --project $DEMO_TENANT --user $DEMO_USER $ANOTHER_ROLE
+ openstack role add --project $INVIS_TENANT --user $DEMO_USER $MEMBER_ROLE
# Keystone
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- KEYSTONE_SERVICE=$(keystone service-create \
- --name keystone \
+ KEYSTONE_SERVICE=$(openstack service create \
+ keystone \
--type identity \
--description "Keystone Identity Service" \
| grep " id " | get_field 2)
- keystone endpoint-create \
+ openstack endpoint create \
+ $KEYSTONE_SERVICE \
--region RegionOne \
- --service_id $KEYSTONE_SERVICE \
--publicurl "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v$IDENTITY_API_VERSION" \
--adminurl "$KEYSTONE_AUTH_PROTOCOL://$KEYSTONE_AUTH_HOST:$KEYSTONE_AUTH_PORT/v$IDENTITY_API_VERSION" \
--internalurl "$KEYSTONE_SERVICE_PROTOCOL://$KEYSTONE_SERVICE_HOST:$KEYSTONE_SERVICE_PORT/v$IDENTITY_API_VERSION"
diff --git a/lib/marconi b/lib/marconi
index 7c8fd14..1c8be49 100644
--- a/lib/marconi
+++ b/lib/marconi
@@ -2,7 +2,8 @@
# Install and start **Marconi** service
# To enable a minimal set of Marconi services, add the following to localrc:
-# enable_service marconi-server
+#
+# enable_service marconi-server
#
# Dependencies:
# - functions
@@ -51,6 +52,11 @@
MARCONICLIENT_REPO=${MARCONICLIENT_REPO:-${GIT_BASE}/openstack/python-marconiclient.git}
MARCONICLIENT_BRANCH=${MARCONICLIENT_BRANCH:-master}
+# Set Marconi Connection Info
+MARCONI_SERVICE_HOST=${MARCONI_SERVICE_HOST:-$SERVICE_HOST}
+MARCONI_SERVICE_PORT=${MARCONI_SERVICE_PORT:-8888}
+MARCONI_SERVICE_PROTOCOL=${MARCONI_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
+
# Tell Tempest this project is present
TEMPEST_SERVICES+=,marconi
@@ -68,7 +74,9 @@
# cleanup_marconi() - Remove residual data files, anything left over from previous
# runs that a clean run would need to clean up
function cleanup_marconi() {
- mongo marconi --eval "db.dropDatabase();"
+ if ! timeout $SERVICE_TIMEOUT sh -c "while ! mongo marconi --eval 'db.dropDatabase();'; do sleep 1; done"; then
+ die $LINENO "Mongo DB did not start"
+ fi
}
# configure_marconiclient() - Set config files, create data dirs, etc
@@ -87,7 +95,7 @@
sudo chown $USER $MARCONI_API_LOG_DIR
iniset $MARCONI_CONF DEFAULT verbose True
- iniset $MARCONI_CONF 'drivers:transport:wsgi' bind '0.0.0.0'
+ iniset $MARCONI_CONF 'drivers:transport:wsgi' bind $MARCONI_SERVICE_HOST
iniset $MARCONI_CONF keystone_authtoken auth_protocol http
iniset $MARCONI_CONF keystone_authtoken admin_user marconi
@@ -140,6 +148,10 @@
# start_marconi() - Start running processes, including screen
function start_marconi() {
screen_it marconi-server "marconi-server --config-file $MARCONI_CONF"
+ echo "Waiting for Marconi to start..."
+ if ! timeout $SERVICE_TIMEOUT sh -c "while ! wget --no-proxy -q -O- $MARCONI_SERVICE_PROTOCOL://$MARCONI_SERVICE_HOST:$MARCONI_SERVICE_PORT/v1/health; do sleep 1; done"; then
+ die $LINENO "Marconi did not start"
+ fi
}
# stop_marconi() - Stop running processes
@@ -151,30 +163,32 @@
}
function create_marconi_accounts() {
- SERVICE_TENANT=$(keystone tenant-list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
- ADMIN_ROLE=$(keystone role-list | awk "/ admin / { print \$2 }")
+ SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
+ ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
- MARCONI_USER=$(get_id keystone user-create --name=marconi \
- --pass="$SERVICE_PASSWORD" \
- --tenant-id $SERVICE_TENANT \
- --email=marconi@example.com \
- | grep " id " | get_field 2)
- keystone user-role-add --tenant-id $SERVICE_TENANT \
- --user-id $MARCONI_USER \
- --role-id $ADMIN_ROLE
+ MARCONI_USER=$(openstack user create \
+ marconi \
+ --password "$SERVICE_PASSWORD" \
+ --project $SERVICE_TENANT \
+ --email marconi@example.com \
+ | grep " id " | get_field 2)
+ openstack role add \
+ $ADMIN_ROLE \
+ --project $SERVICE_TENANT \
+ --user $MARCONI_USER
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- MARCONI_SERVICE=$(keystone service-create \
- --name=marconi \
+ MARCONI_SERVICE=$(openstack service create \
+ marconi \
--type=queuing \
--description="Marconi Service" \
| grep " id " | get_field 2)
- keystone endpoint-create \
+ openstack endpoint create \
+ $MARCONI_SERVICE \
--region RegionOne \
- --service_id $MARCONI_SERVICE \
- --publicurl "http://$SERVICE_HOST:8888" \
- --adminurl "http://$SERVICE_HOST:8888" \
- --internalurl "http://$SERVICE_HOST:8888"
+ --publicurl "$MARCONI_SERVICE_PROTOCOL://$MARCONI_SERVICE_HOST:$MARCONI_SERVICE_PORT" \
+ --adminurl "$MARCONI_SERVICE_PROTOCOL://$MARCONI_SERVICE_HOST:$MARCONI_SERVICE_PORT" \
+ --internalurl "$MARCONI_SERVICE_PROTOCOL://$MARCONI_SERVICE_HOST:$MARCONI_SERVICE_PORT"
fi
}
diff --git a/lib/neutron b/lib/neutron
index 5bd38bc..df276c7 100644
--- a/lib/neutron
+++ b/lib/neutron
@@ -332,29 +332,29 @@
# Migrated from keystone_data.sh
function create_neutron_accounts() {
- SERVICE_TENANT=$(keystone tenant-list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
- ADMIN_ROLE=$(keystone role-list | awk "/ admin / { print \$2 }")
+ SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
+ ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
if [[ "$ENABLED_SERVICES" =~ "q-svc" ]]; then
- NEUTRON_USER=$(keystone user-create \
- --name=neutron \
- --pass="$SERVICE_PASSWORD" \
- --tenant-id $SERVICE_TENANT \
- --email=neutron@example.com \
+ NEUTRON_USER=$(openstack user create \
+ neutron \
+ --password "$SERVICE_PASSWORD" \
+ --project $SERVICE_TENANT \
+ --email neutron@example.com \
| grep " id " | get_field 2)
- keystone user-role-add \
- --tenant-id $SERVICE_TENANT \
- --user-id $NEUTRON_USER \
- --role-id $ADMIN_ROLE
+ openstack role add \
+ $ADMIN_ROLE \
+ --project $SERVICE_TENANT \
+ --user $NEUTRON_USER
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- NEUTRON_SERVICE=$(keystone service-create \
- --name=neutron \
+ NEUTRON_SERVICE=$(openstack service create \
+ neutron \
--type=network \
--description="Neutron Service" \
| grep " id " | get_field 2)
- keystone endpoint-create \
+ openstack endpoint create \
+ $NEUTRON_SERVICE \
--region RegionOne \
- --service_id $NEUTRON_SERVICE \
--publicurl "http://$SERVICE_HOST:9696/" \
--adminurl "http://$SERVICE_HOST:9696/" \
--internalurl "http://$SERVICE_HOST:9696/"
@@ -363,7 +363,7 @@
}
function create_neutron_initial_network() {
- TENANT_ID=$(keystone tenant-list | grep " demo " | get_field 1)
+ TENANT_ID=$(openstack project list | grep " demo " | get_field 1)
die_if_not_set $LINENO TENANT_ID "Failure retrieving TENANT_ID for demo"
# Create a small network
diff --git a/lib/neutron_plugins/midonet b/lib/neutron_plugins/midonet
index f95fcb7..dd3b2ba 100644
--- a/lib/neutron_plugins/midonet
+++ b/lib/neutron_plugins/midonet
@@ -1,6 +1,10 @@
# Neutron MidoNet plugin
# ----------------------
+MIDONET_DIR=${MIDONET_DIR:-$DEST/midonet}
+MIDONET_API_PORT=${MIDONET_API_PORT:-8080}
+MIDONET_API_URL=${MIDONET_API_URL:-http://localhost:$MIDONET_API_PORT/midonet-api}
+
# Save trace setting
MY_XTRACE=$(set +o | grep xtrace)
set +o xtrace
@@ -47,8 +51,8 @@
}
function neutron_plugin_configure_service() {
- if [[ "$MIDONET_API_URI" != "" ]]; then
- iniset /$Q_PLUGIN_CONF_FILE MIDONET midonet_uri $MIDONET_API_URI
+ if [[ "$MIDONET_API_URL" != "" ]]; then
+ iniset /$Q_PLUGIN_CONF_FILE MIDONET midonet_uri $MIDONET_API_URL
fi
if [[ "$MIDONET_USERNAME" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE MIDONET username $MIDONET_USERNAME
@@ -59,9 +63,6 @@
if [[ "$MIDONET_PROJECT_ID" != "" ]]; then
iniset /$Q_PLUGIN_CONF_FILE MIDONET project_id $MIDONET_PROJECT_ID
fi
- if [[ "$MIDONET_PROVIDER_ROUTER_ID" != "" ]]; then
- iniset /$Q_PLUGIN_CONF_FILE MIDONET provider_router_id $MIDONET_PROVIDER_ROUTER_ID
- fi
Q_L3_ENABLED=True
Q_L3_ROUTER_PER_TENANT=True
diff --git a/lib/neutron_plugins/ml2 b/lib/neutron_plugins/ml2
index ab4e347..4ceabe7 100644
--- a/lib/neutron_plugins/ml2
+++ b/lib/neutron_plugins/ml2
@@ -93,9 +93,9 @@
# instead use its own config variable to indicate whether security
# groups is enabled, and that will need to be set here instead.
if [[ "$Q_USE_SECGROUP" == "True" ]]; then
- iniset /$Q_PLUGIN_CONF_FILE SECURITYGROUP firewall_driver neutron.agent.not.a.real.FirewallDriver
+ iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver neutron.agent.not.a.real.FirewallDriver
else
- iniset /$Q_PLUGIN_CONF_FILE SECURITYGROUP firewall_driver neutron.agent.firewall.NoopFirewallDriver
+ iniset /$Q_PLUGIN_CONF_FILE securitygroup firewall_driver neutron.agent.firewall.NoopFirewallDriver
fi
# Since we enable the tunnel TypeDrivers, also enable a local_ip
diff --git a/lib/neutron_thirdparty/midonet b/lib/neutron_thirdparty/midonet
index e672528..98be425 100644
--- a/lib/neutron_thirdparty/midonet
+++ b/lib/neutron_thirdparty/midonet
@@ -10,20 +10,12 @@
# MidoNet devstack destination dir
MIDONET_DIR=${MIDONET_DIR:-$DEST/midonet}
-MIDONET_API_PORT=${MIDONET_API_PORT:-8080}
-MIDONET_API_URL=${MIDONET_API_URL:-http://localhost:$MIDONET_API_PORT/midonet-api}
# MidoNet client repo
MIDONET_CLIENT_REPO=${MIDONET_CLIENT_REPO:-https://github.com/midokura/python-midonetclient.git}
MIDONET_CLIENT_BRANCH=${MIDONET_CLIENT_BRANCH:-master}
MIDONET_CLIENT_DIR=${MIDONET_CLIENT_DIR:-$MIDONET_DIR/python-midonetclient}
-# MidoNet OpenStack repo
-MIDONET_OS_REPO=${MIDONET_OS_REPO:-https://github.com/midokura/midonet-openstack.git}
-MIDONET_OS_BRANCH=${MIDONET_OS_BRANCH:-master}
-MIDONET_OS_DIR=${MIDONET_OS_DIR:-$MIDONET_DIR/midonet-openstack}
-MIDONET_SETUP_SCRIPT=${MIDONET_SETUP_SCRIPT:-$MIDONET_OS_DIR/bin/setup_midonet_topology.py}
-
# Save trace setting
MY_XTRACE=$(set +o | grep xtrace)
set +o xtrace
@@ -33,19 +25,12 @@
}
function init_midonet() {
-
- # Initialize DB. Evaluate the output of setup_midonet_topology.py to set
- # env variables for provider router ID.
- eval `python $MIDONET_SETUP_SCRIPT $MIDONET_API_URL admin $ADMIN_PASSWORD admin provider_devices`
- die_if_not_set $LINENO provider_router_id "Error running midonet setup script, provider_router_id was not set."
-
- iniset /$Q_PLUGIN_CONF_FILE MIDONET provider_router_id $provider_router_id
+ :
}
function install_midonet() {
git_clone $MIDONET_CLIENT_REPO $MIDONET_CLIENT_DIR $MIDONET_CLIENT_BRANCH
- git_clone $MIDONET_OS_REPO $MIDONET_OS_DIR $MIDONET_OS_BRANCH
- export PYTHONPATH=$MIDONET_CLIENT_DIR/src:$MIDONET_OS_DIR/src:$PYTHONPATH
+ export PYTHONPATH=$MIDONET_CLIENT_DIR/src:$PYTHONPATH
}
function start_midonet() {
diff --git a/lib/nova b/lib/nova
index d90aea7..fefeda1 100644
--- a/lib/nova
+++ b/lib/nova
@@ -324,41 +324,41 @@
# Migrated from keystone_data.sh
create_nova_accounts() {
- SERVICE_TENANT=$(keystone tenant-list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
- ADMIN_ROLE=$(keystone role-list | awk "/ admin / { print \$2 }")
+ SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
+ ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
# Nova
if [[ "$ENABLED_SERVICES" =~ "n-api" ]]; then
- NOVA_USER=$(keystone user-create \
- --name=nova \
- --pass="$SERVICE_PASSWORD" \
- --tenant-id $SERVICE_TENANT \
- --email=nova@example.com \
+ NOVA_USER=$(openstack user create \
+ nova \
+ --password "$SERVICE_PASSWORD" \
+ --project $SERVICE_TENANT \
+ --email nova@example.com \
| grep " id " | get_field 2)
- keystone user-role-add \
- --tenant-id $SERVICE_TENANT \
- --user-id $NOVA_USER \
- --role-id $ADMIN_ROLE
+ openstack role add \
+ $ADMIN_ROLE \
+ --project $SERVICE_TENANT \
+ --user $NOVA_USER
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- NOVA_SERVICE=$(keystone service-create \
- --name=nova \
+ NOVA_SERVICE=$(openstack service create \
+ nova \
--type=compute \
--description="Nova Compute Service" \
| grep " id " | get_field 2)
- keystone endpoint-create \
+ openstack endpoint create \
+ $NOVA_SERVICE \
--region RegionOne \
- --service_id $NOVA_SERVICE \
--publicurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v2/\$(tenant_id)s" \
--adminurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v2/\$(tenant_id)s" \
--internalurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v2/\$(tenant_id)s"
- NOVA_V3_SERVICE=$(keystone service-create \
- --name=novav3 \
+ NOVA_V3_SERVICE=$(openstack service create \
+ novav3 \
--type=computev3 \
--description="Nova Compute Service V3" \
| grep " id " | get_field 2)
- keystone endpoint-create \
+ openstack endpoint create \
+ $NOVA_V3_SERVICE \
--region RegionOne \
- --service_id $NOVA_V3_SERVICE \
--publicurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v3" \
--adminurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v3" \
--internalurl "$NOVA_SERVICE_PROTOCOL://$NOVA_SERVICE_HOST:$NOVA_SERVICE_PORT/v3"
diff --git a/lib/oslo b/lib/oslo
index f644ed7..b089842 100644
--- a/lib/oslo
+++ b/lib/oslo
@@ -20,9 +20,13 @@
# Defaults
# --------
+CLIFF_DIR=$DEST/cliff
OSLOCFG_DIR=$DEST/oslo.config
OSLOMSG_DIR=$DEST/oslo.messaging
OSLORWRAP_DIR=$DEST/oslo.rootwrap
+PYCADF_DIR=$DEST/pycadf
+STEVEDORE_DIR=$DEST/stevedore
+TASKFLOW_DIR=$DEST/taskflow
# Entry Points
# ------------
@@ -33,6 +37,9 @@
# for a smoother transition of existing users.
cleanup_oslo
+ git_clone $CLIFF_REPO $CLIFF_DIR $CLIFF_BRANCH
+ setup_develop $CLIFF_DIR
+
git_clone $OSLOCFG_REPO $OSLOCFG_DIR $OSLOCFG_BRANCH
setup_develop $OSLOCFG_DIR
@@ -41,6 +48,15 @@
git_clone $OSLORWRAP_REPO $OSLORWRAP_DIR $OSLORWRAP_BRANCH
setup_develop $OSLORWRAP_DIR
+
+ git_clone $PYCADF_REPO $PYCADF_DIR $PYCADF_BRANCH
+ setup_develop $PYCADF_DIR
+
+ git_clone $STEVEDORE_REPO $STEVEDORE_DIR $STEVEDORE_BRANCH
+ setup_develop $STEVEDORE_DIR
+
+ git_clone $TASKFLOW_REPO $TASKFLOW_DIR $TASKFLOW_BRANCH
+ setup_develop $TASKFLOW_DIR
}
# cleanup_oslo() - purge possibly old versions of oslo
diff --git a/lib/savanna b/lib/savanna
index 6f42311..43c5e38 100644
--- a/lib/savanna
+++ b/lib/savanna
@@ -54,29 +54,29 @@
# service savanna admin
function create_savanna_accounts() {
- SERVICE_TENANT=$(keystone tenant-list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
- ADMIN_ROLE=$(keystone role-list | awk "/ admin / { print \$2 }")
+ SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
+ ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
- SAVANNA_USER=$(keystone user-create \
- --name=savanna \
- --pass="$SERVICE_PASSWORD" \
- --tenant-id $SERVICE_TENANT \
- --email=savanna@example.com \
+ SAVANNA_USER=$(openstack user create \
+ savanna \
+ --password "$SERVICE_PASSWORD" \
+ --project $SERVICE_TENANT \
+ --email savanna@example.com \
| grep " id " | get_field 2)
- keystone user-role-add \
- --tenant-id $SERVICE_TENANT \
- --user-id $SAVANNA_USER \
- --role-id $ADMIN_ROLE
+ openstack role add \
+ $ADMIN_ROLE \
+ --project $SERVICE_TENANT \
+ --user $SAVANNA_USER
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- SAVANNA_SERVICE=$(keystone service-create \
- --name=savanna \
+ SAVANNA_SERVICE=$(openstack service create \
+ savanna \
--type=data_processing \
--description="Savanna Data Processing" \
| grep " id " | get_field 2)
- keystone endpoint-create \
+ openstack endpoint create \
+ $SAVANNA_SERVICE \
--region RegionOne \
- --service_id $SAVANNA_SERVICE \
--publicurl "$SAVANNA_SERVICE_PROTOCOL://$SAVANNA_SERVICE_HOST:$SAVANNA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
--adminurl "$SAVANNA_SERVICE_PROTOCOL://$SAVANNA_SERVICE_HOST:$SAVANNA_SERVICE_PORT/v1.1/\$(tenant_id)s" \
--internalurl "$SAVANNA_SERVICE_PROTOCOL://$SAVANNA_SERVICE_HOST:$SAVANNA_SERVICE_PORT/v1.1/\$(tenant_id)s"
diff --git a/lib/savanna-dashboard b/lib/savanna-dashboard
index 7713a78..691b23f 100644
--- a/lib/savanna-dashboard
+++ b/lib/savanna-dashboard
@@ -37,8 +37,9 @@
function configure_savanna_dashboard() {
- echo -e "SAVANNA_URL = \"http://$SERVICE_HOST:8386/v1.1\"\nAUTO_ASSIGNMENT_ENABLED = False" >> $HORIZON_DIR/openstack_dashboard/local/local_settings.py
- echo -e "HORIZON_CONFIG['dashboards'] += ('savanna',)\nINSTALLED_APPS += ('savannadashboard',)" >> $HORIZON_DIR/openstack_dashboard/settings.py
+ echo -e "AUTO_ASSIGNMENT_ENABLED = False" >> $HORIZON_DIR/openstack_dashboard/local/local_settings.py
+ echo -e "HORIZON_CONFIG['dashboards'] += ('savanna',)" >> $HORIZON_DIR/openstack_dashboard/settings.py
+ echo -e "INSTALLED_APPS += ('savannadashboard',)" >> $HORIZON_DIR/openstack_dashboard/settings.py
if is_service_enabled neutron; then
echo -e "SAVANNA_USE_NEUTRON = True" >> $HORIZON_DIR/openstack_dashboard/local/local_settings.py
diff --git a/lib/stackforge b/lib/stackforge
index 718b818..5fa4570 100644
--- a/lib/stackforge
+++ b/lib/stackforge
@@ -6,8 +6,9 @@
# This is appropriate for python libraries that release to pypi and are
# expected to be used beyond OpenStack like, but are requirements
# for core services in global-requirements.
-# * wsme
-# * pecan
+#
+# * wsme
+# * pecan
#
# This is not appropriate for stackforge projects which are early stage
# OpenStack tools
diff --git a/lib/swift b/lib/swift
index be25c81..6c33af5 100644
--- a/lib/swift
+++ b/lib/swift
@@ -231,6 +231,46 @@
done
}
+# This function generates an object/container/account configuration
+# emulating 4 nodes on different ports
+function generate_swift_config() {
+ local swift_node_config=$1
+ local node_id=$2
+ local bind_port=$3
+ local server_type=$4
+
+ log_facility=$[ node_id - 1 ]
+ node_path=${SWIFT_DATA_DIR}/${node_number}
+
+ iniuncomment ${swift_node_config} DEFAULT user
+ iniset ${swift_node_config} DEFAULT user ${STACK_USER}
+
+ iniuncomment ${swift_node_config} DEFAULT bind_port
+ iniset ${swift_node_config} DEFAULT bind_port ${bind_port}
+
+ iniuncomment ${swift_node_config} DEFAULT swift_dir
+ iniset ${swift_node_config} DEFAULT swift_dir ${SWIFT_CONF_DIR}
+
+ iniuncomment ${swift_node_config} DEFAULT devices
+ iniset ${swift_node_config} DEFAULT devices ${node_path}
+
+ iniuncomment ${swift_node_config} DEFAULT log_facility
+ iniset ${swift_node_config} DEFAULT log_facility LOG_LOCAL${log_facility}
+
+ iniuncomment ${swift_node_config} DEFAULT workers
+ iniset ${swift_node_config} DEFAULT workers 1
+
+ iniuncomment ${swift_node_config} DEFAULT disable_fallocate
+ iniset ${swift_node_config} DEFAULT disable_fallocate true
+
+ iniuncomment ${swift_node_config} DEFAULT mount_check
+ iniset ${swift_node_config} DEFAULT mount_check false
+
+ iniuncomment ${swift_node_config} ${server_type}-replicator vm_test_mode
+ iniset ${swift_node_config} ${server_type}-replicator vm_test_mode yes
+}
+
+
# configure_swift() - Set config files, create data dirs and loop image
function configure_swift() {
local swift_pipeline="${SWIFT_EXTRAS_MIDDLEWARE_NO_AUTH}"
@@ -364,45 +404,6 @@
cp ${SWIFT_DIR}/etc/swift.conf-sample ${SWIFT_CONF_DIR}/swift.conf
iniset ${SWIFT_CONF_DIR}/swift.conf swift-hash swift_hash_path_suffix ${SWIFT_HASH}
- # This function generates an object/container/account configuration
- # emulating 4 nodes on different ports
- function generate_swift_config() {
- local swift_node_config=$1
- local node_id=$2
- local bind_port=$3
- local server_type=$4
-
- log_facility=$[ node_id - 1 ]
- node_path=${SWIFT_DATA_DIR}/${node_number}
-
- iniuncomment ${swift_node_config} DEFAULT user
- iniset ${swift_node_config} DEFAULT user ${STACK_USER}
-
- iniuncomment ${swift_node_config} DEFAULT bind_port
- iniset ${swift_node_config} DEFAULT bind_port ${bind_port}
-
- iniuncomment ${swift_node_config} DEFAULT swift_dir
- iniset ${swift_node_config} DEFAULT swift_dir ${SWIFT_CONF_DIR}
-
- iniuncomment ${swift_node_config} DEFAULT devices
- iniset ${swift_node_config} DEFAULT devices ${node_path}
-
- iniuncomment ${swift_node_config} DEFAULT log_facility
- iniset ${swift_node_config} DEFAULT log_facility LOG_LOCAL${log_facility}
-
- iniuncomment ${swift_node_config} DEFAULT workers
- iniset ${swift_node_config} DEFAULT workers 1
-
- iniuncomment ${swift_node_config} DEFAULT disable_fallocate
- iniset ${swift_node_config} DEFAULT disable_fallocate true
-
- iniuncomment ${swift_node_config} DEFAULT mount_check
- iniset ${swift_node_config} DEFAULT mount_check false
-
- iniuncomment ${swift_node_config} ${server_type}-replicator vm_test_mode
- iniset ${swift_node_config} ${server_type}-replicator vm_test_mode yes
- }
-
for node_number in ${SWIFT_REPLICAS_SEQ}; do
swift_node_config=${SWIFT_CONF_DIR}/object-server/${node_number}.conf
cp ${SWIFT_DIR}/etc/object-server.conf-sample ${swift_node_config}
@@ -527,39 +528,53 @@
KEYSTONE_CATALOG_BACKEND=${KEYSTONE_CATALOG_BACKEND:-sql}
- SERVICE_TENANT=$(keystone tenant-list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
- ADMIN_ROLE=$(keystone role-list | awk "/ admin / { print \$2 }")
+ SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
+ ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
- SWIFT_USER=$(keystone user-create --name=swift --pass="$SERVICE_PASSWORD" \
- --tenant-id $SERVICE_TENANT --email=swift@example.com | grep " id " | get_field 2)
- keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $SWIFT_USER --role-id $ADMIN_ROLE
+ SWIFT_USER=$(openstack user create \
+ swift \
+ --password "$SERVICE_PASSWORD" \
+ --project $SERVICE_TENANT \
+ --email=swift@example.com \
+ | grep " id " | get_field 2)
+ openstack role add \
+ $ADMIN_ROLE \
+ --project $SERVICE_TENANT \
+ --user $SWIFT_USER
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- SWIFT_SERVICE=$(keystone service-create --name=swift --type="object-store" \
- --description="Swift Service" | grep " id " | get_field 2)
- keystone endpoint-create \
+ SWIFT_SERVICE=$(openstack service create \
+ swift \
+ --type="object-store" \
+ --description="Swift Service" \
+ | grep " id " | get_field 2)
+ openstack endpoint create \
+ $SWIFT_SERVICE \
--region RegionOne \
- --service_id $SWIFT_SERVICE \
--publicurl "http://$SERVICE_HOST:8080/v1/AUTH_\$(tenant_id)s" \
--adminurl "http://$SERVICE_HOST:8080" \
--internalurl "http://$SERVICE_HOST:8080/v1/AUTH_\$(tenant_id)s"
fi
- SWIFT_TENANT_TEST1=$(keystone tenant-create --name=swifttenanttest1 | grep " id " | get_field 2)
+ SWIFT_TENANT_TEST1=$(openstack project create swifttenanttest1 | grep " id " | get_field 2)
die_if_not_set $LINENO SWIFT_TENANT_TEST1 "Failure creating SWIFT_TENANT_TEST1"
- SWIFT_USER_TEST1=$(keystone user-create --name=swiftusertest1 --pass=$SWIFTUSERTEST1_PASSWORD --email=test@example.com | grep " id " | get_field 2)
+ SWIFT_USER_TEST1=$(openstack user create swiftusertest1 --password=$SWIFTUSERTEST1_PASSWORD \
+ --project "$SWIFT_TENANT_TEST1" --email=test@example.com | grep " id " | get_field 2)
die_if_not_set $LINENO SWIFT_USER_TEST1 "Failure creating SWIFT_USER_TEST1"
- keystone user-role-add --user-id $SWIFT_USER_TEST1 --role-id $ADMIN_ROLE --tenant-id $SWIFT_TENANT_TEST1
+ openstack role add --user $SWIFT_USER_TEST1 --project $SWIFT_TENANT_TEST1 $ADMIN_ROLE
- SWIFT_USER_TEST3=$(keystone user-create --name=swiftusertest3 --pass=$SWIFTUSERTEST3_PASSWORD --email=test3@example.com | grep " id " | get_field 2)
+ SWIFT_USER_TEST3=$(openstack user create swiftusertest3 --password=$SWIFTUSERTEST3_PASSWORD \
+ --project "$SWIFT_TENANT_TEST1" --email=test3@example.com | grep " id " | get_field 2)
die_if_not_set $LINENO SWIFT_USER_TEST3 "Failure creating SWIFT_USER_TEST3"
- keystone user-role-add --user-id $SWIFT_USER_TEST3 --role-id $ANOTHER_ROLE --tenant-id $SWIFT_TENANT_TEST1
+ openstack role add --user $SWIFT_USER_TEST3 --project $SWIFT_TENANT_TEST1 $ANOTHER_ROLE
- SWIFT_TENANT_TEST2=$(keystone tenant-create --name=swifttenanttest2 | grep " id " | get_field 2)
+ SWIFT_TENANT_TEST2=$(openstack project create swifttenanttest2 | grep " id " | get_field 2)
die_if_not_set $LINENO SWIFT_TENANT_TEST2 "Failure creating SWIFT_TENANT_TEST2"
- SWIFT_USER_TEST2=$(keystone user-create --name=swiftusertest2 --pass=$SWIFTUSERTEST2_PASSWORD --email=test2@example.com | grep " id " | get_field 2)
+
+ SWIFT_USER_TEST2=$(openstack user create swiftusertest2 --password=$SWIFTUSERTEST2_PASSWORD \
+ --project "$SWIFT_TENANT_TEST2" --email=test2@example.com | grep " id " | get_field 2)
die_if_not_set $LINENO SWIFT_USER_TEST2 "Failure creating SWIFT_USER_TEST2"
- keystone user-role-add --user-id $SWIFT_USER_TEST2 --role-id $ADMIN_ROLE --tenant-id $SWIFT_TENANT_TEST2
+ openstack role add --user $SWIFT_USER_TEST2 --project $SWIFT_TENANT_TEST2 $ADMIN_ROLE
}
# init_swift() - Initialize rings
diff --git a/lib/tempest b/lib/tempest
index c8eebfc..596750b 100644
--- a/lib/tempest
+++ b/lib/tempest
@@ -314,8 +314,8 @@
iniset $TEMPEST_CONFIG scenario large_ops_number ${TEMPEST_LARGE_OPS_NUMBER:-0}
# Volume
- if is_service_enabled c-bak; then
- iniset $TEMPEST_CONFIG volume volume_backup_enabled "True"
+ if ! is_service_enabled c-bak; then
+ iniset $TEMPEST_CONFIG volume-feature-enabled backup False
fi
CINDER_MULTI_LVM_BACKEND=$(trueorfalse False $CINDER_MULTI_LVM_BACKEND)
if [ $CINDER_MULTI_LVM_BACKEND == "True" ]; then
diff --git a/lib/trove b/lib/trove
index bb45491..6834149 100644
--- a/lib/trove
+++ b/lib/trove
@@ -71,28 +71,29 @@
create_trove_accounts() {
# Trove
- SERVICE_TENANT=$(keystone tenant-list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
- SERVICE_ROLE=$(keystone role-list | awk "/ admin / { print \$2 }")
+ SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
+ SERVICE_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
if [[ "$ENABLED_SERVICES" =~ "trove" ]]; then
- TROVE_USER=$(keystone user-create \
- --name=trove \
- --pass="$SERVICE_PASSWORD" \
- --tenant-id $SERVICE_TENANT \
- --email=trove@example.com \
+ TROVE_USER=$(openstack user create \
+ trove \
+ --password "$SERVICE_PASSWORD" \
+ --project $SERVICE_TENANT \
+ --email trove@example.com \
| grep " id " | get_field 2)
- keystone user-role-add --tenant-id $SERVICE_TENANT \
- --user-id $TROVE_USER \
- --role-id $SERVICE_ROLE
+ openstack role add \
+ $SERVICE_ROLE \
+ --project $SERVICE_TENANT \
+ --user $TROVE_USER
if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
- TROVE_SERVICE=$(keystone service-create \
- --name=trove \
+ TROVE_SERVICE=$(openstack service create \
+ trove \
--type=database \
--description="Trove Service" \
| grep " id " | get_field 2)
- keystone endpoint-create \
+ openstack endpoint create \
+ $TROVE_SERVICE \
--region RegionOne \
- --service_id $TROVE_SERVICE \
--publicurl "http://$SERVICE_HOST:8779/v1.0/\$(tenant_id)s" \
--adminurl "http://$SERVICE_HOST:8779/v1.0/\$(tenant_id)s" \
--internalurl "http://$SERVICE_HOST:8779/v1.0/\$(tenant_id)s"
diff --git a/openrc b/openrc
index 784b00e..fc066ad 100644
--- a/openrc
+++ b/openrc
@@ -67,7 +67,7 @@
# Identity API version
export OS_IDENTITY_API_VERSION=${IDENTITY_API_VERSION:-2.0}
-# Authenticating against an Openstack cloud using Keystone returns a **Token**
+# Authenticating against an OpenStack cloud using Keystone returns a **Token**
# and **Service Catalog**. The catalog contains the endpoints for all services
# the user/tenant has access to - including nova, glance, keystone, swift, ...
# We currently recommend using the 2.0 *identity api*.
diff --git a/run_tests.sh b/run_tests.sh
index 9d9d186..b4f26c5 100755
--- a/run_tests.sh
+++ b/run_tests.sh
@@ -20,7 +20,7 @@
else
LIBS=`find lib -type f | grep -v \.md`
SCRIPTS=`find . -type f -name \*\.sh`
- EXTRA="functions"
+ EXTRA="functions functions-common stackrc openrc exerciserc eucarc"
FILES="$SCRIPTS $LIBS $EXTRA"
fi
diff --git a/stack.sh b/stack.sh
index eaccc76..9f08e0f 100755
--- a/stack.sh
+++ b/stack.sh
@@ -863,42 +863,36 @@
init_service_check
-# Sysstat
+# Sysstat and friends
# -------
# If enabled, systat has to start early to track OpenStack service startup.
-if is_service_enabled sysstat; then
- # what we want to measure
- # -u : cpu statitics
- # -q : load
- # -b : io load rates
- # -w : process creation and context switch rates
- SYSSTAT_OPTS="-u -q -b -w"
- if [[ -n ${SCREEN_LOGDIR} ]]; then
- screen_it sysstat "cd $TOP_DIR; ./tools/sar_filter.py $SYSSTAT_OPTS -o $SCREEN_LOGDIR/$SYSSTAT_FILE $SYSSTAT_INTERVAL"
- else
- screen_it sysstat "./tools/sar_filter.py $SYSSTAT_OPTS $SYSSTAT_INTERVAL"
- fi
+# what we want to measure
+# -u : cpu statitics
+# -q : load
+# -b : io load rates
+# -w : process creation and context switch rates
+SYSSTAT_OPTS="-u -q -b -w"
+if [[ -n ${SCREEN_LOGDIR} ]]; then
+ screen_it sysstat "cd $TOP_DIR; ./tools/sar_filter.py $SYSSTAT_OPTS -o $SCREEN_LOGDIR/$SYSSTAT_FILE $SYSSTAT_INTERVAL"
+else
+ screen_it sysstat "./tools/sar_filter.py $SYSSTAT_OPTS $SYSSTAT_INTERVAL"
fi
-if is_service_enabled dstat; then
- # Per-process stats
- DSTAT_OPTS="-tcndylp --top-cpu-adv"
- if [[ -n ${SCREEN_LOGDIR} ]]; then
- screen_it dstat "cd $TOP_DIR; dstat $DSTAT_OPTS | tee $SCREEN_LOGDIR/$DSTAT_FILE"
- else
- screen_it dstat "dstat $DSTAT_OPTS"
- fi
+# A better kind of sysstat, with the top process per time slice
+DSTAT_OPTS="-tcndylp --top-cpu-adv"
+if [[ -n ${SCREEN_LOGDIR} ]]; then
+ screen_it dstat "cd $TOP_DIR; dstat $DSTAT_OPTS | tee $SCREEN_LOGDIR/$DSTAT_FILE"
+else
+ screen_it dstat "dstat $DSTAT_OPTS"
fi
-if is_service_enabled pidstat; then
- # Per-process stats
- PIDSTAT_OPTS="-l -p ALL -T ALL"
- if [[ -n ${SCREEN_LOGDIR} ]]; then
- screen_it pidstat "cd $TOP_DIR; pidstat $PIDSTAT_OPTS $PIDSTAT_INTERVAL > $SCREEN_LOGDIR/$PIDSTAT_FILE"
- else
- screen_it pidstat "pidstat $PIDSTAT_OPTS $PIDSTAT_INTERVAL"
- fi
+# Per-process stats
+PIDSTAT_OPTS="-l -p ALL -T ALL"
+if [[ -n ${SCREEN_LOGDIR} ]]; then
+ screen_it pidstat "cd $TOP_DIR; pidstat $PIDSTAT_OPTS $PIDSTAT_INTERVAL > $SCREEN_LOGDIR/$PIDSTAT_FILE"
+else
+ screen_it pidstat "pidstat $PIDSTAT_OPTS $PIDSTAT_INTERVAL"
fi
@@ -925,6 +919,9 @@
# Do the keystone-specific bits from keystone_data.sh
export OS_SERVICE_TOKEN=$SERVICE_TOKEN
export OS_SERVICE_ENDPOINT=$SERVICE_ENDPOINT
+ # Add temporarily to make openstackclient work
+ export OS_TOKEN=$SERVICE_TOKEN
+ export OS_URL=$SERVICE_ENDPOINT
create_keystone_accounts
create_nova_accounts
create_cinder_accounts
@@ -938,6 +935,10 @@
create_swift_accounts
fi
+ if is_service_enabled heat; then
+ create_heat_accounts
+ fi
+
# ``keystone_data.sh`` creates services, admin and demo users, and roles.
ADMIN_PASSWORD=$ADMIN_PASSWORD SERVICE_TENANT_NAME=$SERVICE_TENANT_NAME SERVICE_PASSWORD=$SERVICE_PASSWORD \
SERVICE_TOKEN=$SERVICE_TOKEN SERVICE_ENDPOINT=$SERVICE_ENDPOINT SERVICE_HOST=$SERVICE_HOST \
@@ -947,6 +948,7 @@
bash -x $FILES/keystone_data.sh
# Set up auth creds now that keystone is bootstrapped
+ unset OS_TOKEN OS_URL
export OS_AUTH_URL=$SERVICE_ENDPOINT
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
diff --git a/stackrc b/stackrc
index 52105e6..0b081c4 100644
--- a/stackrc
+++ b/stackrc
@@ -35,7 +35,18 @@
# enable_service neutron
# # Optional, to enable tempest configuration as part of devstack
# enable_service tempest
-ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,c-sch,c-api,c-vol,n-sch,n-novnc,n-xvnc,n-cauth,horizon,rabbit,tempest,mysql
+
+# core compute (glance / keystone / nova (+ nova-network))
+ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,n-sch,n-novnc,n-xvnc,n-cauth
+# cinder
+ENABLED_SERVICES+=,c-sch,c-api,c-vol
+# heat
+ENABLED_SERVICES+=,h-eng,h-api,h-api-cfn,h-api-cw
+# dashboard
+ENABLED_SERVICES+=,horizon
+# additional services
+ENABLED_SERVICES+=,rabbit,tempest,mysql
+
# Tell Tempest which services are available. The default is set here as
# Tempest falls late in the configuration sequence. This differs from
@@ -140,6 +151,10 @@
OPENSTACKCLIENT_REPO=${OPENSTACKCLIENT_REPO:-${GIT_BASE}/openstack/python-openstackclient.git}
OPENSTACKCLIENT_BRANCH=${OPENSTACKCLIENT_BRANCH:-master}
+# cliff command line framework
+CLIFF_REPO=${CLIFF_REPO:-${GIT_BASE}/openstack/cliff.git}
+CLIFF_BRANCH=${CLIFF_BRANCH:-master}
+
# oslo.config
OSLOCFG_REPO=${OSLOCFG_REPO:-${GIT_BASE}/openstack/oslo.config.git}
OSLOCFG_BRANCH=${OSLOCFG_BRANCH:-master}
@@ -152,6 +167,18 @@
OSLORWRAP_REPO=${OSLORWRAP_REPO:-${GIT_BASE}/openstack/oslo.rootwrap.git}
OSLORWRAP_BRANCH=${OSLORWRAP_BRANCH:-master}
+# pycadf auditing library
+PYCADF_REPO=${PYCADF_REPO:-${GIT_BASE}/openstack/pycadf.git}
+PYCADF_BRANCH=${PYCADF_BRANCH:-master}
+
+# stevedore plugin manager
+STEVEDORE_REPO=${STEVEDORE_REPO:-${GIT_BASE}/openstack/stevedore.git}
+STEVEDORE_BRANCH=${STEVEDORE_BRANCH:-master}
+
+# taskflow plugin manager
+TASKFLOW_REPO=${TASKFLOW_REPO:-${GIT_BASE}/openstack/taskflow.git}
+TASKFLOW_BRANCH=${TASKFLOW_BRANCH:-master}
+
# pbr drives the setuptools configs
PBR_REPO=${PBR_REPO:-${GIT_BASE}/openstack-dev/pbr.git}
PBR_BRANCH=${PBR_BRANCH:-master}
diff --git a/tools/create_userrc.sh b/tools/create_userrc.sh
index d9c93cc..cd5a1c9 100755
--- a/tools/create_userrc.sh
+++ b/tools/create_userrc.sh
@@ -54,9 +54,7 @@
EOF
}
-if ! options=$(getopt -o hPAp:u:r:C: -l os-username:,os-password:,os-tenant-name:,os-tenant-id:,os-auth-url:,target-dir:,skip-tenant:,os-cacert:,help,debug -- "$@")
-then
- #parse error
+if ! options=$(getopt -o hPAp:u:r:C: -l os-username:,os-password:,os-tenant-name:,os-tenant-id:,os-auth-url:,target-dir:,skip-tenant:,os-cacert:,help,debug -- "$@"); then
display_help
exit 1
fi
@@ -199,7 +197,7 @@
export S3_URL="$S3_URL"
# OpenStack USER ID = $user_id
export OS_USERNAME="$user_name"
-# Openstack Tenant ID = $tenant_id
+# OpenStack Tenant ID = $tenant_id
export OS_TENANT_NAME="$tenant_name"
export OS_AUTH_URL="$OS_AUTH_URL"
export OS_CACERT="$OS_CACERT"
diff --git a/tools/fixup_stuff.sh b/tools/fixup_stuff.sh
index a28e10e..47b0cd1 100755
--- a/tools/fixup_stuff.sh
+++ b/tools/fixup_stuff.sh
@@ -70,7 +70,8 @@
fi
# Ubuntu 12.04
-# -----
+# ------------
+
# We can regularly get kernel crashes on the 12.04 default kernel, so attempt
# to install a new kernel
if [[ ${DISTRO} =~ (precise) ]]; then
diff --git a/tools/info.sh b/tools/info.sh
index 3ab7966..1e521b9 100755
--- a/tools/info.sh
+++ b/tools/info.sh
@@ -122,13 +122,11 @@
ver=${BASH_REMATCH[2]}
else
# Unhandled format in freeze file
- #echo "unknown: $p"
continue
fi
echo "pip|${p}|${ver}"
else
# No match in freeze file
- #echo "unknown: $p"
continue
fi
done <$FREEZE_FILE
diff --git a/tools/jenkins/README.md b/tools/jenkins/README.md
index 371017d..3586da9 100644
--- a/tools/jenkins/README.md
+++ b/tools/jenkins/README.md
@@ -1,6 +1,6 @@
Getting Started With Jenkins and Devstack
=========================================
-This little corner of devstack is to show how to get an Openstack jenkins
+This little corner of devstack is to show how to get an OpenStack jenkins
environment up and running quickly, using the rcb configuration methodology.
diff --git a/tools/xen/README.md b/tools/xen/README.md
index ee1abcc..712782b 100644
--- a/tools/xen/README.md
+++ b/tools/xen/README.md
@@ -1,11 +1,11 @@
# Getting Started With XenServer and Devstack
The purpose of the code in this directory it to help developers bootstrap a
-XenServer 6.2 (older versions may also work) + Openstack development
+XenServer 6.2 (older versions may also work) + OpenStack development
environment. This file gives some pointers on how to get started.
Xenserver is a Type 1 hypervisor, so it is best installed on bare metal. The
-Openstack services are configured to run within a virtual machine (called OS
+OpenStack services are configured to run within a virtual machine (called OS
domU) on the XenServer host. The VM uses the XAPI toolstack to communicate with
the host over a network connection (see `MGT_BRIDGE_OR_NET_NAME`).
diff --git a/tools/xen/build_domU_multi.sh b/tools/xen/build_domU_multi.sh
index 0285f42..0eb2077 100755
--- a/tools/xen/build_domU_multi.sh
+++ b/tools/xen/build_domU_multi.sh
@@ -25,11 +25,5 @@
# because rabbit won't launch with an ip addr hostname :(
build_xva HEADNODE $HEAD_PUB_IP $HEAD_MGT_IP 1 "ENABLED_SERVICES=g-api,g-reg,key,n-api,n-sch,n-vnc,horizon,mysql,rabbit"
-# Wait till the head node is up
-#while ! curl -L http://$HEAD_PUB_IP | grep -q username; do
-# echo "Waiting for head node ($HEAD_PUB_IP) to start..."
-# sleep 5
-#done
-
# Build the HA compute host
build_xva COMPUTENODE $COMPUTE_PUB_IP $COMPUTE_MGT_IP 0 "ENABLED_SERVICES=n-cpu,n-net,n-api"