X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/ec5af88844d5c775df703e34f3947b45639eb134..d05afa85a3eeddbd8734a5a0a0bbf2b169110303:/lib/rpc_defs.py diff --git a/lib/rpc_defs.py b/lib/rpc_defs.py index 20c349a..bdb7647 100644 --- a/lib/rpc_defs.py +++ b/lib/rpc_defs.py @@ -71,7 +71,8 @@ ACCEPT_OFFLINE_NODE = object() ED_BLOCKDEV_RENAME, ED_DISKS_DICT_DP, ED_SINGLE_DISK_DICT_DP, - ED_NIC_DICT) = range(1, 15) + ED_NIC_DICT, + ED_DEVICE_DICT) = range(1, 16) def _Prepare(calls): @@ -131,6 +132,17 @@ def _BlockdevGetMirrorStatusMultiPostProc(result): return result +def _NodeInfoPreProc(node, args): + """Prepare the exclusive_storage argument for node_info calls.""" + assert len(args) == 3 + # The third argument is either a dictionary with one value for each node, or + # a fixed value to be used for all the nodes + if type(args[2]) is dict: + return [args[0], args[1], args[2][node]] + else: + return args + + def _OsGetPostProc(result): """Post-processor for L{rpc.RpcRunner.call_os_get}. @@ -219,10 +231,12 @@ _INSTANCE_CALLS = [ ("inst", ED_INST_DICT, "Instance object"), ("reboot_type", None, None), ("shutdown_timeout", None, None), + ("reason", None, "The reason for the reboot"), ], None, None, "Returns the list of running instances on the given nodes"), ("instance_shutdown", SINGLE, None, constants.RPC_TMO_NORMAL, [ ("instance", ED_INST_DICT, "Instance object"), ("timeout", None, None), + ("reason", None, "The reason for the shutdown"), ], None, None, "Stops an instance"), ("instance_balloon_memory", SINGLE, None, constants.RPC_TMO_NORMAL, [ ("instance", ED_INST_DICT, "Instance object"), @@ -266,12 +280,21 @@ _INSTANCE_CALLS = [ ("instance_start", SINGLE, None, constants.RPC_TMO_NORMAL, [ ("instance_hvp_bep", ED_INST_DICT_HVP_BEP_DP, None), ("startup_paused", None, None), + ("reason", None, "The reason for the startup"), ], None, None, "Starts an instance"), ("instance_os_add", SINGLE, None, constants.RPC_TMO_1DAY, [ ("instance_osp", ED_INST_DICT_OSP_DP, None), ("reinstall", None, None), ("debug", None, None), ], None, None, "Starts an instance"), + ("hotplug_device", SINGLE, None, constants.RPC_TMO_NORMAL, [ + ("instance", ED_INST_DICT, "Instance object"), + ("action", None, "Hotplug Action"), + ("dev_type", None, "Device type"), + ("device", ED_DEVICE_DICT, "Device dict"), + ("extra", None, "Extra info for device (dev_path for disk)"), + ("seq", None, "Device seq"), + ], None, None, "Hoplug a device to a running instance"), ] _IMPEXP_CALLS = [ @@ -332,6 +355,7 @@ _BLOCKDEV_CALLS = [ ("owner", None, None), ("on_primary", None, None), ("info", None, None), + ("exclusive_storage", None, None), ], None, None, "Request creation of a given block device"), ("blockdev_wipe", SINGLE, None, constants.RPC_TMO_SLOW, [ ("bdev", ED_SINGLE_DISK_DICT_DP, None), @@ -439,6 +463,11 @@ _OS_CALLS = [ ], None, _OsGetPostProc, "Returns an OS definition"), ] +_EXTSTORAGE_CALLS = [ + ("extstorage_diagnose", MULTI, None, constants.RPC_TMO_FAST, [], None, None, + "Request a diagnose of ExtStorage Providers"), + ] + _NODE_CALLS = [ ("node_has_ip_address", SINGLE, None, constants.RPC_TMO_FAST, [ ("address", None, "IP address"), @@ -448,7 +477,9 @@ _NODE_CALLS = [ "Names of the volume groups to ask for disk space information"), ("hv_names", None, "Names of the hypervisors to ask for node information"), - ], None, None, "Return node information"), + ("exclusive_storage", None, + "Whether exclusive storage is enabled"), + ], _NodeInfoPreProc, None, "Return node information"), ("node_verify", MULTI, None, constants.RPC_TMO_NORMAL, [ ("checkdict", None, None), ("cluster_name", None, None), @@ -516,7 +547,7 @@ CALLS = { "RpcClientDefault": _Prepare(_IMPEXP_CALLS + _X509_CALLS + _OS_CALLS + _NODE_CALLS + _FILE_STORAGE_CALLS + _MISC_CALLS + _INSTANCE_CALLS + - _BLOCKDEV_CALLS + _STORAGE_CALLS), + _BLOCKDEV_CALLS + _STORAGE_CALLS + _EXTSTORAGE_CALLS), "RpcClientJobQueue": _Prepare([ ("jobqueue_update", MULTI, None, constants.RPC_TMO_URGENT, [ ("file_name", None, None), @@ -565,6 +596,10 @@ CALLS = { "RpcClientDnsOnly": _Prepare([ ("version", MULTI, ACCEPT_OFFLINE_NODE, constants.RPC_TMO_URGENT, [], None, None, "Query node version"), + ("node_verify_light", MULTI, None, constants.RPC_TMO_NORMAL, [ + ("checkdict", None, None), + ("cluster_name", None, None), + ], None, None, "Request verification of given parameters"), ]), "RpcClientConfig": _Prepare([ ("upload_file", MULTI, None, constants.RPC_TMO_NORMAL, [