Merge "Add fm-rest-api and fm-client to DevStack"

This commit is contained in:
Zuul 2018-10-30 18:55:36 +00:00 committed by Gerrit Code Review
commit 8b27b20c5c
3 changed files with 116 additions and 13 deletions

View File

@ -0,0 +1,12 @@
[app:api_v1]
paste.app_factory=fm.api.app:app_factory
[filter:authtoken]
acl_public_routes=/, /v1
paste.filter_factory=fm.api.middleware.auth_token:AuthTokenMiddleware.factory
[filter:request_id]
paste.filter_factory=oslo_middleware:RequestId.factory
[pipeline:fm-api]
pipeline=request_id authtoken api_v1

View File

@ -27,6 +27,23 @@ set -o xtrace
# Defaults # Defaults
# -------- # --------
FAULT_DIR=${GITDIR[$STX_FAULT_NAME]}
FAULT_CONF_DIR=/etc/fm
FM_RESTAPI_CONF=$FAULT_CONF_DIR/fm.conf
FM_RESTAPI_PASTE_INI=$FAULT_CONF_DIR/api-paste.ini
FM_RESTAPI_AUTH_CACHE_DIR=${FM_RESTAPI_AUTH_CACHE_DIR:-/var/cache/fault}
FM_RESTAPI_DIR=${GITDIR[$STX_FAULT_NAME]}/fm-rest-api/fm
if is_service_enabled tls-proxy; then
FM_RESTAPI_SERVICE_PROTOCOL="https"
fi
FM_RESTAPI_SERVICE_PROTOCOL=${FM_RESTAPI_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
FM_RESTAPI_SERVICE_HOST=${FM_RESTAPI_SERVICE_HOST:-$SERVICE_HOST}
FM_RESTAPI_SERVICE_PORT=${FM_RESTAPI_SERVICE_PORT:-18002}
FM_RESTAPI_WORKERS=${FM_RESTAPI_WORKERS:-4}
PYTHON_BIN_DIR=$(get_python_exec_prefix) PYTHON_BIN_DIR=$(get_python_exec_prefix)
PYTHON_SITE_DIR=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") PYTHON_SITE_DIR=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
@ -42,6 +59,9 @@ function cleanup_fault {
if is_service_enabled fm-common; then if is_service_enabled fm-common; then
cleanup_fm_common cleanup_fm_common
fi fi
if is_service_enabled fm-restapi; then
cleanup_fm_restapi
fi
} }
function cleanup_fm_common { function cleanup_fm_common {
@ -94,16 +114,66 @@ function cleanup_fm_mgr {
popd popd
} }
function cleanup_fm_rest_api {
sudo rm -rf $FM_RESTAPI_AUTH_CACHE_DIR $FM_RESTAPI_CONF
}
function configure_fault { function configure_fault {
: if is_service_enabled fm-rest-api; then
configure_fm_rest_api
fi
}
function configure_fm_rest_api {
sudo install -d -o $STACK_USER -m 755 $FAULT_CONF_DIR
cp -p $FAULT_DIR/devstack/files/api-paste.ini $FM_RESTAPI_PASTE_INI
configure_auth_token_middleware $FM_RESTAPI_CONF fm $FM_RESTAPI_AUTH_CACHE_DIR
iniset $FM_RESTAPI_CONF database connection $(database_connection_url fm)
iniset $FM_RESTAPI_CONF api api_paste_config $FM_RESTAPI_PASTE_INI
iniset $FM_RESTAPI_CONF api api_workers $FM_RESTAPI_WORKERS
iniset $FM_RESTAPI_CONF api bind_host $FM_RESTAPI_SERVICE_HOST
iniset $FM_RESTAPI_CONF api bind_port $FM_RESTAPI_SERVICE_PORT
iniset $FM_RESTAPI_CONF oslo_middleware enable_proxy_headers_parsing True
if [ "$SYSLOG" != "False" ]; then
iniset $FM_RESTAPI_CONF DEFAULT use_syslog True
# stx specific?
iniset $FM_RESTAPI_CONF DEFAULT syslog_log_facility local2
fi
# Additional things set in stx config
iniset $FM_RESTAPI_CONF DEFAULT region_name RegionOne
iniset $FM_RESTAPI_CONF DEFAULT event_log_max_size 4000
iniset $FM_RESTAPI_CONF DEFAULT system_name $(hostname)
iniset $FM_RESTAPI_CONF database idle_timeout 60
iniset $FM_RESTAPI_CONF database max_pool_size 1
iniset $FM_RESTAPI_CONF database max_overflow 20
iniset $FM_RESTAPI_CONF keystone_authtoken region_name RegionOne
# sysinv settings to move there...
iniset $FM_RESTAPI_CONF sysinv catalog_info platform:sysinv:internalURL
iniset $FM_RESTAPI_CONF sysinv os_region_name RegionOne
} }
function create_fault_accounts { function create_fault_accounts {
: if [[ "$ENABLED_SERVICES" =~ "fm-rest-api" ]]; then
create_service_user "fm"
get_or_create_service "fm" "faultmanagement" "Fault Management Service"
get_or_create_endpoint \
"faultmanagement" \
"$REGION_NAME" \
"$FM_RESTAPI_SERVICE_PROTOCOL://$FM_RESTAPI_SERVICE_HOST:$FM_RESTAPI_SERVICE_PORT/v1"
fi
} }
function create_fault_cache_dir { function create_fault_cache_dir {
: # Create cache dir
sudo install -d -o $STACK_USER $FM_RESTAPI_AUTH_CACHE_DIR
rm -f $FM_RESTAPI_AUTH_CACHE_DIR/*
} }
function create_fault_user_group { function create_fault_user_group {
@ -111,22 +181,26 @@ function create_fault_user_group {
} }
function init_fault { function init_fault {
: create_fault_cache_dir
} }
function install_fault { function install_fault {
if is_service_enabled fm-common; then if is_service_enabled fm-common; then
install_fm_common install_fm_common
install_fm_client
fi fi
if is_service_enabled fm-api; then if is_service_enabled fm-api; then
install_fm_api install_fm_api
fi fi
if is_service_enabled fm-rest-api; then if is_service_enabled fm-api; then
install_fm_api install_fm_api
fi fi
if is_service_enabled fm-mgr; then if is_service_enabled fm-mgr; then
install_fm_mgr install_fm_mgr
fi fi
if is_service_enabled fm-rest-api; then
install_fm_rest_api
fi
} }
function install_fm_api { function install_fm_api {
@ -140,6 +214,17 @@ function install_fm_api {
popd popd
} }
function install_fm_client {
pushd ${GITDIR[$STX_FAULT_NAME]}/python-fmclient/fmclient
sudo python setup.py install \
--root=/ \
--install-lib=$PYTHON_SITE_DIR \
--prefix=/usr \
--install-data=/usr/share \
--single-version-externally-managed
popd
}
function install_fm_common { function install_fm_common {
local x version local x version
@ -213,19 +298,19 @@ function install_fm_mgr {
} }
function install_fm_rest_api { function install_fm_rest_api {
: setup_develop $FM_RESTAPI_DIR
} }
function start_fault { function start_fault {
: if is_service_enabled fm-api; then
run_process fm-api "$PYTHON_BIN_DIR/fm-api --config-file $FM_RESTAPI_CONF"
fi
} }
function stop_fault { function stop_fault {
: if is_service_enabled fm-api; then
} stop_process fm_api
fi
function stop_fault_api {
:
} }
$_XTRACE_STX_FAULT $_XTRACE_STX_FAULT

View File

@ -22,7 +22,8 @@ commands =
-not -name \*.md \ -not -name \*.md \
\( \ \( \
-name \*.sh \ -name \*.sh \
-or -wholename \*/devstack/\* \ -or -not -wholename \*/devstack/files/\* \
-wholename \*/devstack/\* \
\) \ \) \
-print0 | xargs -0 bashate -v -iE006" -print0 | xargs -0 bashate -v -iE006"
bash -c "find {toxinidir} \ bash -c "find {toxinidir} \
@ -84,3 +85,8 @@ commands =
rm -rf api-ref/build rm -rf api-ref/build
sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html
whitelist_externals = rm whitelist_externals = rm
[testenv:functional]
basepython = python3
whitelist_externals = cat
commands = cat /etc/fm/fm.conf