X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=tests%2Flib%2Finstallers%2Fapex;h=3d94e1c44a52fe0af69eb848daf09549f12c2370;hb=cbb58ee4050a201c0125b0b0b1a7c8f162925849;hp=45a5dcdccb3c01fdf40425142291839fa64a776f;hpb=a65bd8e7807e486561017a716468d52a0ba144f9;p=doctor.git diff --git a/tests/lib/installers/apex b/tests/lib/installers/apex index 45a5dcdc..3d94e1c4 100644 --- a/tests/lib/installers/apex +++ b/tests/lib/installers/apex @@ -1,24 +1,113 @@ #!/bin/bash +COMPUTE_USER=${COMPUTE_USER:-heat-admin} +ssh_opts_cpu="$ssh_opts -i instack_key" + function get_installer_ip { - local instack_mac=$(sudo virsh domiflist instack | awk '/default/{print $5}') - INSTALLER_IP=$(/usr/sbin/arp -e | grep ${instack_mac} | awk '{print $1}') - die_if_not_set $LINENO INSTALLER_IP "No installer IP" + is_set INSTALLER_IP && return + INSTALLER_IP=$(get_first_vnic_ip undercloud) } function installer_get_ssh_keys { - sudo scp $ssh_opts root@"$INSTALLER_IP":/home/stack/.ssh/id_rsa instack_key + sudo scp $ssh_opts "root@$INSTALLER_IP:/home/stack/.ssh/id_rsa" instack_key sudo chown $(whoami):$(whoami) instack_key chmod 400 instack_key - ssh_opts_cpu+=" -i instack_key" +} + +function get_controller_ips { + is_set CONTROLLER_IPS && return + get_installer_ip + CONTROLLER_IPS=$(sudo ssh $ssh_opts $INSTALLER_IP \ + "source stackrc + nova list | grep ' overcloud-controller-[0-9] ' | \ + sed -e 's/^.*ctlplane=//' -e 's/ *|\$//'") + die_if_not_set $LINENO CONTROLLER_IPS "No controller IPs" } function installer_apply_patches { - # Noop - return + # TODO(r-mibu): fix the followings in upstream (apex) + for node in $CONTROLLER_IPS;do + echo "check controller configuration for doctor ($node)" + ssh $ssh_opts_cpu "heat-admin@$node" ' + set -x + date + echo "### apply patches (installer=apex)" + + ep_conf=/etc/ceilometer/event_pipeline.yaml + ep_entry="- notifier://?topic=alarm.all" + if sudo grep -e "$ep_entry" $ep_conf; then + echo "NOTE: ceilometer is configured as we needed" + else + echo "modify the ceilometer config" + sudo sed -i -e "$ a \ \ \ \ \ \ \ \ \ \ $ep_entry # added by doctor script" $ep_conf + sudo systemctl restart openstack-ceilometer-notification.service + fi + + co_conf=/etc/congress/congress.conf + co_entry="congress.datasources.doctor_driver.DoctorDriver" + if sudo grep -e "^drivers.*$co_entry" $co_conf; then + echo "NOTE: congress is configured as we needed" + else + echo "modify the congress config" + sudo sed -i -e "/^drivers/s/$/,$co_entry # added by doctor script/" \ + $co_conf + sudo systemctl restart openstack-congress-server.service + fi + ' > installer_apply_patches_$node.log 2>&1 + done +} + +function setup_installer { + get_installer_ip + installer_get_ssh_keys + get_controller_ips + installer_apply_patches + + # NOTE: while executing command as doctor user, + # 'OS_PROJECT_ID' env parameter make openstack clients confused. + unset OS_PROJECT_ID +} + +function get_compute_ip_from_hostname { + local compute_host=$1 + + compute_host_in_undercloud=${compute_host%%.*} + COMPUTE_IP=$(sudo ssh $ssh_opts $INSTALLER_IP \ + "source stackrc; + nova show $compute_host_in_undercloud | \ + awk '/ ctlplane network /{print \$5}'") + 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 (apex) + get_controller_ips + for node in $CONTROLLER_IPS;do + echo "restore controller configuration if touched ($node)" + ssh $ssh_opts_cpu "heat-admin@$node" ' + set -x + echo "### revert patches (installer=apex)" + date + + co_conf=/etc/congress/congress.conf + co_entry="congress.datasources.doctor_driver.DoctorDriver" + if sudo grep -q -e "# added by doctor script" $co_conf; then + echo "modify the congress config" + sudo sed -i -e "/^drivers/s/^\(.*\),$co_entry # added by doctor script/\1/" $co_conf + sudo systemctl restart openstack-congress-server.service + fi + + ep_conf=/etc/ceilometer/event_pipeline.yaml + if sudo grep -q -e "# added by doctor script" $ep_conf; then + echo "modify the ceilometer config" + sudo sed -ie "/# added by doctor script/d" $ep_conf + sudo systemctl restart openstack-ceilometer-notification.service + fi + ' >> installer_apply_patches_$node.log 2>&1 + done } -function cleanup_installer_apex { - # Noop +function cleanup_installer { + installer_revert_patches return }