From e4fa72132228688d2fe74dd974fe04b0fe4c3d6b Mon Sep 17 00:00:00 2001 From: Dean Troyer Date: Wed, 15 Jan 2014 15:04:49 -0600 Subject: [PATCH] Begin is_service_enabled() cleanup This converts the special cases in the is_service_enabled() function to call individual functions declared by the projects. This allows projects that are not in the DevStack repo and called via the extras.d plugin to handle an equivalent service alias. * Ceilometer * Cinder * Glance * Neutron * Nova * Swift TODO: remove the tests from is_service_enabled() after a transition period Patch Set 2: Rebased Change-Id: Ic78be433f93a9dd5f46be548bdbd4c984e0da6e7 --- clean.sh | 2 +- exercises/boot_from_volume.sh | 8 +++----- exercises/euca.sh | 5 ----- exercises/floating_ips.sh | 8 +++----- exercises/volumes.sh | 8 +++----- functions | 10 ++++++++++ lib/ceilometer | 9 ++++++++- lib/cinder | 8 ++++++++ lib/glance | 7 +++++++ lib/neutron | 7 +++++++ lib/nova | 14 ++++++++++++++ lib/swift | 7 +++++++ lib/template | 8 ++++++++ stack.sh | 2 +- stackrc | 2 +- unstack.sh | 2 +- 16 files changed, 82 insertions(+), 25 deletions(-) diff --git a/clean.sh b/clean.sh index e16bdb7f36..09f08dc8c2 100755 --- a/clean.sh +++ b/clean.sh @@ -97,7 +97,7 @@ if is_service_enabled ldap; then fi # Do the hypervisor cleanup until this can be moved back into lib/nova -if [[ -r $NOVA_PLUGINS/hypervisor-$VIRT_DRIVER ]]; then +if is_service_enabled nova && [[ -r $NOVA_PLUGINS/hypervisor-$VIRT_DRIVER ]]; then cleanup_nova_hypervisor fi diff --git a/exercises/boot_from_volume.sh b/exercises/boot_from_volume.sh index ed8ba6310e..79120460b8 100755 --- a/exercises/boot_from_volume.sh +++ b/exercises/boot_from_volume.sh @@ -30,14 +30,12 @@ TOP_DIR=$(cd $EXERCISE_DIR/..; pwd) # Import common functions source $TOP_DIR/functions +# Import project functions +source $TOP_DIR/lib/cinder + # Import configuration source $TOP_DIR/openrc -# Import neutron functions if needed -if is_service_enabled neutron; then - source $TOP_DIR/lib/neutron -fi - # Import exercise configuration source $TOP_DIR/exerciserc diff --git a/exercises/euca.sh b/exercises/euca.sh index 51b2644458..ad852a4f79 100755 --- a/exercises/euca.sh +++ b/exercises/euca.sh @@ -33,11 +33,6 @@ source $TOP_DIR/functions # Import EC2 configuration source $TOP_DIR/eucarc -# Import neutron functions if needed -if is_service_enabled neutron; then - source $TOP_DIR/lib/neutron -fi - # Import exercise configuration source $TOP_DIR/exerciserc diff --git a/exercises/floating_ips.sh b/exercises/floating_ips.sh index 4ca90a5c35..b981aa8294 100755 --- a/exercises/floating_ips.sh +++ b/exercises/floating_ips.sh @@ -27,14 +27,12 @@ TOP_DIR=$(cd $EXERCISE_DIR/..; pwd) # Import common functions source $TOP_DIR/functions +# Import project functions +source $TOP_DIR/lib/neutron + # Import configuration source $TOP_DIR/openrc -# Import neutron functions if needed -if is_service_enabled neutron; then - source $TOP_DIR/lib/neutron -fi - # Import exercise configuration source $TOP_DIR/exerciserc diff --git a/exercises/volumes.sh b/exercises/volumes.sh index 21b5d21c04..33e24589eb 100755 --- a/exercises/volumes.sh +++ b/exercises/volumes.sh @@ -27,14 +27,12 @@ TOP_DIR=$(cd $EXERCISE_DIR/..; pwd) # Import common functions source $TOP_DIR/functions +# Import project functions +source $TOP_DIR/lib/cinder + # Import configuration source $TOP_DIR/openrc -# Import neutron functions if needed -if is_service_enabled neutron; then - source $TOP_DIR/lib/neutron -fi - # Import exercise configuration source $TOP_DIR/exerciserc diff --git a/functions b/functions index 281b6767c5..dc3278b56d 100644 --- a/functions +++ b/functions @@ -840,6 +840,16 @@ function is_service_enabled() { services=$@ for service in ${services}; do [[ ,${ENABLED_SERVICES}, =~ ,${service}, ]] && return 0 + + # Look for top-level 'enabled' function for this service + if type is_${service}_enabled >/dev/null 2>&1; then + # A function exists for this service, use it + is_${service}_enabled + return $? + fi + + # TODO(dtroyer): Remove these legacy special-cases after the is_XXX_enabled() + # are implemented [[ ${service} == n-cell-* && ${ENABLED_SERVICES} =~ "n-cell" ]] && return 0 [[ ${service} == "nova" && ${ENABLED_SERVICES} =~ "n-" ]] && return 0 [[ ${service} == "cinder" && ${ENABLED_SERVICES} =~ "c-" ]] && return 0 diff --git a/lib/ceilometer b/lib/ceilometer index f9c76915d5..4ca77bb72b 100644 --- a/lib/ceilometer +++ b/lib/ceilometer @@ -59,7 +59,14 @@ TEMPEST_SERVICES+=,ceilometer # Functions # --------- -# + +# Test if any Ceilometer services are enabled +# is_ceilometer_enabled +function is_ceilometer_enabled { + [[ ,${ENABLED_SERVICES} =~ ,"ceilometer-" ]] && return 0 + return 1 +} + # create_ceilometer_accounts() - Set up common required ceilometer accounts create_ceilometer_accounts() { diff --git a/lib/cinder b/lib/cinder index 9f70b2a0c9..3ec0fd4f09 100644 --- a/lib/cinder +++ b/lib/cinder @@ -85,6 +85,14 @@ TEMPEST_SERVICES+=,cinder # Functions # --------- + +# Test if any Cinder services are enabled +# is_cinder_enabled +function is_cinder_enabled { + [[ ,${ENABLED_SERVICES} =~ ,"c-" ]] && return 0 + return 1 +} + # _clean_lvm_lv removes all cinder LVM volumes # # Usage: _clean_lvm_lv $VOLUME_GROUP $VOLUME_NAME_PREFIX diff --git a/lib/glance b/lib/glance index a5cb360743..1ebeeb3b2e 100644 --- a/lib/glance +++ b/lib/glance @@ -59,6 +59,13 @@ TEMPEST_SERVICES+=,glance # Functions # --------- +# Test if any Glance services are enabled +# is_glance_enabled +function is_glance_enabled { + [[ ,${ENABLED_SERVICES} =~ ,"g-" ]] && return 0 + return 1 +} + # cleanup_glance() - Remove residual data files, anything left over from previous # runs that a clean run would need to clean up function cleanup_glance() { diff --git a/lib/neutron b/lib/neutron index 81db2a74d1..5bd38bcf73 100644 --- a/lib/neutron +++ b/lib/neutron @@ -244,6 +244,13 @@ TEMPEST_SERVICES+=,neutron # Functions # --------- +# Test if any Neutron services are enabled +# is_neutron_enabled +function is_neutron_enabled { + [[ ,${ENABLED_SERVICES} =~ ,"q-" ]] && return 0 + return 1 +} + # configure_neutron() # Set common config for all neutron server and agents. function configure_neutron() { diff --git a/lib/nova b/lib/nova index dbc5c3db44..c6d99367c2 100644 --- a/lib/nova +++ b/lib/nova @@ -129,6 +129,20 @@ TEMPEST_SERVICES+=,nova # Functions # --------- +# Test if any Nova services are enabled +# is_nova_enabled +function is_nova_enabled { + [[ ,${ENABLED_SERVICES} =~ ,"n-" ]] && return 0 + return 1 +} + +# Test if any Nova Cell services are enabled +# is_nova_enabled +function is_n-cell_enabled { + [[ ,${ENABLED_SERVICES} =~ ,"n-cell-" ]] && return 0 + return 1 +} + # Helper to clean iptables rules function clean_iptables() { # Delete rules diff --git a/lib/swift b/lib/swift index 28ca8a80df..197c01b63c 100644 --- a/lib/swift +++ b/lib/swift @@ -118,6 +118,13 @@ TEMPEST_SERVICES+=,swift # Functions # --------- +# Test if any Swift services are enabled +# is_swift_enabled +function is_swift_enabled { + [[ ,${ENABLED_SERVICES} =~ ,"s-" ]] && return 0 + return 1 +} + # cleanup_swift() - Remove residual data files function cleanup_swift() { rm -f ${SWIFT_CONF_DIR}{*.builder,*.ring.gz,backups/*.builder,backups/*.ring.gz} diff --git a/lib/template b/lib/template index 629e110271..b8e7c4d86f 100644 --- a/lib/template +++ b/lib/template @@ -10,6 +10,7 @@ # ``stack.sh`` calls the entry points in this order: # +# - is_XXXX_enabled # - install_XXXX # - configure_XXXX # - init_XXXX @@ -35,6 +36,13 @@ XXX_CONF_DIR=/etc/XXXX # Entry Points # ------------ +# Test if any XXXX services are enabled +# is_XXXX_enabled +function is_XXXX_enabled { + [[ ,${ENABLED_SERVICES} =~ ,"XX-" ]] && return 0 + return 1 +} + # cleanup_XXXX() - Remove residual data files, anything left over from previous # runs that a clean run would need to clean up function cleanup_XXXX() { diff --git a/stack.sh b/stack.sh index 15e14303cf..d379d51c6e 100755 --- a/stack.sh +++ b/stack.sh @@ -1096,7 +1096,7 @@ if is_service_enabled s-proxy; then fi # Launch the Glance services -if is_service_enabled g-api g-reg; then +if is_service_enabled glance; then echo_summary "Starting Glance" start_glance fi diff --git a/stackrc b/stackrc index e89d25e4ab..2527b0ad84 100644 --- a/stackrc +++ b/stackrc @@ -35,7 +35,7 @@ fi # 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,cinder,c-sch,c-api,c-vol,n-sch,n-novnc,n-xvnc,n-cauth,horizon,rabbit,tempest,mysql +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 # Tell Tempest which services are available. The default is set here as # Tempest falls late in the configuration sequence. This differs from diff --git a/unstack.sh b/unstack.sh index 92d0642c38..c233f93e6b 100755 --- a/unstack.sh +++ b/unstack.sh @@ -104,7 +104,7 @@ if is_service_enabled nova; then stop_nova fi -if is_service_enabled g-api g-reg; then +if is_service_enabled glance; then stop_glance fi