15 |
15 |
from django.core import serializers
|
16 |
16 |
|
17 |
17 |
from django_rbac.utils import get_role_model, get_ou_model
|
18 |
18 |
from django.conf import settings
|
19 |
19 |
|
20 |
20 |
from tenant_schemas.utils import tenant_context
|
21 |
21 |
|
22 |
22 |
from hobo.agent.common.management.commands import hobo_deploy
|
|
23 |
from hobo.agent.authentic2.provisionning import Provisionning
|
23 |
24 |
|
24 |
25 |
User = get_user_model()
|
25 |
26 |
|
26 |
27 |
|
27 |
28 |
class Command(hobo_deploy.Command):
|
28 |
29 |
help = 'Deploy multitenant authentic service from hobo'
|
29 |
30 |
|
30 |
31 |
def __init__(self, *args, **kwargs):
|
... | ... | |
200 |
201 |
content_type=provider_type)
|
201 |
202 |
# load skeleton if service is new
|
202 |
203 |
if service.get('template_name'):
|
203 |
204 |
# if there are more of the same servie, we will create an
|
204 |
205 |
# ou
|
205 |
206 |
self.load_skeleton(provider, service['service-id'],
|
206 |
207 |
service['template_name'])
|
207 |
208 |
|
|
209 |
if service_created:
|
|
210 |
# mass provision roles
|
|
211 |
engine = Provisionning()
|
|
212 |
roles = get_role_model().objects.all()
|
|
213 |
ous = {provider.ou.id: provider.ou}
|
|
214 |
engine.notify_roles(ous, roles, full=True)
|
|
215 |
|
|
216 |
|
208 |
217 |
def load_skeleton(self, provider, service_id, template_name,
|
209 |
218 |
create_ou=False):
|
210 |
219 |
if not getattr(settings, 'HOBO_SKELETONS_DIR', None):
|
211 |
220 |
self.logger.debug('no skeleton: no HOBO_SKELETONS_DIR setting')
|
212 |
221 |
return
|
213 |
222 |
# ex.: /var/lib/authentic2-multitenant/skeletons/communes/wcs/
|
214 |
223 |
skeleton_dir = os.path.join(settings.HOBO_SKELETONS_DIR, template_name,
|
215 |
224 |
service_id)
|
216 |
|
-
|