Revision fb644e77
b/lib/client/gnt_group.py | ||
---|---|---|
146 | 146 |
@return: the desired exit code |
147 | 147 |
|
148 | 148 |
""" |
149 |
if (opts.ndparams is None and opts.alloc_policy is None |
|
150 |
and not opts.diskparams and not opts.hv_state and not opts.disk_state): |
|
149 |
allmods = [opts.ndparams, opts.alloc_policy, opts.diskparams, opts.hv_state, |
|
150 |
opts.disk_state, opts.ispecs_mem_size, opts.ispecs_cpu_count, |
|
151 |
opts.ispecs_disk_count, opts.ispecs_disk_size, |
|
152 |
opts.ispecs_nic_count, opts.diskparams] |
|
153 |
if allmods.count(None) == len(allmods): |
|
151 | 154 |
ToStderr("Please give at least one of the parameters.") |
152 | 155 |
return 1 |
153 | 156 |
|
... | ... | |
159 | 162 |
hv_state = dict(opts.hv_state) |
160 | 163 |
|
161 | 164 |
diskparams = dict(opts.diskparams) |
165 |
|
|
166 |
# set the default values |
|
167 |
to_ipolicy = [ |
|
168 |
opts.ispecs_mem_size, |
|
169 |
opts.ispecs_cpu_count, |
|
170 |
opts.ispecs_disk_count, |
|
171 |
opts.ispecs_disk_size, |
|
172 |
opts.ispecs_nic_count, |
|
173 |
] |
|
174 |
for ispec in to_ipolicy: |
|
175 |
for param in ispec: |
|
176 |
if isinstance(ispec[param], basestring): |
|
177 |
if ispec[param].lower() == "default": |
|
178 |
ispec[param] = constants.VALUE_DEFAULT |
|
179 |
# create ipolicy object |
|
180 |
ipolicy = objects.CreateIPolicyFromOpts(\ |
|
181 |
ispecs_mem_size=opts.ispecs_mem_size, |
|
182 |
ispecs_cpu_count=opts.ispecs_cpu_count, |
|
183 |
ispecs_disk_count=opts.ispecs_disk_count, |
|
184 |
ispecs_disk_size=opts.ispecs_disk_size, |
|
185 |
ispecs_nic_count=opts.ispecs_nic_count, |
|
186 |
group_ipolicy=True, |
|
187 |
allowed_values=[constants.VALUE_DEFAULT]) |
|
188 |
for key in ipolicy.keys(): |
|
189 |
utils.ForceDictType(ipolicy[key], constants.ISPECS_PARAMETER_TYPES, |
|
190 |
allowed_values=[constants.VALUE_DEFAULT]) |
|
191 |
|
|
162 | 192 |
op = opcodes.OpGroupSetParams(group_name=args[0], |
163 | 193 |
ndparams=opts.ndparams, |
164 | 194 |
alloc_policy=opts.alloc_policy, |
165 | 195 |
hv_state=hv_state, |
166 | 196 |
disk_state=disk_state, |
167 |
diskparams=diskparams) |
|
197 |
diskparams=diskparams, |
|
198 |
ipolicy=ipolicy) |
|
199 |
|
|
168 | 200 |
result = SubmitOrSend(op, opts) |
169 | 201 |
|
170 | 202 |
if result: |
... | ... | |
266 | 298 |
"modify": ( |
267 | 299 |
SetGroupParams, ARGS_ONE_GROUP, |
268 | 300 |
[DRY_RUN_OPT, SUBMIT_OPT, ALLOC_POLICY_OPT, NODE_PARAMS_OPT, HV_STATE_OPT, |
269 |
DISK_STATE_OPT, DISK_PARAMS_OPT], |
|
301 |
DISK_STATE_OPT, DISK_PARAMS_OPT] + INSTANCE_POLICY_OPTS,
|
|
270 | 302 |
"<group_name>", "Alters the parameters of a node group"), |
271 | 303 |
"remove": ( |
272 | 304 |
RemoveGroup, ARGS_ONE_GROUP, [DRY_RUN_OPT], |
b/lib/cmdlib.py | ||
---|---|---|
13068 | 13068 |
self.op.diskparams, |
13069 | 13069 |
self.op.alloc_policy, |
13070 | 13070 |
self.op.hv_state, |
13071 |
self.op.disk_state |
|
13071 |
self.op.disk_state, |
|
13072 |
self.op.ipolicy, |
|
13072 | 13073 |
] |
13073 | 13074 |
|
13074 | 13075 |
if all_changes.count(None) == len(all_changes): |
... | ... | |
13117 | 13118 |
_MergeAndVerifyDiskState(self.op.disk_state, |
13118 | 13119 |
self.group.disk_state_static) |
13119 | 13120 |
|
13121 |
if self.op.ipolicy: |
|
13122 |
g_ipolicy = {} |
|
13123 |
for key, value in self.op.ipolicy.iteritems(): |
|
13124 |
g_ipolicy[key] = _GetUpdatedParams(self.group.ipolicy.get(key, {}), |
|
13125 |
value, |
|
13126 |
use_none=True) |
|
13127 |
utils.ForceDictType(g_ipolicy[key], constants.ISPECS_PARAMETER_TYPES) |
|
13128 |
self.new_ipolicy = g_ipolicy |
|
13129 |
objects.InstancePolicy.CheckParameterSyntax(self.new_ipolicy) |
|
13130 |
|
|
13120 | 13131 |
def BuildHooksEnv(self): |
13121 | 13132 |
"""Build hooks env. |
13122 | 13133 |
|
... | ... | |
13156 | 13167 |
if self.op.disk_state: |
13157 | 13168 |
self.group.disk_state_static = self.new_disk_state |
13158 | 13169 |
|
13170 |
if self.op.ipolicy: |
|
13171 |
self.group.ipolicy = self.new_ipolicy |
|
13172 |
|
|
13159 | 13173 |
self.cfg.Update(self.group, feedback_fn) |
13160 | 13174 |
return result |
13161 | 13175 |
|
b/lib/opcodes.py | ||
---|---|---|
1446 | 1446 |
_PDiskParams, |
1447 | 1447 |
_PHvState, |
1448 | 1448 |
_PDiskState, |
1449 |
("ipolicy", None, ht.TMaybeDict, "Group-wide instance policy specs"), |
|
1449 | 1450 |
] |
1450 | 1451 |
OP_RESULT = _TSetParamsResult |
1451 | 1452 |
|
Also available in: Unified diff