"""
parent_bdev = _RecursiveFindBD(parent_cdev)
if parent_bdev is None:
- logging.error("Can't find parent device")
- return False
+ msg = "Can't find parent device '%s' in add children" % str(parent_cdev)
+ logging.error("BlockdevAddchildren: %s", msg)
+ return (False, msg)
new_bdevs = [_RecursiveFindBD(disk) for disk in new_cdevs]
if new_bdevs.count(None) > 0:
- logging.error("Can't find new device(s) to add: %s:%s",
- new_bdevs, new_cdevs)
- return False
+ msg = "Can't find new device(s) to add: %s:%s" % (new_bdevs, new_cdevs)
+ logging.error(msg)
+ return (False, msg)
parent_bdev.AddChildren(new_bdevs)
- return True
+ return (True, None)
def BlockdevRemovechildren(parent_cdev, new_cdevs):
"""
parent_bdev = _RecursiveFindBD(parent_cdev)
if parent_bdev is None:
- logging.error("Can't find parent in remove children: %s", parent_cdev)
- return False
+ msg = "Can't find parent device '%s' in remove children" % str(parent_cdev)
+ logging.error(msg)
+ return (False, msg)
devs = []
for disk in new_cdevs:
rpath = disk.StaticDevPath()
if rpath is None:
bd = _RecursiveFindBD(disk)
if bd is None:
- logging.error("Can't find dynamic device %s while removing children",
- disk)
- return False
+ msg = "Can't find device %s while removing children" % (disk,)
+ logging.error(msg)
+ return (False, msg)
else:
devs.append(bd.dev_path)
else:
devs.append(rpath)
parent_bdev.RemoveChildren(devs)
- return True
+ return (True, None)
def BlockdevGetmirrorstatus(disks):
"""
if not os.path.isabs(file_name):
- logging.error("Filename passed to UploadFile is not absolute: '%s'",
- file_name)
- return False
+ err = "Filename passed to UploadFile is not absolute: '%s'" % file_name
+ logging.error(err)
+ return (False, err)
- allowed_files = [
+ allowed_files = set([
constants.CLUSTER_CONF_FILE,
constants.ETC_HOSTS,
constants.SSH_KNOWN_HOSTS_FILE,
constants.VNC_PASSWORD_FILE,
- ]
+ constants.RAPI_CERT_FILE,
+ constants.RAPI_USERS_FILE,
+ ])
+
+ for hv_name in constants.HYPER_TYPES:
+ hv_class = hypervisor.GetHypervisor(hv_name)
+ allowed_files.update(hv_class.GetAncillaryFiles())
if file_name not in allowed_files:
- logging.error("Filename passed to UploadFile not in allowed"
- " upload targets: '%s'", file_name)
- return False
+ err = "Filename passed to UploadFile not in allowed upload targets: '%s'" \
+ % file_name
+ logging.error(err)
+ return (False, err)
raw_data = _Decompress(data)
utils.WriteFile(file_name, data=raw_data, mode=mode, uid=uid, gid=gid,
atime=atime, mtime=mtime)
- return True
+ return (True, "success")
def WriteSsconfFiles(values):
@return: True if all renames succeeded, False otherwise
"""
+ msgs = []
result = True
for disk, unique_id in devlist:
dev = _RecursiveFindBD(disk)
if dev is None:
+ msgs.append("Can't find device %s in rename" % str(disk))
result = False
continue
try:
# cache? for now, we only lose lvm data when we rename, which
# is less critical than DRBD or MD
except errors.BlockDeviceError, err:
+ msgs.append("Can't rename device '%s' to '%s': %s" %
+ (dev, unique_id, err))
logging.exception("Can't rename device '%s' to '%s'", dev, unique_id)
result = False
- return result
+ return (result, "; ".join(msgs))
def _TransformFileStorageDir(file_storage_dir):