# # Thierry Parmentelat - INRIA # from PLC.Faults import * from PLC.Parameter import Parameter from PLC.Filter import Filter from PLC.Storage.AlchemyObject import AlchemyObj from PLC.TagTypes import TagType, TagTypes from PLC.Interfaces import Interface class InterfaceTag(AlchemyObj): """ Representation of a row in the interface_tag. To use, instantiate with a dict of values. """ table_name = 'interface_tags' fields = { 'interface_tag_id': Parameter(int, "Interface setting identifier", primary_key=True), 'interface_id': Interface.fields['interface_id'], 'ip': Interface.fields['ip'], 'tag_type_id': TagType.fields['tag_type_id'], 'tagname': TagType.fields['tagname'], 'description': TagType.fields['description'], 'category': TagType.fields['category'], 'value': Parameter(str, "Interface setting value"), ### relations } def sync(self, commit = True, validate=True): AlchemyObj.sync(self, commit, validate) if 'interface_tag_id' not in self: # Before a new slice is added, delete expired slices #expired = Slices(self.api, expires = -int(time.time())) #for slice in expired: # slice.delete(commit) AlchemyObj.insert(self, dict(self)) else: AlchemyObj.update(self, {'interface_tag_id': self['interface_tag_id']}, dict(self)) def delete(self, commit=True): assert 'interface_tag_id' in self AlchemyObj.delete(self, dict(self)) class InterfaceTags(list): """ Representation of row(s) from the interface_tag table in the database. """ def __init__(self, api, interface_tag_filter = None, columns = None): if not interface_tag_filter: interface_tags = InterfaceTag().select() if isinstance(interface_tag_filter, (list, tuple, set, int, long)): interface_tags = InterfaceTag().select(filter={'interface_tag_id': interface_tag_filter}) elif isinstance(interface_tag_filter, dict): interface_tags = InterfaceTag().select(filter=interface_tag_filter}) else: raise PLCInvalidArgument, "Wrong interface setting filter %r"%interface_tag_filter for interface_tag in interface_tags: self.append(interface_tag)