-
-
Save metacoma/e8544d3948e579917f18 to your computer and use it in GitHub Desktop.
controller upgrade
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def router_data(node, router_id): | |
stdout, _ = ssh.call(["/bin/bash", "-c", ". /root/openrc &&" | |
"neutron l3-agent-list-hosting-router " | |
"{0} -f json".format(router_id)], | |
stdout=subprocess.PIPE, node=node) | |
try: | |
return json.loads(stdout)[0] | |
except: | |
raise Exception("Invalid data " | |
"for router {0}".format(router_id)) | |
def ban_l3_agent(node): | |
ssh.call(['pcs', 'resource', 'ban', 'p_neutron-l3-agent', | |
node.data['fqdn']], stdout = subprocess.PIPE, | |
node = node) | |
def wait_for_router_migration(node, router_id): | |
for i in range(0, 30): | |
router = router_data(node, router_id) | |
print router | |
if node.data['fqdn'] != router['host']: | |
if router['admin_state_up'] and router['alive'] == ":-)": | |
return | |
time.sleep(3) | |
raise Exception("Timeout for router migration") | |
def neutron_routers(node): | |
node_routers = [] | |
output, _ = ssh.call(["/bin/bash", "-c", ". /root/openrc &&" | |
"neutron router-list -f json",], | |
stdout=subprocess.PIPE, node=node) | |
try: | |
env_routers = json.loads(output) | |
except: | |
raise Exception("Invalid data from router list") | |
for i in range(0, len(env_routers)): | |
router_id = env_routers[i]['id'] | |
router = router_data(node, router_id) | |
if (router['host'] == node.data['fqdn']): | |
node_routers.append(router_id) | |
return node_routers | |
n = node_obj.Node(9) | |
routers = neutron_routers(n) | |
if (routers): | |
ban_l3_agent(n) | |
for i in xrange(0, len(routers)): | |
wait_router_migration(n, routers[i]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment