# (C) Copyright Broadcom Corporation 2016 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # BroadView Collector DevStack plugin # # Install and start BroadView Collector service in devstack # # To enable broadview-collector in devstack add an entry to local.conf that # looks like # # [[local|localrc]] # enable_plugin broadview-collector git://github.com/openstack/broadview-collector # # Save trace setting XTRACE=$(set +o | grep xtrace) set -o xtrace ERREXIT=$(set +o | grep errexit) set -o errexit # Determine if we are running in devstack-gate or devstack. if [[ $DEST ]]; then # We are running in devstack-gate. export BROADVIEW_COLLECTOR_BASE=${BROADVIEW_COLLECTOR_BASE:-"${DEST}"} else # We are running in devstack. export BROADVIEW_COLLECTOR_BASE=${BROADVIEW_COLLECTOR_BASE:-"/opt/stack"} fi function pre_install_broadview_collector { : } function install_broadview_collector { install_broadview_collector_env install_git install_broadview_lib install_broadview_collector_python if is_service_enabled horizon; then install_broadview_collector_horizon_ui fi } function post_config_broadview_collector { : } function unstack_broadview_collector { sudo service broadview_collector stop || true } function clean_broadview_collector { set +o errexit unstack_broadview_collector if is_service_enabled horizon; then clean_broadview_horizon_ui fi clean_broadview_collector_python clean_broadview_lib clean_broadview_collector_env #Restore errexit set -o errexit } function install_broadview_collector_env { echo_summary "Install BroadView Collector Virtual Environment" sudo groupadd --system broadview_collector || true sudo mkdir -p /opt/broadview-collector || true sudo chown $STACK_USER:broadview_collector /opt/broadview-collector } function clean_broadview_collector_env { echo_summary "Clean BroadView Collector Virtual Environment" sudo rm -rf /opt/broadview-collector sudo groupdel broadview_collector } function install_git { echo_summary "Install git" sudo apt-get -y install git } function install_broadview_lib { echo_summary "Install broadview_lib" if [[ ! -d /opt/broadview-lib ]]; then sudo git clone https://git.openstack.org/openstack/broadview-lib.git /opt/broadview-lib fi (cd /opt/broadview-lib; sudo python setup.py sdist) BROADVIEW_LIB_SRC_DIST=$(ls -td /opt/broadview-lib/dist/broadview-lib-*.tar.gz) pip_install $BROADVIEW_LIB_SRC_DIST sudo cp /opt/broadview-lib/broadview_lib/tools/bv-bstctl.py /usr/local/bin sudo chown $STACK_USER:broadview_collector /usr/local/bin/bv-bstctl.py sudo chmod 755 /usr/local/bin/bv-bstctl.py } function clean_broadview_lib { echo_summary "Clean broadview_lib" } function install_broadview_collector_python { echo_summary "Install broadview_collector_python" sudo mkdir -p /opt/broadview-collector/bin sudo chown $STACK_USER:broadview_collector /opt/broadview-collector sudo chown $STACK_USER:broadview_collector /opt/broadview-collector/bin (cd "${BROADVIEW_COLLECTOR_BASE}"/broadview-collector; sudo python setup.py install) sudo cp -f "${BROADVIEW_COLLECTOR_BASE}"/broadview-collector/broadview_collector/bin/bvcollect.py /opt/broadview-collector/bin sudo chown root:broadview_collector /opt/broadview-collector/bin/bvcollect.py sudo chmod 755 /opt/broadview-collector/bin/bvcollect.py sudo cp -f "${BROADVIEW_COLLECTOR_BASE}"/broadview-collector/devstack/files/broadview-collector/broadview_collector.conf /etc/init/broadview_collector.conf sudo chown root:broadview_collector /etc/init/broadview_collector.conf sudo chmod 0755 /etc/init/broadview_collector.conf sudo mkdir -p /var/log/broadview-collector || true sudo chown root:broadview_collector /var/log/broadview-collector sudo chmod 0755 /var/log/broadview-collector if [[ ! -f /etc/broadviewcollector.conf ]]; then sudo cp -f "${BROADVIEW_COLLECTOR_BASE}"/broadview-collector/broadview_collector/config/broadviewcollector.conf /etc/broadviewcollector.conf fi sudo chown root:broadview_collector /etc/broadviewcollector.conf sudo chmod 0755 /etc/broadviewcollector.conf if [[ ${SERVICE_HOST} ]]; then sudo sed -i "s/127\.0\.0\.1/${SERVICE_HOST}/g" /etc/broadviewcollector.conf fi if [[ ${SERVICE_HOST} ]]; then # set broadview_collector server listening ip address sudo sed -i "s/host = 127\.0\.0\.1/host = ${SERVICE_HOST}/g" /etc/broadviewcollector.conf fi sudo start broadview_collector || sudo restart broadview_collector } function clean_broadview_collector_python { echo_summary "Clean broadview_collector_python" sudo rm /etc/init/broadview_collector.conf sudo rm /etc/broadviewcollector.conf sudo rm -rf /var/log/broadview-collector sudo rm /var/log/upstart/broadview_collector.log* sudo rm -rf /opt/broadview-collector } function install_broadview_collector_horizon_ui { echo_summary "Install BroadView Collector Horizon UI" sudo mkdir -p "${BROADVIEW_COLLECTOR_BASE}"/broadview_collector-horizon-ui || true sudo chown $STACK_USER:broadview_collector "${BROADVIEW_COLLECTOR_BASE}"/broadview_collector-horizon-ui if [[ ! -d "${BROADVIEW_COLLECTOR_BASE}"/broadview_collector-horizon-ui/broadview-ui ]]; then sudo git clone https://git.openstack.org/openstack/broadview-ui.git "${BROADVIEW_COLLECTOR_BASE}"/broadview_collector-horizon-ui/broadview-ui fi if [[ ! -f /etc/broadviewswitches.conf ]]; then sudo cp "${BROADVIEW_COLLECTOR_BASE}"/broadview_collector-horizon-ui/broadview-ui/broadview/config/broadviewswitches.conf /etc/broadviewswitches.conf sudo chown $STACK_USER:broadview_collector /etc/broadviewswitches.conf fi sudo cp "${BROADVIEW_COLLECTOR_BASE}"/broadview_collector-horizon-ui/broadview-ui/_50_broadview.py "${BROADVIEW_COLLECTOR_BASE}"/horizon/openstack_dashboard/enabled/ sudo chown $STACK_USER:broadview_collector "${BROADVIEW_COLLECTOR_BASE}"/horizon/openstack_dashboard/enabled/_50_broadview.py sudo cp -r "${BROADVIEW_COLLECTOR_BASE}"/broadview_collector-horizon-ui/broadview-ui/broadview "${BROADVIEW_COLLECTOR_BASE}"/horizon/openstack_dashboard/dashboards sudo chown -R $STACK_USER:broadview_collector "${BROADVIEW_COLLECTOR_BASE}"/horizon/openstack_dashboard/dashboards/broadview sudo service apache2 restart } function extra_broadview_collector { : } function clean_broadview_collector_horizon_ui { echo_summary "Clean BroadView Collector Horizon UI" sudo rm -f "${BROADVIEW_COLLECTOR_BASE}"/horizon/openstack_dashboard/enabled/_50_broadview.py sudo rm -rf "${BROADVIEW_COLLECTOR_BASE}"/horizon/openstack_dashboard/dashboards/broadview sudo rm -rf "${BROADVIEW_COLLECTOR_BASE}"/broadview_collector-horizon-ui } # Allows this script to be called directly outside of # the devstack infrastructure code. Uncomment to use. #if [[ $(type -t is_service_enabled) != 'function' ]]; then # # function is_service_enabled { # # return 0 # # } #fi #if [[ $(type -t echo_summary) != 'function' ]]; then # # function echo_summary { # # echo "$*" # # } # #fi # check for service enabled if is_service_enabled broadview-collector; then if [[ "$1" == "stack" && "$2" == "pre-install" ]]; then # Set up system services echo_summary "Configuring BroadView Collector system services" pre_install_broadview_collector elif [[ "$1" == "stack" && "$2" == "install" ]]; then # Perform installation of service source echo_summary "Installing BroadView Collector" install_broadview_collector elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then # Configure after the other layer 1 and 2 services have been configured echo_summary "Configuring BroadView Collector" post_config_broadview_collector elif [[ "$1" == "stack" && "$2" == "extra" ]]; then # Initialize and start the BroadView Collector service echo_summary "Initializing BroadView Collector" extra_broadview_collector fi if [[ "$1" == "unstack" ]]; then # Shut down BroadView Collector services echo_summary "Unstacking BroadView Collector" unstack_broadview_collector fi if [[ "$1" == "clean" ]]; then # Remove state and transient data # Remember clean.sh first calls unstack.sh echo_summary "Cleaning BroadView Collector" clean_broadview_collector fi fi #Restore errexit $ERREXIT # Restore xtrace $XTRACE