From 68c99f6f660def8ba9e9451ac9e0b293cb0ae835 Mon Sep 17 00:00:00 2001 From: Dean Troyer Date: Thu, 6 Dec 2018 17:46:10 -0600 Subject: [PATCH] DevStack cleanups * Pull binary build steps into separate functions * Add build.sh to call binary builds without the rest of DevStack * Add new stx-fault-build job and tox build environment * Make stx-fault-devstack voting (still only devstack/*) Change-Id: I6692fc1f75db413860ede2657f4f1501b95c10c0 Signed-off-by: Dean Troyer --- .zuul.yaml | 19 ++++++- devstack/build.sh | 35 ++++++++++++ devstack/lib/stx-fault | 126 +++++++++++++++++++++++++++-------------- devstack/plugin.sh | 2 +- devstack/settings | 10 +++- tox.ini | 4 ++ 6 files changed, 147 insertions(+), 49 deletions(-) create mode 100755 devstack/build.sh diff --git a/.zuul.yaml b/.zuul.yaml index e7bcfc0b..91d6068f 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -5,24 +5,37 @@ - build-openstack-docs-pti check: jobs: - - stx-devstack-fault: - voting: false - build-openstack-api-ref - build-openstack-releasenotes - openstack-tox-linters - openstack-tox-pep8 + - stx-fault-build + - stx-fault-devstack gate: jobs: - build-openstack-api-ref - build-openstack-releasenotes - openstack-tox-linters - openstack-tox-pep8 + - stx-fault-devstack post: jobs: - publish-stx-api-ref - publish-stx-tox - publish-stx-releasenotes +# Perform just a build +- job: + name: stx-fault-build + parent: tox + description: Run build for fault + irrelevant-files: + - api-ref/* + - docs/* + - releasenotes/* + vars: + tox_envlist: build + # This job is to begin testing a DevStack run here - job: name: stx-devstack-base @@ -72,7 +85,7 @@ FORCE: yes - job: - name: stx-devstack-fault + name: stx-fault-devstack parent: stx-devstack-base timeout: 7800 required-projects: diff --git a/devstack/build.sh b/devstack/build.sh new file mode 100755 index 00000000..449b92d3 --- /dev/null +++ b/devstack/build.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# devstack/build.sh +# Run DevStack plugin builds + +set -o xtrace + +unset LANG +unset LANGUAGE +LC_ALL=en_US.utf8 +export LC_ALL + +# Keep track of the DevStack plugin directory +PLUGIN_DIR=$(cd $(dirname "$0")/.. && pwd) +PLUGIN_NAME=$(basename $PLUGIN_DIR) + +# Keep plugin happy +declare -a GITDIR +GITDIR[$PLUGIN_NAME]=$PLUGIN_DIR + +# Dummy function to keep plugin happy +function get_python_exec_prefix { + echo "" +} + +function is_service_enabled { + return 0 +} + +# Get the build functions +source $PLUGIN_DIR/devstack/lib/stx-fault + +# Call builds +build_fm_common +build_fm_mgr diff --git a/devstack/lib/stx-fault b/devstack/lib/stx-fault index 14d5761c..57dcb248 100644 --- a/devstack/lib/stx-fault +++ b/devstack/lib/stx-fault @@ -5,9 +5,6 @@ # Dependencies: # -# - ``functions`` file -# - ``DEST``, ``DATA_DIR``, ``STACK_USER`` must be defined - # - The stx-update plugin must be enabled # ``stack.sh`` calls the entry points in this order: @@ -26,13 +23,13 @@ set -o xtrace # 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 +STX_FAULT_DIR=${GITDIR[$STX_FAULT_NAME]} +STX_FAULT_CONF_DIR=/etc/fm +FM_RESTAPI_CONF=$STX_FAULT_CONF_DIR/fm.conf +FM_RESTAPI_PASTE_INI=$STX_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 +FM_RESTAPI_DIR=$STX_FAULT_DIR/fm-rest-api/fm if is_service_enabled tls-proxy; then @@ -49,6 +46,51 @@ PYTHON_SITE_DIR=$(python -c "from distutils.sysconfig import get_python_lib; pri # Functions # --------- +function build_fm_common { + pushd $STX_FAULT_DIR/fm-common/sources + + local major minor version x + + if [[ -z $1 || -z $2 ]]; then + # get fm-common version + read x version <<< $(grep '^Version: ' $STX_FAULT_DIR/fm-common/PKG-INFO) + major=${version%%.*} + minor=${version##*.} + else + major=$1 + minor=$2 + fi + + # build + make MAJOR=$major MINOR=$minor + python setup.py build + + popd +} + +function build_fm_mgr { + pushd $STX_FAULT_DIR/fm-mgr/sources + + local x version + + local major minor version x + + if [[ -z $1 || -z $2 ]]; then + # get fm-mgr version + read x version <<< $(grep '^Version: ' $STX_FAULT_DIR/fm-mgr/PKG-INFO) + local major=${version%%.*} + local minor=${version##*.} + else + major=$1 + minor=$2 + fi + + # build + make MAJOR=$major MINOR=$minor + + popd +} + function cleanup_fault { stop_fault @@ -67,14 +109,14 @@ function cleanup_fm_common { local x version # get fm-common version - read x version <<< $(grep '^Version: ' ${GITDIR[$STX_FAULT_NAME]}/fm-common/PKG-INFO) + read x version <<< $(grep '^Version: ' $STX_FAULT_DIR/fm-common/PKG-INFO) local major=${version%%.*} local minor=${version##*.} local prefix=${STX_BIN_DIR%/*} sudo rm /etc/ld.so.conf.d/stx-fault.conf - pushd ${GITDIR[$STX_FAULT_NAME]}/fm-common/sources + pushd $STX_FAULT_DIR/fm-common/sources sudo make \ DEST_DIR=$prefix \ @@ -96,11 +138,11 @@ function cleanup_fm_mgr { local x version # get fm-mgr version - read x version <<< $(grep '^Version: ' ${GITDIR[$STX_FAULT_NAME]}/fm-mgr/PKG-INFO) + read x version <<< $(grep '^Version: ' $STX_FAULT_DIR/fm-mgr/PKG-INFO) local major=${version%%.*} local minor=${version##*.} - pushd ${GITDIR[$STX_FAULT_NAME]}/fm-mgr/sources + pushd $STX_FAULT_DIR/fm-mgr/sources sudo make \ BIN_DIR=/bin \ @@ -120,13 +162,15 @@ function cleanup_fm_rest_api { function configure_fault { if is_service_enabled fm-rest-api; then configure_fm_rest_api + create_fault_user_group + create_fault_accounts fi } function configure_fm_rest_api { - sudo install -d -o $STACK_USER -m 755 $FAULT_CONF_DIR + sudo install -d -o $STACK_USER -m 755 $STX_FAULT_CONF_DIR - cp -p $FAULT_DIR/devstack/files/api-paste.ini $FM_RESTAPI_PASTE_INI + cp -p $STX_FAULT_DIR/devstack/files/api-paste.ini $FM_RESTAPI_PASTE_INI configure_auth_token_middleware $FM_RESTAPI_CONF fm $FM_RESTAPI_AUTH_CACHE_DIR @@ -159,14 +203,12 @@ function configure_fm_rest_api { } 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 + 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" } function create_fault_cache_dir { @@ -186,10 +228,9 @@ function init_fault { function install_fault { if is_service_enabled fm-common; then install_fm_common - install_fm_client fi - if is_service_enabled fm-api; then - install_fm_api + if is_service_enabled fm-client || is_service_enabled fm-common; then + install_fm_client fi if is_service_enabled fm-api; then install_fm_api @@ -203,7 +244,7 @@ function install_fault { } function install_fm_api { - pushd ${GITDIR[$STX_FAULT_NAME]}/fm-api + pushd $STX_FAULT_DIR/fm-api sudo python setup.py install \ --root=/ \ --install-lib=$PYTHON_SITE_DIR \ @@ -214,7 +255,7 @@ function install_fm_api { } function install_fm_client { - pushd ${GITDIR[$STX_FAULT_NAME]}/python-fmclient/fmclient + pushd $STX_FAULT_DIR/python-fmclient/fmclient sudo python setup.py install \ --root=/ \ --install-lib=$PYTHON_SITE_DIR \ @@ -225,22 +266,21 @@ function install_fm_client { } function install_fm_common { - local x version + pushd $STX_FAULT_DIR/fm-common/sources + + local major minor version x # get fm-common version - read x version <<< $(grep '^Version: ' ${GITDIR[$STX_FAULT_NAME]}/fm-common/PKG-INFO) - local major=${version%%.*} - local minor=${version##*.} + read x version <<< $(grep '^Version: ' $STX_FAULT_DIR/fm-common/PKG-INFO) + major=${version%%.*} + minor=${version##*.} + + build_fm_common $major $minor # Set up the destinations # Making an assumption here about STX_BIN_DIR having ../include be valid local prefix=${STX_BIN_DIR%/*} - # build - pushd ${GITDIR[$STX_FAULT_NAME]}/fm-common/sources - make MAJOR=$major MINOR=$minor - sudo python setup.py build - # install sudo make \ DEST_DIR=$prefix \ @@ -273,16 +313,16 @@ function install_fm_common { } function install_fm_mgr { - local x version + pushd $STX_FAULT_DIR/fm-mgr/sources + + local major minor version x # get fm-mgr version - read x version <<< $(grep '^Version: ' ${GITDIR[$STX_FAULT_NAME]}/fm-mgr/PKG-INFO) - local major=${version%%.*} - local minor=${version##*.} + read x version <<< $(grep '^Version: ' $STX_FAULT_DIR/fm-mgr/PKG-INFO) + major=${version%%.*} + minor=${version##*.} - # build - pushd ${GITDIR[$STX_FAULT_NAME]}/fm-mgr/sources - make MAJOR=$major MINOR=$minor + build_fm_mgr $major $minor # install sudo make \ diff --git a/devstack/plugin.sh b/devstack/plugin.sh index 2d2da757..da4ed928 100755 --- a/devstack/plugin.sh +++ b/devstack/plugin.sh @@ -3,7 +3,7 @@ # devstack/plugin.sh # Triggers stx-fault specific functions to install and configure Fault Management -echo_summary "fault devstack plugin.sh called: $1/$2" +echo_summary "stx-fault devstack plugin.sh called: $1/$2" # check for service enabled if is_service_enabled stx-fault; then diff --git a/devstack/settings b/devstack/settings index db7b23ea..643b5501 100644 --- a/devstack/settings +++ b/devstack/settings @@ -1,6 +1,14 @@ #!/bin/bash # Devstack settings +# Services +# stx-fault - Overall enable for this plugin +# fm-client +# fm-common +# fm-api +# fm-rest-api +# fm-mgr + # Defaults # -------- @@ -8,9 +16,7 @@ STX_FAULT_NAME=stx-fault ######### Plugin Specific ########## enable_service $STX_FAULT_NAME -#define_plugin $STX_FAULT_NAME -# Handle STX pre-reqs if is_service_enabled fm-rest-api; then enable_service tsconfig fi diff --git a/tox.ini b/tox.ini index bb0bba19..2d372aad 100644 --- a/tox.ini +++ b/tox.ini @@ -86,6 +86,10 @@ commands = sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html whitelist_externals = rm +[testenv:build] +deps = +commands = {toxinidir}/devstack/build.sh + [testenv:functional] basepython = python3 whitelist_externals = cat