Skip to content

Instantly share code, notes, and snippets.

@jbestell
Created November 15, 2016 20:37
Show Gist options
  • Save jbestell/1b44354c23fb88ab80f18a4d19c7f6db to your computer and use it in GitHub Desktop.
Save jbestell/1b44354c23fb88ab80f18a4d19c7f6db to your computer and use it in GitHub Desktop.
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment