From 976b78ba534e63dd2e3a0aebc19cefa0cebaa931 Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Mon, 23 Jan 2012 18:01:24 +0100 Subject: [PATCH] Add ipolicy_vcpu_ratio to command line This allows changing this value from the command line. Signed-off-by: Iustin Pop <iustin@google.com> Reviewed-by: Michael Hanselmann <hansmi@google.com> --- lib/cli.py | 7 +++++++ lib/client/gnt_cluster.py | 35 ++++++++++++++++++----------------- lib/objects.py | 13 ++++++++++--- 3 files changed, 35 insertions(+), 20 deletions(-) diff --git a/lib/cli.py b/lib/cli.py index fecc4e966..505ced4ff 100644 --- a/lib/cli.py +++ b/lib/cli.py @@ -173,6 +173,7 @@ __all__ = [ "SPECS_MEM_SIZE_OPT", "SPECS_NIC_COUNT_OPT", "IPOLICY_DISK_TEMPLATES", + "IPOLICY_VCPU_RATIO", "SPICE_CACERT_OPT", "SPICE_CERT_OPT", "SRC_DIR_OPT", @@ -811,6 +812,11 @@ IPOLICY_DISK_TEMPLATES = cli_option("--ipolicy-disk-templates", help="Comma-separated list of" " enabled disk templates") +IPOLICY_VCPU_RATIO = cli_option("--ipolicy-vcpu-ratio", + dest="ipolicy_vcpu_ratio", + type="float", default=None, + help="The maximum allowed vcpu-to-cpu ratio") + HYPERVISOR_OPT = cli_option("-H", "--hypervisor-parameters", dest="hypervisor", help="Hypervisor and hypervisor options, in the" " format hypervisor:option=value,option=value,...", @@ -1402,6 +1408,7 @@ INSTANCE_POLICY_OPTS = [ SPECS_MEM_SIZE_OPT, SPECS_NIC_COUNT_OPT, IPOLICY_DISK_TEMPLATES, + IPOLICY_VCPU_RATIO, ] diff --git a/lib/client/gnt_cluster.py b/lib/client/gnt_cluster.py index cbaea0d44..add24d6c8 100644 --- a/lib/client/gnt_cluster.py +++ b/lib/client/gnt_cluster.py @@ -143,15 +143,15 @@ def InitCluster(opts, args): utils.ForceDictType(diskparams[templ], constants.DISK_DT_TYPES) # prepare ipolicy dict - ispecs_dts = opts.ipolicy_disk_templates # hate long var names - ipolicy_raw = \ - objects.CreateIPolicyFromOpts(ispecs_mem_size=opts.ispecs_mem_size, - ispecs_cpu_count=opts.ispecs_cpu_count, - ispecs_disk_count=opts.ispecs_disk_count, - ispecs_disk_size=opts.ispecs_disk_size, - ispecs_nic_count=opts.ispecs_nic_count, - ipolicy_disk_templates=ispecs_dts, - fill_all=True) + ipolicy_raw = objects.CreateIPolicyFromOpts( + ispecs_mem_size=opts.ispecs_mem_size, + ispecs_cpu_count=opts.ispecs_cpu_count, + ispecs_disk_count=opts.ispecs_disk_count, + ispecs_disk_size=opts.ispecs_disk_size, + ispecs_nic_count=opts.ispecs_nic_count, + ipolicy_disk_templates=opts.ipolicy_disk_templates, + ipolicy_vcpu_ratio=opts.ipolicy_vcpu_ratio, + fill_all=True) ipolicy = objects.FillIPolicy(constants.IPOLICY_DEFAULTS, ipolicy_raw) if opts.candidate_pool_size is None: @@ -997,14 +997,15 @@ def SetClusterParams(opts, args): if ndparams is not None: utils.ForceDictType(ndparams, constants.NDS_PARAMETER_TYPES) - ispecs_dts = opts.ipolicy_disk_templates - ipolicy = \ - objects.CreateIPolicyFromOpts(ispecs_mem_size=opts.ispecs_mem_size, - ispecs_cpu_count=opts.ispecs_cpu_count, - ispecs_disk_count=opts.ispecs_disk_count, - ispecs_disk_size=opts.ispecs_disk_size, - ispecs_nic_count=opts.ispecs_nic_count, - ipolicy_disk_templates=ispecs_dts) + ipolicy = objects.CreateIPolicyFromOpts( + ispecs_mem_size=opts.ispecs_mem_size, + ispecs_cpu_count=opts.ispecs_cpu_count, + ispecs_disk_count=opts.ispecs_disk_count, + ispecs_disk_size=opts.ispecs_disk_size, + ispecs_nic_count=opts.ispecs_nic_count, + ipolicy_disk_templates=opts.ipolicy_disk_templates, + ipolicy_vcpu_ratio=opts.ipolicy_vcpu_ratio, + ) mnh = opts.maintain_node_health diff --git a/lib/objects.py b/lib/objects.py index cfd723b81..db4e12e95 100644 --- a/lib/objects.py +++ b/lib/objects.py @@ -186,6 +186,7 @@ def CreateIPolicyFromOpts(ispecs_mem_size=None, ispecs_disk_size=None, ispecs_nic_count=None, ipolicy_disk_templates=None, + ipolicy_vcpu_ratio=None, group_ipolicy=False, allowed_values=None, fill_all=False): @@ -221,11 +222,17 @@ def CreateIPolicyFromOpts(ispecs_mem_size=None, for key, val in specs.items(): # {min: .. ,max: .., std: ..} ipolicy_out[key][name] = val - # no filldict for lists - if not group_ipolicy and fill_all and ipolicy_disk_templates is None: - ipolicy_disk_templates = constants.DISK_TEMPLATES + # no filldict for non-dicts + if not group_ipolicy and fill_all: + if ipolicy_disk_templates is None: + ipolicy_disk_templates = constants.DISK_TEMPLATES + if ipolicy_vcpu_ratio is None: + ipolicy_vcpu_ratio = \ + constants.IPOLICY_DEFAULTS[constants.IPOLICY_VCPU_RATIO] if ipolicy_disk_templates is not None: ipolicy_out[constants.IPOLICY_DTS] = list(ipolicy_disk_templates) + if ipolicy_vcpu_ratio is not None: + ipolicy_out[constants.IPOLICY_VCPU_RATIO] = ipolicy_vcpu_ratio assert not (frozenset(ipolicy_out.keys()) - constants.IPOLICY_ALL_KEYS) -- GitLab