revert accidental (too early) checkin
[plcapi.git] / PLC / Nodes.py
index b57a677..78bbfdc 100644 (file)
@@ -4,7 +4,7 @@
 # Mark Huang <mlhuang@cs.princeton.edu>
 # Copyright (C) 2006 The Trustees of Princeton University
 #
-# $Id: Nodes.py,v 1.23 2006/11/23 19:35:38 thierry Exp $
+# $Id: Nodes.py,v 1.28 2006/12/05 16:45:03 thierry Exp $
 #
 
 from types import StringTypes
@@ -43,7 +43,6 @@ class Node(Row):
         'node_id': Parameter(int, "Node identifier"),
         'hostname': Parameter(str, "Fully qualified hostname", max = 255),
         'site_id': Parameter(int, "Site at which this node is located"),
-        'peer_id': Parameter(int, "Peer at which this node is managed", nullok = True),
         'boot_state': Parameter(str, "Boot state", 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),
@@ -60,15 +59,19 @@ class Node(Row):
         'slice_ids': Parameter([int], "List of slices on this node"),
         'pcu_ids': Parameter([int], "List of PCUs that control this node"),
         'ports': Parameter([int], "List of PCU ports that this node is connected to"),
+        'peer_id': Parameter(int, "Peer at which this node is managed", nullok = True),
         }
 
     # for Cache
     class_key = 'hostname'
-    foreign_fields = ['boot_state','model','version','date_created','last_updated']
-    foreign_xrefs = { 
+    foreign_fields = ['boot_state','model','version']
+    # forget about these ones, they are read-only anyway
+    # handling them causes Cache to re-sync all over again 
+    # 'date_created','last_updated'
+    foreign_xrefs = [
        # in this case, we dont need the 'table' but Cache will look it up, so...
-       'Site' : { 'field' : 'site_id' , 'table' : 'unused' } ,
-       }
+        {'field' : 'site_id' , 'class' : 'Site' , 'table' : 'unused-on-direct-refs' } ,
+       ]
 
     def validate_hostname(self, hostname):
         if not valid_hostname(hostname):
@@ -88,6 +91,12 @@ class Node(Row):
 
         return boot_state
 
+    # timestamps
+    def validate_date_created (self, timestamp):
+       return self.validate_timestamp (timestamp)
+    def validate_last_updated (self, timestamp):
+       return self.validate_timestamp (timestamp)
+
     def delete(self, commit = True):
         """
         Delete existing node.
@@ -111,7 +120,7 @@ class Nodes(Table):
     database.
     """
 
-    def __init__(self, api, node_filter = None, columns = None, scope = 'all'):
+    def __init__(self, api, node_filter = None, columns = None):
         Table.__init__(self, api, Node, columns)
 
         sql = "SELECT %s FROM view_nodes WHERE deleted IS False" % \
@@ -128,10 +137,5 @@ class Nodes(Table):
                 node_filter = Filter(Node.fields, node_filter)
                 sql += " AND (%s)" % node_filter.sql(api, "AND")
 
-        if scope == 'local':
-            sql += " AND (peer_id is NULL) "
-        elif scope == 'foreign':
-            sql += " AND (peer_id is NOT NULL) "
-
         self.selectall(sql)