X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=PLC%2FNetworkMethods.py;h=a54934d41d6549ba35ba77dd8e46155d5291fb45;hb=19d4a01ccf66af9e00914351b3eacd5fc880f988;hp=e1414295714af3ad56f950cd67b3589690d28716;hpb=072b18e8d9f59ed14086c7afae79f88368296b5b;p=plcapi.git diff --git a/PLC/NetworkMethods.py b/PLC/NetworkMethods.py index e141429..a54934d 100644 --- a/PLC/NetworkMethods.py +++ b/PLC/NetworkMethods.py @@ -4,8 +4,6 @@ # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University # -# $Id: NetworkMethods.py,v 1.2 2006/10/06 18:19:41 mlhuang Exp $ -# from PLC.Faults import * from PLC.Parameter import Parameter @@ -19,55 +17,35 @@ class NetworkMethod(Row): table_name = 'network_methods' primary_key = 'method' + join_tables = ['interfaces'] fields = { 'method': Parameter(str, "Network method", max = 20), } - def __init__(self, api, fields = {}): - Row.__init__(self, fields) - self.api = api - def validate_method(self, name): - # Remove leading and trailing spaces - name = name.strip() - - # Make sure name is not blank after we removed the spaces - if not 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]) + + # 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 + return name - def delete(self, commit = True): - assert 'method' in self - - # Clean up miscellaneous join tables - for table in ['nodenetworks', 'network_methods']: - self.api.db.do("DELETE FROM " + table + \ - " WHERE method = %(method)s", - self) - - if commit: - self.api.db.commit() - class NetworkMethods(Table): """ Representation of the network_methods table in the database. """ - def __init__(self, api, names = None): + def __init__(self, api, methods = None): + Table.__init__(self, api, NetworkMethod) + sql = "SELECT %s FROM network_methods" % \ ", ".join(NetworkMethod.fields) - - if names: - # Separate the list into integers and strings - sql += " WHERE method IN (%s)" % ", ".join(api.db.quote(names)) - rows = api.db.selectall(sql) + if methods: + sql += " WHERE method IN (%s)" % ", ".join( [ api.db.quote (m) for m in methods ] ) - for row in rows: - self[row['method']] = NetworkMethod(api, row) + self.selectall(sql)