Revision 1f5d9bf8
b/lib/client/gnt_group.py | ||
---|---|---|
26 | 26 |
|
27 | 27 |
from ganeti.cli import * |
28 | 28 |
from ganeti import constants |
29 |
from ganeti import objects |
|
29 | 30 |
from ganeti import opcodes |
30 | 31 |
from ganeti import utils |
31 | 32 |
|
... | ... | |
47 | 48 |
@return: the desired exit code |
48 | 49 |
|
49 | 50 |
""" |
51 |
ipolicy = \ |
|
52 |
objects.CreateIPolicyFromOpts(ispecs_mem_size=opts.ispecs_mem_size, |
|
53 |
ispecs_cpu_count=opts.ispecs_cpu_count, |
|
54 |
ispecs_disk_count=opts.ispecs_disk_count, |
|
55 |
ispecs_disk_size=opts.ispecs_disk_size, |
|
56 |
ispecs_nic_count=opts.ispecs_nic_count, |
|
57 |
group_ipolicy=True) |
|
58 |
for key in ipolicy.keys(): |
|
59 |
utils.ForceDictType(ipolicy[key], constants.ISPECS_PARAMETER_TYPES) |
|
60 |
|
|
50 | 61 |
(group_name,) = args |
51 | 62 |
diskparams = dict(opts.diskparams) |
52 | 63 |
op = opcodes.OpGroupAdd(group_name=group_name, ndparams=opts.ndparams, |
53 | 64 |
alloc_policy=opts.alloc_policy, |
54 |
diskparams=diskparams) |
|
65 |
diskparams=diskparams, ipolicy=ipolicy)
|
|
55 | 66 |
SubmitOpCode(op, opts=opts) |
56 | 67 |
|
57 | 68 |
|
... | ... | |
225 | 236 |
|
226 | 237 |
return rcode |
227 | 238 |
|
239 |
INSTANCE_POLICY_OPTS = [ |
|
240 |
SPECS_CPU_COUNT_OPT, |
|
241 |
SPECS_DISK_COUNT_OPT, |
|
242 |
SPECS_DISK_SIZE_OPT, |
|
243 |
SPECS_MEM_SIZE_OPT, |
|
244 |
SPECS_NIC_COUNT_OPT, |
|
245 |
] |
|
228 | 246 |
|
229 | 247 |
commands = { |
230 | 248 |
"add": ( |
231 | 249 |
AddGroup, ARGS_ONE_GROUP, |
232 |
[DRY_RUN_OPT, ALLOC_POLICY_OPT, NODE_PARAMS_OPT, DISK_PARAMS_OPT], |
|
250 |
[DRY_RUN_OPT, ALLOC_POLICY_OPT, NODE_PARAMS_OPT, DISK_PARAMS_OPT] + |
|
251 |
INSTANCE_POLICY_OPTS, |
|
233 | 252 |
"<group_name>", "Add a new node group to the cluster"), |
234 | 253 |
"assign-nodes": ( |
235 | 254 |
AssignNodes, ARGS_ONE_GROUP + ARGS_MANY_NODES, [DRY_RUN_OPT, FORCE_OPT], |
b/lib/cmdlib.py | ||
---|---|---|
12788 | 12788 |
else: |
12789 | 12789 |
self.op.diskparams = self.cfg.GetClusterInfo().diskparams |
12790 | 12790 |
|
12791 |
cluster = self.cfg.GetClusterInfo() |
|
12792 |
full_ipolicy = cluster.SimpleFillIpolicy(self.op.ipolicy) |
|
12793 |
objects.InstancePolicy.CheckParameterSyntax(full_ipolicy) |
|
12794 |
|
|
12791 | 12795 |
def BuildHooksEnv(self): |
12792 | 12796 |
"""Build hooks env. |
12793 | 12797 |
|
... | ... | |
12811 | 12815 |
uuid=self.group_uuid, |
12812 | 12816 |
alloc_policy=self.op.alloc_policy, |
12813 | 12817 |
ndparams=self.op.ndparams, |
12814 |
diskparams=self.op.diskparams) |
|
12818 |
diskparams=self.op.diskparams, |
|
12819 |
ipolicy=self.op.ipolicy) |
|
12815 | 12820 |
|
12816 | 12821 |
self.cfg.AddNodeGroup(group_obj, self.proc.GetECId(), check_uuid=False) |
12817 | 12822 |
del self.remove_locks[locking.LEVEL_NODEGROUP] |
b/lib/opcodes.py | ||
---|---|---|
1412 | 1412 |
_PNodeGroupAllocPolicy, |
1413 | 1413 |
_PGroupNodeParams, |
1414 | 1414 |
_PDiskParams, |
1415 |
("ipolicy", None, ht.TMaybeDict, "Group-wide instance policy specs"), |
|
1415 | 1416 |
] |
1416 | 1417 |
|
1417 | 1418 |
|
Also available in: Unified diff