Fix various things when n-cell is enabled
1) Use the newer cell_type configuration option instead of overriding the compute_api_class. 2) A nova-cells service is started for both the API cell (region) and the compute cell (child). The screen names were both 'n-cell' which caused both services to log to the same log file. The screen names have been changed to n-cell-region and n-cell-child. 3) Security groups are not supported with cells. Multiple exercises are patched to use the 'default' security group instead of creating a new one. Additionally, if one uses the 'default' security group, do not try to delete it, as one can never delete the default. 4) Disable the floating_ips and aggregates exercises when n-cell is enabled, as they are not supported by cells. 5) Related to #4, disable the floating_ips tests within euca.sh 6) Update the README.md. No services need to be disabled, and one only needs to enable the n-cell service. Change-Id: I9782d1e3cda3c9dd3daefa15c043f5b06473cb87
This commit is contained in:
parent
c41a059864
commit
c62c2b9b66
12
README.md
12
README.md
@ -188,15 +188,5 @@ Cells is a new scaling option with a full spec at http://wiki.openstack.org/blue
|
|||||||
To setup a cells environment add the following to your `localrc`:
|
To setup a cells environment add the following to your `localrc`:
|
||||||
|
|
||||||
enable_service n-cell
|
enable_service n-cell
|
||||||
enable_service n-api-meta
|
|
||||||
MULTI_HOST=True
|
|
||||||
|
|
||||||
# The following have not been tested with cells, they may or may not work.
|
Be aware that there are some features currently missing in cells, one notable one being security groups. The exercises have been patched to disable functionality not supported by cells.
|
||||||
disable_service n-obj
|
|
||||||
disable_service cinder
|
|
||||||
disable_service c-sch
|
|
||||||
disable_service c-api
|
|
||||||
disable_service c-vol
|
|
||||||
disable_service n-xvnc
|
|
||||||
|
|
||||||
Be aware that there are some features currently missing in cells, one notable one being security groups.
|
|
||||||
|
@ -42,6 +42,8 @@ source $TOP_DIR/exerciserc
|
|||||||
# Test as the admin user
|
# Test as the admin user
|
||||||
. $TOP_DIR/openrc admin admin
|
. $TOP_DIR/openrc admin admin
|
||||||
|
|
||||||
|
# Cells does not support aggregates.
|
||||||
|
is_service_enabled n-cell && exit 55
|
||||||
|
|
||||||
# Create an aggregate
|
# Create an aggregate
|
||||||
# ===================
|
# ===================
|
||||||
|
@ -80,12 +80,18 @@ die_if_not_set $LINENO IMAGE "Failure getting image $DEFAULT_IMAGE_NAME"
|
|||||||
# List security groups
|
# List security groups
|
||||||
nova secgroup-list
|
nova secgroup-list
|
||||||
|
|
||||||
# Create a secgroup
|
if is_service_enabled n-cell; then
|
||||||
if ! nova secgroup-list | grep -q $SECGROUP; then
|
# Cells does not support security groups, so force the use of "default"
|
||||||
nova secgroup-create $SECGROUP "$SECGROUP description"
|
SECGROUP="default"
|
||||||
if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! nova secgroup-list | grep -q $SECGROUP; do sleep 1; done"; then
|
echo "Using the default security group because of Cells."
|
||||||
echo "Security group not created"
|
else
|
||||||
exit 1
|
# Create a secgroup
|
||||||
|
if ! nova secgroup-list | grep -q $SECGROUP; then
|
||||||
|
nova secgroup-create $SECGROUP "$SECGROUP description"
|
||||||
|
if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! nova secgroup-list | grep -q $SECGROUP; do sleep 1; done"; then
|
||||||
|
echo "Security group not created"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -200,8 +206,12 @@ fi
|
|||||||
end_time=$(date +%s)
|
end_time=$(date +%s)
|
||||||
echo "Completed cinder delete in $((end_time - start_time)) seconds"
|
echo "Completed cinder delete in $((end_time - start_time)) seconds"
|
||||||
|
|
||||||
# Delete secgroup
|
if [[ $SECGROUP = "default" ]] ; then
|
||||||
nova secgroup-delete $SECGROUP || die $LINENO "Failure deleting security group $SECGROUP"
|
echo "Skipping deleting default security group"
|
||||||
|
else
|
||||||
|
# Delete secgroup
|
||||||
|
nova secgroup-delete $SECGROUP || die $LINENO "Failure deleting security group $SECGROUP"
|
||||||
|
fi
|
||||||
|
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
echo "*********************************************************************"
|
echo "*********************************************************************"
|
||||||
|
@ -58,11 +58,17 @@ SECGROUP=${SECGROUP:-euca_secgroup}
|
|||||||
IMAGE=`euca-describe-images | grep machine | grep ${DEFAULT_IMAGE_NAME} | cut -f2 | head -n1`
|
IMAGE=`euca-describe-images | grep machine | grep ${DEFAULT_IMAGE_NAME} | cut -f2 | head -n1`
|
||||||
die_if_not_set $LINENO IMAGE "Failure getting image $DEFAULT_IMAGE_NAME"
|
die_if_not_set $LINENO IMAGE "Failure getting image $DEFAULT_IMAGE_NAME"
|
||||||
|
|
||||||
# Add a secgroup
|
if is_service_enabled n-cell; then
|
||||||
if ! euca-describe-groups | grep -q $SECGROUP; then
|
# Cells does not support security groups, so force the use of "default"
|
||||||
euca-add-group -d "$SECGROUP description" $SECGROUP
|
SECGROUP="default"
|
||||||
if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! euca-describe-groups | grep -q $SECGROUP; do sleep 1; done"; then
|
echo "Using the default security group because of Cells."
|
||||||
die $LINENO "Security group not created"
|
else
|
||||||
|
# Add a secgroup
|
||||||
|
if ! euca-describe-groups | grep -q $SECGROUP; then
|
||||||
|
euca-add-group -d "$SECGROUP description" $SECGROUP
|
||||||
|
if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! euca-describe-groups | grep -q $SECGROUP; do sleep 1; done"; then
|
||||||
|
die $LINENO "Security group not created"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -77,7 +83,7 @@ fi
|
|||||||
|
|
||||||
# Volumes
|
# Volumes
|
||||||
# -------
|
# -------
|
||||||
if [[ "$ENABLED_SERVICES" =~ "c-vol" ]]; then
|
if is_service_enabled c-vol && ! is_service_enabled n-cell; then
|
||||||
VOLUME_ZONE=`euca-describe-availability-zones | head -n1 | cut -f2`
|
VOLUME_ZONE=`euca-describe-availability-zones | head -n1 | cut -f2`
|
||||||
die_if_not_set $LINENO VOLUME_ZONE "Failure to find zone for volume"
|
die_if_not_set $LINENO VOLUME_ZONE "Failure to find zone for volume"
|
||||||
|
|
||||||
@ -117,41 +123,45 @@ else
|
|||||||
echo "Volume Tests Skipped"
|
echo "Volume Tests Skipped"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Allocate floating address
|
if is_service_enabled n-cell; then
|
||||||
FLOATING_IP=`euca-allocate-address | cut -f2`
|
echo "Floating IP Tests Skipped because of Cells."
|
||||||
die_if_not_set $LINENO FLOATING_IP "Failure allocating floating IP"
|
else
|
||||||
|
# Allocate floating address
|
||||||
|
FLOATING_IP=`euca-allocate-address | cut -f2`
|
||||||
|
die_if_not_set $LINENO FLOATING_IP "Failure allocating floating IP"
|
||||||
|
|
||||||
# Associate floating address
|
# Associate floating address
|
||||||
euca-associate-address -i $INSTANCE $FLOATING_IP || \
|
euca-associate-address -i $INSTANCE $FLOATING_IP || \
|
||||||
die $LINENO "Failure associating address $FLOATING_IP to $INSTANCE"
|
die $LINENO "Failure associating address $FLOATING_IP to $INSTANCE"
|
||||||
|
|
||||||
# Authorize pinging
|
# Authorize pinging
|
||||||
euca-authorize -P icmp -s 0.0.0.0/0 -t -1:-1 $SECGROUP || \
|
euca-authorize -P icmp -s 0.0.0.0/0 -t -1:-1 $SECGROUP || \
|
||||||
die $LINENO "Failure authorizing rule in $SECGROUP"
|
die $LINENO "Failure authorizing rule in $SECGROUP"
|
||||||
|
|
||||||
# Test we can ping our floating ip within ASSOCIATE_TIMEOUT seconds
|
# Test we can ping our floating ip within ASSOCIATE_TIMEOUT seconds
|
||||||
ping_check "$PUBLIC_NETWORK_NAME" $FLOATING_IP $ASSOCIATE_TIMEOUT
|
ping_check "$PUBLIC_NETWORK_NAME" $FLOATING_IP $ASSOCIATE_TIMEOUT
|
||||||
|
|
||||||
# Revoke pinging
|
# Revoke pinging
|
||||||
euca-revoke -P icmp -s 0.0.0.0/0 -t -1:-1 $SECGROUP || \
|
euca-revoke -P icmp -s 0.0.0.0/0 -t -1:-1 $SECGROUP || \
|
||||||
die $LINENO "Failure revoking rule in $SECGROUP"
|
die $LINENO "Failure revoking rule in $SECGROUP"
|
||||||
|
|
||||||
# Release floating address
|
# Release floating address
|
||||||
euca-disassociate-address $FLOATING_IP || \
|
euca-disassociate-address $FLOATING_IP || \
|
||||||
die $LINENO "Failure disassociating address $FLOATING_IP"
|
die $LINENO "Failure disassociating address $FLOATING_IP"
|
||||||
|
|
||||||
# Wait just a tick for everything above to complete so release doesn't fail
|
# Wait just a tick for everything above to complete so release doesn't fail
|
||||||
if ! timeout $ASSOCIATE_TIMEOUT sh -c "while euca-describe-addresses | grep $INSTANCE | grep -q $FLOATING_IP; do sleep 1; done"; then
|
if ! timeout $ASSOCIATE_TIMEOUT sh -c "while euca-describe-addresses | grep $INSTANCE | grep -q $FLOATING_IP; do sleep 1; done"; then
|
||||||
die $LINENO "Floating ip $FLOATING_IP not disassociated within $ASSOCIATE_TIMEOUT seconds"
|
die $LINENO "Floating ip $FLOATING_IP not disassociated within $ASSOCIATE_TIMEOUT seconds"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Release floating address
|
# Release floating address
|
||||||
euca-release-address $FLOATING_IP || \
|
euca-release-address $FLOATING_IP || \
|
||||||
die $LINENO "Failure releasing address $FLOATING_IP"
|
die $LINENO "Failure releasing address $FLOATING_IP"
|
||||||
|
|
||||||
# Wait just a tick for everything above to complete so terminate doesn't fail
|
# Wait just a tick for everything above to complete so terminate doesn't fail
|
||||||
if ! timeout $ASSOCIATE_TIMEOUT sh -c "while euca-describe-addresses | grep -q $FLOATING_IP; do sleep 1; done"; then
|
if ! timeout $ASSOCIATE_TIMEOUT sh -c "while euca-describe-addresses | grep -q $FLOATING_IP; do sleep 1; done"; then
|
||||||
die $LINENO "Floating ip $FLOATING_IP not released within $ASSOCIATE_TIMEOUT seconds"
|
die $LINENO "Floating ip $FLOATING_IP not released within $ASSOCIATE_TIMEOUT seconds"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Terminate instance
|
# Terminate instance
|
||||||
@ -166,8 +176,12 @@ if ! timeout $TERMINATE_TIMEOUT sh -c "while euca-describe-instances $INSTANCE |
|
|||||||
die $LINENO "server didn't terminate within $TERMINATE_TIMEOUT seconds"
|
die $LINENO "server didn't terminate within $TERMINATE_TIMEOUT seconds"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Delete secgroup
|
if [[ "$SECGROUP" = "default" ]] ; then
|
||||||
euca-delete-group $SECGROUP || die $LINENO "Failure deleting security group $SECGROUP"
|
echo "Skipping deleting default security group"
|
||||||
|
else
|
||||||
|
# Delete secgroup
|
||||||
|
euca-delete-group $SECGROUP || die $LINENO "Failure deleting security group $SECGROUP"
|
||||||
|
fi
|
||||||
|
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
echo "*********************************************************************"
|
echo "*********************************************************************"
|
||||||
|
@ -56,6 +56,8 @@ TEST_FLOATING_POOL=${TEST_FLOATING_POOL:-test}
|
|||||||
# Instance name
|
# Instance name
|
||||||
VM_NAME="ex-float"
|
VM_NAME="ex-float"
|
||||||
|
|
||||||
|
# Cells does not support floating ips API calls
|
||||||
|
is_service_enabled n-cell && exit 55
|
||||||
|
|
||||||
# Launching a server
|
# Launching a server
|
||||||
# ==================
|
# ==================
|
||||||
|
@ -78,12 +78,18 @@ die_if_not_set $LINENO IMAGE "Failure getting image $DEFAULT_IMAGE_NAME"
|
|||||||
# List security groups
|
# List security groups
|
||||||
nova secgroup-list
|
nova secgroup-list
|
||||||
|
|
||||||
# Create a secgroup
|
if is_service_enabled n-cell; then
|
||||||
if ! nova secgroup-list | grep -q $SECGROUP; then
|
# Cells does not support security groups, so force the use of "default"
|
||||||
nova secgroup-create $SECGROUP "$SECGROUP description"
|
SECGROUP="default"
|
||||||
if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! nova secgroup-list | grep -q $SECGROUP; do sleep 1; done"; then
|
echo "Using the default security group because of Cells."
|
||||||
echo "Security group not created"
|
else
|
||||||
exit 1
|
# Create a secgroup
|
||||||
|
if ! nova secgroup-list | grep -q $SECGROUP; then
|
||||||
|
nova secgroup-create $SECGROUP "$SECGROUP description"
|
||||||
|
if ! timeout $ASSOCIATE_TIMEOUT sh -c "while ! nova secgroup-list | grep -q $SECGROUP; do sleep 1; done"; then
|
||||||
|
echo "Security group not created"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -201,8 +207,12 @@ if ! timeout $TERMINATE_TIMEOUT sh -c "while nova list | grep -q $VM_UUID; do sl
|
|||||||
die $LINENO "Server $VM_NAME not deleted"
|
die $LINENO "Server $VM_NAME not deleted"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Delete secgroup
|
if [[ $SECGROUP = "default" ]] ; then
|
||||||
nova secgroup-delete $SECGROUP || die $LINENO "Failure deleting security group $SECGROUP"
|
echo "Skipping deleting default security group"
|
||||||
|
else
|
||||||
|
# Delete secgroup
|
||||||
|
nova secgroup-delete $SECGROUP || die $LINENO "Failure deleting security group $SECGROUP"
|
||||||
|
fi
|
||||||
|
|
||||||
set +o xtrace
|
set +o xtrace
|
||||||
echo "*********************************************************************"
|
echo "*********************************************************************"
|
||||||
|
@ -745,12 +745,17 @@ function is_running() {
|
|||||||
# For backward compatibility if we have **swift** in ENABLED_SERVICES all the
|
# For backward compatibility if we have **swift** in ENABLED_SERVICES all the
|
||||||
# **s-** services will be enabled. This will be deprecated in the future.
|
# **s-** services will be enabled. This will be deprecated in the future.
|
||||||
#
|
#
|
||||||
|
# Cells within nova is enabled if **n-cell** is in ``ENABLED_SERVICES``.
|
||||||
|
# We also need to make sure to treat **n-cell-region** and **n-cell-child**
|
||||||
|
# as enabled in this case.
|
||||||
|
#
|
||||||
# Uses global ``ENABLED_SERVICES``
|
# Uses global ``ENABLED_SERVICES``
|
||||||
# is_service_enabled service [service ...]
|
# is_service_enabled service [service ...]
|
||||||
function is_service_enabled() {
|
function is_service_enabled() {
|
||||||
services=$@
|
services=$@
|
||||||
for service in ${services}; do
|
for service in ${services}; do
|
||||||
[[ ,${ENABLED_SERVICES}, =~ ,${service}, ]] && return 0
|
[[ ,${ENABLED_SERVICES}, =~ ,${service}, ]] && return 0
|
||||||
|
[[ ${service} == n-cell-* && ${ENABLED_SERVICES} =~ "n-cell" ]] && return 0
|
||||||
[[ ${service} == "nova" && ${ENABLED_SERVICES} =~ "n-" ]] && return 0
|
[[ ${service} == "nova" && ${ENABLED_SERVICES} =~ "n-" ]] && return 0
|
||||||
[[ ${service} == "cinder" && ${ENABLED_SERVICES} =~ "c-" ]] && return 0
|
[[ ${service} == "cinder" && ${ENABLED_SERVICES} =~ "c-" ]] && return 0
|
||||||
[[ ${service} == "ceilometer" && ${ENABLED_SERVICES} =~ "ceilometer-" ]] && return 0
|
[[ ${service} == "ceilometer" && ${ENABLED_SERVICES} =~ "ceilometer-" ]] && return 0
|
||||||
|
8
lib/nova
8
lib/nova
@ -568,11 +568,11 @@ function init_nova_cells() {
|
|||||||
iniset $NOVA_CELLS_CONF DEFAULT rabbit_virtual_host child_cell
|
iniset $NOVA_CELLS_CONF DEFAULT rabbit_virtual_host child_cell
|
||||||
iniset $NOVA_CELLS_CONF DEFAULT dhcpbridge_flagfile $NOVA_CELLS_CONF
|
iniset $NOVA_CELLS_CONF DEFAULT dhcpbridge_flagfile $NOVA_CELLS_CONF
|
||||||
iniset $NOVA_CELLS_CONF cells enable True
|
iniset $NOVA_CELLS_CONF cells enable True
|
||||||
|
iniset $NOVA_CELLS_CONF cells cell_type compute
|
||||||
iniset $NOVA_CELLS_CONF cells name child
|
iniset $NOVA_CELLS_CONF cells name child
|
||||||
|
|
||||||
iniset $NOVA_CONF DEFAULT scheduler_topic cells
|
|
||||||
iniset $NOVA_CONF DEFAULT compute_api_class nova.compute.cells_api.ComputeCellsAPI
|
|
||||||
iniset $NOVA_CONF cells enable True
|
iniset $NOVA_CONF cells enable True
|
||||||
|
iniset $NOVA_CONF cells cell_type api
|
||||||
iniset $NOVA_CONF cells name region
|
iniset $NOVA_CONF cells name region
|
||||||
|
|
||||||
if is_service_enabled n-api-meta; then
|
if is_service_enabled n-api-meta; then
|
||||||
@ -714,8 +714,8 @@ function start_nova() {
|
|||||||
if is_service_enabled n-cell; then
|
if is_service_enabled n-cell; then
|
||||||
NOVA_CONF_BOTTOM=$NOVA_CELLS_CONF
|
NOVA_CONF_BOTTOM=$NOVA_CELLS_CONF
|
||||||
screen_it n-cond "cd $NOVA_DIR && $NOVA_BIN_DIR/nova-conductor --config-file $NOVA_CELLS_CONF"
|
screen_it n-cond "cd $NOVA_DIR && $NOVA_BIN_DIR/nova-conductor --config-file $NOVA_CELLS_CONF"
|
||||||
screen_it n-cell "cd $NOVA_DIR && $NOVA_BIN_DIR/nova-cells --config-file $NOVA_CONF"
|
screen_it n-cell-region "cd $NOVA_DIR && $NOVA_BIN_DIR/nova-cells --config-file $NOVA_CONF"
|
||||||
screen_it n-cell "cd $NOVA_DIR && $NOVA_BIN_DIR/nova-cells --config-file $NOVA_CELLS_CONF"
|
screen_it n-cell-child "cd $NOVA_DIR && $NOVA_BIN_DIR/nova-cells --config-file $NOVA_CELLS_CONF"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$VIRT_DRIVER" = 'libvirt' ]]; then
|
if [[ "$VIRT_DRIVER" = 'libvirt' ]]; then
|
||||||
|
Loading…
Reference in New Issue
Block a user