X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=tests%2Flib%2Finstallers%2Ffuel;h=85865720453ee0d6118f25ccaf62842c510be469;hb=9fd701278bf7d8c5b9451491bcb1a92580adc780;hp=31fe1fb6e74dc5f7b70a818f59a750d62df0632a;hpb=89cd27c623e929e837a02eef0622c4ef33772ade;p=doctor.git diff --git a/tests/lib/installers/fuel b/tests/lib/installers/fuel index 31fe1fb6..85865720 100644 --- a/tests/lib/installers/fuel +++ b/tests/lib/installers/fuel @@ -4,20 +4,19 @@ if [[ "congress " == "$INSPECTOR_TYPE" ]]; then die $LINENO "fuel does not support congress yet..." fi +COMPUTE_USER=${COMPUTE_USER:-root} +ssh_opts_cpu="$ssh_opts -i instack_key" + function get_installer_ip { - ssh_opts_cpu="$ssh_opts -i instack_key" is_set INSTALLER_IP && return - local instack_mac=$(sudo virsh domiflist fuel-master | awk '/fuel1/{print $5}') - INSTALLER_IP=$(/usr/sbin/arp -e | grep ${instack_mac} | awk '{print $1}') - die_if_not_set $LINENO $INSTALLER_IP "No installer IP" + INSTALLER_IP=$(get_first_vnic_ip fuel-master) } function get_controller_ips { is_set CONTROLLER_IPS && return - get_installer_ip CONTROLLER_IPS=$(ssh $ssh_opts_cpu root@$INSTALLER_IP \ "fuel node | grep controller | cut -d '|' -f 5|xargs") - die_if_not_set $LINENO $CONTROLLER_IPS "No controller IPs" + die_if_not_set $LINENO CONTROLLER_IPS "No controller IPs" } function installer_get_ssh_keys { @@ -32,13 +31,7 @@ function installer_get_ssh_keys { } function installer_apply_patches { - if ! openstack flavor show $VM_FLAVOR ; then - openstack flavor create --ram 512 --disk 1 $VM_FLAVOR \ - && touch created_doctor_flavor - fi - # TODO(r-mibu): fix the followings in upstream (fuel) - get_controller_ips for node in $CONTROLLER_IPS;do echo "check controller configuration for doctor ($node)" ssh $ssh_opts_cpu "root@$node" ' @@ -81,15 +74,66 @@ function installer_apply_patches { ip netns exec haproxy /usr/lib/ocf/resource.d/fuel/ns_haproxy restart fi fi + + 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 + service nova-api restart + else + echo "add nova policy" + cp $np_conf $np_backup + sed -i "/{/a \ \"${entry}\": \"$new\"" $np_conf + service nova-api restart + fi + else + # policy.json does not exist in Ocata. + echo "$np_conf does not exist. Creating 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 + service nova-api restart + fi ' > installer_apply_patches_$node.log 2>&1 done } -function cleanup_installer_fuel { - if [[ -e created_doctor_flavor ]] && openstack flavor show $VM_FLAVOR ; then - openstack flavor delete $VM_FLAVOR && rm -f created_doctor_flavor +function setup_installer { + get_installer_ip + installer_get_ssh_keys + get_controller_ips + installer_apply_patches + #Might take a moment for nova-api to restart + sleep 20 + if ! openstack flavor show $VM_FLAVOR ; then + openstack flavor create --ram 512 --disk 1 $VM_FLAVOR \ + && touch created_doctor_flavor fi +} + +function get_compute_ip_from_hostname { + local compute_host=$1 + + compute_host_in_undercloud=${compute_host%%.*} + node_id=$(echo $compute_host_in_undercloud | cut -d "-" -f 2) + COMPUTE_IP=$(sshpass -p r00tme ssh 2>/dev/null $ssh_opts root@${INSTALLER_IP} \ + "fuel node|awk -F '|' -v id=$node_id '{if (\$1 == id) print \$5}' |xargs") + die_if_not_set $LINENO COMPUTE_IP "Could get IP address of $compute_host." +} +function installer_revert_patches { # TODO(r-mibu): fix the followings in upstream (fuel) get_controller_ips for node in $CONTROLLER_IPS;do @@ -128,6 +172,26 @@ function cleanup_installer_fuel { sed -ie "/# added by doctor script/d" $ep_conf service ceilometer-agent-notification restart fi + + 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 + service nova-api restart + elif [ -e $np_rm ]; then + rm $np_conf + rm $np_rm + service nova-api restart + fi ' >> installer_apply_patches_$node.log 2>&1 done } + +function cleanup_installer { + if [[ -e created_doctor_flavor ]] && openstack flavor show $VM_FLAVOR ; then + openstack flavor delete $VM_FLAVOR && rm -f created_doctor_flavor + fi + installer_revert_patches +}