From a76b895c3dc03221c0dd49f9f80e360b8263d3d7 Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Sat, 5 Oct 2013 23:36:30 -0400 Subject: [PATCH] bug fixes --- .../observer/steps/garbage_collector.py | 22 ++++++++++++------- .../observer/steps/sync_external_routes.py | 2 +- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/planetstack/observer/steps/garbage_collector.py b/planetstack/observer/steps/garbage_collector.py index 4f9d61e..4ed8506 100644 --- a/planetstack/observer/steps/garbage_collector.py +++ b/planetstack/observer/steps/garbage_collector.py @@ -1,8 +1,14 @@ import os import base64 +import traceback +from collections import defaultdict from django.db.models import F, Q from planetstack.config import Config +from util.logger import Logger, logging from observer.openstacksyncstep import OpenStackSyncStep +from core.models import * + +logger = Logger(logfile='observer.log', level=logging.INFO) class GarbageCollector(OpenStackSyncStep): requested_interval = 86400 @@ -10,7 +16,6 @@ class GarbageCollector(OpenStackSyncStep): def call(self, **args): try: - logger.info('gc start') #self.sync_roles() self.gc_tenants() self.gc_users() @@ -39,7 +44,7 @@ class GarbageCollector(OpenStackSyncStep): continue if keystone_role.name not in pending_role_names: try: - self.manager.driver.delete_role({id: keystone_role.id}) + self.driver.delete_role({id: keystone_role.id}) except: traceback.print_exc() """ @@ -97,7 +102,7 @@ class GarbageCollector(OpenStackSyncStep): continue if user.id not in user_dict: try: - #self.manager.driver.delete_user(user.id) + #self.driver.delete_user(user.id) logger.info("deleted user: %s" % user) except: logger.log_exc("delete user failed: %s" % user) @@ -112,7 +117,7 @@ class GarbageCollector(OpenStackSyncStep): user_tenant_roles = defaultdict(list) for site_priv in SitePrivilege.objects.filter(enacted__isnull=False): user_tenant_roles[(site_priv.user.kuser_id, site_priv.site.tenant_id)].append(site_priv.role.role) - for slice_memb in SliceMembership.objects.filter(enacted__isnull=False): + for slice_memb in SlicePrivilege.objects.filter(enacted__isnull=False): user_tenant_roles[(slice_memb.user.kuser_id, slice_memb.slice.tenant_id)].append(slice_memb.role.role) # Some user tenant role aren't stored in planetstack but they must be preserved. @@ -124,7 +129,8 @@ class GarbageCollector(OpenStackSyncStep): preserved_roles = {} for user in users: tenant_ids = [s['tenant_id'] for s in user.slices.values()] - tenant_ids.append(user.site.tenant_id) + if user.site: + tenant_ids.append(user.site.tenant_id) preserved_roles[user.kuser_id] = tenant_ids @@ -132,7 +138,7 @@ class GarbageCollector(OpenStackSyncStep): # Metadata table. for metadata in self.driver.shell.keystone_db.get_metadata(): # skip admin roles - if metadata.user_id == self.manager.driver.admin_user.id: + if metadata.user_id == self.driver.admin_user.id: continue # skip preserved tenant ids if metadata.user_id in preserved_roles and \ @@ -189,8 +195,8 @@ class GarbageCollector(OpenStackSyncStep): slivers = Sliver.objects.filter(ip=None) for sliver in slivers: # update connection - self.manager.init_admin(tenant=sliver.slice.name) - servers = self.manager.driver.shell.nova.servers.findall(id=sliver.instance_id) + driver = self.driver.client_driver(tenant=sliver.slice.name) + servers = driver.shell.nova.servers.findall(id=sliver.instance_id) if not servers: continue server = servers[0] diff --git a/planetstack/observer/steps/sync_external_routes.py b/planetstack/observer/steps/sync_external_routes.py index b6e9df3..334d19d 100644 --- a/planetstack/observer/steps/sync_external_routes.py +++ b/planetstack/observer/steps/sync_external_routes.py @@ -8,7 +8,7 @@ class SyncExternalRoutes(OpenStackSyncStep): provides=[] requested_interval = 86400 # This step is slow like a pig. Let's run it infrequently - def call(self): + def call(self, **args): routes = self.driver.get_external_routes() subnets = self.driver.shell.quantum.list_subnets()['subnets'] for subnet in subnets: -- 2.47.0