diff --git a/clean.sh b/clean.sh index a411c0a7..2244e0a6 100755 --- a/clean.sh +++ b/clean.sh @@ -28,36 +28,36 @@ set -o xtrace # First attempt a pair of unstack calls if [[ -d $BASE_DEVSTACK_DIR ]]; then bash -c " - cd $BASE_DEVSTACK_DIR; \ - source functions; \ - source stackrc; \ - source lib/cinder; \ - DATA_DIR=\${STACK_ROOT}/data; \ - ./unstack.sh --all; \ - cd -; \ - sudo losetup -d \$(sudo losetup -j \$DATA_DIR/\${VOLUME_GROUP}-backing-file | awk -F':' '/backing-file/ { print \$1}'); \ - if mount | grep \$DATA_DIR/swift/drives; then \ - umount \$DATA_DIR/swift/drives/sdb1; \ - fi; \ - sudo rm -rf \$DATA_DIR \$DATA_DIR.hide; \ + cd $BASE_DEVSTACK_DIR; \ + source functions; \ + source stackrc; \ + source lib/cinder; \ + DATA_DIR=\${STACK_ROOT}/data; \ + ./unstack.sh --all; \ + cd -; \ + sudo losetup -d \$(sudo losetup -j \$DATA_DIR/\${VOLUME_GROUP}-backing-file | awk -F':' '/backing-file/ { print \$1}'); \ + if mount | grep \$DATA_DIR/swift/drives; then \ + umount \$DATA_DIR/swift/drives/sdb1; \ + fi; \ + sudo rm -rf \$DATA_DIR \$DATA_DIR.hide; \ " # get rid of the hard-coded filename above!!! fi if [[ -d $TARGET_DEVSTACK_DIR ]]; then bash -x -c " - cd $TARGET_DEVSTACK_DIR; \ - source functions; \ - source stackrc; \ - source lib/cinder; \ - DATA_DIR=\${STACK_ROOT}/data; \ - ./unstack.sh --all; \ - cd -; \ - # need to test if volume is present - sudo losetup -d \$(sudo losetup -j \$DATA_DIR/\${VOLUME_GROUP}-backing-file | awk -F':' '/backing-file/ { print \$1}'); \ - if mount | grep \$DATA_DIR/swift/drives; then \ - sudo umount \$DATA_DIR/swift/drives/sdb1; \ - fi; \ - sudo rm -rf \$DATA_DIR; \ + cd $TARGET_DEVSTACK_DIR; \ + source functions; \ + source stackrc; \ + source lib/cinder; \ + DATA_DIR=\${STACK_ROOT}/data; \ + ./unstack.sh --all; \ + cd -; \ + # need to test if volume is present + sudo losetup -d \$(sudo losetup -j \$DATA_DIR/\${VOLUME_GROUP}-backing-file | awk -F':' '/backing-file/ { print \$1}'); \ + if mount | grep \$DATA_DIR/swift/drives; then \ + sudo umount \$DATA_DIR/swift/drives/sdb1; \ + fi; \ + sudo rm -rf \$DATA_DIR; \ " fi diff --git a/from-grizzly/upgrade-cinder b/from-grizzly/upgrade-cinder index 2cbc3e88..ee2481b2 100755 --- a/from-grizzly/upgrade-cinder +++ b/from-grizzly/upgrade-cinder @@ -3,7 +3,7 @@ # ``upgrade-cinder`` -function configure_cinder_upgrade(){ +function configure_cinder_upgrade { # Print the commands being run so that we can see the command that triggers # an error. It is also useful for following allowing as the install occurs. XTRACE=$(set +o | grep xtrace) diff --git a/from-grizzly/upgrade-glance b/from-grizzly/upgrade-glance index dbeba636..1b96423c 100755 --- a/from-grizzly/upgrade-glance +++ b/from-grizzly/upgrade-glance @@ -3,7 +3,7 @@ # ``upgrade-glance`` # configure_glance -function configure_glance_upgrade(){ +function configure_glance_upgrade { XTRACE=$(set +o | grep xtrace) set -o xtrace diff --git a/from-grizzly/upgrade-nova b/from-grizzly/upgrade-nova index 604758df..7e125f39 100755 --- a/from-grizzly/upgrade-nova +++ b/from-grizzly/upgrade-nova @@ -2,7 +2,7 @@ # ``upgrade-nova`` -function configure_nova_upgrade(){ +function configure_nova_upgrade { # upgrade rootwrap configs configure_nova_rootwrap add_v3_api_to_catalog @@ -32,7 +32,7 @@ function configure_nova_upgrade(){ } #add nova v3 endpoint for blue-print:nova-v3-api-tests -function add_v3_api_to_catalog(){ +function add_v3_api_to_catalog { source $TARGET_DEVSTACK_DIR/openrc admin admin if [[ "$ENABLED_SERVICES" =~ "n-api" && "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then diff --git a/from-havana/upgrade-neutron b/from-havana/upgrade-neutron index aa4c8b4c..b369bdfa 100755 --- a/from-havana/upgrade-neutron +++ b/from-havana/upgrade-neutron @@ -2,7 +2,7 @@ # ``upgrade-neutron`` -configure_neutron_upgrade(){ +function configure_neutron_upgrade { XTRACE=$(set +o | grep xtrace) set -o xtrace diff --git a/from-havana/upgrade-nova b/from-havana/upgrade-nova index a7a45bad..87bf1f56 100755 --- a/from-havana/upgrade-nova +++ b/from-havana/upgrade-nova @@ -2,7 +2,7 @@ # ``upgrade-nova`` -function configure_nova_upgrade(){ +function configure_nova_upgrade { XTRACE=$(set +o | grep xtrace) set -o xtrace # upgrade rootwrap configs @@ -13,6 +13,6 @@ function configure_nova_upgrade(){ iniset $NOVA_CONF upgrade_levels compute havana fi - # reset to previous state + # reset to previous state $XTRACE } diff --git a/from-icehouse/upgrade-neutron b/from-icehouse/upgrade-neutron index 666d6b2c..b1accfd2 100644 --- a/from-icehouse/upgrade-neutron +++ b/from-icehouse/upgrade-neutron @@ -2,7 +2,7 @@ # ``upgrade-neutron`` -configure_neutron_upgrade(){ +function configure_neutron_upgrade { XTRACE=$(set +o | grep xtrace) set -o xtrace diff --git a/functions b/functions index abe91ca8..755df942 100644 --- a/functions +++ b/functions @@ -20,7 +20,7 @@ set +o xtrace # Convert CIDR notation to a IPv4 netmask # cidr2netmask cidr-bits -function cidr2netmask() { +function cidr2netmask { local maskpat="255 255 255 255" local maskdgt="254 252 248 240 224 192 128" set -- ${maskpat:0:$(( ($1 / 8) * 4 ))}${maskdgt:$(( (7 - ($1 % 8)) * 4 )):3} @@ -31,7 +31,7 @@ function cidr2netmask() { # Return the network portion of the given IP address using netmask # netmask is in the traditional dotted-quad format # maskip ip-address netmask -function maskip() { +function maskip { local ip=$1 local mask=$2 local l="${ip%.*}"; local r="${ip#*.}"; local n="${mask%.*}"; local m="${mask#*.}" @@ -43,7 +43,7 @@ function maskip() { # Exit 0 if address is in network or 1 if address is not in network # ip-range is in CIDR notation: 1.2.3.4/20 # address_in_net ip-address ip-range -function address_in_net() { +function address_in_net { local ip=$1 local range=$2 local masklen=${range#*/} @@ -56,7 +56,7 @@ function address_in_net() { # Wrapper for ``apt-get`` to set cache and proxy environment variables # Uses globals ``OFFLINE``, ``*_proxy` # apt_get operation package [package ...] -function apt_get() { +function apt_get { [[ "$OFFLINE" = "True" || -z "$@" ]] && return local sudo="sudo" [[ "$(id -u)" = "0" ]] && sudo="env" @@ -91,7 +91,7 @@ function backtrace { # Prints line number and "message" then exits # die $LINENO "message" -function die() { +function die { local exitcode=$? set +o xtrace local line=$1; shift @@ -108,7 +108,7 @@ function die() { # exit code is non-zero and prints "message" and exits # NOTE: env-var is the variable name without a '$' # die_if_not_set $LINENO env-var "message" -function die_if_not_set() { +function die_if_not_set { local exitcode=$? FXTRACE=$(set +o | grep xtrace) set +o xtrace @@ -123,7 +123,7 @@ function die_if_not_set() { # Prints line number and "message" in error format # err $LINENO "message" -function err() { +function err { local exitcode=$? errXTRACE=$(set +o | grep xtrace) set +o xtrace @@ -141,7 +141,7 @@ function err() { # exit code is non-zero and prints "message" # NOTE: env-var is the variable name without a '$' # err_if_not_set $LINENO env-var "message" -function err_if_not_set() { +function err_if_not_set { local exitcode=$? errinsXTRACE=$(set +o | grep xtrace) set +o xtrace @@ -163,7 +163,7 @@ function err_if_not_set() { # # http_proxy=http://proxy.example.com:3128/ no_proxy=repo.example.net ./stack.sh -function export_proxy_variables() { +function export_proxy_variables { if [[ -n "$http_proxy" ]]; then export http_proxy=$http_proxy fi @@ -180,7 +180,7 @@ function export_proxy_variables() { # Fields are numbered starting with 1 # Reverse syntax is supported: -1 is the last field, -2 is second to last, etc. # get_field field-number -function get_field() { +function get_field { while read data; do if [ "$1" -lt 0 ]; then field="(\$(NF$1))" @@ -194,7 +194,7 @@ function get_field() { # Get the default value for HOST_IP # get_default_host_ip fixed_range floating_range host_ip_iface host_ip -function get_default_host_ip() { +function get_default_host_ip { local fixed_range=$1 local floating_range=$2 local host_ip_iface=$3 @@ -223,7 +223,7 @@ function get_default_host_ip() { } -function _get_package_dir() { +function _get_package_dir { local pkg_dir if is_ubuntu; then pkg_dir=$FILES/apts @@ -238,7 +238,7 @@ function _get_package_dir() { } -# get_packages() collects a list of package names of any type from the +# get_packages collects a list of package names of any type from the # prerequisite files in ``files/{apts|rpms}``. The list is intended # to be passed to a package installer such as apt or yum. # @@ -247,7 +247,7 @@ function _get_package_dir() { # - ``# NOPRIME`` defers installation to be performed later in stack.sh # - ``# dist:DISTRO`` or ``dist:DISTRO1,DISTRO2`` limits the selection # of the package to the distros listed. The distro names are case insensitive. -function get_packages() { +function get_packages { local services=$1 local package_dir=$(_get_package_dir) local file_to_parse @@ -362,7 +362,7 @@ function get_packages() { # os_PACKAGE - package type # os_CODENAME - vendor's codename for release # GetOSVersion -GetOSVersion() { +function GetOSVersion { # Figure out which vendor we are if [[ -n "`which sw_vers 2>/dev/null`" ]]; then # OS/X @@ -452,7 +452,7 @@ GetOSVersion() { # Translate the OS version values into common nomenclature # Sets ``DISTRO`` from the ``os_*`` values -function GetDistro() { +function GetDistro { GetOSVersion if [[ "$os_VENDOR" =~ (Ubuntu) || "$os_VENDOR" =~ (Debian) ]]; then # 'Everyone' refers to Ubuntu / Debian releases by the code name adjective @@ -600,7 +600,7 @@ function git_clone { # git update using reference as a branch. # git_update_branch ref -function git_update_branch() { +function git_update_branch { GIT_BRANCH=$1 @@ -613,7 +613,7 @@ function git_update_branch() { # git update using reference as a branch. # git_update_remote_branch ref -function git_update_remote_branch() { +function git_update_remote_branch { GIT_BRANCH=$1 @@ -624,7 +624,7 @@ function git_update_remote_branch() { # git update using reference as a tag. Be careful editing source at that repo # as working copy will be in a detached mode # git_update_tag ref -function git_update_tag() { +function git_update_tag { GIT_TAG=$1 @@ -636,7 +636,7 @@ function git_update_tag() { # Returns openstack release name for a given branch name -function get_release_name_from_branch(){ +function get_release_name_from_branch { local branch=$1 if [[ $branch =~ "stable/" || $branch =~ "proposed/" ]]; then echo ${branch#*/} @@ -648,7 +648,7 @@ function get_release_name_from_branch(){ # Comment an option in an INI file # inicomment config-file section option -function inicomment() { +function inicomment { local file=$1 local section=$2 local option=$3 @@ -658,7 +658,7 @@ function inicomment() { # Uncomment an option in an INI file # iniuncomment config-file section option -function iniuncomment() { +function iniuncomment { local file=$1 local section=$2 local option=$3 @@ -668,7 +668,7 @@ function iniuncomment() { # Get an option from an INI file # iniget config-file section option -function iniget() { +function iniget { local file=$1 local section=$2 local option=$3 @@ -680,7 +680,7 @@ function iniget() { # Determinate is the given option present in the INI file # ini_has_option config-file section option -function ini_has_option() { +function ini_has_option { local file=$1 local section=$2 local option=$3 @@ -692,7 +692,7 @@ function ini_has_option() { # Set an option in an INI file # iniset config-file section option value -function iniset() { +function iniset { local file=$1 local section=$2 local option=$3 @@ -715,7 +715,7 @@ $option = $value # Get a multiple line option from an INI file # iniget_multiline config-file section option -function iniget_multiline() { +function iniget_multiline { local file=$1 local section=$2 local option=$3 @@ -727,7 +727,7 @@ function iniget_multiline() { # Set a multiple line option in an INI file # iniset_multiline config-file section option value1 value2 valu3 ... -function iniset_multiline() { +function iniset_multiline { local file=$1 local section=$2 local option=$3 @@ -757,7 +757,7 @@ $option = $v # Append a new option in an ini file without replacing the old value # iniadd config-file section option value1 value2 value3 ... -function iniadd() { +function iniadd { local file=$1 local section=$2 local option=$3 @@ -768,7 +768,7 @@ function iniadd() { # Find out if a process exists by partial name. # is_running name -function is_running() { +function is_running { local name=$1 ps auxw | grep -v grep | grep ${name} > /dev/null RC=$? @@ -799,7 +799,7 @@ function is_running() { # # Uses global ``ENABLED_SERVICES`` # is_service_enabled service [service ...] -function is_service_enabled() { +function is_service_enabled { services=$@ for service in ${services}; do [[ ,${ENABLED_SERVICES}, =~ ,${service}, ]] && return 0 @@ -818,7 +818,7 @@ function is_service_enabled() { # remove extra commas from the input string (i.e. ``ENABLED_SERVICES``) # _cleanup_service_list service-list -function _cleanup_service_list () { +function _cleanup_service_list { echo "$1" | sed -e ' s/,,/,/g; s/^,//; @@ -837,7 +837,7 @@ function _cleanup_service_list () { # for nova, glance, and neutron built into is_service_enabled(). # Uses global ``ENABLED_SERVICES`` # enable_service service [service ...] -function enable_service() { +function enable_service { local tmpsvcs="${ENABLED_SERVICES}" for service in $@; do if ! is_service_enabled $service; then @@ -859,7 +859,7 @@ function enable_service() { # for nova, glance, and neutron built into is_service_enabled(). # Uses global ``ENABLED_SERVICES`` # disable_service service [service ...] -function disable_service() { +function disable_service { local tmpsvcs=",${ENABLED_SERVICES}," local service for service in $@; do @@ -876,7 +876,7 @@ function disable_service() { # before a minimal installation # Uses global ``ENABLED_SERVICES`` # disable_all_services -function disable_all_services() { +function disable_all_services { ENABLED_SERVICES="" } @@ -886,7 +886,7 @@ function disable_all_services() { # ENABLED_SERVICES+=",-rabbit" # Uses global ``ENABLED_SERVICES`` # disable_negated_services -function disable_negated_services() { +function disable_negated_services { local tmpsvcs="${ENABLED_SERVICES}" local service for service in ${tmpsvcs//,/ }; do @@ -900,7 +900,7 @@ function disable_negated_services() { # Distro-agnostic package installer # install_package package [package ...] -function install_package() { +function install_package { if is_ubuntu; then # if there are transient errors pulling the updates, that's fine. It may # be secondary repositories that we don't really care about. @@ -920,7 +920,7 @@ function install_package() { # Distro-agnostic package uninstaller # uninstall_package package [package ...] -function uninstall_package() { +function uninstall_package { if is_ubuntu; then apt_get purge "$@" elif is_fedora; then @@ -935,7 +935,7 @@ function uninstall_package() { # Distro-agnostic function to tell if a package is installed # is_package_installed package [package ...] -function is_package_installed() { +function is_package_installed { if [[ -z "$@" ]]; then return 1 fi @@ -956,7 +956,7 @@ function is_package_installed() { # Test if the named environment variable is set and not zero length # is_set env-var -function is_set() { +function is_set { local var=\$"$1" eval "[ -n \"$var\" ]" # For ex.: sh -c "[ -n \"$var\" ]" would be better, but several exercises depends on this } @@ -1018,7 +1018,7 @@ function cleanup_tmp { # Prepare secure cache directory -function prep_cache_dir() { +function prep_cache_dir { local dir=$1 sudo mkdir -p "$dir" sudo chown $STACK_USER "$dir" @@ -1029,7 +1029,7 @@ function prep_cache_dir() { # Service wrapper to restart services # restart_service service-name -function restart_service() { +function restart_service { if is_ubuntu; then sudo /usr/sbin/service $1 restart else @@ -1043,7 +1043,7 @@ function restart_service() { # files to produce the same logs as screen_it(). The log filename is derived # from the service name and global-and-now-misnamed SCREEN_LOGDIR # _run_process service "command-line" -function _run_process() { +function _run_process { local service=$1 local command="$2" @@ -1071,7 +1071,7 @@ function _run_process() { # of screen_it() without screen. PIDs are written to # $SERVICE_DIR/$SCREEN_NAME/$service.pid # run_process service "command-line" -function run_process() { +function run_process { local service=$1 local command="$2" @@ -1120,7 +1120,7 @@ function screen_it { # If screen is being used kill the screen window; this will catch processes # that did not leave a PID behind # screen_stop service -function screen_stop() { +function screen_stop { SCREEN_NAME=${SCREEN_NAME:-stack} SERVICE_DIR=${SERVICE_DIR:-${DEST}/status} USE_SCREEN=$(trueorfalse True $USE_SCREEN) @@ -1165,7 +1165,7 @@ function screen_rc { # Helper to remove the *.failure files under $SERVICE_DIR/$SCREEN_NAME # This is used for service_check when all the screen_it are called finished # init_service_check -function init_service_check() { +function init_service_check { SCREEN_NAME=${SCREEN_NAME:-stack} SERVICE_DIR=${SERVICE_DIR:-${DEST}/status} @@ -1179,7 +1179,7 @@ function init_service_check() { # Helper to get the status of each running service # service_check -function service_check() { +function service_check { local service local failures SCREEN_NAME=${SCREEN_NAME:-stack} @@ -1210,7 +1210,7 @@ function service_check() { # using pip before running `setup.py develop` # Uses globals ``STACK_USER``, ``TRACK_DEPENDS``, ``REQUIREMENTS_DIR`` # setup_develop directory -function setup_develop() { +function setup_develop { local project_dir=$1 if [[ $TRACK_DEPENDS = True ]]; then SUDO_CMD="env" @@ -1234,7 +1234,7 @@ function setup_develop() { # Service wrapper to start services # start_service service-name -function start_service() { +function start_service { if is_ubuntu; then sudo /usr/sbin/service $1 start else @@ -1245,7 +1245,7 @@ function start_service() { # Service wrapper to stop services # stop_service service-name -function stop_service() { +function stop_service { if is_ubuntu; then sudo /usr/sbin/service $1 stop else @@ -1258,7 +1258,7 @@ function stop_service() { # Accepts as False: 0 no false False FALSE # Accepts as True: 1 yes true True TRUE # VAR=$(trueorfalse default-value test-value) -function trueorfalse() { +function trueorfalse { local default=$1 local testval=$2 @@ -1274,7 +1274,7 @@ function trueorfalse() { # ``FILES`` must be set to the cache dir # ``GLANCE_HOSTPORT`` # upload_image image-url glance-token -function upload_image() { +function upload_image { local image_url=$1 local token=$2 @@ -1323,9 +1323,9 @@ function upload_image() { IMAGE="$FILES/${IMAGE_FNAME}" IMAGE_NAME="${IMAGE_FNAME%.xen-raw.tgz}" glance \ - --os-auth-token $token \ - --os-image-url http://$GLANCE_HOSTPORT \ - image-create \ + --os-auth-token $token \ + --os-image-url http://$GLANCE_HOSTPORT \ + image-create \ --name "$IMAGE_NAME" --is-public=True \ --container-format=tgz --disk-format=raw \ --property vm_mode=xen < "${IMAGE}" @@ -1348,11 +1348,11 @@ function upload_image() { mkdir "$xdir" tar -zxf $FILES/$IMAGE_FNAME -C "$xdir" KERNEL=$(for f in "$xdir/"*-vmlinuz* "$xdir/"aki-*/image; do - [ -f "$f" ] && echo "$f" && break; done; true) + [ -f "$f" ] && echo "$f" && break; done; true) RAMDISK=$(for f in "$xdir/"*-initrd* "$xdir/"ari-*/image; do - [ -f "$f" ] && echo "$f" && break; done; true) + [ -f "$f" ] && echo "$f" && break; done; true) IMAGE=$(for f in "$xdir/"*.img "$xdir/"ami-*/image; do - [ -f "$f" ] && echo "$f" && break; done; true) + [ -f "$f" ] && echo "$f" && break; done; true) if [[ -z "$IMAGE_NAME" ]]; then IMAGE_NAME=$(basename "$IMAGE" ".img") fi @@ -1449,7 +1449,7 @@ function use_exclusive_service { # Wait for an HTTP server to start answering requests # wait_for_service timeout url -function wait_for_service() { +function wait_for_service { local timeout=$1 local url=$2 timeout $timeout sh -c "while ! http_proxy= https_proxy= curl -s $url >/dev/null; do sleep 1; done" @@ -1459,7 +1459,7 @@ function wait_for_service() { # Wrapper for ``yum`` to set proxy environment variables # Uses globals ``OFFLINE``, ``*_proxy` # yum_install package [package ...] -function yum_install() { +function yum_install { [[ "$OFFLINE" = "True" ]] && return local sudo="sudo" [[ "$(id -u)" = "0" ]] && sudo="env" @@ -1471,7 +1471,7 @@ function yum_install() { # zypper wrapper to set arguments correctly # zypper_install package [package ...] -function zypper_install() { +function zypper_install { [[ "$OFFLINE" = "True" ]] && return local sudo="sudo" [[ "$(id -u)" = "0" ]] && sudo="env" @@ -1483,7 +1483,7 @@ function zypper_install() { # ping check # Uses globals ``ENABLED_SERVICES`` # ping_check from-net ip boot-timeout expected -function ping_check() { +function ping_check { if is_service_enabled neutron; then _ping_check_neutron "$1" $2 $3 $4 return @@ -1493,7 +1493,7 @@ function ping_check() { # ping check for nova # Uses globals ``MULTI_HOST``, ``PRIVATE_NETWORK`` -function _ping_check_novanet() { +function _ping_check_novanet { local from_net=$1 local ip=$2 local boot_timeout=$3 @@ -1520,7 +1520,7 @@ function _ping_check_novanet() { } # Get ip of instance -function get_instance_ip(){ +function get_instance_ip { local vm_id=$1 local network_name=$2 local nova_result="$(nova show $vm_id)" @@ -1536,7 +1536,7 @@ function get_instance_ip(){ # ssh check # ssh_check net-name key-file floating-ip default-user active-timeout -function ssh_check() { +function ssh_check { if is_service_enabled neutron; then _ssh_check_neutron "$1" $2 $3 $4 $5 return @@ -1544,7 +1544,7 @@ function ssh_check() { _ssh_check_novanet "$1" $2 $3 $4 $5 } -function _ssh_check_novanet() { +function _ssh_check_novanet { local NET_NAME=$1 local KEY_FILE=$2 local FLOATING_IP=$3 @@ -1559,7 +1559,7 @@ function _ssh_check_novanet() { # Add a user to a group. # add_user_to_group user group -function add_user_to_group() { +function add_user_to_group { local user=$1 local group=$2 @@ -1578,7 +1578,7 @@ function add_user_to_group() { # Get the path to the direcotry where python executables are installed. # get_python_exec_prefix -function get_python_exec_prefix() { +function get_python_exec_prefix { if is_fedora || is_suse; then echo "/usr/bin" else @@ -1590,7 +1590,7 @@ function get_python_exec_prefix() { # Get the location of the $module-rootwrap executables, where module is cinder # or nova. # get_rootwrap_location module -function get_rootwrap_location() { +function get_rootwrap_location { local module=$1 echo "$(get_python_exec_prefix)/$module-rootwrap" @@ -1599,7 +1599,7 @@ function get_rootwrap_location() { # Get the path to the pip command. # get_pip_command -function get_pip_command() { +function get_pip_command { which pip || which pip-python if [ $? -ne 0 ]; then @@ -1610,7 +1610,7 @@ function get_pip_command() { # Path permissions sanity check # check_path_perm_sanity path -function check_path_perm_sanity() { +function check_path_perm_sanity { # Ensure no element of the path has 0700 permissions, which is very # likely to cause issues for daemons. Inspired by default 0700 # homedir permissions on RHEL and common practice of making DEST in @@ -1644,23 +1644,23 @@ function check_path_perm_sanity() { # # _vercmp_r sep ver1 ver2 function _vercmp_r { - typeset sep - typeset -a ver1=() ver2=() - sep=$1; shift - ver1=("${@:1:sep}") - ver2=("${@:sep+1}") + typeset sep + typeset -a ver1=() ver2=() + sep=$1; shift + ver1=("${@:1:sep}") + ver2=("${@:sep+1}") - if ((ver1 > ver2)); then - echo 1; return 0 - elif ((ver2 > ver1)); then - echo -1; return 0 - fi + if ((ver1 > ver2)); then + echo 1; return 0 + elif ((ver2 > ver1)); then + echo -1; return 0 + fi - if ((sep <= 1)); then - echo 0; return 0 - fi + if ((sep <= 1)); then + echo 0; return 0 + fi - _vercmp_r $((sep-1)) "${ver1[@]:1}" "${ver2[@]:1}" + _vercmp_r $((sep-1)) "${ver1[@]:1}" "${ver2[@]:1}" } @@ -1681,14 +1681,14 @@ function _vercmp_r { # The above will return "0", as the versions are equal. # # vercmp_numbers ver1 ver2 -vercmp_numbers() { - typeset v1=$1 v2=$2 sep - typeset -a ver1 ver2 +function vercmp_numbers { + typeset v1=$1 v2=$2 sep + typeset -a ver1 ver2 - IFS=. read -ra ver1 <<< "$v1" - IFS=. read -ra ver2 <<< "$v2" + IFS=. read -ra ver1 <<< "$v1" + IFS=. read -ra ver2 <<< "$v2" - _vercmp_r "${#ver1[@]}" "${ver1[@]}" "${ver2[@]}" + _vercmp_r "${#ver1[@]}" "${ver1[@]}" "${ver2[@]}" } @@ -1696,7 +1696,7 @@ vercmp_numbers() { # Do nothing if the policy already exists # # policy_add policy_file policy_name policy_permissions -function policy_add() { +function policy_add { local policy_file=$1 local policy_name=$2 local policy_perm=$3 @@ -1723,7 +1723,7 @@ function policy_add() { # This function triggers the upgrade process for each project if it exists, # otherwise it shows up a warning message about the lack of this file. -function upgrade_project(){ +function upgrade_project { # NOTE(maurosr): Ideally in a new upgrade test right after a release no new # configuration is need, so we can go on without the from- directory. # This is also useful due to cross dependencie between d-g and grenade when diff --git a/grenade.sh b/grenade.sh index 6859ed08..4f023de9 100755 --- a/grenade.sh +++ b/grenade.sh @@ -51,15 +51,15 @@ while getopts bqs:t c; do done shift `expr $OPTIND - 1` -function echo_summary() { +function echo_summary { echo $@ >&6 } -function echo_nolog() { +function echo_nolog { echo $@ >&3 } -function stop() { +function stop { stop=$1 shift if [[ "$@" =~ "$stop" ]]; then diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 00000000..c5a18905 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1 @@ +bash8 diff --git a/tox.ini b/tox.ini new file mode 100644 index 00000000..a69d7459 --- /dev/null +++ b/tox.ini @@ -0,0 +1,13 @@ +[tox] +envlist = bashate +minversion = 1.6 +skipsdist = True + +[testenv] +install_command = pip install -U {opts} {packages} +setenv = VIRTUAL_ENV={envdir} +deps = -r{toxinidir}/test-requirements.txt + +[testenv:bashate] +commands = + bash -c "ls *.sh prep-* stop-* upgrade-* from-*/upgrade-* functions | xargs bash8 -v {posargs}"