fix bugs
diff --git a/planetstack/openstack/driver.py b/planetstack/openstack/driver.py
index 14eea41..c01fede 100644
--- a/planetstack/openstack/driver.py
+++ b/planetstack/openstack/driver.py
@@ -264,10 +264,11 @@
gw_port = port
router_id = gw_port['device_id']
router = self.shell.quantum.show_router(router_id)['router']
- ext_net = router['external_gateway_info']['network_id']
- for port in ports:
- if port['device_id'] == router_id and port['network_id'] == ext_net:
- ip_address = port['fixed_ips'][0]['ip_address']
+ if router:
+ ext_net = router['external_gateway_info']['network_id']
+ for port in ports:
+ if port['device_id'] == router_id and port['network_id'] == ext_net:
+ ip_address = port['fixed_ips'][0]['ip_address']
if ip_address:
# check if external route already exists
@@ -278,7 +279,8 @@
route_exists = True
if not route_exists:
cmd = "route add -net %s dev br-ex gw %s" % (subnet['cidr'], ip_address)
- commands.getstatusoutput(cmd)
+ s, o = commands.getstatusoutput(cmd)
+ #print cmd, "\n", s, o
return 1
diff --git a/planetstack/openstack/observer.py b/planetstack/openstack/observer.py
index 8da0999..08cbf46 100644
--- a/planetstack/openstack/observer.py
+++ b/planetstack/openstack/observer.py
@@ -27,7 +27,8 @@
self.sync_user_tenant_roles()
self.sync_slivers()
self.sync_sliver_ips()
- time.sleep(7)
+ self.sync_external_routes()
+ time.sleep(10)
except:
traceback.print_exc()
@@ -277,7 +278,10 @@
def sync_external_routes(self):
routes = self.manager.driver.get_external_routes()
- subnets = self.manager.driver.shell.quantum.list_subnets()
+ subnets = self.manager.driver.shell.quantum.list_subnets()['subnets']
for subnet in subnets:
- self.manager.driver.add_external_route(subnet, routes)
+ try:
+ self.manager.driver.add_external_route(subnet, routes)
+ except:
+ logger.log_exc("failed to add external route for subnet %s" % subnet)