From: Tony Mack Date: Tue, 6 Nov 2007 21:53:58 +0000 (+0000) Subject: Rationalize: can now update aggregate values (conf_files, nodes) X-Git-Tag: PLCAPI-4.2-0~44 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=6d724879a5ea883bdcfc9f6dcdf1a51edfc5b31b;p=plcapi.git Rationalize: can now update aggregate values (conf_files, nodes) --- diff --git a/PLC/Methods/UpdateNodeGroup.py b/PLC/Methods/UpdateNodeGroup.py index 78042be..c84c7f1 100644 --- a/PLC/Methods/UpdateNodeGroup.py +++ b/PLC/Methods/UpdateNodeGroup.py @@ -4,8 +4,10 @@ from PLC.Parameter import Parameter, Mixed from PLC.NodeGroups import NodeGroup, NodeGroups from PLC.Auth import Auth +related_fields = NodeGroup.related_fields.keys() can_update = lambda (field, value): field in \ - ['name', 'description'] + ['name', 'description'] + \ + related_fields class UpdateNodeGroup(Method): """ @@ -16,7 +18,7 @@ class UpdateNodeGroup(Method): roles = ['admin'] - nodegroup_fields = dict(filter(can_update, NodeGroup.fields.items())) + nodegroup_fields = dict(filter(can_update, NodeGroup.fields.items() + NodeGroup.related_fields.items())) accepts = [ Auth(), @@ -35,6 +37,12 @@ class UpdateNodeGroup(Method): if not nodegroups: raise PLCInvalidArgument, "No such nodegroup" nodegroup = nodegroups[0] + + # Make requested associations + for field in related_fields: + if field in nodegroup_fields: + nodegroup.associate(auth, field, nodegroup_fields[field]) + nodegroup_fields.pop(field) nodegroup.update(nodegroup_fields) nodegroup.sync()