Merge "add web portal framework for TestAPI"
[releng.git] / utils / fetch_os_creds.sh
index 34c81af..6a382a5 100755 (executable)
@@ -38,6 +38,16 @@ verify_connectivity() {
     error "Can not talk to $ip."
 }
 
     error "Can not talk to $ip."
 }
 
+
+swap_to_public() {
+    if [ "$1" != "" ]; then
+        info "Exchanging keystone public IP in rc file to $public_ip"
+        sed -i  "/OS_AUTH_URL/c\export OS_AUTH_URL=\'$public_ip'" $dest_path
+        sed -i 's/internalURL/publicURL/g' $dest_path
+    fi
+}
+
+
 : ${DEPLOY_TYPE:=''}
 
 #Get options
 : ${DEPLOY_TYPE:=''}
 
 #Get options
@@ -81,7 +91,7 @@ if [ "$installer_type" == "fuel" ]; then
     verify_connectivity $installer_ip
 
     env=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
     verify_connectivity $installer_ip
 
     env=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
-        'fuel env'|grep operational|tail -1|awk '{print $1}') &> /dev/null
+        'fuel env'|grep operational|head -1|awk '{print $1}') &> /dev/null
     if [ -z $env ]; then
         error "No operational environment detected in Fuel"
     fi
     if [ -z $env ]; then
         error "No operational environment detected in Fuel"
     fi
@@ -89,7 +99,7 @@ if [ "$installer_type" == "fuel" ]; then
 
     # Check if controller is alive (online='True')
     controller_ip=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
 
     # Check if controller is alive (online='True')
     controller_ip=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
-        'fuel node --env ${env_id} | grep controller | grep "True\|  1" | awk -F\| "{print \$5}" | tail -1' | \
+        "fuel node --env ${env_id} | grep controller | grep 'True\|  1' | awk -F\| '{print \$5}' | head -1" | \
         sed 's/ //g') &> /dev/null
 
     if [ -z $controller_ip ]; then
         sed 's/ //g') &> /dev/null
 
     if [ -z $controller_ip ]; then
@@ -104,17 +114,20 @@ if [ "$installer_type" == "fuel" ]; then
     #This file contains the mgmt keystone API, we need the public one for our rc file
     admin_ip=$(cat $dest_path | grep "OS_AUTH_URL" | sed 's/^.*\=//' | sed "s/^\([\"']\)\(.*\)\1\$/\2/g" | sed s'/\/$//')
     public_ip=$(sshpass -p r00tme ssh $ssh_options root@${installer_ip} \
     #This file contains the mgmt keystone API, we need the public one for our rc file
     admin_ip=$(cat $dest_path | grep "OS_AUTH_URL" | sed 's/^.*\=//' | sed "s/^\([\"']\)\(.*\)\1\$/\2/g" | sed s'/\/$//')
     public_ip=$(sshpass -p r00tme ssh $ssh_options root@${installer_ip} \
-        "ssh ${controller_ip} 'source openrc; openstack endpoint list --long'" \
-        | grep $admin_ip | sed 's/ /\n/g' | grep ^http | head -1) &> /dev/null
+        "ssh ${controller_ip} 'source openrc; openstack endpoint list'" \
+        | grep keystone | grep public | sed 's/ /\n/g' | grep ^http | head -1) &> /dev/null
         #| grep http | head -1 | cut -d '|' -f 4 | sed 's/v1\/.*/v1\//' | sed 's/ //g') &> /dev/null
     #NOTE: this is super ugly sed 's/v1\/.*/v1\//'OS_AUTH_URL
     # but sometimes the output of endpoint-list is like this: http://172.30.9.70:8004/v1/%(tenant_id)s
     # Fuel virtual need a fix
 
         #| grep http | head -1 | cut -d '|' -f 4 | sed 's/v1\/.*/v1\//' | sed 's/ //g') &> /dev/null
     #NOTE: this is super ugly sed 's/v1\/.*/v1\//'OS_AUTH_URL
     # but sometimes the output of endpoint-list is like this: http://172.30.9.70:8004/v1/%(tenant_id)s
     # Fuel virtual need a fix
 
-    if [ "$DEPLOY_TYPE" == "virt" ]; then
-        echo "INFO: Changing: internalURL -> publicURL in openrc"
-        sed -i 's/internalURL/publicURL/' $dest_path
+    #convert to v3 URL
+    auth_url=$(cat $dest_path|grep AUTH_URL)
+    if [[ -z `echo $auth_url |grep v3` ]]; then
+        auth_url=$(echo $auth_url |sed "s|'$|v3&|")
     fi
     fi
+    sed -i '/AUTH_URL/d' $dest_path
+    echo $auth_url >> $dest_path
 
 elif [ "$installer_type" == "apex" ]; then
     verify_connectivity $installer_ip
 
 elif [ "$installer_type" == "apex" ]; then
     verify_connectivity $installer_ip
@@ -125,13 +138,13 @@ elif [ "$installer_type" == "apex" ]; then
     if [ -f /root/.ssh/id_rsa ]; then
         chmod 600 /root/.ssh/id_rsa
     fi
     if [ -f /root/.ssh/id_rsa ]; then
         chmod 600 /root/.ssh/id_rsa
     fi
-    sudo scp $ssh_options root@$installer_ip:/home/stack/overcloudrc $dest_path
+    sudo scp $ssh_options root@$installer_ip:/home/stack/overcloudrc.v3 $dest_path
 
 elif [ "$installer_type" == "compass" ]; then
     verify_connectivity $installer_ip
     controller_ip=$(sshpass -p'root' ssh 2>/dev/null $ssh_options root@${installer_ip} \
         'mysql -ucompass -pcompass -Dcompass -e"select *  from cluster;"' \
 
 elif [ "$installer_type" == "compass" ]; then
     verify_connectivity $installer_ip
     controller_ip=$(sshpass -p'root' ssh 2>/dev/null $ssh_options root@${installer_ip} \
         'mysql -ucompass -pcompass -Dcompass -e"select *  from cluster;"' \
-        | awk -F"," '{for(i=1;i<NF;i++)if($i~/\"host[1-5]\"/) {print $(i+1);break;}}'  \
+        | awk -F"," '{for(i=1;i<NF;i++)if($i~/\"127.0.0.1\"/) {print $(i+2);break;}}'  \
         | grep -oP "\d+.\d+.\d+.\d+")
 
     if [ -z $controller_ip ]; then
         | grep -oP "\d+.\d+.\d+.\d+")
 
     if [ -z $controller_ip ]; then
@@ -142,15 +155,21 @@ elif [ "$installer_type" == "compass" ]; then
     sshpass -p root ssh 2>/dev/null $ssh_options root@${installer_ip} \
         "scp $ssh_options ${controller_ip}:/opt/admin-openrc.sh ." &> /dev/null
     sshpass -p root scp 2>/dev/null $ssh_options root@${installer_ip}:~/admin-openrc.sh $dest_path &> /dev/null
     sshpass -p root ssh 2>/dev/null $ssh_options root@${installer_ip} \
         "scp $ssh_options ${controller_ip}:/opt/admin-openrc.sh ." &> /dev/null
     sshpass -p root scp 2>/dev/null $ssh_options root@${installer_ip}:~/admin-openrc.sh $dest_path &> /dev/null
-    echo 'export OS_REGION_NAME=regionOne' >> $dest_path
 
     info "This file contains the mgmt keystone API, we need the public one for our rc file"
 
     info "This file contains the mgmt keystone API, we need the public one for our rc file"
-    admin_ip=$(cat $dest_path | grep "OS_AUTH_URL" | sed 's/^.*\=//' | sed "s/^\([\"']\)\(.*\)\1\$/\2/g" | sed s'/\/$//')
-    info "admin_ip: $admin_ip"
-    public_ip=$(sshpass -p root ssh $ssh_options root@${installer_ip} \
-        "ssh ${controller_ip} 'source /opt/admin-openrc.sh; keystone endpoint-list'" \
-        | grep $admin_ip | sed 's/ /\n/g' | grep ^http | head -1)
+    grep "OS_AUTH_URL.*v2" $dest_path > /dev/null 2>&1
+    if [ $?  -eq 0 ] ; then
+        public_ip=$(sshpass -p root ssh $ssh_options root@${installer_ip} \
+            "ssh ${controller_ip} 'source /opt/admin-openrc.sh; openstack endpoint show identity '" \
+            | grep publicurl | awk '{print $4}')
+    else
+        public_ip=$(sshpass -p root ssh $ssh_options root@${installer_ip} \
+            "ssh ${controller_ip} 'source /opt/admin-openrc.sh; \
+                 openstack endpoint list --interface public --service identity '" \
+            | grep identity | awk '{print $14}')
+    fi
     info "public_ip: $public_ip"
     info "public_ip: $public_ip"
+    swap_to_public $public_ip
 
 
 elif [ "$installer_type" == "joid" ]; then
 
 
 elif [ "$installer_type" == "joid" ]; then
@@ -182,6 +201,17 @@ elif [ "$installer_type" == "foreman" ]; then
         'source keystonerc_admin;keystone endpoint-list'" \
         | grep $admin_ip | sed 's/ /\n/g' | grep ^http | head -1) &> /dev/null
 
         'source keystonerc_admin;keystone endpoint-list'" \
         | grep $admin_ip | sed 's/ /\n/g' | grep ^http | head -1) &> /dev/null
 
+elif [ "$installer_type" == "daisy" ]; then
+    verify_connectivity $installer_ip
+    cluster=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
+            "source ~/daisyrc_admin; daisy cluster-list"|grep active|head -1|awk -F "|" '{print $3}') &> /dev/null
+    if [ -z $cluster ]; then
+        echo "No active cluster detected in daisy"
+        exit 1
+    fi
+
+    sshpass -p r00tme scp 2>/dev/null $ssh_options root@${installer_ip}:/etc/kolla/admin-openrc.sh $dest_path &> /dev/null
+
 else
     error "Installer $installer is not supported by this script"
 fi
 else
     error "Installer $installer is not supported by this script"
 fi
@@ -191,13 +221,6 @@ if [ ! -f $dest_path ]; then
     error "There has been an error retrieving the credentials"
 fi
 
     error "There has been an error retrieving the credentials"
 fi
 
-if [ "$public_ip" != "" ]; then
-    info "Exchanging keystone public IP in rc file to $public_ip"
-    sed -i  "/OS_AUTH_URL/c\export OS_AUTH_URL=\'$public_ip'" $dest_path
-fi
-
-
-
 echo "-------- Credentials: --------"
 cat $dest_path
 
 echo "-------- Credentials: --------"
 cat $dest_path