git://git.onelab.eu
/
plcapi.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
dbd7775
)
Rationalize: can now update aggregate values (nodenetworks, nodegroups, conf_files...
author
Tony Mack
<tmack@cs.princeton.edu>
Tue, 6 Nov 2007 03:52:01 +0000
(
03:52
+0000)
committer
Tony Mack
<tmack@cs.princeton.edu>
Tue, 6 Nov 2007 03:52:01 +0000
(
03:52
+0000)
PLC/Methods/UpdateNode.py
patch
|
blob
|
history
diff --git
a/PLC/Methods/UpdateNode.py
b/PLC/Methods/UpdateNode.py
index
d8128e0
..
d5cdb0d
100644
(file)
--- a/
PLC/Methods/UpdateNode.py
+++ b/
PLC/Methods/UpdateNode.py
@@
-4,9
+4,11
@@
from PLC.Parameter import Parameter, Mixed
from PLC.Nodes import Node, Nodes
from PLC.Auth import Auth
from PLC.Nodes import Node, Nodes
from PLC.Auth import Auth
+related_fields = Node.related_fields.keys()
can_update = lambda (field, value): field in \
['hostname', 'boot_state', 'model', 'version',
can_update = lambda (field, value): field in \
['hostname', 'boot_state', 'model', 'version',
- 'key', 'session', 'boot_nonce']
+ 'key', 'session', 'boot_nonce'] + \
+ related_fields
class UpdateNode(Method):
"""
class UpdateNode(Method):
"""
@@
-21,7
+23,7
@@
class UpdateNode(Method):
roles = ['admin', 'pi', 'tech']
roles = ['admin', 'pi', 'tech']
- node_fields = dict(filter(can_update, Node.fields.items()))
+ node_fields = dict(filter(can_update, Node.fields.items()
+ Node.related_fields.items()
))
accepts = [
Auth(),
accepts = [
Auth(),
@@
-59,7
+61,13
@@
class UpdateNode(Method):
if node['site_id'] not in self.caller['site_ids']:
raise PLCPermissionDenied, "Not allowed to delete nodes from specified site"
if node['site_id'] not in self.caller['site_ids']:
raise PLCPermissionDenied, "Not allowed to delete nodes from specified site"
- node.update(node_fields)
+ # Make requested associations
+ for field in related_fields:
+ if field in node_fields:
+ node.associate(auth, field, node_fields[field])
+ node_fields.pop(field)
+
+ node.update(node_fields)
node.update_last_updated(False)
node.sync()
node.update_last_updated(False)
node.sync()