From 21f3cc53e97bac590d1b315020aaa06d9c67cbdb Mon Sep 17 00:00:00 2001 From: Mark Huang Date: Tue, 19 Sep 2006 19:28:39 +0000 Subject: [PATCH] - add functions add_node_network() and set_primary_node_network(). Node networks cannot be associated with multiple nodes, so there is no need for remove_node_network() at this time. --- PLC/Nodes.py | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/PLC/Nodes.py b/PLC/Nodes.py index 05bb73a..2fbda71 100644 --- a/PLC/Nodes.py +++ b/PLC/Nodes.py @@ -4,7 +4,7 @@ # Mark Huang # Copyright (C) 2006 The Trustees of Princeton University # -# $Id: Nodes.py,v 1.1 2006/09/06 15:36:07 mlhuang Exp $ +# $Id: Nodes.py,v 1.2 2006/09/08 19:44:51 mlhuang Exp $ # from types import StringTypes @@ -101,6 +101,54 @@ class Node(Row): return boot_state + def add_node_network(self, nodenetwork, commit = True): + """ + Add node network to this node. + """ + + assert 'node_id' in self + assert isinstance(nodenetwork, NodeNetwork) + assert 'nodenetwork_id' in nodenetwork + + nodenetwork_id = nodenetwork['nodenetwork_id'] + nodenetwork['node_id'] = self['node_id'] + + self.api.db.do("INSERT INTO node_nodenetworks (node_id, nodenetwork_id, is_primary)" \ + " VALUES(%(node_id)d, %(nodenetwork_id)d, False)", + nodenetwork) + + if commit: + self.api.db.commit() + + if 'nodenetwork_ids' in self and nodenetwork_id not in self['nodenetwork_ids']: + self['nodenetwork_ids'].append(nodenetwork_id) + + def set_primary_node_network(self, nodenetwork, commit = True): + """ + Remove node network from this node. + """ + + assert 'node_id' in self + assert isinstance(nodenetwork, NodeNetwork) + assert 'nodenetwork_id' in nodenetwork + + node_id = self['node_id'] + nodenetwork_id = nodenetwork['nodenetwork_id'] + + self.api.db.do("UPDATE node_nodenetworks SET is_primary = False" \ + " WHERE node_id = %(node_id)d", + locals()) + + self.api.db.do("UPDATE node_nodenetworks SET is_primary = True" \ + " WHERE node_id = %(node_id)d" \ + " AND nodenetwork_id = %(nodenetwork_id)d", + locals()) + + if commit: + self.api.db.commit() + + nodenetwork['is_primary'] = True + def flush(self, commit = True): """ Flush changes back to the database. -- 2.43.0