X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FNodes.py;h=46fb99a010297e13e12334343b7a569a240d457e;hb=c6009814e9fd3b53be36ac5f8c32058ba7465f13;hp=99b3ef91c56eaa98dc72ba7f536896496b073218;hpb=25ca2c2fee216af894640248b6d83939f31ca327;p=plcapi.git diff --git a/PLC/Nodes.py b/PLC/Nodes.py index 99b3ef9..46fb99a 100644 --- a/PLC/Nodes.py +++ b/PLC/Nodes.py @@ -5,6 +5,7 @@ # Copyright (C) 2006 The Trustees of Princeton University # # $Id$ +# $URL$ # from types import StringTypes @@ -48,6 +49,7 @@ class Node(Row): 'hostname': Parameter(str, "Fully qualified hostname", max = 255), 'site_id': Parameter(int, "Site at which this node is located"), 'boot_state': Parameter(str, "Boot state", max = 20), + 'run_level': Parameter(str, "Run level", max = 20), 'model': Parameter(str, "Make and model of the actual machine", max = 255, nullok = True), 'boot_nonce': Parameter(str, "(Admin only) Random value generated by the node at last boot", max = 128), 'version': Parameter(str, "Apparent Boot CD version", max = 64), @@ -55,6 +57,7 @@ class Node(Row): 'date_created': Parameter(int, "Date and time when node entry was created", ro = True), 'last_updated': Parameter(int, "Date and time when node entry was created", ro = True), 'last_contact': Parameter(int, "Date and time when node last contacted plc", ro = True), + 'verified': Parameter(bool, "Whether the node configuration is verified correct", ro=False), 'key': Parameter(str, "(Admin only) Node key", max = 256), 'session': Parameter(str, "(Admin only) Node session value", max = 256, ro = True), 'interface_ids': Parameter([int], "List of network interfaces that this node has"), @@ -245,11 +248,15 @@ class Node(Row): """ assert 'node_id' in self - assert 'interface_ids' in self # we need to clean up InterfaceTags, so handling interfaces as part of join_tables does not work - for interface in Interfaces(self.api,self['interface_ids']): - interface.delete() + # federated nodes don't have interfaces though so for smooth transition from 4.2 to 4.3 + if 'peer_id' in self and self['peer_id']: + pass + else: + assert 'interface_ids' in self + for interface in Interfaces(self.api,self['interface_ids']): + interface.delete() # Clean up miscellaneous join tables for table in self.join_tables: @@ -274,7 +281,8 @@ class Nodes(Table): view = "view_nodes" # as many left joins as requested tags for tagname in self.tag_columns: - view= "%s left join %s using (%s)"%(view,Node.tagvalue_view_name(tagname),Node.primary_key) + view= "%s left join %s using (%s)"%(view,Node.tagvalue_view_name(tagname), + Node.primary_key) sql = "SELECT %s FROM %s WHERE deleted IS False" % \ (", ".join(self.columns.keys()+self.tag_columns.keys()),view)