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
