#!/bin/bash # # common functions for collectd ceilometer plugin # ----------------------------------------------- # start/stop service # function start_collectd { if [ -e /usr/lib/systemd/system/collectd.service ] || [ -e /etc/init.d/collectd ]; then sudo service collectd restart fi } function stop_collectd { if [ -e /usr/lib/systemd/system/collectd.service ] || [ -e /etc/init.d/collectd ]; then sudo service collectd stop fi } function install_requirements { echo "Installing pre-resquisites" if is_ubuntu; then install_package libvirt-bin libvirt-dev python-libvirt elif is_fedora; then install_package libvirt libvirt-devel libvirt-python else echo "Unsupported distros" fi } # install collectd function install_collectd { if [[ "$COLLECTD_INSTALL" == True ]]; then if is_fedora || is_ubuntu; then install_package collectd else die $LINENO "No support for collectd on this platform" fi fi } # Add conf file for plugin function adapt_collectd_conf { if [ ! -d "$COLLECTD_CONF_DIR" ]; then sudo mkdir -p "$COLLECTD_CONF_DIR" fi # Configure collectd-ceilometer-plugin if [[ "$COLLECTD_CEILOMETER_ENABLED" == "True" ]]; then sudo cp $COLLECTD_CEILOMETER_DIR/etc/collectd.conf.d/collectd-ceilometer-plugin.conf $COLLECTD_CONF_DIR/ # Configure collectd-ceiloemter-plugin.conf sudo sed -i 's|ModulePath.*$|ModulePath "'$COLLECTD_CEILOMETER_DIR'"|g' $COLLECTD_CONF_DIR/collectd-ceilometer-plugin.conf sudo sed -i 's|VERBOSE.*$|VERBOSE '$COLLECTD_CEILOMETER_VERBOSE'|g' $COLLECTD_CONF_DIR/collectd-ceilometer-plugin.conf sudo sed -i 's|BATCH_SIZE.*$|BATCH_SIZE "'$COLLECTD_BATCH_SIZE'"|g' $COLLECTD_CONF_DIR/collectd-ceilometer-plugin.conf sudo sed -i 's|OS_AUTH_URL.*$|OS_AUTH_URL "'$OS_AUTH_URL'"|g' $COLLECTD_CONF_DIR/collectd-ceilometer-plugin.conf sudo sed -i 's|CEILOMETER_URL_TYPE.*$|CEILOMETER_URL_TYPE "'$CEILOMETER_URL_TYPE'"|g' $COLLECTD_CONF_DIR/collectd-ceilometer-plugin.conf sudo sed -i 's|CEILOMETER_TIMEOUT.*$|CEILOMETER_TIMEOUT "'$CEILOMETER_TIMEOUT'"|g' $COLLECTD_CONF_DIR/collectd-ceilometer-plugin.conf sudo sed -i 's|OS_PASSWORD.*$|OS_PASSWORD "'$SERVICE_PASSWORD'"|g' $COLLECTD_CONF_DIR/collectd-ceilometer-plugin.conf sudo sed -i 's|OS_TENANT_NAME.*$|OS_TENANT_NAME "'$SERVICE_TENANT_NAME'"|g' $COLLECTD_CONF_DIR/collectd-ceilometer-plugin.conf fi # configure collectd-gnocchi plugin if [[ "$COLLECTD_GNOCCHI_ENABLED" == "True" ]]; then sudo cp $COLLECTD_CEILOMETER_DIR/etc/collectd.conf.d/collectd-gnocchi-plugin.conf $COLLECTD_CONF_DIR/ # Configure collectd-gnocchi-plugin.conf sudo sed -i 's|ModulePath.*$|ModulePath "'$COLLECTD_CEILOMETER_DIR'"|g' $COLLECTD_CONF_DIR/collectd-gnocchi-plugin.conf sudo sed -i 's|VERBOSE.*$|VERBOSE '$COLLECTD_CEILOMETER_VERBOSE'|g' $COLLECTD_CONF_DIR/collectd-gnocchi-plugin.conf sudo sed -i 's|BATCH_SIZE.*$|BATCH_SIZE "'$COLLECTD_BATCH_SIZE'"|g' $COLLECTD_CONF_DIR/collectd-gnocchi-plugin.conf sudo sed -i 's|OS_AUTH_URL.*$|OS_AUTH_URL "'$OS_AUTH_URL'"|g' $COLLECTD_CONF_DIR/collectd-gnocchi-plugin.conf sudo sed -i 's|CEILOMETER_URL_TYPE.*$|CEILOMETER_URL_TYPE "'$CEILOMETER_URL_TYPE'"|g' $COLLECTD_CONF_DIR/collectd-gnocchi-plugin.conf sudo sed -i 's|CEILOMETER_TIMEOUT.*$|CEILOMETER_TIMEOUT "'$CEILOMETER_TIMEOUT'"|g' $COLLECTD_CONF_DIR/collectd-gnocchi-plugin.conf sudo sed -i 's|OS_PASSWORD.*$|OS_PASSWORD "'$SERVICE_PASSWORD'"|g' $COLLECTD_CONF_DIR/collectd-gnocchi-plugin.conf sudo sed -i 's|OS_TENANT_NAME.*$|OS_TENANT_NAME "'$SERVICE_TENANT_NAME'"|g' $COLLECTD_CONF_DIR/collectd-gnocchi-plugin.conf fi # Configure custom units if [[ "$COLLECTD_CEILOMETER_UNITS" != none ]]; then OIFS=$IFS IFS=',' for UNIT in $COLLECTD_CEILOMETER_UNITS do sudo sed -i '//a\ UNIT '"$UNIT"'' $COLLECTD_CONF_DIR/collectd-ceilometer-plugin.conf done IFS=$OIFS fi # Configure collectd logfile plugin if [ -n $COLLECTD_LOG_FILE ]; then touch $COLLECTD_LOG_FILE fi sudo cp $COLLECTD_CEILOMETER_DIR/etc/collectd.conf.d/logfile.conf $COLLECTD_CONF_DIR/01-logfile.conf sudo sed -i '//{s|LogLevel.*$|LogLevel "'$COLLECTD_LOG_LEVEL'"|}' $COLLECTD_CONF_DIR/01-logfile.conf sudo sed -i 's|File.*$|File "'$COLLECTD_LOG_FILE'"|g' $COLLECTD_CONF_DIR/01-logfile.conf } # remove plugin conf file function restore_collectd_conf { if [ -f '$COLLECTD_CONF_DIR/collectd-ceilometer-plugin.conf' ]; then sudo rm -f $COLLECTD_CONF_DIR/collectd-ceilometer-plugin.conf sudo rm -f $COLLECTD_CONF_DIR/01-logfile.conf fi }