Browse code

Fix remove_disabled_extensions to remove an extension at the last position

remove_disabled_extensions do matching by '$ext_to_remove","'. So it doesn't
match an extension at the last position in extensions_list.
This patch fixes that.

Closes-Bug: #1443254
Change-Id: I194b483de797697ba06b320cf33f1bac67fc0cc7

fumihiko kakuma authored on 2015/04/13 09:55:06
Showing 3 changed files
... ...
@@ -1629,7 +1629,6 @@ function disable_all_services {
1629 1629
 function disable_negated_services {
1630 1630
     local to_remove=""
1631 1631
     local remaining=""
1632
-    local enabled=""
1633 1632
     local service
1634 1633
 
1635 1634
     # build up list of services that should be removed; i.e. they
... ...
@@ -1644,21 +1643,7 @@ function disable_negated_services {
1644 1644
 
1645 1645
     # go through the service list.  if this service appears in the "to
1646 1646
     # be removed" list, drop it
1647
-    for service in ${remaining//,/ }; do
1648
-        local remove
1649
-        local add=1
1650
-        for remove in ${to_remove//,/ }; do
1651
-            if [[ ${remove} == ${service} ]]; then
1652
-                add=0
1653
-                break
1654
-            fi
1655
-        done
1656
-        if [[ $add == 1 ]]; then
1657
-            enabled="${enabled},$service"
1658
-        fi
1659
-    done
1660
-
1661
-    ENABLED_SERVICES=$(_cleanup_service_list "$enabled")
1647
+    ENABLED_SERVICES=$(remove_disabled_services "$remaining" "$to_remove")
1662 1648
 }
1663 1649
 
1664 1650
 # disable_service() removes the services passed as argument to the
... ...
@@ -1762,6 +1747,30 @@ function is_service_enabled {
1762 1762
     return $enabled
1763 1763
 }
1764 1764
 
1765
+# remove specified list from the input string
1766
+# remove_disabled_services service-list remove-list
1767
+function remove_disabled_services {
1768
+    local service_list=$1
1769
+    local remove_list=$2
1770
+    local service
1771
+    local enabled=""
1772
+
1773
+    for service in ${service_list//,/ }; do
1774
+        local remove
1775
+        local add=1
1776
+        for remove in ${remove_list//,/ }; do
1777
+            if [[ ${remove} == ${service} ]]; then
1778
+                add=0
1779
+                break
1780
+            fi
1781
+        done
1782
+        if [[ $add == 1 ]]; then
1783
+            enabled="${enabled},$service"
1784
+        fi
1785
+    done
1786
+    _cleanup_service_list "$enabled"
1787
+}
1788
+
1765 1789
 # Toggle enable/disable_service for services that must run exclusive of each other
1766 1790
 #  $1 The name of a variable containing a space-separated list of services
1767 1791
 #  $2 The name of a variable in which to store the enabled service's name
... ...
@@ -91,10 +91,7 @@ function remove_disabled_extensions {
91 91
     local extensions_list=$1
92 92
     shift
93 93
     local disabled_exts=$*
94
-    for ext_to_remove in ${disabled_exts//,/ } ; do
95
-        extensions_list=${extensions_list/$ext_to_remove","}
96
-    done
97
-    echo $extensions_list
94
+    remove_disabled_services "$extensions_list" "$disabled_exts"
98 95
 }
99 96
 
100 97
 # configure_tempest() - Set config files, create data dirs, etc
... ...
@@ -137,6 +137,31 @@ test_disable_negated_services 'a,aa,-a' 'aa'
137 137
 test_disable_negated_services 'a,av2,-a,a' 'av2'
138 138
 test_disable_negated_services 'a,-a,av2' 'av2'
139 139
 
140
+echo "Testing remove_disabled_services()"
141
+
142
+function test_remove_disabled_services {
143
+    local service_list="$1"
144
+    local remove_list="$2"
145
+    local expected="$3"
146
+
147
+    results=$(remove_disabled_services "$service_list" "$remove_list")
148
+    if [ "$results" = "$expected" ]; then
149
+        passed "OK: '$service_list' - '$remove_list' -> '$results'"
150
+    else
151
+        failed "getting '$expected' from '$service_list' - '$remove_list' failed: '$results'"
152
+    fi
153
+}
154
+
155
+test_remove_disabled_services 'a,b,c' 'a,c' 'b'
156
+test_remove_disabled_services 'a,b,c' 'b' 'a,c'
157
+test_remove_disabled_services 'a,b,c,d' 'a,c d' 'b'
158
+test_remove_disabled_services 'a,b c,d' 'a d' 'b,c'
159
+test_remove_disabled_services 'a,b,c' 'a,b,c' ''
160
+test_remove_disabled_services 'a,b,c' 'd' 'a,b,c'
161
+test_remove_disabled_services 'a,b,c' '' 'a,b,c'
162
+test_remove_disabled_services '' 'a,b,c' ''
163
+test_remove_disabled_services '' '' ''
164
+
140 165
 echo "Testing is_package_installed()"
141 166
 
142 167
 if [[ -z "$os_PACKAGE" ]]; then