From d948c1013e22034a1e795d812218c77fe01f67f2 Mon Sep 17 00:00:00 2001
From: Bernardo Dal Seno <bdalseno@google.com>
Date: Wed, 13 Mar 2013 21:46:07 +0100
Subject: [PATCH] Refactor cli.CreateIPolicyFromOpts()

The code relative to instance specs has been moved into a different
function. This in preparation for further patches to have a more clear code
structure.

Signed-off-by: Bernardo Dal Seno <bdalseno@google.com>
Reviewed-by: Helga Velroyen <helgav@google.com>
---
 lib/cli.py | 56 +++++++++++++++++++++++++++++++-----------------------
 1 file changed, 32 insertions(+), 24 deletions(-)

diff --git a/lib/cli.py b/lib/cli.py
index e3d4dab8a..1fa0eda16 100644
--- a/lib/cli.py
+++ b/lib/cli.py
@@ -3685,24 +3685,9 @@ def _MaybeParseUnit(elements):
   return parsed
 
 
-def CreateIPolicyFromOpts(ispecs_mem_size=None,
-                          ispecs_cpu_count=None,
-                          ispecs_disk_count=None,
-                          ispecs_disk_size=None,
-                          ispecs_nic_count=None,
-                          ipolicy_disk_templates=None,
-                          ipolicy_vcpu_ratio=None,
-                          ipolicy_spindle_ratio=None,
-                          group_ipolicy=False,
-                          allowed_values=None,
-                          fill_all=False):
-  """Creation of instance policy based on command line options.
-
-  @param fill_all: whether for cluster policies we should ensure that
-    all values are filled
-
-
-  """
+def _InitIspecsFromOpts(ipolicy, ispecs_mem_size, ispecs_cpu_count,
+                        ispecs_disk_count, ispecs_disk_size, ispecs_nic_count,
+                        group_ipolicy, allowed_values):
   try:
     if ispecs_mem_size:
       ispecs_mem_size = _MaybeParseUnit(ispecs_mem_size)
@@ -3715,7 +3700,7 @@ def CreateIPolicyFromOpts(ispecs_mem_size=None,
                                errors.ECODE_INVAL)
 
   # prepare ipolicy dict
-  ipolicy_transposed = {
+  ispecs_transposed = {
     constants.ISPEC_MEM_SIZE: ispecs_mem_size,
     constants.ISPEC_CPU_COUNT: ispecs_cpu_count,
     constants.ISPEC_DISK_COUNT: ispecs_disk_count,
@@ -3728,16 +3713,39 @@ def CreateIPolicyFromOpts(ispecs_mem_size=None,
     forced_type = TISPECS_GROUP_TYPES
   else:
     forced_type = TISPECS_CLUSTER_TYPES
-
-  for specs in ipolicy_transposed.values():
+  for specs in ispecs_transposed.values():
     utils.ForceDictType(specs, forced_type, allowed_values=allowed_values)
 
   # then transpose
-  ipolicy_out = objects.MakeEmptyIPolicy()
-  for name, specs in ipolicy_transposed.iteritems():
+  for (name, specs) in ispecs_transposed.iteritems():
     assert name in constants.ISPECS_PARAMETERS
     for key, val in specs.items(): # {min: .. ,max: .., std: ..}
-      ipolicy_out[key][name] = val
+      ipolicy[key][name] = val
+
+
+def CreateIPolicyFromOpts(ispecs_mem_size=None,
+                          ispecs_cpu_count=None,
+                          ispecs_disk_count=None,
+                          ispecs_disk_size=None,
+                          ispecs_nic_count=None,
+                          ipolicy_disk_templates=None,
+                          ipolicy_vcpu_ratio=None,
+                          ipolicy_spindle_ratio=None,
+                          group_ipolicy=False,
+                          allowed_values=None,
+                          fill_all=False):
+  """Creation of instance policy based on command line options.
+
+  @param fill_all: whether for cluster policies we should ensure that
+    all values are filled
+
+
+  """
+
+  ipolicy_out = objects.MakeEmptyIPolicy()
+  _InitIspecsFromOpts(ipolicy_out, ispecs_mem_size, ispecs_cpu_count,
+                      ispecs_disk_count, ispecs_disk_size, ispecs_nic_count,
+                      group_ipolicy, allowed_values)
 
   if ipolicy_disk_templates is not None:
     ipolicy_out[constants.IPOLICY_DTS] = list(ipolicy_disk_templates)
-- 
GitLab