Browse code

Fix is_service_enabled when using multiple arguments

is_service_enabled might actually fail to return the expected result if
there is a is_${service}_enabled function available and multiple
services are checked.

For example, if one defines swift as a service but disables glance, the
following check fails:

if is_service_enabled swift glance horizon; then
install_swiftclient
fi

This is because the second for-iteration resets the local "enabled" var
again to 1 and finally exits with 1 as a return code.

This patch fixes this.

Change-Id: Ic76b72897efe9597d1412470353895001a1a4c66

Christian Schwede authored on 2015/09/10 20:15:39
Showing 1 changed files
... ...
@@ -1803,8 +1803,7 @@ function is_service_enabled {
1803 1803
         # Look for top-level 'enabled' function for this service
1804 1804
         if type is_${service}_enabled >/dev/null 2>&1; then
1805 1805
             # A function exists for this service, use it
1806
-            is_${service}_enabled
1807
-            enabled=$?
1806
+            is_${service}_enabled && enabled=0
1808 1807
         fi
1809 1808
 
1810 1809
         # TODO(dtroyer): Remove these legacy special-cases after the is_XXX_enabled()