195 lines
5.8 KiB
Bash
Executable File
195 lines
5.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# Copyright (c) 2014 Mirantis, Inc.
|
|
#
|
|
# 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.
|
|
|
|
DEBUGLVL=2
|
|
SCRIPT_DIR=$(cd $(dirname "$0") && pwd)
|
|
LOGFILE="/tmp/murano_settings_update_run.log"
|
|
|
|
if [ "$DEBUGLVL" -eq 4 ]; then
|
|
set -o xtrace
|
|
fi
|
|
|
|
function log {
|
|
if [ "$DEBUGLVL" -gt 0 ]; then
|
|
chars=$(echo "@$" | wc -c)
|
|
case $DEBUGLVL in
|
|
1)
|
|
echo -e "LOG:>$@"
|
|
;;
|
|
2)
|
|
echo -e "$(date +"%m-%d-%Y %H:%M") LOG:>$@" | tee --append $LOGFILE
|
|
;;
|
|
3)
|
|
echo -e "$(date +"%m-%d-%Y %H:%M") LOG:>$@" >> $LOGFILE
|
|
;;
|
|
4)
|
|
echo -e "$(date +"%m-%d-%Y %H:%M") LOG:>$@" | tee --append $LOGFILE
|
|
;;
|
|
esac
|
|
fi
|
|
}
|
|
|
|
function modify_horizon_config()
|
|
{
|
|
local config_file=$1
|
|
|
|
if [ "$REMOVE" = true ]; then
|
|
log "Removing Murano data from \"$config_file\" "
|
|
sed -e '/^#START_MURANO_DASHBOARD/,/^#END_MURANO_DASHBOARD/ d' -i $config_file
|
|
if [ $? -ne 0 ]; then
|
|
log "...can't modify \"$config_file\", check permissions or something else, exiting!!!"
|
|
exit 1
|
|
else
|
|
log "...SUCCESS"
|
|
fi
|
|
else
|
|
if grep -q '#START_MURANO_DASHBOARD' "$config_file"; then
|
|
log "\"$config_file\" already has Murano data, you can change it manually and restart apache2/httpd service"
|
|
return
|
|
fi
|
|
|
|
local updated_data=$(mktemp)
|
|
log "Creating \"$updated_data\" temprorary file to compose Murano Data"
|
|
# Start to compose Murano data
|
|
cat << EOF >> "$updated_data"
|
|
#START_MURANO_DASHBOARD
|
|
HORIZON_CONFIG['dashboards'] += ('murano',)
|
|
INSTALLED_APPS += ('muranodashboard', 'floppyforms',)
|
|
MIDDLEWARE_CLASSES += ('muranodashboard.middleware.ExceptionMiddleware',)
|
|
#NETWORK_TOPOLOGY = 'routed'
|
|
#MURANO_API_URL = 'http://localhost:8082'
|
|
#if murano-api is set up with ssl, uncomment next strings
|
|
#MURANO_API_INSECURE = True
|
|
MAX_FILE_SIZE_MB = 5
|
|
EOF
|
|
if [ -n "$DASHBOARD_LOG_FILE" ]; then
|
|
cat << EOF >> "$updated_data"
|
|
verbose_formatter = {'verbose': {'format': '[%(asctime)s] [%(levelname)s] [pid=%(process)d] %(message)s'}}
|
|
if 'formatters' in LOGGING: LOGGING['formatters'].update(verbose_formatter)
|
|
else: LOGGING['formatters'] = verbose_formatter
|
|
LOGGING['handlers']['murano-file'] = {'level': 'DEBUG', 'formatter': 'verbose', 'class': 'logging.FileHandler', 'filename': '$DASHBOARD_LOG_FILE'}
|
|
LOGGING['loggers']['muranodashboard'] = {'handlers': ['murano-file'], 'level': 'DEBUG'}
|
|
LOGGING['loggers']['muranoclient'] = {'handlers': ['murano-file'], 'level': 'ERROR'}
|
|
EOF
|
|
fi
|
|
|
|
if [ -n "$CACHE_DIR" ]; then
|
|
cat << EOF >> "$updated_data"
|
|
METADATA_CACHE_DIR = "$CACHE_DIR"
|
|
EOF
|
|
fi
|
|
|
|
# End composing murano data
|
|
cat << EOF >> "$updated_data"
|
|
#END_MURANO_DASHBOARD
|
|
EOF
|
|
log "The following data will be added to the config: $(cat $updated_data)"
|
|
log "Adding Murano data to \"$config_file\" "
|
|
cat "$updated_data" >> "$config_file"
|
|
if [ $? -ne 0 ];then
|
|
log "Can't modify \"$config_file\", check permissions or something else, exiting!!!"
|
|
exit 1
|
|
else
|
|
log "Deleting \"$updated_data\""
|
|
rm "$updated_data"
|
|
log "...SUCCESS"
|
|
fi
|
|
fi
|
|
exit 0
|
|
}
|
|
|
|
###########################
|
|
# Main script starts here #
|
|
###########################
|
|
|
|
REMOVE=false
|
|
TAG="master"
|
|
|
|
for i in "$@"
|
|
do
|
|
|
|
#Replace tilde, used in a path to the file, represented as a string
|
|
i="${i/\~/$HOME}"
|
|
|
|
case $i in
|
|
-i=*|--input=*)
|
|
INPUT="${i#*=}"
|
|
shift
|
|
;;
|
|
-o=*|--output=*)
|
|
OUTPUT="${i#*=}"
|
|
shift
|
|
;;
|
|
-l=*|--log-file=*)
|
|
DASHBOARD_LOG_FILE="${i#*=}"
|
|
shift
|
|
;;
|
|
-c=*|--cache-dir=*)
|
|
CACHE_DIR="${i#*=}"
|
|
shift
|
|
;;
|
|
-t=*|--tag=*)
|
|
TAG="${i#*=}"
|
|
shift
|
|
;;
|
|
-r|--remove)
|
|
REMOVE=true
|
|
shift
|
|
;;
|
|
*)
|
|
# unknown option
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -z "$INPUT" ] && [ -z "$OUTPUT" ]; then
|
|
log "\nPlease, provide:\n
|
|
--input={PATH} to add Murano settings to the existing file\n
|
|
--output={PATH} for the result file \n
|
|
--log-file={FILE_NAME} to use separate file for murano-dashboard logging\n
|
|
--cache-dir={PATH} cache directory, default is '/tmp/muranodashboard-cache'\n
|
|
--remove remove murano data from the specified settings file
|
|
"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -n "$OUTPUT" ] && [ -n "$INPUT" ]; then
|
|
log "Copying input file for further modification"
|
|
cp $INPUT $OUTPUT
|
|
fi
|
|
|
|
if [ -n "$INPUT" ] && [ ! -f "$INPUT" ]; then
|
|
log "Updating file doen't exist"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$OUTPUT" ] && [ -n "$INPUT" ]; then
|
|
OUTPUT=$INPUT
|
|
fi
|
|
|
|
if [ -z "$INPUT" ]; then
|
|
log "Downloading updated horizon config"
|
|
settings="https://raw.githubusercontent.com/openstack/horizon/$TAG/openstack_dashboard/settings.py"
|
|
wget -q -O $OUTPUT $settings
|
|
if [ $? -ne 0 ];then
|
|
log "Unable to download horizon settings file from $settings"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
modify_horizon_config $OUTPUT
|
|
|
|
exit 0
|