epcim of DevOps
7/9/2017 - 6:48 PM

Openstack: Use python-novaclient commands to disassociate/reassociate a floating IP with an instance to correct connectivity issues.

Openstack: Use python-novaclient commands to disassociate/reassociate a floating IP with an instance to correct connectivity issues.

!/bin/bash


togglefloaterByUUID() { 
floater=$(nova show $1 | grep network | awk -F "|" '{printf $3}' | awk -F ", " '{printf $NF}' | sed -e 's/ //g' | sed ':a;N;$!ba;s/\n/ /g'); 
if [ -z $floater ]; then 
echo $1": No floating IP association found.";
else 
name=$(nova show $1 | grep ' name ' | awk -F "|" '{printf $3}' | sed -e 's/ //g' | sed ':a;N;$!ba;s/\n/ /g'); 
echo "Dis-associating floating IP" $floater "from instance" $name "("$1")..."; 
nova floating-ip-disassociate $1 $floater; 
echo "Done." 
echo "Associating floating IP" $floater "to instance" $name "("$1")...";
nova floating-ip-associate $1 $floater; 
echo "Done.";
unset name;
unset floater;
fi
}
export -f togglefloaterByUUID

togglefloaterByIP() { 
instance=$(nova list | grep $1 | awk -F "|" '{printf $2}'| sed -e 's/ //g' | sed ':a;N;$!ba;s/\n/ /g'); 
if [ -z $instance ]; then 
echo $1": No instance association found.";
else 
name=$(nova show $instance | grep ' name ' | awk -F "|" '{printf $3}' | sed -e 's/ //g' | sed ':a;N;$!ba;s/\n/ /g'); 
echo "Dis-associating floating IP" $1 "from instance" $name "("$instance")..."; 
nova floating-ip-disassociate $instance $1; 
echo "Done." 
echo "Associating floating IP" $1 "to instance" $name "("$instance")...";
nova floating-ip-associate $instance $1; 
echo "Done.";
unset name;
unset instance;
fi
}
export -f togglefloaterByIP