This field is used to store the list of allowed parameters for this OS.
The list is stored in a 'params' file which is mandatory for all API 15
OSes.

Signed-off-by: Guido Trotter <[email protected]>
---
 lib/backend.py   |   11 ++++++++++-
 lib/constants.py |    1 +
 lib/objects.py   |    1 +
 3 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/lib/backend.py b/lib/backend.py
index 0b92288..33c8699 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -1593,12 +1593,21 @@ def _TryOSFromDisk(name, base_dir=None):
       return False, ("Script '%s' under path '%s' is not a regular file" %
                      (script, os_dir))
 
+  os_params = []
+  if max(api_versions) >= constants.OS_API_V15:
+    os_params_file = os.path.sep.join([os_dir, constants.OS_PARAMS_FILE])
+    try:
+      os_params = utils.ReadFile(os_params_file).splitlines()
+    except EnvironmentError, err:
+      return False, ("Cannot read OS params file")
+  os_params = [param.strip() for param in os_params]
+
   os_obj = objects.OS(name=name, path=os_dir,
                       create_script=os_scripts[constants.OS_SCRIPT_CREATE],
                       export_script=os_scripts[constants.OS_SCRIPT_EXPORT],
                       import_script=os_scripts[constants.OS_SCRIPT_IMPORT],
                       rename_script=os_scripts[constants.OS_SCRIPT_RENAME],
-                      api_versions=api_versions)
+                      api_versions=api_versions, params=os_params)
   return True, os_obj
 
 
diff --git a/lib/constants.py b/lib/constants.py
index 13dad7a..2fb15ff 100644
--- a/lib/constants.py
+++ b/lib/constants.py
@@ -261,6 +261,7 @@ OS_SCRIPT_EXPORT = 'export'
 OS_SCRIPT_RENAME = 'rename'
 OS_SCRIPTS = frozenset([OS_SCRIPT_CREATE, OS_SCRIPT_IMPORT,
                         OS_SCRIPT_EXPORT, OS_SCRIPT_RENAME])
+OS_PARAMS_FILE = 'params'
 
 # ssh constants
 SSH_INITD_SCRIPT = _autoconf.SSH_INITD_SCRIPT
diff --git a/lib/objects.py b/lib/objects.py
index 5ae1bb9..58f6207 100644
--- a/lib/objects.py
+++ b/lib/objects.py
@@ -743,6 +743,7 @@ class OS(ConfigObject):
     "export_script",
     "import_script",
     "rename_script",
+    "params",
     ]
 
 
-- 
1.5.6.5

Reply via email to