2 # Thierry Parmentelat - INRIA
4 from PLC.Faults import *
5 from PLC.Parameter import Parameter
6 from PLC.Storage.AlchemyObject import AlchemyObj
7 from PLC.TagTypes import TagType, TagTypes
9 class NodeTag(AlchemyObj):
11 Representation of a row in the node_tag.
12 To use, instantiate with a dict of values.
15 tablename = 'node_tags'
17 'node_tag_id': Parameter(int, "Node tag identifier", primary_key=True),
18 'node_id': Parameter(int, "Node identifier"),
19 'hostname' : Parameter(str, "Node hostname"),
20 'tag_type_id': TagType.fields['tag_type_id'],
21 'value': Parameter(str, "Node tag value"),
22 'tagname': TagType.fields['tagname'],
23 'description': TagType.fields['description'],
24 'category': TagType.fields['category'],
27 def sync(self, commit=True, validate=True):
28 AlchemyObj.sync(self, commit=commit, validate=validate)
29 if 'node_tag_id' not in self:
30 AlchemyObj.insert(self, dict(self))
32 AlchemyObj.update(self, {'node_tag_id': self['node_tag_id']}, dict(self))
34 def delete(self, commit=True):
35 assert 'node_tag_id' in self
36 AlchemyObj.delete(self, dict(self))
40 Representation of row(s) from the node_tag table in the
44 def __init__(self, api, node_tag_filter = None, columns = None):
46 if not node_tag_filter:
47 node_tags = NodeTag().select()
48 elif isinstance(node_tag_filter, (list, tuple, set, int, long)):
49 node_tags = NodeTag().select(filter={'node_tag_id': node_tag_filter})
50 elif isinstance(node_tag_filter, dict):
51 node_tags = NodeTag().select(filter=node_tag_filter)
53 raise PLCInvalidArgument, "Wrong node tag filter %r"%node_tag_filter
55 self.extend(node_tags)