if hyp_info is not None:
outputarray.update(hyp_info)
+ f = open("/proc/sys/kernel/random/boot_id", 'r')
+ try:
+ outputarray["bootid"] = f.read(128).rstrip("\n")
+ finally:
+ f.close()
+
return outputarray
Args:
name: The name of the OS to look for
search_path: List of dirs to search (defaults to constants.OS_SEARCH_PATH)
-
+
Returns:
The base_dir the OS resides in
try:
st = os.stat(api_file)
except EnvironmentError, err:
- raise errors.InvalidOS(name, "'ganeti_api_version' file not"
+ raise errors.InvalidOS(name, os_dir, "'ganeti_api_version' file not"
" found (%s)" % _ErrnoOrStr(err))
if not stat.S_ISREG(stat.S_IFMT(st.st_mode)):
- raise errors.InvalidOS(name, "'ganeti_api_version' file is not"
+ raise errors.InvalidOS(name, os_dir, "'ganeti_api_version' file is not"
" a regular file")
try:
finally:
f.close()
except EnvironmentError, err:
- raise errors.InvalidOS(name, "error while reading the"
+ raise errors.InvalidOS(name, os_dir, "error while reading the"
" API version (%s)" % _ErrnoOrStr(err))
api_version = api_version.strip()
try:
api_version = int(api_version)
except (TypeError, ValueError), err:
- raise errors.InvalidOS(name, "API version is not integer (%s)" % str(err))
+ raise errors.InvalidOS(name, os_dir,
+ "API version is not integer (%s)" % str(err))
return api_version
for dir in top_dirs:
if os.path.isdir(dir):
try:
- f_names = os.listdir(dir)
+ f_names = utils.ListVisibleFiles(dir)
except EnvironmentError, err:
logger.Error("Can't list the OS directory %s: %s" % (dir,str(err)))
break
if base_dir is None:
base_dir = _OSSearch(name)
- else:
- if not os.path.isdir(os.path.sep.join([base_dir, name])):
- raise errors.InvalidOS(name, "OS not found in base dir %s" % base_dir)
if base_dir is None:
- raise errors.InvalidOS(name, "OS dir not found in search path")
+ raise errors.InvalidOS(name, None, "OS dir not found in search path")
os_dir = os.path.sep.join([base_dir, name])
api_version = _OSOndiskVersion(name, os_dir)
if api_version != constants.OS_API_VERSION:
- raise errors.InvalidOS(name, "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))
# OS Scripts dictionary, we will populate it with the actual script names
try:
st = os.stat(os_scripts[script])
except EnvironmentError, err:
- raise errors.InvalidOS(name, "'%s' script missing (%s)" %
+ raise errors.InvalidOS(name, os_dir, "'%s' script missing (%s)" %
(script, _ErrnoOrStr(err)))
if stat.S_IMODE(st.st_mode) & stat.S_IXUSR != stat.S_IXUSR:
- raise errors.InvalidOS(name, "'%s' script not executable" % script)
+ raise errors.InvalidOS(name, os_dir, "'%s' script not executable" %
+ script)
if not stat.S_ISREG(stat.S_IFMT(st.st_mode)):
- raise errors.InvalidOS(name, "'%s' is not a regular file" % script)
+ raise errors.InvalidOS(name, os_dir, "'%s' is not a regular file" %
+ script)
return objects.OS(name=name, path=os_dir,
"""
if os.path.isdir(constants.EXPORT_DIR):
- return os.listdir(constants.EXPORT_DIR)
+ return utils.ListVisibleFiles(constants.EXPORT_DIR)
else:
return []
subdir = "%s-%s.d" % (hpath, suffix)
dir_name = "%s/%s" % (self._BASE_DIR, subdir)
try:
- dir_contents = os.listdir(dir_name)
+ dir_contents = utils.ListVisibleFiles(dir_name)
except OSError, err:
# must log
return rr