# # Thierry Parmentelat - INRIA # from PLC.Faults import * from PLC.Parameter import Parameter from PLC.Interfaces import Interface, Interfaces from PLC.TagTypes import TagType, TagTypes from PLC.Storage.AlchemyObject import AlchemyObj class Ilink(AlchemyObj): """ Representation of a row in the ilink table. To use, instantiate with a dict of values. """ tablename = 'ilink' fields = { 'ilink_id': Parameter(int, "ilink identifier", primary_key=True), 'tag_type_id': TagType.fields['tag_type_id'], 'src_interface_id': Parameter(int, "source interface identifier"), 'dst_interface_id': Parameter(int, "destination interface identifier"), 'value': Parameter( str, "optional ilink value"), } def sync(self, insert=False, validate=True): AlchemyObj.sync(self, commit, validate) if 'ilink_id' in self: AlchemyObj.insert(self, dict(self)) else: AlchemyObj.update(self, {'ilink_id': self['ilink_id']}, dict(self)) def delete(self, commit=True): assert 'ilink_id' in self AlchemyObj.delete(self, dict(self)) class Ilinks(list): """ Representation of row(s) from the ilink table in the database. """ def __init__(self, api, ilink_filter = None, columns = None): if not ilink_filter: ilinks = Ilink().select() elif isinstance(ilink_filter, (list, tuple, set, int, long)): ilinks = Ilink().select(filter={'ilink_id': ilink_filter}) elif isinstance(ilink_filter, dict): ilink_filter = Ilink().select(filter=ilink_filter) else: raise PLCInvalidArgument, "Wrong ilink filter %r"%ilink_filter for ilink in ilinks: self.append(ilink)