| #!/bin/bash | 
 | # | 
 | # lib/dlm | 
 | # | 
 | # Functions to control the installation and configuration of software | 
 | # that provides a dlm (and possibly other functions). The default is | 
 | # **zookeeper**, and is going to be the only backend supported in the | 
 | # devstack tree. | 
 |  | 
 | # Dependencies: | 
 | # | 
 | # - ``functions`` file | 
 |  | 
 | # ``stack.sh`` calls the entry points in this order: | 
 | # | 
 | # - is_dlm_enabled | 
 | # - install_dlm | 
 | # - configure_dlm | 
 | # - cleanup_dlm | 
 |  | 
 | # Save trace setting | 
 | XTRACE=$(set +o | grep xtrace) | 
 | set +o xtrace | 
 |  | 
 |  | 
 | # Defaults | 
 | # -------- | 
 |  | 
 | # <define global variables here that belong to this project> | 
 |  | 
 | # Set up default directories | 
 | ZOOKEEPER_DATA_DIR=$DEST/data/zookeeper | 
 | ZOOKEEPER_CONF_DIR=/etc/zookeeper | 
 |  | 
 |  | 
 | # Entry Points | 
 | # ------------ | 
 | # | 
 | # NOTE(sdague): it is expected that when someone wants to implement | 
 | # another one of these out of tree, they'll implement the following | 
 | # functions: | 
 | # | 
 | # - dlm_backend | 
 | # - install_dlm | 
 | # - configure_dlm | 
 | # - cleanup_dlm | 
 |  | 
 | # This should be declared in the settings file of any plugin or | 
 | # service that needs to have a dlm in their enviroment. | 
 | function use_dlm { | 
 |     enable_service $(dlm_backend) | 
 | } | 
 |  | 
 | # A function to return the name of the backend in question, some users | 
 | # are going to need to know this. | 
 | function dlm_backend { | 
 |     echo "zookeeper" | 
 | } | 
 |  | 
 | # Test if a dlm is enabled (defaults to a zookeeper specific check) | 
 | function is_dlm_enabled { | 
 |     [[ ,${ENABLED_SERVICES}, =~ ,"$(dlm_backend)", ]] && return 0 | 
 |     return 1 | 
 | } | 
 |  | 
 | # cleanup_dlm() - Remove residual data files, anything left over from previous | 
 | # runs that a clean run would need to clean up | 
 | function cleanup_dlm { | 
 |     # NOTE(sdague): we don't check for is_enabled here because we | 
 |     # should just delete this regardless. Some times users updated | 
 |     # their service list before they run cleanup. | 
 |     sudo rm -rf $ZOOKEEPER_DATA_DIR | 
 | } | 
 |  | 
 | # configure_dlm() - Set config files, create data dirs, etc | 
 | function configure_dlm { | 
 |     if is_dlm_enabled; then | 
 |         sudo cp $FILES/zookeeper/* $ZOOKEEPER_CONF_DIR | 
 |         sudo sed -i -e 's|.*dataDir.*|dataDir='$ZOOKEEPER_DATA_DIR'|' $ZOOKEEPER_CONF_DIR/zoo.cfg | 
 |         # clean up from previous (possibly aborted) runs | 
 |         # create required data files | 
 |         sudo rm -rf $ZOOKEEPER_DATA_DIR | 
 |         sudo mkdir -p $ZOOKEEPER_DATA_DIR | 
 |         # restart after configuration, there is no reason to make this | 
 |         # another step, because having data files that don't match the | 
 |         # zookeeper running is just going to cause tears. | 
 |         restart_service zookeeper | 
 |     fi | 
 | } | 
 |  | 
 | # install_dlm() - Collect source and prepare | 
 | function install_dlm { | 
 |     if is_dlm_enabled; then | 
 |         if is_ubuntu; then | 
 |             install_package zookeeperd | 
 |         else | 
 |             die $LINENO "Don't know how to install zookeeper on this platform" | 
 |         fi | 
 |     fi | 
 | } | 
 |  | 
 | # Restore xtrace | 
 | $XTRACE | 
 |  | 
 | # Tell emacs to use shell-script-mode | 
 | ## Local variables: | 
 | ## mode: shell-script | 
 | ## End: |