X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=tests%2Flib%2Finstallers%2Flocal;h=d628867af1e18503a77659009254806b890ed387;hb=76dadb96e17e4d066facf0a185a1032e40b980f7;hp=e7aed14f31575573a5824dc069b74f7c89097162;hpb=5a4e6fa349c58cf201e672d6f7a51f527bfdc946;p=doctor.git diff --git a/tests/lib/installers/local b/tests/lib/installers/local index e7aed14f..d628867a 100644 --- a/tests/lib/installers/local +++ b/tests/lib/installers/local @@ -1,9 +1,7 @@ #!/bin/bash -function get_installer_ip { - # Noop - return -} +COMPUTE_USER=${COMPUTE_USER:-$(whoami)} +ssh_opts_cpu="$ssh_opts" function installer_get_ssh_keys { echo "INSTALLER_TYPE set to 'local'. Assuming SSH keys already exchanged with $COMPUTE_HOST" @@ -11,11 +9,79 @@ function installer_get_ssh_keys { } function installer_apply_patches { - # Noop + set -x + date + echo "### apply patches (installer=local)" + np_conf=/etc/nova/policy.json + if [ -e $np_conf ]; then + entry="os_compute_api:servers:show:host_status" + new="rule:admin_or_owner" + np_backup="${np_conf}-doctor-saved" + if grep -q "${entry}.*${new}" $np_conf; then + echo "Not modifying nova policy" + elif grep -q "${entry}" $np_conf; then + echo "modify nova policy" + cp $np_conf $np_backup + oldline=$(grep "$entry" $np_conf) + newline=$(echo "$oldline" | sed "s/rule.*\"/$new\"/") + sed -i "s/$oldline/$newline/" $np_conf + # TODO(umar): Update to systemd when screen is no more used for devstack + screen -S stack -p n-api -X stuff "^C^M^[[A^M" # restart n-api service + else + echo "add nova policy" + cp $np_conf $np_backup + sed -i "/{/a \ \"${entry}\": \"$new\"" $np_conf + screen -S stack -p n-api -X stuff "^C^M^[[A^M" + fi + else + # policy.json does not exist in Ocata. + echo "$np_conf does not exist. Creating a new one" + echo -e '{\n "context_is_admin": "role:admin",' > $np_conf + echo -e ' "owner" : "user_id:%(user_id)s",' >> $np_conf + echo -e ' "admin_or_owner": "rule:context_is_admin or rule:owner",' >> $np_conf + echo -e ' "os_compute_api:servers:show:host_status": "rule:admin_or_owner"\n}' >> $np_conf + np_rm="${np_conf}-doctor-rm" + cp $np_conf $np_rm + screen -S stack -p n-api -X stuff "^C^M^[[A^M" + fi + return } -function cleanup_installer_local { - # Noop +function setup_installer { + installer_get_ssh_keys + installer_apply_patches +} + +function get_compute_ip_from_hostname { + local compute_host=$1 + + if is_set COMPUTE_IP; then + echo "Using pre-configured COMPUTE_IP=$COMPUTE_IP ..." + return + fi + COMPUTE_IP=$(getent hosts "$compute_host" | awk '{ print $1 }') + die_if_not_set $LINENO COMPUTE_IP \ + "Could not resolve $compute_host. Either manually set COMPUTE_IP or enable DNS resolution." +} + +function cleanup_installer { + set -x + echo "### revert patches (installer=local)" + date + + np_conf=/etc/nova/policy.json + np_backup="${np_conf}-doctor-saved" + np_rm="${np_conf}-doctor-rm" + if [ -e $np_backup ]; then + cp -f $np_backup $np_conf + rm $np_backup + screen -S stack -p n-api -X stuff "^C^M^[[A^M" + elif [ -e $np_rm ]; then + rm $np_conf + rm $np_rm + screen -S stack -p n-api -X stuff "^C^M^[[A^M" + fi + return }