trying out the hint from github issue
[plcapi.git] / PLC / SliceTags.py
index bde5df5..e5070fd 100644 (file)
@@ -1,8 +1,14 @@
-# $Id#
+#
+# Thierry Parmentelat - INRIA
+#
 from PLC.Faults import *
 from PLC.Parameter import Parameter
 from PLC.Filter import Filter
 from PLC.Table import Row, Table
+# seems to cause import loops
+#from PLC.Slices import Slice, Slices
+from PLC.Nodes import Node, Nodes
+from PLC.NodeGroups import NodeGroup, NodeGroups
 from PLC.TagTypes import TagType, TagTypes
 
 class SliceTag(Row):
@@ -14,15 +20,15 @@ class SliceTag(Row):
     table_name = 'slice_tag'
     primary_key = 'slice_tag_id'
     fields = {
-        'slice_tag_id': Parameter(int, "Slice attribute identifier"),
+        'slice_tag_id': Parameter(int, "Slice tag identifier"),
         'slice_id': Parameter(int, "Slice identifier"),
-        'node_id': Parameter(int, "Node identifier, if a sliver attribute"),
-       'nodegroup_id': Parameter(int, "Nodegroup identifier, if a sliver attribute"),
+        'name': Parameter(str, "Slice name"),
+        'node_id': Node.fields['node_id'],
+        'nodegroup_id': NodeGroup.fields['nodegroup_id'],
         'tag_type_id': TagType.fields['tag_type_id'],
         'tagname': TagType.fields['tagname'],
         'description': TagType.fields['description'],
         'category': TagType.fields['category'],
-        'min_role_id': TagType.fields['min_role_id'],
         'value': Parameter(str, "Slice attribute value"),
         }
 
@@ -39,10 +45,12 @@ class SliceTags(Table):
               ", ".join(self.columns)
 
         if slice_tag_filter is not None:
-            if isinstance(slice_tag_filter, (list, tuple, set)):
+            if isinstance(slice_tag_filter, (list, tuple, set, int, long)):
                 slice_tag_filter = Filter(SliceTag.fields, {'slice_tag_id': slice_tag_filter})
             elif isinstance(slice_tag_filter, dict):
                 slice_tag_filter = Filter(SliceTag.fields, slice_tag_filter)
+            else:
+                raise PLCInvalidArgument, "Wrong slice tag filter %r"%slice_tag_filter
             sql += " AND (%s) %s" % slice_tag_filter.sql(api)
 
         self.selectall(sql)