Skip to content
Snippets Groups Projects
Commit dd6d2d09 authored by Michael Hanselmann's avatar Michael Hanselmann
Browse files

rpc: Add support for resolver options callback


This adds support for a callback returning name resolver options. This
is required for powercycling offline nodes. While it would be possible
to implement this using a separate RPC client class, doing so would
require some code duplication with the standard “RpcRunner” class.

The callback can generate the options based on the call arguments.

Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
Reviewed-by: default avatarIustin Pop <iustin@google.com>
parent f863d7aa
No related branches found
No related tags found
No related merge requests found
...@@ -41,7 +41,7 @@ _SINGLE = "single-node" ...@@ -41,7 +41,7 @@ _SINGLE = "single-node"
_MULTI = "multi-node" _MULTI = "multi-node"
#: Expected length of a rpc definition #: Expected length of a rpc definition
_RPC_DEF_LEN = 7 _RPC_DEF_LEN = 8
def _WritePreamble(sw): def _WritePreamble(sw):
...@@ -125,7 +125,7 @@ def _WriteBaseClass(sw, clsname, calls): ...@@ -125,7 +125,7 @@ def _WriteBaseClass(sw, clsname, calls):
raise ValueError("Procedure %s has only %d elements, expected %d" % raise ValueError("Procedure %s has only %d elements, expected %d" %
(v[0], len(v), _RPC_DEF_LEN)) (v[0], len(v), _RPC_DEF_LEN))
for (name, kind, timeout, args, _, _, desc) in calls: for (name, kind, _, timeout, args, _, _, desc) in calls:
funcargs = ["self"] funcargs = ["self"]
if kind == _SINGLE: if kind == _SINGLE:
......
...@@ -443,13 +443,19 @@ class _RpcClientBase: ...@@ -443,13 +443,19 @@ class _RpcClientBase:
"""Entry point for automatically generated RPC wrappers. """Entry point for automatically generated RPC wrappers.
""" """
(procedure, _, timeout, argdefs, prep_fn, postproc_fn, _) = cdef (procedure, _, resolver_opts, timeout, argdefs,
prep_fn, postproc_fn, _) = cdef
if callable(timeout): if callable(timeout):
read_timeout = timeout(args) read_timeout = timeout(args)
else: else:
read_timeout = timeout read_timeout = timeout
if callable(resolver_opts):
req_resolver_opts = resolver_opts(args)
else:
req_resolver_opts = resolver_opts
enc_args = map(self._encoder, zip(map(compat.snd, argdefs), args)) enc_args = map(self._encoder, zip(map(compat.snd, argdefs), args))
if prep_fn is None: if prep_fn is None:
# for a no-op prep_fn, we serialise the body once, and then we # for a no-op prep_fn, we serialise the body once, and then we
......
...@@ -24,6 +24,7 @@ RPC definition fields: ...@@ -24,6 +24,7 @@ RPC definition fields:
- Name as string - Name as string
- L{SINGLE} for single-node calls, L{MULTI} for multi-node - L{SINGLE} for single-node calls, L{MULTI} for multi-node
- Name resolver option(s), can be callable receiving all arguments in a tuple
- Timeout (e.g. L{TMO_NORMAL}), or callback receiving all arguments in a - Timeout (e.g. L{TMO_NORMAL}), or callback receiving all arguments in a
tuple to calculate timeout tuple to calculate timeout
- List of arguments as tuples - List of arguments as tuples
...@@ -167,32 +168,32 @@ def _TestDelayTimeout((duration, )): ...@@ -167,32 +168,32 @@ def _TestDelayTimeout((duration, )):
_FILE_STORAGE_CALLS = [ _FILE_STORAGE_CALLS = [
("file_storage_dir_create", SINGLE, TMO_FAST, [ ("file_storage_dir_create", SINGLE, None, TMO_FAST, [
("file_storage_dir", None, "File storage directory"), ("file_storage_dir", None, "File storage directory"),
], None, None, "Create the given file storage directory"), ], None, None, "Create the given file storage directory"),
("file_storage_dir_remove", SINGLE, TMO_FAST, [ ("file_storage_dir_remove", SINGLE, None, TMO_FAST, [
("file_storage_dir", None, "File storage directory"), ("file_storage_dir", None, "File storage directory"),
], None, None, "Remove the given file storage directory"), ], None, None, "Remove the given file storage directory"),
("file_storage_dir_rename", SINGLE, TMO_FAST, [ ("file_storage_dir_rename", SINGLE, None, TMO_FAST, [
("old_file_storage_dir", None, "Old name"), ("old_file_storage_dir", None, "Old name"),
("new_file_storage_dir", None, "New name"), ("new_file_storage_dir", None, "New name"),
], None, None, "Rename file storage directory"), ], None, None, "Rename file storage directory"),
] ]
_STORAGE_CALLS = [ _STORAGE_CALLS = [
("storage_list", MULTI, TMO_NORMAL, [ ("storage_list", MULTI, None, TMO_NORMAL, [
("su_name", None, None), ("su_name", None, None),
("su_args", None, None), ("su_args", None, None),
("name", None, None), ("name", None, None),
("fields", None, None), ("fields", None, None),
], None, None, "Get list of storage units"), ], None, None, "Get list of storage units"),
("storage_modify", SINGLE, TMO_NORMAL, [ ("storage_modify", SINGLE, None, TMO_NORMAL, [
("su_name", None, None), ("su_name", None, None),
("su_args", None, None), ("su_args", None, None),
("name", None, None), ("name", None, None),
("changes", None, None), ("changes", None, None),
], None, None, "Modify a storage unit"), ], None, None, "Modify a storage unit"),
("storage_execute", SINGLE, TMO_NORMAL, [ ("storage_execute", SINGLE, None, TMO_NORMAL, [
("su_name", None, None), ("su_name", None, None),
("su_args", None, None), ("su_args", None, None),
("name", None, None), ("name", None, None),
...@@ -201,66 +202,66 @@ _STORAGE_CALLS = [ ...@@ -201,66 +202,66 @@ _STORAGE_CALLS = [
] ]
_INSTANCE_CALLS = [ _INSTANCE_CALLS = [
("instance_info", SINGLE, TMO_URGENT, [ ("instance_info", SINGLE, None, TMO_URGENT, [
("instance", None, "Instance name"), ("instance", None, "Instance name"),
("hname", None, "Hypervisor type"), ("hname", None, "Hypervisor type"),
], None, None, "Returns information about a single instance"), ], None, None, "Returns information about a single instance"),
("all_instances_info", MULTI, TMO_URGENT, [ ("all_instances_info", MULTI, None, TMO_URGENT, [
("hypervisor_list", None, "Hypervisors to query for instances"), ("hypervisor_list", None, "Hypervisors to query for instances"),
], None, None, ], None, None,
"Returns information about all instances on the given nodes"), "Returns information about all instances on the given nodes"),
("instance_list", MULTI, TMO_URGENT, [ ("instance_list", MULTI, None, TMO_URGENT, [
("hypervisor_list", None, "Hypervisors to query for instances"), ("hypervisor_list", None, "Hypervisors to query for instances"),
], None, None, "Returns the list of running instances on the given nodes"), ], None, None, "Returns the list of running instances on the given nodes"),
("instance_reboot", SINGLE, TMO_NORMAL, [ ("instance_reboot", SINGLE, None, TMO_NORMAL, [
("inst", ED_INST_DICT, "Instance object"), ("inst", ED_INST_DICT, "Instance object"),
("reboot_type", None, None), ("reboot_type", None, None),
("shutdown_timeout", None, None), ("shutdown_timeout", None, None),
], None, None, "Returns the list of running instances on the given nodes"), ], None, None, "Returns the list of running instances on the given nodes"),
("instance_shutdown", SINGLE, TMO_NORMAL, [ ("instance_shutdown", SINGLE, None, TMO_NORMAL, [
("instance", ED_INST_DICT, "Instance object"), ("instance", ED_INST_DICT, "Instance object"),
("timeout", None, None), ("timeout", None, None),
], None, None, "Stops an instance"), ], None, None, "Stops an instance"),
("instance_run_rename", SINGLE, TMO_SLOW, [ ("instance_run_rename", SINGLE, None, TMO_SLOW, [
("instance", ED_INST_DICT, "Instance object"), ("instance", ED_INST_DICT, "Instance object"),
("old_name", None, None), ("old_name", None, None),
("debug", None, None), ("debug", None, None),
], None, None, "Run the OS rename script for an instance"), ], None, None, "Run the OS rename script for an instance"),
("instance_migratable", SINGLE, TMO_NORMAL, [ ("instance_migratable", SINGLE, None, TMO_NORMAL, [
("instance", ED_INST_DICT, "Instance object"), ("instance", ED_INST_DICT, "Instance object"),
], None, None, "Checks whether the given instance can be migrated"), ], None, None, "Checks whether the given instance can be migrated"),
("migration_info", SINGLE, TMO_NORMAL, [ ("migration_info", SINGLE, None, TMO_NORMAL, [
("instance", ED_INST_DICT, "Instance object"), ("instance", ED_INST_DICT, "Instance object"),
], None, None, ], None, None,
"Gather the information necessary to prepare an instance migration"), "Gather the information necessary to prepare an instance migration"),
("accept_instance", SINGLE, TMO_NORMAL, [ ("accept_instance", SINGLE, None, TMO_NORMAL, [
("instance", ED_INST_DICT, "Instance object"), ("instance", ED_INST_DICT, "Instance object"),
("info", None, "Result for the call_migration_info call"), ("info", None, "Result for the call_migration_info call"),
("target", None, "Target hostname (usually an IP address)"), ("target", None, "Target hostname (usually an IP address)"),
], None, None, "Prepare a node to accept an instance"), ], None, None, "Prepare a node to accept an instance"),
("instance_finalize_migration_dst", SINGLE, TMO_NORMAL, [ ("instance_finalize_migration_dst", SINGLE, None, TMO_NORMAL, [
("instance", ED_INST_DICT, "Instance object"), ("instance", ED_INST_DICT, "Instance object"),
("info", None, "Result for the call_migration_info call"), ("info", None, "Result for the call_migration_info call"),
("success", None, "Whether the migration was a success or failure"), ("success", None, "Whether the migration was a success or failure"),
], None, None, "Finalize any target-node migration specific operation"), ], None, None, "Finalize any target-node migration specific operation"),
("instance_migrate", SINGLE, TMO_SLOW, [ ("instance_migrate", SINGLE, None, TMO_SLOW, [
("instance", ED_INST_DICT, "Instance object"), ("instance", ED_INST_DICT, "Instance object"),
("target", None, "Target node name"), ("target", None, "Target node name"),
("live", None, "Whether the migration should be done live or not"), ("live", None, "Whether the migration should be done live or not"),
], None, None, "Migrate an instance"), ], None, None, "Migrate an instance"),
("instance_finalize_migration_src", SINGLE, TMO_SLOW, [ ("instance_finalize_migration_src", SINGLE, None, TMO_SLOW, [
("instance", ED_INST_DICT, "Instance object"), ("instance", ED_INST_DICT, "Instance object"),
("success", None, "Whether the migration succeeded or not"), ("success", None, "Whether the migration succeeded or not"),
("live", None, "Whether the user requested a live migration or not"), ("live", None, "Whether the user requested a live migration or not"),
], None, None, "Finalize the instance migration on the source node"), ], None, None, "Finalize the instance migration on the source node"),
("instance_get_migration_status", SINGLE, TMO_SLOW, [ ("instance_get_migration_status", SINGLE, None, TMO_SLOW, [
("instance", ED_INST_DICT, "Instance object"), ("instance", ED_INST_DICT, "Instance object"),
], None, _MigrationStatusPostProc, "Report migration status"), ], None, _MigrationStatusPostProc, "Report migration status"),
("instance_start", SINGLE, TMO_NORMAL, [ ("instance_start", SINGLE, None, TMO_NORMAL, [
("instance_hvp_bep", ED_INST_DICT_HVP_BEP, None), ("instance_hvp_bep", ED_INST_DICT_HVP_BEP, None),
("startup_paused", None, None), ("startup_paused", None, None),
], None, None, "Starts an instance"), ], None, None, "Starts an instance"),
("instance_os_add", SINGLE, TMO_1DAY, [ ("instance_os_add", SINGLE, None, TMO_1DAY, [
("instance_osp", ED_INST_DICT_OSP, None), ("instance_osp", ED_INST_DICT_OSP, None),
("reinstall", None, None), ("reinstall", None, None),
("debug", None, None), ("debug", None, None),
...@@ -268,13 +269,13 @@ _INSTANCE_CALLS = [ ...@@ -268,13 +269,13 @@ _INSTANCE_CALLS = [
] ]
_IMPEXP_CALLS = [ _IMPEXP_CALLS = [
("import_start", SINGLE, TMO_NORMAL, [ ("import_start", SINGLE, None, TMO_NORMAL, [
("opts", ED_OBJECT_DICT, None), ("opts", ED_OBJECT_DICT, None),
("instance", ED_INST_DICT, None), ("instance", ED_INST_DICT, None),
("component", None, None), ("component", None, None),
("dest", ED_IMPEXP_IO, "Import destination"), ("dest", ED_IMPEXP_IO, "Import destination"),
], None, None, "Starts an import daemon"), ], None, None, "Starts an import daemon"),
("export_start", SINGLE, TMO_NORMAL, [ ("export_start", SINGLE, None, TMO_NORMAL, [
("opts", ED_OBJECT_DICT, None), ("opts", ED_OBJECT_DICT, None),
("host", None, None), ("host", None, None),
("port", None, None), ("port", None, None),
...@@ -282,130 +283,130 @@ _IMPEXP_CALLS = [ ...@@ -282,130 +283,130 @@ _IMPEXP_CALLS = [
("component", None, None), ("component", None, None),
("source", ED_IMPEXP_IO, "Export source"), ("source", ED_IMPEXP_IO, "Export source"),
], None, None, "Starts an export daemon"), ], None, None, "Starts an export daemon"),
("impexp_status", SINGLE, TMO_FAST, [ ("impexp_status", SINGLE, None, TMO_FAST, [
("names", None, "Import/export names"), ("names", None, "Import/export names"),
], None, _ImpExpStatusPostProc, "Gets the status of an import or export"), ], None, _ImpExpStatusPostProc, "Gets the status of an import or export"),
("impexp_abort", SINGLE, TMO_NORMAL, [ ("impexp_abort", SINGLE, None, TMO_NORMAL, [
("name", None, "Import/export name"), ("name", None, "Import/export name"),
], None, None, "Aborts an import or export"), ], None, None, "Aborts an import or export"),
("impexp_cleanup", SINGLE, TMO_NORMAL, [ ("impexp_cleanup", SINGLE, None, TMO_NORMAL, [
("name", None, "Import/export name"), ("name", None, "Import/export name"),
], None, None, "Cleans up after an import or export"), ], None, None, "Cleans up after an import or export"),
("export_info", SINGLE, TMO_FAST, [ ("export_info", SINGLE, None, TMO_FAST, [
("path", None, None), ("path", None, None),
], None, None, "Queries the export information in a given path"), ], None, None, "Queries the export information in a given path"),
("finalize_export", SINGLE, TMO_NORMAL, [ ("finalize_export", SINGLE, None, TMO_NORMAL, [
("instance", ED_INST_DICT, None), ("instance", ED_INST_DICT, None),
("snap_disks", ED_FINALIZE_EXPORT_DISKS, None), ("snap_disks", ED_FINALIZE_EXPORT_DISKS, None),
], None, None, "Request the completion of an export operation"), ], None, None, "Request the completion of an export operation"),
("export_list", MULTI, TMO_FAST, [], None, None, ("export_list", MULTI, None, TMO_FAST, [], None, None,
"Gets the stored exports list"), "Gets the stored exports list"),
("export_remove", SINGLE, TMO_FAST, [ ("export_remove", SINGLE, None, TMO_FAST, [
("export", None, None), ("export", None, None),
], None, None, "Requests removal of a given export"), ], None, None, "Requests removal of a given export"),
] ]
_X509_CALLS = [ _X509_CALLS = [
("x509_cert_create", SINGLE, TMO_NORMAL, [ ("x509_cert_create", SINGLE, None, TMO_NORMAL, [
("validity", None, "Validity in seconds"), ("validity", None, "Validity in seconds"),
], None, None, "Creates a new X509 certificate for SSL/TLS"), ], None, None, "Creates a new X509 certificate for SSL/TLS"),
("x509_cert_remove", SINGLE, TMO_NORMAL, [ ("x509_cert_remove", SINGLE, None, TMO_NORMAL, [
("name", None, "Certificate name"), ("name", None, "Certificate name"),
], None, None, "Removes a X509 certificate"), ], None, None, "Removes a X509 certificate"),
] ]
_BLOCKDEV_CALLS = [ _BLOCKDEV_CALLS = [
("bdev_sizes", MULTI, TMO_URGENT, [ ("bdev_sizes", MULTI, None, TMO_URGENT, [
("devices", None, None), ("devices", None, None),
], None, None, ], None, None,
"Gets the sizes of requested block devices present on a node"), "Gets the sizes of requested block devices present on a node"),
("blockdev_create", SINGLE, TMO_NORMAL, [ ("blockdev_create", SINGLE, None, TMO_NORMAL, [
("bdev", ED_OBJECT_DICT, None), ("bdev", ED_OBJECT_DICT, None),
("size", None, None), ("size", None, None),
("owner", None, None), ("owner", None, None),
("on_primary", None, None), ("on_primary", None, None),
("info", None, None), ("info", None, None),
], None, None, "Request creation of a given block device"), ], None, None, "Request creation of a given block device"),
("blockdev_wipe", SINGLE, TMO_SLOW, [ ("blockdev_wipe", SINGLE, None, TMO_SLOW, [
("bdev", ED_OBJECT_DICT, None), ("bdev", ED_OBJECT_DICT, None),
("offset", None, None), ("offset", None, None),
("size", None, None), ("size", None, None),
], None, None, ], None, None,
"Request wipe at given offset with given size of a block device"), "Request wipe at given offset with given size of a block device"),
("blockdev_remove", SINGLE, TMO_NORMAL, [ ("blockdev_remove", SINGLE, None, TMO_NORMAL, [
("bdev", ED_OBJECT_DICT, None), ("bdev", ED_OBJECT_DICT, None),
], None, None, "Request removal of a given block device"), ], None, None, "Request removal of a given block device"),
("blockdev_pause_resume_sync", SINGLE, TMO_NORMAL, [ ("blockdev_pause_resume_sync", SINGLE, None, TMO_NORMAL, [
("disks", ED_OBJECT_DICT_LIST, None), ("disks", ED_OBJECT_DICT_LIST, None),
("pause", None, None), ("pause", None, None),
], None, None, "Request a pause/resume of given block device"), ], None, None, "Request a pause/resume of given block device"),
("blockdev_assemble", SINGLE, TMO_NORMAL, [ ("blockdev_assemble", SINGLE, None, TMO_NORMAL, [
("disk", ED_OBJECT_DICT, None), ("disk", ED_OBJECT_DICT, None),
("owner", None, None), ("owner", None, None),
("on_primary", None, None), ("on_primary", None, None),
("idx", None, None), ("idx", None, None),
], None, None, "Request assembling of a given block device"), ], None, None, "Request assembling of a given block device"),
("blockdev_shutdown", SINGLE, TMO_NORMAL, [ ("blockdev_shutdown", SINGLE, None, TMO_NORMAL, [
("disk", ED_OBJECT_DICT, None), ("disk", ED_OBJECT_DICT, None),
], None, None, "Request shutdown of a given block device"), ], None, None, "Request shutdown of a given block device"),
("blockdev_addchildren", SINGLE, TMO_NORMAL, [ ("blockdev_addchildren", SINGLE, None, TMO_NORMAL, [
("bdev", ED_OBJECT_DICT, None), ("bdev", ED_OBJECT_DICT, None),
("ndevs", ED_OBJECT_DICT_LIST, None), ("ndevs", ED_OBJECT_DICT_LIST, None),
], None, None, ], None, None,
"Request adding a list of children to a (mirroring) device"), "Request adding a list of children to a (mirroring) device"),
("blockdev_removechildren", SINGLE, TMO_NORMAL, [ ("blockdev_removechildren", SINGLE, None, TMO_NORMAL, [
("bdev", ED_OBJECT_DICT, None), ("bdev", ED_OBJECT_DICT, None),
("ndevs", ED_OBJECT_DICT_LIST, None), ("ndevs", ED_OBJECT_DICT_LIST, None),
], None, None, ], None, None,
"Request removing a list of children from a (mirroring) device"), "Request removing a list of children from a (mirroring) device"),
("blockdev_close", SINGLE, TMO_NORMAL, [ ("blockdev_close", SINGLE, None, TMO_NORMAL, [
("instance_name", None, None), ("instance_name", None, None),
("disks", ED_OBJECT_DICT_LIST, None), ("disks", ED_OBJECT_DICT_LIST, None),
], None, None, "Closes the given block devices"), ], None, None, "Closes the given block devices"),
("blockdev_getsize", SINGLE, TMO_NORMAL, [ ("blockdev_getsize", SINGLE, None, TMO_NORMAL, [
("disks", ED_OBJECT_DICT_LIST, None), ("disks", ED_OBJECT_DICT_LIST, None),
], None, None, "Returns the size of the given disks"), ], None, None, "Returns the size of the given disks"),
("drbd_disconnect_net", MULTI, TMO_NORMAL, [ ("drbd_disconnect_net", MULTI, None, TMO_NORMAL, [
("nodes_ip", None, None), ("nodes_ip", None, None),
("disks", ED_OBJECT_DICT_LIST, None), ("disks", ED_OBJECT_DICT_LIST, None),
], None, None, "Disconnects the network of the given drbd devices"), ], None, None, "Disconnects the network of the given drbd devices"),
("drbd_attach_net", MULTI, TMO_NORMAL, [ ("drbd_attach_net", MULTI, None, TMO_NORMAL, [
("nodes_ip", None, None), ("nodes_ip", None, None),
("disks", ED_OBJECT_DICT_LIST, None), ("disks", ED_OBJECT_DICT_LIST, None),
("instance_name", None, None), ("instance_name", None, None),
("multimaster", None, None), ("multimaster", None, None),
], None, None, "Connects the given DRBD devices"), ], None, None, "Connects the given DRBD devices"),
("drbd_wait_sync", MULTI, TMO_SLOW, [ ("drbd_wait_sync", MULTI, None, TMO_SLOW, [
("nodes_ip", None, None), ("nodes_ip", None, None),
("disks", ED_OBJECT_DICT_LIST, None), ("disks", ED_OBJECT_DICT_LIST, None),
], None, None, ], None, None,
"Waits for the synchronization of drbd devices is complete"), "Waits for the synchronization of drbd devices is complete"),
("blockdev_grow", SINGLE, TMO_NORMAL, [ ("blockdev_grow", SINGLE, None, TMO_NORMAL, [
("cf_bdev", ED_OBJECT_DICT, None), ("cf_bdev", ED_OBJECT_DICT, None),
("amount", None, None), ("amount", None, None),
("dryrun", None, None), ("dryrun", None, None),
], None, None, "Request a snapshot of the given block device"), ], None, None, "Request a snapshot of the given block device"),
("blockdev_export", SINGLE, TMO_1DAY, [ ("blockdev_export", SINGLE, None, TMO_1DAY, [
("cf_bdev", ED_OBJECT_DICT, None), ("cf_bdev", ED_OBJECT_DICT, None),
("dest_node", None, None), ("dest_node", None, None),
("dest_path", None, None), ("dest_path", None, None),
("cluster_name", None, None), ("cluster_name", None, None),
], None, None, "Export a given disk to another node"), ], None, None, "Export a given disk to another node"),
("blockdev_snapshot", SINGLE, TMO_NORMAL, [ ("blockdev_snapshot", SINGLE, None, TMO_NORMAL, [
("cf_bdev", ED_OBJECT_DICT, None), ("cf_bdev", ED_OBJECT_DICT, None),
], None, None, "Export a given disk to another node"), ], None, None, "Export a given disk to another node"),
("blockdev_rename", SINGLE, TMO_NORMAL, [ ("blockdev_rename", SINGLE, None, TMO_NORMAL, [
("devlist", ED_BLOCKDEV_RENAME, None), ("devlist", ED_BLOCKDEV_RENAME, None),
], None, None, "Request rename of the given block devices"), ], None, None, "Request rename of the given block devices"),
("blockdev_find", SINGLE, TMO_NORMAL, [ ("blockdev_find", SINGLE, None, TMO_NORMAL, [
("disk", ED_OBJECT_DICT, None), ("disk", ED_OBJECT_DICT, None),
], None, _BlockdevFindPostProc, ], None, _BlockdevFindPostProc,
"Request identification of a given block device"), "Request identification of a given block device"),
("blockdev_getmirrorstatus", SINGLE, TMO_NORMAL, [ ("blockdev_getmirrorstatus", SINGLE, None, TMO_NORMAL, [
("disks", ED_OBJECT_DICT_LIST, None), ("disks", ED_OBJECT_DICT_LIST, None),
], None, _BlockdevGetMirrorStatusPostProc, ], None, _BlockdevGetMirrorStatusPostProc,
"Request status of a (mirroring) device"), "Request status of a (mirroring) device"),
("blockdev_getmirrorstatus_multi", MULTI, TMO_NORMAL, [ ("blockdev_getmirrorstatus_multi", MULTI, None, TMO_NORMAL, [
("node_disks", ED_NODE_TO_DISK_DICT, None), ("node_disks", ED_NODE_TO_DISK_DICT, None),
], _BlockdevGetMirrorStatusMultiPreProc, ], _BlockdevGetMirrorStatusMultiPreProc,
_BlockdevGetMirrorStatusMultiPostProc, _BlockdevGetMirrorStatusMultiPostProc,
...@@ -413,77 +414,78 @@ _BLOCKDEV_CALLS = [ ...@@ -413,77 +414,78 @@ _BLOCKDEV_CALLS = [
] ]
_OS_CALLS = [ _OS_CALLS = [
("os_diagnose", MULTI, TMO_FAST, [], None, None, ("os_diagnose", MULTI, None, TMO_FAST, [], None, None,
"Request a diagnose of OS definitions"), "Request a diagnose of OS definitions"),
("os_validate", MULTI, TMO_FAST, [ ("os_validate", MULTI, None, TMO_FAST, [
("required", None, None), ("required", None, None),
("name", None, None), ("name", None, None),
("checks", None, None), ("checks", None, None),
("params", None, None), ("params", None, None),
], None, None, "Run a validation routine for a given OS"), ], None, None, "Run a validation routine for a given OS"),
("os_get", SINGLE, TMO_FAST, [ ("os_get", SINGLE, None, TMO_FAST, [
("name", None, None), ("name", None, None),
], None, _OsGetPostProc, "Returns an OS definition"), ], None, _OsGetPostProc, "Returns an OS definition"),
] ]
_NODE_CALLS = [ _NODE_CALLS = [
("node_has_ip_address", SINGLE, TMO_FAST, [ ("node_has_ip_address", SINGLE, None, TMO_FAST, [
("address", None, "IP address"), ("address", None, "IP address"),
], None, None, "Checks if a node has the given IP address"), ], None, None, "Checks if a node has the given IP address"),
("node_info", MULTI, TMO_URGENT, [ ("node_info", MULTI, None, TMO_URGENT, [
("vg_names", None, ("vg_names", None,
"Names of the volume groups to ask for disk space information"), "Names of the volume groups to ask for disk space information"),
("hv_names", None, ("hv_names", None,
"Names of the hypervisors to ask for node information"), "Names of the hypervisors to ask for node information"),
], None, None, "Return node information"), ], None, None, "Return node information"),
("node_verify", MULTI, TMO_NORMAL, [ ("node_verify", MULTI, None, TMO_NORMAL, [
("checkdict", None, None), ("checkdict", None, None),
("cluster_name", None, None), ("cluster_name", None, None),
], None, None, "Request verification of given parameters"), ], None, None, "Request verification of given parameters"),
("node_volumes", MULTI, TMO_FAST, [], None, None, ("node_volumes", MULTI, None, TMO_FAST, [], None, None,
"Gets all volumes on node(s)"), "Gets all volumes on node(s)"),
("node_demote_from_mc", SINGLE, TMO_FAST, [], None, None, ("node_demote_from_mc", SINGLE, None, TMO_FAST, [], None, None,
"Demote a node from the master candidate role"), "Demote a node from the master candidate role"),
("node_powercycle", SINGLE, TMO_NORMAL, [ ("node_powercycle", SINGLE, None, TMO_NORMAL, [
("hypervisor", None, "Hypervisor type"), ("hypervisor", None, "Hypervisor type"),
], None, None, "Tries to powercycle a node"), ], None, None, "Tries to powercycle a node"),
] ]
_MISC_CALLS = [ _MISC_CALLS = [
("lv_list", MULTI, TMO_URGENT, [ ("lv_list", MULTI, None, TMO_URGENT, [
("vg_name", None, None), ("vg_name", None, None),
], None, None, "Gets the logical volumes present in a given volume group"), ], None, None, "Gets the logical volumes present in a given volume group"),
("vg_list", MULTI, TMO_URGENT, [], None, None, "Gets the volume group list"), ("vg_list", MULTI, None, TMO_URGENT, [], None, None,
("bridges_exist", SINGLE, TMO_URGENT, [ "Gets the volume group list"),
("bridges_exist", SINGLE, None, TMO_URGENT, [
("bridges_list", None, "Bridges which must be present on remote node"), ("bridges_list", None, "Bridges which must be present on remote node"),
], None, None, "Checks if a node has all the bridges given"), ], None, None, "Checks if a node has all the bridges given"),
("etc_hosts_modify", SINGLE, TMO_NORMAL, [ ("etc_hosts_modify", SINGLE, None, TMO_NORMAL, [
("mode", None, ("mode", None,
"Mode to operate; currently L{constants.ETC_HOSTS_ADD} or" "Mode to operate; currently L{constants.ETC_HOSTS_ADD} or"
" L{constants.ETC_HOSTS_REMOVE}"), " L{constants.ETC_HOSTS_REMOVE}"),
("name", None, "Hostname to be modified"), ("name", None, "Hostname to be modified"),
("ip", None, "IP address (L{constants.ETC_HOSTS_ADD} only)"), ("ip", None, "IP address (L{constants.ETC_HOSTS_ADD} only)"),
], None, None, "Modify hosts file with name"), ], None, None, "Modify hosts file with name"),
("drbd_helper", MULTI, TMO_URGENT, [], None, None, "Gets DRBD helper"), ("drbd_helper", MULTI, None, TMO_URGENT, [], None, None, "Gets DRBD helper"),
("run_oob", SINGLE, TMO_NORMAL, [ ("run_oob", SINGLE, None, TMO_NORMAL, [
("oob_program", None, None), ("oob_program", None, None),
("command", None, None), ("command", None, None),
("remote_node", None, None), ("remote_node", None, None),
("timeout", None, None), ("timeout", None, None),
], None, None, "Runs out-of-band command"), ], None, None, "Runs out-of-band command"),
("hooks_runner", MULTI, TMO_NORMAL, [ ("hooks_runner", MULTI, None, TMO_NORMAL, [
("hpath", None, None), ("hpath", None, None),
("phase", None, None), ("phase", None, None),
("env", None, None), ("env", None, None),
], None, None, "Call the hooks runner"), ], None, None, "Call the hooks runner"),
("iallocator_runner", SINGLE, TMO_NORMAL, [ ("iallocator_runner", SINGLE, None, TMO_NORMAL, [
("name", None, "Iallocator name"), ("name", None, "Iallocator name"),
("idata", None, "JSON-encoded input string"), ("idata", None, "JSON-encoded input string"),
], None, None, "Call an iallocator on a remote node"), ], None, None, "Call an iallocator on a remote node"),
("test_delay", MULTI, _TestDelayTimeout, [ ("test_delay", MULTI, None, _TestDelayTimeout, [
("duration", None, None), ("duration", None, None),
], None, None, "Sleep for a fixed time on given node(s)"), ], None, None, "Sleep for a fixed time on given node(s)"),
("hypervisor_validate_params", MULTI, TMO_NORMAL, [ ("hypervisor_validate_params", MULTI, None, TMO_NORMAL, [
("hvname", None, "Hypervisor name"), ("hvname", None, "Hypervisor name"),
("hvfull", None, "Parameters to be validated"), ("hvfull", None, "Parameters to be validated"),
], None, None, "Validate hypervisor params"), ], None, None, "Validate hypervisor params"),
...@@ -495,51 +497,53 @@ CALLS = { ...@@ -495,51 +497,53 @@ CALLS = {
_FILE_STORAGE_CALLS + _MISC_CALLS + _INSTANCE_CALLS + _FILE_STORAGE_CALLS + _MISC_CALLS + _INSTANCE_CALLS +
_BLOCKDEV_CALLS + _STORAGE_CALLS), _BLOCKDEV_CALLS + _STORAGE_CALLS),
"RpcClientJobQueue": _Prepare([ "RpcClientJobQueue": _Prepare([
("jobqueue_update", MULTI, TMO_URGENT, [ ("jobqueue_update", MULTI, None, TMO_URGENT, [
("file_name", None, None), ("file_name", None, None),
("content", ED_COMPRESS, None), ("content", ED_COMPRESS, None),
], None, None, "Update job queue file"), ], None, None, "Update job queue file"),
("jobqueue_purge", SINGLE, TMO_NORMAL, [], None, None, "Purge job queue"), ("jobqueue_purge", SINGLE, None, TMO_NORMAL, [], None, None,
("jobqueue_rename", MULTI, TMO_URGENT, [ "Purge job queue"),
("jobqueue_rename", MULTI, None, TMO_URGENT, [
("rename", None, None), ("rename", None, None),
], None, None, "Rename job queue file"), ], None, None, "Rename job queue file"),
]), ]),
"RpcClientBootstrap": _Prepare([ "RpcClientBootstrap": _Prepare([
("node_start_master_daemons", SINGLE, TMO_FAST, [ ("node_start_master_daemons", SINGLE, None, TMO_FAST, [
("no_voting", None, None), ("no_voting", None, None),
], None, None, "Starts master daemons on a node"), ], None, None, "Starts master daemons on a node"),
("node_activate_master_ip", SINGLE, TMO_FAST, [ ("node_activate_master_ip", SINGLE, None, TMO_FAST, [
("master_params", ED_OBJECT_DICT, "Network parameters of the master"), ("master_params", ED_OBJECT_DICT, "Network parameters of the master"),
("use_external_mip_script", None, ("use_external_mip_script", None,
"Whether to use the user-provided master IP address setup script"), "Whether to use the user-provided master IP address setup script"),
], None, None, ], None, None,
"Activates master IP on a node"), "Activates master IP on a node"),
("node_stop_master", SINGLE, TMO_FAST, [], None, None, ("node_stop_master", SINGLE, None, TMO_FAST, [], None, None,
"Deactivates master IP and stops master daemons on a node"), "Deactivates master IP and stops master daemons on a node"),
("node_deactivate_master_ip", SINGLE, TMO_FAST, [ ("node_deactivate_master_ip", SINGLE, None, TMO_FAST, [
("master_params", ED_OBJECT_DICT, "Network parameters of the master"), ("master_params", ED_OBJECT_DICT, "Network parameters of the master"),
("use_external_mip_script", None, ("use_external_mip_script", None,
"Whether to use the user-provided master IP address setup script"), "Whether to use the user-provided master IP address setup script"),
], None, None, ], None, None,
"Deactivates master IP on a node"), "Deactivates master IP on a node"),
("node_change_master_netmask", SINGLE, TMO_FAST, [ ("node_change_master_netmask", SINGLE, None, TMO_FAST, [
("old_netmask", None, "The old value of the netmask"), ("old_netmask", None, "The old value of the netmask"),
("netmask", None, "The new value of the netmask"), ("netmask", None, "The new value of the netmask"),
("master_ip", None, "The master IP"), ("master_ip", None, "The master IP"),
("master_netdev", None, "The master network device"), ("master_netdev", None, "The master network device"),
], None, None, "Change master IP netmask"), ], None, None, "Change master IP netmask"),
("node_leave_cluster", SINGLE, TMO_NORMAL, [ ("node_leave_cluster", SINGLE, None, TMO_NORMAL, [
("modify_ssh_setup", None, None), ("modify_ssh_setup", None, None),
], None, None, ], None, None,
"Requests a node to clean the cluster information it has"), "Requests a node to clean the cluster information it has"),
("master_info", MULTI, TMO_URGENT, [], None, None, "Query master info"), ("master_info", MULTI, None, TMO_URGENT, [], None, None,
("version", MULTI, TMO_URGENT, [], None, None, "Query node version"), "Query master info"),
("version", MULTI, None, TMO_URGENT, [], None, None, "Query node version"),
]), ]),
"RpcClientConfig": _Prepare([ "RpcClientConfig": _Prepare([
("upload_file", MULTI, TMO_NORMAL, [ ("upload_file", MULTI, None, TMO_NORMAL, [
("file_name", ED_FILE_DETAILS, None), ("file_name", ED_FILE_DETAILS, None),
], None, None, "Upload a file"), ], None, None, "Upload a file"),
("write_ssconf_files", MULTI, TMO_NORMAL, [ ("write_ssconf_files", MULTI, None, TMO_NORMAL, [
("values", None, None), ("values", None, None),
], None, None, "Write ssconf files"), ], None, None, "Write ssconf files"),
]), ]),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment