Revision 305a7297 lib/backend.py
b/lib/backend.py | ||
---|---|---|
887 | 887 |
Args: |
888 | 888 |
name: The name of the OS to look for |
889 | 889 |
search_path: List of dirs to search (defaults to constants.OS_SEARCH_PATH) |
890 |
|
|
890 |
|
|
891 | 891 |
Returns: |
892 | 892 |
The base_dir the OS resides in |
893 | 893 |
|
... | ... | |
919 | 919 |
try: |
920 | 920 |
st = os.stat(api_file) |
921 | 921 |
except EnvironmentError, err: |
922 |
raise errors.InvalidOS(name, "'ganeti_api_version' file not" |
|
922 |
raise errors.InvalidOS(name, os_dir, "'ganeti_api_version' file not"
|
|
923 | 923 |
" found (%s)" % _ErrnoOrStr(err)) |
924 | 924 |
|
925 | 925 |
if not stat.S_ISREG(stat.S_IFMT(st.st_mode)): |
926 |
raise errors.InvalidOS(name, "'ganeti_api_version' file is not" |
|
926 |
raise errors.InvalidOS(name, os_dir, "'ganeti_api_version' file is not"
|
|
927 | 927 |
" a regular file") |
928 | 928 |
|
929 | 929 |
try: |
... | ... | |
933 | 933 |
finally: |
934 | 934 |
f.close() |
935 | 935 |
except EnvironmentError, err: |
936 |
raise errors.InvalidOS(name, "error while reading the" |
|
936 |
raise errors.InvalidOS(name, os_dir, "error while reading the"
|
|
937 | 937 |
" API version (%s)" % _ErrnoOrStr(err)) |
938 | 938 |
|
939 | 939 |
api_version = api_version.strip() |
940 | 940 |
try: |
941 | 941 |
api_version = int(api_version) |
942 | 942 |
except (TypeError, ValueError), err: |
943 |
raise errors.InvalidOS(name, "API version is not integer (%s)" % str(err)) |
|
943 |
raise errors.InvalidOS(name, os_dir, |
|
944 |
"API version is not integer (%s)" % str(err)) |
|
944 | 945 |
|
945 | 946 |
return api_version |
946 | 947 |
|
... | ... | |
1000 | 1001 |
raise errors.InvalidOS(name, "OS not found in base dir %s" % base_dir) |
1001 | 1002 |
|
1002 | 1003 |
if base_dir is None: |
1003 |
raise errors.InvalidOS(name, "OS dir not found in search path") |
|
1004 |
raise errors.InvalidOS(name, None, "OS dir not found in search path")
|
|
1004 | 1005 |
|
1005 | 1006 |
os_dir = os.path.sep.join([base_dir, name]) |
1006 | 1007 |
api_version = _OSOndiskVersion(name, os_dir) |
1007 | 1008 |
|
1008 | 1009 |
if api_version != constants.OS_API_VERSION: |
1009 |
raise errors.InvalidOS(name, "API version mismatch (found %s want %s)" |
|
1010 |
raise errors.InvalidOS(name, os_dir, "API version mismatch" |
|
1011 |
" (found %s want %s)" |
|
1010 | 1012 |
% (api_version, constants.OS_API_VERSION)) |
1011 | 1013 |
|
1012 | 1014 |
# OS Scripts dictionary, we will populate it with the actual script names |
... | ... | |
1018 | 1020 |
try: |
1019 | 1021 |
st = os.stat(os_scripts[script]) |
1020 | 1022 |
except EnvironmentError, err: |
1021 |
raise errors.InvalidOS(name, "'%s' script missing (%s)" % |
|
1023 |
raise errors.InvalidOS(name, os_dir, "'%s' script missing (%s)" %
|
|
1022 | 1024 |
(script, _ErrnoOrStr(err))) |
1023 | 1025 |
|
1024 | 1026 |
if stat.S_IMODE(st.st_mode) & stat.S_IXUSR != stat.S_IXUSR: |
1025 |
raise errors.InvalidOS(name, "'%s' script not executable" % script) |
|
1027 |
raise errors.InvalidOS(name, os_dir, "'%s' script not executable" % |
|
1028 |
script) |
|
1026 | 1029 |
|
1027 | 1030 |
if not stat.S_ISREG(stat.S_IFMT(st.st_mode)): |
1028 |
raise errors.InvalidOS(name, "'%s' is not a regular file" % script) |
|
1031 |
raise errors.InvalidOS(name, os_dir, "'%s' is not a regular file" % |
|
1032 |
script) |
|
1029 | 1033 |
|
1030 | 1034 |
|
1031 | 1035 |
return objects.OS(name=name, path=os_dir, |
Also available in: Unified diff