# # Thierry Parmentelat - INRIA # from PLC.Faults import * from PLC.Parameter import Parameter from PLC.Storage.AlchemyObject import AlchemyObj from PLC.TagTypes import TagType, TagTypes class NodeTag(AlchemyObj): """ Representation of a row in the node_tag. To use, instantiate with a dict of values. """ tablename = 'node_tags' fields = { 'node_tag_id': Parameter(int, "Node tag identifier", primary_key=True), 'node_id': Parameter(int, "Node identifier"), 'hostname' : Parameter(str, "Node hostname"), 'tag_type_id': TagType.fields['tag_type_id'], 'value': Parameter(str, "Node tag value"), 'tagname': TagType.fields['tagname'], 'description': TagType.fields['description'], 'category': TagType.fields['category'], } def sync(self, commit=True, validate=True): AlchemyObj.sync(self, commit=commit, validate=validate) if 'node_tag_id' not in self: AlchemyObj.insert(self, dict(self)) else: AlchemyObj.update(self, {'node_tag_id': self['node_tag_id']}, dict(self)) def delete(self, commit=True): assert 'node_tag_id' in self AlchemyObj.delete(self, dict(self)) class NodeTags(list): """ Representation of row(s) from the node_tag table in the database. """ def __init__(self, api, node_tag_filter = None, columns = None): if not node_tag_filter: node_tags = NodeTag().select() elif isinstance(node_tag_filter, (list, tuple, set, int, long)): node_tags = NodeTag().select(filter={'node_tag_id': node_tag_filter}) elif isinstance(node_tag_filter, dict): node_tags = NodeTag().select(filter=node_tag_filter) else: raise PLCInvalidArgument, "Wrong node tag filter %r"%node_tag_filter self.extend(node_tags)