X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FNodeNetworks.py;h=8733f8d352b42f7fa34f1a89ef0d4edfd3e1be9b;hb=7721c8aedf5db2d2fe135e92a61a2dfb20be7960;hp=1d4518bc490bf210ad07bf854a5db70e92155e0b;hpb=e1a827010ec8e6e5c1e1272e22b3269108bcc9c8;p=plcapi.git diff --git a/PLC/NodeNetworks.py b/PLC/NodeNetworks.py index 1d4518b..8733f8d 100644 --- a/PLC/NodeNetworks.py +++ b/PLC/NodeNetworks.py @@ -4,7 +4,7 @@ # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University # -# $Id: NodeNetworks.py,v 1.13 2006/11/08 22:59:34 mlhuang Exp $ +# $Id: NodeNetworks.py,v 1.15 2006/11/09 19:43:55 mlhuang Exp $ # from types import StringTypes @@ -67,18 +67,20 @@ class NodeNetwork(Row): } def validate_method(self, method): - if method not in NetworkMethods(self.api): - raise PLCInvalidArgument, "Invalid addressing method" + network_methods = [row['method'] for row in NetworkMethods(self.api)] + if method not in network_methods: + raise PLCInvalidArgument, "Invalid addressing method %s"%method return method def validate_type(self, type): - if type not in NetworkTypes(self.api): - raise PLCInvalidArgument, "Invalid address type" + network_types = [row['type'] for row in NetworkTypes(self.api)] + if type not in network_types: + raise PLCInvalidArgument, "Invalid address type %s"%type return type def validate_ip(self, ip): if ip and not valid_ip(ip): - raise PLCInvalidArgument, "Invalid IP address " + ip + raise PLCInvalidArgument, "Invalid IP address %s"%ip return ip def validate_mac(self, mac): @@ -96,7 +98,7 @@ class NodeNetwork(Row): bytes[i] = "%02x" % byte mac = ":".join(bytes) except: - raise PLCInvalidArgument, "Invalid MAC address" + raise PLCInvalidArgument, "Invalid MAC address %s"%mac return mac @@ -113,14 +115,14 @@ class NodeNetwork(Row): return hostname if not PLC.Nodes.valid_hostname(hostname): - raise PLCInvalidArgument, "Invalid hostname" + raise PLCInvalidArgument, "Invalid hostname %s"%hostname return hostname def validate_node_id(self, node_id): nodes = PLC.Nodes.Nodes(self.api, [node_id]) if not nodes: - raise PLCInvalidArgument, "No such node" + raise PLCInvalidArgument, "No such node %d"%node_id return node_id @@ -130,15 +132,16 @@ class NodeNetwork(Row): """ if is_primary: - nodes = PLC.Nodes.Nodes(self.api, [self['node_id']]).values() + nodes = PLC.Nodes.Nodes(self.api, [self['node_id']]) if not nodes: - raise PLCInvalidArgument, "No such node" + raise PLCInvalidArgument, "No such node %d"%node_id node = nodes[0] if node['nodenetwork_ids']: conflicts = NodeNetworks(self.api, node['nodenetwork_ids']) - for nodenetwork_id, nodenetwork in conflicts.iteritems(): - if ('nodenetwork_id' not in self or self['nodenetwork_id'] != nodenetwork_id) and \ + for nodenetwork in conflicts: + if ('nodenetwork_id' not in self or \ + self['nodenetwork_id'] != nodenetwork['nodenetwork_id']) and \ nodenetwork['is_primary']: raise PLCInvalidArgument, "Can only set one primary interface per node" @@ -192,11 +195,11 @@ class NodeNetworks(Table): database. """ - def __init__(self, api, nodenetwork_filter = None): - Table.__init__(self, api, NodeNetwork) + def __init__(self, api, nodenetwork_filter = None, columns = None): + Table.__init__(self, api, NodeNetwork, columns) sql = "SELECT %s FROM nodenetworks WHERE True" % \ - ", ".join(NodeNetwork.fields) + ", ".join(self.columns) if nodenetwork_filter is not None: if isinstance(nodenetwork_filter, (list, tuple, set)):