X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FNodes.py;h=7930ab103f45eba4bb8d517ed99cf7258de1b207;hb=d1aa90df9b9dd21d774b7b92ba966d06bb3d9f85;hp=35b1ab4805761c7118c79e606b3308fa8f1dbd47;hpb=b98e4aab1ddf670ad1b100e1543f053391231fd6;p=plcapi.git diff --git a/PLC/Nodes.py b/PLC/Nodes.py index 35b1ab4..7930ab1 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.6 2006/10/02 15:21:03 mlhuang Exp $ +# $Id: Nodes.py,v 1.7 2006/10/02 16:04:42 mlhuang Exp $ # from types import StringTypes @@ -33,16 +33,16 @@ class Node(Row): '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), 'ssh_rsa_key': Parameter(str, "Last known SSH host key", max = 1024), - 'date_created': Parameter(str, "Date and time when node entry was created"), - 'last_updated': Parameter(str, "Date and time when node entry was created"), + 'date_created': Parameter(str, "Date and time when node entry was created", ro = True), + 'last_updated': Parameter(str, "Date and time when node entry was created", ro = True), 'key': Parameter(str, "(Admin only) Node key", max = 256), 'session': Parameter(str, "(Admin only) Node session value", max = 256), - 'nodenetwork_ids': Parameter([int], "List of network interfaces that this node has"), - 'nodegroup_ids': Parameter([int], "List of node groups that this node is in"), - # 'conf_file_ids': Parameter([int], "List of configuration files specific to this node"), - # 'root_person_ids': Parameter([int], "(Admin only) List of people who have root access to this node"), - 'slice_ids': Parameter([int], "List of slices on this node"), - # 'pcu_ids': Parameter([int], "List of PCUs that control this node"), + 'nodenetwork_ids': Parameter([int], "List of network interfaces that this node has", ro = True), + 'nodegroup_ids': Parameter([int], "List of node groups that this node is in", ro = True), + # 'conf_file_ids': Parameter([int], "List of configuration files specific to this node", ro = True), + # 'root_person_ids': Parameter([int], "(Admin only) List of people who have root access to this node", ro = True), + 'slice_ids': Parameter([int], "List of slices on this node", ro = True), + # 'pcu_ids': Parameter([int], "List of PCUs that control this node", ro = True), } def __init__(self, api, fields): @@ -99,11 +99,10 @@ class Node(Row): # Filter out fields that cannot be set or updated directly nodes_fields = self.api.db.fields('nodes') - fields = dict(filter(lambda (key, value): key in nodes_fields, + fields = dict(filter(lambda (key, value): \ + key in nodes_fields and \ + (key not in self.fields or not self.fields[key].ro), self.items())) - for ro_field in 'date_created', 'last_updated': - if ro_field in fields: - del fields[ro_field] # Parameterize for safety keys = fields.keys()