cosmetic, remove unused vars.
[myplc.git] / db-config
index 38eeb7b..0ed69db 100755 (executable)
--- 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(level, role):
+    global g_role_names
+    if role not in g_role_names:
+        AddRole(level, role)
+        g_role_names.append(role)
+        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()
@@ -46,17 +57,19 @@ 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_dests, g_conf_files))
+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:
-        AddInitScript(initscript)
+        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']
-        UpdateConfFile(initscript_id, initscript)
+        UpdateInitScript(initscript_id, initscript)
         
 def SetConfFile(conf_file):
     global g_conf_files, g_dests
@@ -69,32 +82,48 @@ def SetConfFile(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']])