diff --git a/daemons/ganeti-noded b/daemons/ganeti-noded index 08984e957e35271aa05e6bda28b9e4822dab979b..93ca0de628b1c0b3aa496d389e2f822f71039399 100755 --- a/daemons/ganeti-noded +++ b/daemons/ganeti-noded @@ -364,7 +364,7 @@ class NodeHttpServer(http.server.HttpServer): """ inst_s = params[0] inst = objects.Instance.FromDict(inst_s) - return backend.AddOSToInstance(inst) + return backend.InstanceOsAdd(inst) @staticmethod def perspective_instance_run_rename(params): diff --git a/lib/backend.py b/lib/backend.py index e7558a5cfed2215565015ced4b72fa95ea5fae88..6b64b4261a8e81f49244ac285a35efb8f86d2869 100644 --- a/lib/backend.py +++ b/lib/backend.py @@ -669,7 +669,7 @@ def GetAllInstancesInfo(hypervisor_list): return output -def AddOSToInstance(instance): +def InstanceOsAdd(instance): """Add an OS to an instance. @type instance: L{objects.Instance} @@ -678,7 +678,15 @@ def AddOSToInstance(instance): @return: the success of the operation """ - inst_os = OSFromDisk(instance.os) + try: + inst_os = OSFromDisk(instance.os) + except errors.InvalidOS, err: + os_name, os_dir, os_err = err.args + if os_dir is None: + return (False, "Can't find OS '%s': %s" % (os_name, os_err)) + else: + return (False, "Error parsing OS '%s' in directory %s: %s" % + (os_name, os_dir, os_err)) create_env = OSEnvironment(instance)