16 |
16 |
from django.urls import reverse
|
17 |
17 |
from django.utils.encoding import force_text
|
18 |
18 |
from django_rbac.utils import get_ou_model, get_role_model, get_role_parenting_model
|
|
19 |
from tenant_schemas.utils import tenant_context
|
19 |
20 |
|
20 |
21 |
from hobo.agent.common import notify_agents
|
21 |
22 |
from hobo.signature import sign_url
|
... | ... | |
368 |
369 |
if not (saved or deleted):
|
369 |
370 |
return
|
370 |
371 |
|
371 |
|
t = threading.Thread(target=self.do_provision, kwargs={'saved': saved, 'deleted': deleted})
|
|
372 |
t = threading.Thread(
|
|
373 |
target=self.do_provision, kwargs={'saved': saved, 'deleted': deleted, "tenant": connection.tenant}
|
|
374 |
)
|
372 |
375 |
t.start()
|
373 |
376 |
self.threads.add(t)
|
374 |
377 |
|
375 |
|
def do_provision(self, saved, deleted):
|
376 |
|
try:
|
377 |
|
ous = {ou.id: ou for ou in OU.objects.all()}
|
378 |
|
self.notify_roles(ous, saved.get(Role, []))
|
379 |
|
self.notify_roles(ous, deleted.get(Role, []), mode='deprovision')
|
380 |
|
self.notify_users(ous, saved.get(User, []))
|
381 |
|
self.notify_users(ous, deleted.get(User, []), mode='deprovision')
|
382 |
|
except Exception:
|
383 |
|
# last step, clear everything
|
384 |
|
logger.exception('error in provisionning thread')
|
385 |
|
finally:
|
386 |
|
self.threads.discard(threading.current_thread())
|
|
378 |
def do_provision(self, saved, deleted, tenant):
|
|
379 |
with tenant_context(tenant):
|
|
380 |
try:
|
|
381 |
ous = {ou.id: ou for ou in OU.objects.all()}
|
|
382 |
self.notify_roles(ous, saved.get(Role, []))
|
|
383 |
self.notify_roles(ous, deleted.get(Role, []), mode='deprovision')
|
|
384 |
self.notify_users(ous, saved.get(User, []))
|
|
385 |
self.notify_users(ous, deleted.get(User, []), mode='deprovision')
|
|
386 |
except Exception:
|
|
387 |
# last step, clear everything
|
|
388 |
logger.exception('error in provisionning thread')
|
|
389 |
finally:
|
|
390 |
self.threads.discard(threading.current_thread())
|
387 |
391 |
|
388 |
392 |
def wait(self):
|
389 |
393 |
for thread in list(self.threads):
|
390 |
|
-
|