From a8282327b18d3fc0c8a0a2f0d88246cdf35a605a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Nussbaumer?= <rn@google.com> Date: Mon, 28 Nov 2011 15:45:27 +0100 Subject: [PATCH] gnt-group: Allow modify disk/hv state MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: RenΓ© Nussbaumer <rn@google.com> Reviewed-by: Michael Hanselmann <hansmi@google.com> --- lib/client/gnt_group.py | 17 +++++++++++++---- lib/cmdlib.py | 17 +++++++++++++++++ lib/objects.py | 2 ++ lib/opcodes.py | 2 ++ man/gnt-group.rst | 7 +++++-- 5 files changed, 39 insertions(+), 6 deletions(-) diff --git a/lib/client/gnt_group.py b/lib/client/gnt_group.py index 9054b75d3..055c28ea0 100644 --- a/lib/client/gnt_group.py +++ b/lib/client/gnt_group.py @@ -135,15 +135,24 @@ def SetGroupParams(opts, args): @return: the desired exit code """ - if (opts.ndparams is None and opts.alloc_policy is None - and not opts.diskparams): + if (opts.ndparams is None and opts.alloc_policy is None and + not (opts.hv_state or opts.disk_state)): ToStderr("Please give at least one of the parameters.") return 1 + if opts.disk_state: + disk_state = utils.FlatToDict(opts.disk_state) + else: + disk_state = {} + + hv_state = dict(opts.hv_state) + diskparams = dict(opts.diskparams) op = opcodes.OpGroupSetParams(group_name=args[0], ndparams=opts.ndparams, alloc_policy=opts.alloc_policy, + hv_state=hv_state, + disk_state=disk_state, diskparams=diskparams) result = SubmitOrSend(op, opts) @@ -237,8 +246,8 @@ commands = { "Lists all available fields for node groups"), "modify": ( SetGroupParams, ARGS_ONE_GROUP, - [DRY_RUN_OPT, SUBMIT_OPT, ALLOC_POLICY_OPT, NODE_PARAMS_OPT, - DISK_PARAMS_OPT], + [DRY_RUN_OPT, SUBMIT_OPT, ALLOC_POLICY_OPT, NODE_PARAMS_OPT, HV_STATE_OPT, + DISK_STATE_OPT, DISK_PARAMS_OPT], "<group_name>", "Alters the parameters of a node group"), "remove": ( RemoveGroup, ARGS_ONE_GROUP, [DRY_RUN_OPT], diff --git a/lib/cmdlib.py b/lib/cmdlib.py index aeaa2d38e..5ef962869 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -12955,6 +12955,8 @@ class LUGroupSetParams(LogicalUnit): self.op.ndparams, self.op.diskparams, self.op.alloc_policy, + self.op.hv_state, + self.op.disk_state ] if all_changes.count(None) == len(all_changes): @@ -12994,6 +12996,15 @@ class LUGroupSetParams(LogicalUnit): utils.ForceDictType(new_templ_params, constants.DISK_DT_TYPES) self.new_diskparams[templ] = new_templ_params + if self.op.hv_state: + self.new_hv_state = _MergeAndVerifyHvState(self.op.hv_state, + self.group.hv_state_static) + + if self.op.disk_state: + self.new_disk_state = \ + _MergeAndVerifyDiskState(self.op.disk_state, + self.group.disk_state_static) + def BuildHooksEnv(self): """Build hooks env. @@ -13027,6 +13038,12 @@ class LUGroupSetParams(LogicalUnit): if self.op.alloc_policy: self.group.alloc_policy = self.op.alloc_policy + if self.op.hv_state: + self.group.hv_state_static = self.new_hv_state + + if self.op.disk_state: + self.group.disk_state_static = self.new_disk_state + self.cfg.Update(self.group, feedback_fn) return result diff --git a/lib/objects.py b/lib/objects.py index 3554f293f..956c0ed74 100644 --- a/lib/objects.py +++ b/lib/objects.py @@ -1145,6 +1145,8 @@ class NodeGroup(TaggableObject): "ndparams", "diskparams", "serial_no", + "hv_state_static", + "disk_state_static", "alloc_policy", ] + _TIMESTAMPS + _UUID diff --git a/lib/opcodes.py b/lib/opcodes.py index ea7668792..f0963b3d2 100644 --- a/lib/opcodes.py +++ b/lib/opcodes.py @@ -1440,6 +1440,8 @@ class OpGroupSetParams(OpCode): _PNodeGroupAllocPolicy, _PGroupNodeParams, _PDiskParams, + _PHvState, + _PDiskState, ] OP_RESULT = _TSetParamsResult diff --git a/man/gnt-group.rst b/man/gnt-group.rst index 51a2fe5aa..80df26e7a 100644 --- a/man/gnt-group.rst +++ b/man/gnt-group.rst @@ -74,12 +74,15 @@ MODIFY | **modify** | [--node-parameters=*NDPARAMS*] | [--alloc-policy=*POLICY*] +| [--hypervisor-state *hvstate*] +| [--disk-state *diskstate*] | {*group*} Modifies some parameters from the node group. -The ``--node-parameters`` and ``--alloc-policy`` optiosn are documented -in the **add** command above. +The ``--node-parameters`` and ``--alloc-policy`` options are documented +in the **add** command above. ``--hypervisor-state`` as well as +``--disk-state`` are documented in detail in **ganeti**(7). REMOVE ~~~~~~ -- GitLab