X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=db-config;h=a86ba611cb12b7ef26849a80d017f798bb17d758;hb=2dcb50cfb013cd48e2e2db194a0ef79b521770f2;hp=6d209120326667872296e68df064476f67e59db6;hpb=86c2dd527e07fd9e67f8072dd786580024962a0c;p=myplc.git diff --git a/db-config b/db-config index 6d20912..a86ba61 100755 --- a/db-config +++ b/db-config @@ -11,7 +11,7 @@ # $HeadURL$ from plc_config import PLCConfiguration -import sys +import sys, os import resource g_url = "" @@ -20,6 +20,17 @@ def SetMyPLCURL(url): global g_url g_url = url +# Get all currently registered roles +g_role_names = [ role['name'] for role in GetRoles()] +g_role_names.sort() + +def SetRole(role): + global g_role_names + if role['name'] not in g_role_names: + AddRole(role) + g_role_names.append(role['name']) + g_role_names.sort() + # Get list of existing tag types g_known_tag_types = [tag_type['tagname'] for tag_type in GetTagTypes()] g_known_tag_types.sort() @@ -43,47 +54,81 @@ g_conf_files = filter(lambda conf_file: conf_file['enabled'] and \ g_dests = [conf_file['dest'] for conf_file in g_conf_files] g_conf_files = dict(zip(g_dests, g_conf_files)) +# Get list of existing initscripts +g_oldinitscripts = GetInitScripts() +g_oldinitscript_names = [script['name'] for script in g_oldinitscripts] +g_oldinitscripts = dict(zip(g_oldinitscript_names, g_oldinitscripts)) + +def SetInitScript(initscript): + global g_oldinitscripts, g_oldinitscript_names + if initscript['name'] not in g_oldinitscript_names: + initscript_id = AddInitScript(initscript) + g_oldinitscript_names.append(initscript['name']) + initscript['initscript_id']=initscript_id + g_oldinitscripts[initscript['name']]=initscript + else: + orig_initscript = g_oldinitscripts[initscript['name']] + initscript_id = orig_initscript['initscript_id'] + UpdateInitScript(initscript_id, initscript) + def SetConfFile(conf_file): global g_conf_files, g_dests if conf_file['dest'] not in g_dests: AddConfFile(conf_file) else: orig_conf_file = g_conf_files[conf_file['dest']] - UpdateConfFile(orig_conf_file['conf_file_id'], conf_file) + conf_file_id = orig_conf_file['conf_file_id'] + UpdateConfFile(conf_file_id, conf_file) def SetSlice(slice, tags): # Create or Update slice - slices = GetSlices([slice['name']]) + slice_name = slice['name'] + slices = GetSlices([slice_name]) if len(slices)==1: slice_id = slices[0]['slice_id'] + if slice.has_key('name'): + del slice['name'] UpdateSlice(slice_id, slice) + slice['name']=slice_name else: - AddSlice(slice) + expires = None + if slice.has_key('expires'): + expires = slice['expires'] + del slice['expires'] + slice_id = AddSlice(slice) + if expires <> None: + UpdateSlice(slice_id, {'expires':expires}) # Get slice structure with all fields - slice = GetSlices([slice['name']])[0] + slice = GetSlices([slice_name])[0] - # Create/update all tags - slice_tags = {} + # Create/delete all tags + # NOTE: update is not needed, since unspecified tags are deleted, + # and new tags are added + slice_tags = [] if slice['slice_tag_ids']: # Delete unknown attributes for slice_tag in GetSliceTags(slice['slice_tag_ids']): + # ignore sliver tags, as those are custom/run-time values + if slice_tag['node_id'] <> None: continue if (slice_tag['tagname'], slice_tag['value']) not in tags: DeleteSliceTag(slice_tag['slice_tag_id']) else: - slice_tags[slice_tag['tagname']]=slice_tag['value'] + slice_tags.append((slice_tag['tagname'],slice_tag['value'])) - # only update slice tags that have changed + # only add slice tags that are new for (name, value) in tags: - if name not in slice_tags: - AddSliceTag(slice['name'], name, value) - elif value <> slice_tags[name]: - UpdateSliceTag(slice['name'],value) + if (name,value) not in slice_tags: + AddSliceTag(slice_name, name, value) + else: + # NOTE: this confirms that the user-specified tag is + # returned by GetSliceTags + pass def SetMessage(message): messages = GetMessages([message['message_id']]) if len(messages)==0: - AddMessage(template) + AddMessage(message) else: UpdateMessage(message['message_id'],message)