git://git.onelab.eu
/
plstackapi.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sync external routes
[plstackapi.git]
/
planetstack
/
openstack
/
observer.py
diff --git
a/planetstack/openstack/observer.py
b/planetstack/openstack/observer.py
index
c14b2cb
..
8da0999
100644
(file)
--- a/
planetstack/openstack/observer.py
+++ b/
planetstack/openstack/observer.py
@@
-1,5
+1,6
@@
import time
import traceback
import time
import traceback
+import commands
from datetime import datetime
from collections import defaultdict
from core.models import *
from datetime import datetime
from collections import defaultdict
from core.models import *
@@
-105,7
+106,7
@@
class OpenStackObserver:
tenants = self.manager.driver.shell.keystone.tenants.findall()
system_tenants = ['admin','service']
for tenant in tenants:
tenants = self.manager.driver.shell.keystone.tenants.findall()
system_tenants = ['admin','service']
for tenant in tenants:
- if tenant.name
== 'admin'
:
+ if tenant.name
in system_tenants
:
continue
if tenant.name not in site_dict and tenant.name not in slice_dict:
try:
continue
if tenant.name not in site_dict and tenant.name not in slice_dict:
try:
@@
-226,7
+227,7
@@
class OpenStackObserver:
# get all users that need to be synced (enacted < updated or enacted is None)
pending_slivers = Sliver.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
for sliver in pending_slivers:
# get all users that need to be synced (enacted < updated or enacted is None)
pending_slivers = Sliver.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
for sliver in pending_slivers:
- if
not sliver.instance_id and
sliver.creator:
+ if sliver.creator:
try:
# update manager context
self.manager.init_caller(sliver.creator, sliver.slice.name)
try:
# update manager context
self.manager.init_caller(sliver.creator, sliver.slice.name)
@@
-235,7
+236,7
@@
class OpenStackObserver:
except:
logger.log_exc("save sliver failed: %s" % sliver)
except:
logger.log_exc("save sliver failed: %s" % sliver)
- # get all slivers
that
where enacted != null. We can assume these users
+ # get all slivers where enacted != null. We can assume these users
# have previously been synced and need to be checed for deletion.
slivers = Sliver.objects.filter(enacted__isnull=False)
sliver_dict = {}
# have previously been synced and need to be checed for deletion.
slivers = Sliver.objects.filter(enacted__isnull=False)
sliver_dict = {}
@@
-246,12
+247,12
@@
class OpenStackObserver:
ctx = self.manager.driver.shell.nova_db.ctx
instances = self.manager.driver.shell.nova_db.instance_get_all(ctx)
for instance in instances:
ctx = self.manager.driver.shell.nova_db.ctx
instances = self.manager.driver.shell.nova_db.instance_get_all(ctx)
for instance in instances:
- if instance.id not in sliver_dict:
+ if instance.
uu
id not in sliver_dict:
try:
# lookup tenant and update context
tenant = self.manager.driver.shell.keystone.tenants.find(id=instance.project_id)
self.manager.init_admin(tenant=tenant.name)
try:
# lookup tenant and update context
tenant = self.manager.driver.shell.keystone.tenants.find(id=instance.project_id)
self.manager.init_admin(tenant=tenant.name)
- self.manager.driver.destroy_instance(instance.id)
+ self.manager.driver.destroy_instance(instance.
uu
id)
logger.info("destroyed sliver: %s" % (instance))
except:
logger.log_exc("destroy sliver failed: %s" % instance)
logger.info("destroyed sliver: %s" % (instance))
except:
logger.log_exc("destroy sliver failed: %s" % instance)
@@
-263,7
+264,7
@@
class OpenStackObserver:
for sliver in slivers:
# update connection
self.manager.init_admin(tenant=sliver.slice.name)
for sliver in slivers:
# update connection
self.manager.init_admin(tenant=sliver.slice.name)
- servers = self.manager.
client
.nova.servers.findall(id=sliver.instance_id)
+ servers = self.manager.
driver.shell
.nova.servers.findall(id=sliver.instance_id)
if not servers:
continue
server = servers[0]
if not servers:
continue
server = servers[0]
@@
-273,3
+274,10
@@
class OpenStackObserver:
sliver.ip = ips[0]['addr']
sliver.save()
logger.info("saved sliver ip: %s %s" % (sliver, ips[0]))
sliver.ip = ips[0]['addr']
sliver.save()
logger.info("saved sliver ip: %s %s" % (sliver, ips[0]))
+
+ def sync_external_routes(self):
+ routes = self.manager.driver.get_external_routes()
+ subnets = self.manager.driver.shell.quantum.list_subnets()
+ for subnet in subnets:
+ self.manager.driver.add_external_route(subnet, routes)
+