From: Thierry Parmentelat Date: Thu, 3 Feb 2011 15:04:18 +0000 (+0100) Subject: Merge branch 'master' of ssh://git.onelab.eu/git/plcapi X-Git-Tag: plcapi-5.0-28~6 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=bd7b9f706133094d52af73dcc6f43c920915ed02;hp=918c135a5395d9bd3b74543f7e2103d6dc65ed0d;p=plcapi.git Merge branch 'master' of ssh://git.onelab.eu/git/plcapi --- diff --git a/db-config.d/000-functions b/db-config.d/000-functions index d648263..28468b1 100644 --- a/db-config.d/000-functions +++ b/db-config.d/000-functions @@ -25,17 +25,37 @@ g_known_tag_types = [tag_type['tagname'] for tag_type in GetTagTypes()] g_known_tag_types.sort() def SetTagType(tag_type): + tagname=tag_type['tagname'] global g_known_tag_types + # handle 'roles' field differently + if 'roles' in tag_type: + roles=tag_type['roles'] + del tag_type['roles'] + else: + roles=['admin'] + # just in case + if 'min_role_id' in tag_type: + print "WARNING: ignoring deprecated field min_role_id for tagtype %s"%tagname + del tag_type['min_role_id'] # Create/update default slice tag types - if tag_type['tagname'] not in g_known_tag_types: + if tagname not in g_known_tag_types: AddTagType(tag_type) - g_known_tag_types.append(tag_type['tagname']) + g_known_tag_types.append(tagname) g_known_tag_types.sort() else: - UpdateTagType(tag_type['tagname'], tag_type) - if 'roles' in tag_type: - for role in tag_type['roles']: - AddRoleToTagType(role,tag_type['tagname']) + UpdateTagType(tagname, tag_type) + # enforce provided roles if present + try: + old_roles=GetTagTypes(tagname)[0]['roles'] + for minus_role in set(old_roles).difference(set(roles)): + DeleteRoleFromTagType(minus_role,tagname) + for plus_role in set(roles).difference(set(old_roles)): + AddRoleToType(plus_role,tagname) + except: + # something went wrong for that tagname, + # but don't want to break the whole startup sequence + print "Could not enforce roles on tagtype %s"%tagname + pass # Get list of existing (enabled, global) files g_conf_files = GetConfFiles()