# # Functions for interacting with the network_methods table in the database # # from types import StringTypes from PLC.Faults import * from PLC.Parameter import Parameter from PLC.Storage.AlchemyObject import AlchemyObj class NetworkMethod(AlchemyObj): """ Representation of a row in the network_methods table. To use, instantiate with a dict of values. """ tablename = 'network_methods' join_tables = ['interfaces'] fields = { 'method': Parameter(str, "Network method", max = 20, primary_key=True), } def validate_method(self, name): # Make sure name is not blank if not len(name): raise PLCInvalidArgument, "Network method must be specified" # Make sure network method does not alredy exist conflicts = NetworkMethods(self.api, name) if conflicts: raise PLCInvalidArgument, "Network method name already in use" return name def sync(self, commit = True, validate=True): AlchemyObj.sync(self, commit, validate) AlchemyObj.insert(self, dict(self)) def delete(self, commit=True): assert 'method' in self AlchemyObj.delete(self, dict(self)) class NetworkMethods(list): """ Representation of the network_methods table in the database. """ def __init__(self, api, methods = None): if not methods: network_methods = NetworkMethod().select() elif isinstance(methods, StringTypes): network_methods = NetworkMethod().select(filter={'method': methods}) else: raise PLCInvalidArgument, "Wrong network method filter %r"%methods self.extend(network_methods)