projects
/
ganeti-local
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
OS API: support for multiple versions in an OS
[ganeti-local]
/
lib
/
backend.py
diff --git
a/lib/backend.py
b/lib/backend.py
index
b7df899
..
6bf9c8d
100644
(file)
--- a/
lib/backend.py
+++ b/
lib/backend.py
@@
-1149,21
+1149,21
@@
def _OSOndiskVersion(name, os_dir):
try:
f = open(api_file)
try:
try:
f = open(api_file)
try:
- api_version = f.read(256)
+ api_versions = f.readlines()
finally:
f.close()
except EnvironmentError, err:
raise errors.InvalidOS(name, os_dir, "error while reading the"
" API version (%s)" % _ErrnoOrStr(err))
finally:
f.close()
except EnvironmentError, err:
raise errors.InvalidOS(name, os_dir, "error while reading the"
" API version (%s)" % _ErrnoOrStr(err))
- api_version = api_version.strip()
+ api_versions = [version.strip() for version in api_versions]
try:
try:
- api_version = int(api_version)
+ api_versions = [int(version) for version in api_versions]
except (TypeError, ValueError), err:
raise errors.InvalidOS(name, os_dir,
"API version is not integer (%s)" % str(err))
except (TypeError, ValueError), err:
raise errors.InvalidOS(name, os_dir,
"API version is not integer (%s)" % str(err))
- return api_version
+ return api_versions
def DiagnoseOS(top_dirs=None):
def DiagnoseOS(top_dirs=None):
@@
-1219,12
+1219,12
@@
def OSFromDisk(name, base_dir=None):
else:
os_dir = os.path.sep.join([base_dir, name])
else:
os_dir = os.path.sep.join([base_dir, name])
- api_version = _OSOndiskVersion(name, os_dir)
+ api_versions = _OSOndiskVersion(name, os_dir)
- if api_version != constants.OS_API_VERSION:
+ if constants.OS_API_VERSION not in api_versions:
raise errors.InvalidOS(name, os_dir, "API version mismatch"
" (found %s want %s)"
raise errors.InvalidOS(name, os_dir, "API version mismatch"
" (found %s want %s)"
- % (api_version, constants.OS_API_VERSION))
+ % (api_versions, constants.OS_API_VERSION))
# OS Scripts dictionary, we will populate it with the actual script names
os_scripts = {'create': '', 'export': '', 'import': '', 'rename': ''}
# OS Scripts dictionary, we will populate it with the actual script names
os_scripts = {'create': '', 'export': '', 'import': '', 'rename': ''}
@@
-1252,7
+1252,7
@@
def OSFromDisk(name, base_dir=None):
export_script=os_scripts['export'],
import_script=os_scripts['import'],
rename_script=os_scripts['rename'],
export_script=os_scripts['export'],
import_script=os_scripts['import'],
rename_script=os_scripts['rename'],
- api_version=api_version)
+ api_versions=api_versions)
def GrowBlockDevice(disk, amount):
def GrowBlockDevice(disk, amount):