diff --git a/synergy_scheduler_manager/scheduler_manager.py b/synergy_scheduler_manager/scheduler_manager.py index dca0dc7..be075fc 100644 --- a/synergy_scheduler_manager/scheduler_manager.py +++ b/synergy_scheduler_manager/scheduler_manager.py @@ -263,24 +263,30 @@ class Worker(Thread): blocking = True if quota.allocate(server, blocking=blocking): + try: + km = self.keystone_manager + trust = km.getTrust(context["trust_id"]) + token = trust.getToken(km.getToken().getId()) + + context["auth_token"] = token.getId() + context["user_id"] = token.getUser().getId() + except Exception as ex: + LOG.error("Worker %r: error on getting the token " + "for server (id=%r) reason=%s" + % (self.name, server.getId(), ex)) + raise ex + try: computes = self.nova_manager.selectComputes(request) except Exception as ex: LOG.warn("Worker %s: compute not found for server %r!" " [reason=%s]" % (self.name, - server.getId(), ex)) + server.getId(), ex.message)) found = False for compute in computes: try: - km = self.keystone_manager - trust = km.getTrust(context["trust_id"]) - token = trust.getToken(km.getToken().getId()) - - context["auth_token"] = token.getId() - context["user_id"] = token.getUser().getId() - self.nova_manager.buildServer(request, compute) LOG.info("Worker %r: server (id=%r) " @@ -574,13 +580,18 @@ class SchedulerManager(Manager): km = self.keystone_manager token_user = km.validateToken(context["auth_token"]) token_admin = km.getToken() + admin_id = token_admin.getUser().getId() + trust = None trusts = km.getTrusts( user_id=token_user.getUser().getId(), token=token_user) - if trusts: - trust = trusts[0] - else: + for _trust in trusts: + if _trust.getTrusteeUserId() == admin_id: + trust = _trust + break + + if not trust: trust = km.makeTrust( token_admin.getUser().getId(), token_user)