X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/f5118ade209718ec501e3ae63b654358606eb06b..2cc1da8b07305c1c322a5524a7e24ea07b071d72:/lib/backend.py diff --git a/lib/backend.py b/lib/backend.py index a01f956..f941fbb 100644 --- a/lib/backend.py +++ b/lib/backend.py @@ -1326,15 +1326,16 @@ def BlockdevAddchildren(parent_cdev, new_cdevs): """ 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" % 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): @@ -1459,27 +1460,34 @@ def UploadFile(file_name, data, mode, uid, gid, atime, mtime): """ 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): @@ -2006,10 +2014,12 @@ def BlockdevRename(devlist): @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: @@ -2024,9 +2034,11 @@ def BlockdevRename(devlist): # 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):