Adds the $ENABLE_HEAT_PLUGINS variable, which should be a list of
the names of the plugins the user wishes to install.
Change-Id: I2ba90002a8fad1cdce6543c89dc37c5912fe133e
| ... | ... |
@@ -69,6 +69,8 @@ else |
| 69 | 69 |
HEAT_STACK_DOMAIN=$(trueorfalse True HEAT_STACK_DOMAIN) |
| 70 | 70 |
HEAT_DEFERRED_AUTH=${HEAT_DEFERRED_AUTH:-trusts}
|
| 71 | 71 |
fi |
| 72 |
+HEAT_PLUGIN_DIR=${HEAT_PLUGIN_DIR:-$DATA_DIR/heat/plugins}
|
|
| 73 |
+ENABLE_HEAT_PLUGINS=${ENABLE_HEAT_PLUGINS:-}
|
|
| 72 | 74 |
|
| 73 | 75 |
# Functions |
| 74 | 76 |
# --------- |
| ... | ... |
@@ -188,6 +190,35 @@ function configure_heat {
|
| 188 | 188 |
# copy the default templates |
| 189 | 189 |
cp $HEAT_DIR/etc/heat/templates/* $HEAT_TEMPLATES_DIR/ |
| 190 | 190 |
|
| 191 |
+ # Enable heat plugins. |
|
| 192 |
+ # NOTE(nic): The symlink nonsense is necessary because when |
|
| 193 |
+ # plugins are installed in "developer mode", the final component |
|
| 194 |
+ # of their target directory is always "resources", which confuses |
|
| 195 |
+ # Heat's plugin loader into believing that all plugins are named |
|
| 196 |
+ # "resources", and therefore are all the same plugin; so it |
|
| 197 |
+ # will only load one of them. Linking them all to a common |
|
| 198 |
+ # location with unique names avoids that type of collision, |
|
| 199 |
+ # while still allowing the plugins to be edited in-tree. |
|
| 200 |
+ local err_count=0 |
|
| 201 |
+ |
|
| 202 |
+ if [ -n "$ENABLE_HEAT_PLUGINS" ]; then |
|
| 203 |
+ mkdir -p $HEAT_PLUGIN_DIR |
|
| 204 |
+ # Clean up cruft from any previous runs |
|
| 205 |
+ rm -f $HEAT_PLUGIN_DIR/* |
|
| 206 |
+ iniset $HEAT_CONF DEFAULT plugin_dirs $HEAT_PLUGIN_DIR |
|
| 207 |
+ fi |
|
| 208 |
+ |
|
| 209 |
+ for heat_plugin in $ENABLE_HEAT_PLUGINS; do |
|
| 210 |
+ if [ -d $HEAT_DIR/contrib/$heat_plugin ]; then |
|
| 211 |
+ setup_package $HEAT_DIR/contrib/$heat_plugin -e |
|
| 212 |
+ ln -s $HEAT_DIR/contrib/$heat_plugin/$heat_plugin/resources $HEAT_PLUGIN_DIR/$heat_plugin |
|
| 213 |
+ else |
|
| 214 |
+ : # clear retval on the test so that we can roll up errors |
|
| 215 |
+ err $LINENO "Requested Heat plugin(${heat_plugin}) not found."
|
|
| 216 |
+ err_count=$(($err_count + 1)) |
|
| 217 |
+ fi |
|
| 218 |
+ done |
|
| 219 |
+ [ $err_count -eq 0 ] || die $LINENO "$err_count of the requested Heat plugins could not be installed." |
|
| 191 | 220 |
} |
| 192 | 221 |
|
| 193 | 222 |
# init_heat() - Initialize database |