Statistics
| Branch: | Tag: | Revision:

root / lib / rpc_defs.py @ 32449822

History | View | Annotate | Download (25.1 kB)

1 d5a2a550 Michael Hanselmann
#
2 d5a2a550 Michael Hanselmann
#
3 d5a2a550 Michael Hanselmann
4 cad0723b Iustin Pop
# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Google Inc.
5 d5a2a550 Michael Hanselmann
#
6 d5a2a550 Michael Hanselmann
# This program is free software; you can redistribute it and/or modify
7 d5a2a550 Michael Hanselmann
# it under the terms of the GNU General Public License as published by
8 d5a2a550 Michael Hanselmann
# the Free Software Foundation; either version 2 of the License, or
9 d5a2a550 Michael Hanselmann
# (at your option) any later version.
10 d5a2a550 Michael Hanselmann
#
11 d5a2a550 Michael Hanselmann
# This program is distributed in the hope that it will be useful, but
12 d5a2a550 Michael Hanselmann
# WITHOUT ANY WARRANTY; without even the implied warranty of
13 d5a2a550 Michael Hanselmann
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 d5a2a550 Michael Hanselmann
# General Public License for more details.
15 d5a2a550 Michael Hanselmann
#
16 d5a2a550 Michael Hanselmann
# You should have received a copy of the GNU General Public License
17 d5a2a550 Michael Hanselmann
# along with this program; if not, write to the Free Software
18 d5a2a550 Michael Hanselmann
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 d5a2a550 Michael Hanselmann
# 02110-1301, USA.
20 d5a2a550 Michael Hanselmann
21 d5a2a550 Michael Hanselmann
"""RPC definitions for communication between master and node daemons.
22 d5a2a550 Michael Hanselmann

23 033684dd Michael Hanselmann
RPC definition fields:
24 033684dd Michael Hanselmann

25 033684dd Michael Hanselmann
  - Name as string
26 033684dd Michael Hanselmann
  - L{SINGLE} for single-node calls, L{MULTI} for multi-node
27 dd6d2d09 Michael Hanselmann
  - Name resolver option(s), can be callable receiving all arguments in a tuple
28 2ff587d4 Agata Murawska
  - Timeout (e.g. L{constants.RPC_TMO_NORMAL}), or callback receiving all
29 2ff587d4 Agata Murawska
    arguments in a tuple to calculate timeout
30 033684dd Michael Hanselmann
  - List of arguments as tuples
31 033684dd Michael Hanselmann

32 033684dd Michael Hanselmann
    - Name as string
33 cd40dc53 Michael Hanselmann
    - Argument kind used for encoding/decoding
34 033684dd Michael Hanselmann
    - Description for docstring (can be C{None})
35 033684dd Michael Hanselmann

36 60154921 Iustin Pop
  - Custom body encoder (e.g. for preparing per-node bodies)
37 033684dd Michael Hanselmann
  - Return value wrapper (e.g. for deserializing into L{objects}-based objects)
38 033684dd Michael Hanselmann
  - Short call description for docstring
39 033684dd Michael Hanselmann

40 d5a2a550 Michael Hanselmann
"""
41 d5a2a550 Michael Hanselmann
42 2ff587d4 Agata Murawska
from ganeti import constants
43 a09f9847 Michael Hanselmann
from ganeti import utils
44 26d502d0 Michael Hanselmann
from ganeti import objects
45 a09f9847 Michael Hanselmann
46 d5a2a550 Michael Hanselmann
47 0d1e78dd Michael Hanselmann
# Guidelines for choosing timeouts:
48 2ff587d4 Agata Murawska
# - call used during watcher: timeout of 1min, constants.RPC_TMO_URGENT
49 2ff587d4 Agata Murawska
# - trivial (but be sure it is trivial)
50 2ff587d4 Agata Murawska
#     (e.g. reading a file): 5min, constants.RPC_TMO_FAST
51 2ff587d4 Agata Murawska
# - other calls: 15 min, constants.RPC_TMO_NORMAL
52 2ff587d4 Agata Murawska
# - special calls (instance add, etc.):
53 2ff587d4 Agata Murawska
#     either constants.RPC_TMO_SLOW (1h) or huge timeouts
54 d5a2a550 Michael Hanselmann
55 d5a2a550 Michael Hanselmann
SINGLE = "single-node"
56 d5a2a550 Michael Hanselmann
MULTI = "multi-node"
57 d5a2a550 Michael Hanselmann
58 890ea4ce Michael Hanselmann
ACCEPT_OFFLINE_NODE = object()
59 890ea4ce Michael Hanselmann
60 cd40dc53 Michael Hanselmann
# Constants for encoding/decoding
61 cd40dc53 Michael Hanselmann
(ED_OBJECT_DICT,
62 cd40dc53 Michael Hanselmann
 ED_OBJECT_DICT_LIST,
63 cd40dc53 Michael Hanselmann
 ED_INST_DICT,
64 5fce6a89 Constantinos Venetsanopoulos
 ED_INST_DICT_HVP_BEP_DP,
65 cd40dc53 Michael Hanselmann
 ED_NODE_TO_DISK_DICT,
66 b8291e00 René Nussbaumer
 ED_INST_DICT_OSP_DP,
67 cd40dc53 Michael Hanselmann
 ED_IMPEXP_IO,
68 cd40dc53 Michael Hanselmann
 ED_FILE_DETAILS,
69 cd40dc53 Michael Hanselmann
 ED_FINALIZE_EXPORT_DISKS,
70 cd40dc53 Michael Hanselmann
 ED_COMPRESS,
71 aedf5fd7 René Nussbaumer
 ED_BLOCKDEV_RENAME,
72 aedf5fd7 René Nussbaumer
 ED_DISKS_DICT_DP,
73 235a6b29 Thomas Thrainer
 ED_MULTI_DISKS_DICT_DP,
74 cbe4a0a5 Dimitris Aragiorgis
 ED_SINGLE_DISK_DICT_DP,
75 235a6b29 Thomas Thrainer
 ED_NIC_DICT) = range(1, 16)
76 d565f83f Michael Hanselmann
77 a09f9847 Michael Hanselmann
78 a09f9847 Michael Hanselmann
def _Prepare(calls):
79 a09f9847 Michael Hanselmann
  """Converts list of calls to dictionary.
80 a09f9847 Michael Hanselmann

81 a09f9847 Michael Hanselmann
  """
82 a09f9847 Michael Hanselmann
  return utils.SequenceToDict(calls)
83 a09f9847 Michael Hanselmann
84 a09f9847 Michael Hanselmann
85 26d502d0 Michael Hanselmann
def _MigrationStatusPostProc(result):
86 26d502d0 Michael Hanselmann
  """Post-processor for L{rpc.RpcRunner.call_instance_get_migration_status}.
87 26d502d0 Michael Hanselmann

88 26d502d0 Michael Hanselmann
  """
89 26d502d0 Michael Hanselmann
  if not result.fail_msg and result.payload is not None:
90 26d502d0 Michael Hanselmann
    result.payload = objects.MigrationStatus.FromDict(result.payload)
91 26d502d0 Michael Hanselmann
  return result
92 26d502d0 Michael Hanselmann
93 26d502d0 Michael Hanselmann
94 26d502d0 Michael Hanselmann
def _BlockdevFindPostProc(result):
95 26d502d0 Michael Hanselmann
  """Post-processor for L{rpc.RpcRunner.call_blockdev_find}.
96 26d502d0 Michael Hanselmann

97 26d502d0 Michael Hanselmann
  """
98 26d502d0 Michael Hanselmann
  if not result.fail_msg and result.payload is not None:
99 26d502d0 Michael Hanselmann
    result.payload = objects.BlockDevStatus.FromDict(result.payload)
100 26d502d0 Michael Hanselmann
  return result
101 26d502d0 Michael Hanselmann
102 26d502d0 Michael Hanselmann
103 26d502d0 Michael Hanselmann
def _BlockdevGetMirrorStatusPostProc(result):
104 26d502d0 Michael Hanselmann
  """Post-processor for L{rpc.RpcRunner.call_blockdev_getmirrorstatus}.
105 26d502d0 Michael Hanselmann

106 26d502d0 Michael Hanselmann
  """
107 26d502d0 Michael Hanselmann
  if not result.fail_msg:
108 26d502d0 Michael Hanselmann
    result.payload = map(objects.BlockDevStatus.FromDict, result.payload)
109 26d502d0 Michael Hanselmann
  return result
110 26d502d0 Michael Hanselmann
111 26d502d0 Michael Hanselmann
112 5449685e Iustin Pop
def _BlockdevGetMirrorStatusMultiPreProc(node, args):
113 5449685e Iustin Pop
  """Prepares the appropriate node values for blockdev_getmirrorstatus_multi.
114 5449685e Iustin Pop

115 5449685e Iustin Pop
  """
116 5449685e Iustin Pop
  # there should be only one argument to this RPC, already holding a
117 5449685e Iustin Pop
  # node->disks dictionary, we just need to extract the value for the
118 5449685e Iustin Pop
  # current node
119 5449685e Iustin Pop
  assert len(args) == 1
120 5449685e Iustin Pop
  return [args[0][node]]
121 5449685e Iustin Pop
122 5449685e Iustin Pop
123 26d502d0 Michael Hanselmann
def _BlockdevGetMirrorStatusMultiPostProc(result):
124 26d502d0 Michael Hanselmann
  """Post-processor for L{rpc.RpcRunner.call_blockdev_getmirrorstatus_multi}.
125 26d502d0 Michael Hanselmann

126 26d502d0 Michael Hanselmann
  """
127 82cce526 Michael Hanselmann
  if not result.fail_msg:
128 82cce526 Michael Hanselmann
    for idx, (success, status) in enumerate(result.payload):
129 26d502d0 Michael Hanselmann
      if success:
130 82cce526 Michael Hanselmann
        result.payload[idx] = (success, objects.BlockDevStatus.FromDict(status))
131 26d502d0 Michael Hanselmann
132 26d502d0 Michael Hanselmann
  return result
133 26d502d0 Michael Hanselmann
134 26d502d0 Michael Hanselmann
135 1a3c5d4e Bernardo Dal Seno
def _NodeInfoPreProc(node, args):
136 da803ff1 Helga Velroyen
  """Prepare the storage_units argument for node_info calls."""
137 da803ff1 Helga Velroyen
  assert len(args) == 2
138 da803ff1 Helga Velroyen
  # The storage_units argument is either a dictionary with one value for each
139 da803ff1 Helga Velroyen
  # node, or a fixed value to be used for all the nodes
140 da803ff1 Helga Velroyen
  if type(args[0]) is dict:
141 da803ff1 Helga Velroyen
    return [args[0][node], args[1]]
142 1a3c5d4e Bernardo Dal Seno
  else:
143 1a3c5d4e Bernardo Dal Seno
    return args
144 1a3c5d4e Bernardo Dal Seno
145 1a3c5d4e Bernardo Dal Seno
146 1c3231aa Thomas Thrainer
def _DrbdCallsPreProc(node, args):
147 1c3231aa Thomas Thrainer
  """Add the target node UUID as additional field for DRBD related calls."""
148 1c3231aa Thomas Thrainer
  return args + [node]
149 1c3231aa Thomas Thrainer
150 1c3231aa Thomas Thrainer
151 26d502d0 Michael Hanselmann
def _OsGetPostProc(result):
152 26d502d0 Michael Hanselmann
  """Post-processor for L{rpc.RpcRunner.call_os_get}.
153 26d502d0 Michael Hanselmann

154 26d502d0 Michael Hanselmann
  """
155 26d502d0 Michael Hanselmann
  if not result.fail_msg and isinstance(result.payload, dict):
156 26d502d0 Michael Hanselmann
    result.payload = objects.OS.FromDict(result.payload)
157 26d502d0 Michael Hanselmann
  return result
158 26d502d0 Michael Hanselmann
159 26d502d0 Michael Hanselmann
160 26d502d0 Michael Hanselmann
def _ImpExpStatusPostProc(result):
161 26d502d0 Michael Hanselmann
  """Post-processor for import/export status.
162 26d502d0 Michael Hanselmann

163 26d502d0 Michael Hanselmann
  @rtype: Payload containing list of L{objects.ImportExportStatus} instances
164 26d502d0 Michael Hanselmann
  @return: Returns a list of the state of each named import/export or None if
165 26d502d0 Michael Hanselmann
           a status couldn't be retrieved
166 26d502d0 Michael Hanselmann

167 26d502d0 Michael Hanselmann
  """
168 26d502d0 Michael Hanselmann
  if not result.fail_msg:
169 26d502d0 Michael Hanselmann
    decoded = []
170 26d502d0 Michael Hanselmann
171 26d502d0 Michael Hanselmann
    for i in result.payload:
172 26d502d0 Michael Hanselmann
      if i is None:
173 26d502d0 Michael Hanselmann
        decoded.append(None)
174 26d502d0 Michael Hanselmann
        continue
175 26d502d0 Michael Hanselmann
      decoded.append(objects.ImportExportStatus.FromDict(i))
176 26d502d0 Michael Hanselmann
177 26d502d0 Michael Hanselmann
    result.payload = decoded
178 26d502d0 Michael Hanselmann
179 26d502d0 Michael Hanselmann
  return result
180 26d502d0 Michael Hanselmann
181 26d502d0 Michael Hanselmann
182 f7d9b3aa Michael Hanselmann
def _TestDelayTimeout((duration, )):
183 f7d9b3aa Michael Hanselmann
  """Calculate timeout for "test_delay" RPC.
184 f7d9b3aa Michael Hanselmann

185 f7d9b3aa Michael Hanselmann
  """
186 f7d9b3aa Michael Hanselmann
  return int(duration + 5)
187 f7d9b3aa Michael Hanselmann
188 f7d9b3aa Michael Hanselmann
189 033684dd Michael Hanselmann
_FILE_STORAGE_CALLS = [
190 2ff587d4 Agata Murawska
  ("file_storage_dir_create", SINGLE, None, constants.RPC_TMO_FAST, [
191 033684dd Michael Hanselmann
    ("file_storage_dir", None, "File storage directory"),
192 60154921 Iustin Pop
    ], None, None, "Create the given file storage directory"),
193 2ff587d4 Agata Murawska
  ("file_storage_dir_remove", SINGLE, None, constants.RPC_TMO_FAST, [
194 033684dd Michael Hanselmann
    ("file_storage_dir", None, "File storage directory"),
195 60154921 Iustin Pop
    ], None, None, "Remove the given file storage directory"),
196 2ff587d4 Agata Murawska
  ("file_storage_dir_rename", SINGLE, None, constants.RPC_TMO_FAST, [
197 033684dd Michael Hanselmann
    ("old_file_storage_dir", None, "Old name"),
198 033684dd Michael Hanselmann
    ("new_file_storage_dir", None, "New name"),
199 60154921 Iustin Pop
    ], None, None, "Rename file storage directory"),
200 033684dd Michael Hanselmann
  ]
201 033684dd Michael Hanselmann
202 033684dd Michael Hanselmann
_STORAGE_CALLS = [
203 2ff587d4 Agata Murawska
  ("storage_list", MULTI, None, constants.RPC_TMO_NORMAL, [
204 033684dd Michael Hanselmann
    ("su_name", None, None),
205 033684dd Michael Hanselmann
    ("su_args", None, None),
206 033684dd Michael Hanselmann
    ("name", None, None),
207 033684dd Michael Hanselmann
    ("fields", None, None),
208 60154921 Iustin Pop
    ], None, None, "Get list of storage units"),
209 2ff587d4 Agata Murawska
  ("storage_modify", SINGLE, None, constants.RPC_TMO_NORMAL, [
210 033684dd Michael Hanselmann
    ("su_name", None, None),
211 033684dd Michael Hanselmann
    ("su_args", None, None),
212 033684dd Michael Hanselmann
    ("name", None, None),
213 033684dd Michael Hanselmann
    ("changes", None, None),
214 60154921 Iustin Pop
    ], None, None, "Modify a storage unit"),
215 2ff587d4 Agata Murawska
  ("storage_execute", SINGLE, None, constants.RPC_TMO_NORMAL, [
216 033684dd Michael Hanselmann
    ("su_name", None, None),
217 033684dd Michael Hanselmann
    ("su_args", None, None),
218 033684dd Michael Hanselmann
    ("name", None, None),
219 033684dd Michael Hanselmann
    ("op", None, None),
220 60154921 Iustin Pop
    ], None, None, "Executes an operation on a storage unit"),
221 033684dd Michael Hanselmann
  ]
222 033684dd Michael Hanselmann
223 033684dd Michael Hanselmann
_INSTANCE_CALLS = [
224 2ff587d4 Agata Murawska
  ("instance_info", SINGLE, None, constants.RPC_TMO_URGENT, [
225 033684dd Michael Hanselmann
    ("instance", None, "Instance name"),
226 033684dd Michael Hanselmann
    ("hname", None, "Hypervisor type"),
227 0bbec3af Helga Velroyen
    ("hvparams", None, "Hypervisor parameters"),
228 60154921 Iustin Pop
    ], None, None, "Returns information about a single instance"),
229 2ff587d4 Agata Murawska
  ("all_instances_info", MULTI, None, constants.RPC_TMO_URGENT, [
230 033684dd Michael Hanselmann
    ("hypervisor_list", None, "Hypervisors to query for instances"),
231 0200a1af Helga Velroyen
    ("all_hvparams", None, "Dictionary mapping hypervisor names to hvparams"),
232 60154921 Iustin Pop
    ], None, None,
233 60154921 Iustin Pop
   "Returns information about all instances on the given nodes"),
234 2ff587d4 Agata Murawska
  ("instance_list", MULTI, None, constants.RPC_TMO_URGENT, [
235 033684dd Michael Hanselmann
    ("hypervisor_list", None, "Hypervisors to query for instances"),
236 8ac806e6 Helga Velroyen
    ("hvparams", None, "Hvparams of all hypervisors"),
237 60154921 Iustin Pop
    ], None, None, "Returns the list of running instances on the given nodes"),
238 2ff587d4 Agata Murawska
  ("instance_reboot", SINGLE, None, constants.RPC_TMO_NORMAL, [
239 cd40dc53 Michael Hanselmann
    ("inst", ED_INST_DICT, "Instance object"),
240 033684dd Michael Hanselmann
    ("reboot_type", None, None),
241 033684dd Michael Hanselmann
    ("shutdown_timeout", None, None),
242 55cec070 Michele Tartara
    ("reason", None, "The reason for the reboot"),
243 60154921 Iustin Pop
    ], None, None, "Returns the list of running instances on the given nodes"),
244 2ff587d4 Agata Murawska
  ("instance_shutdown", SINGLE, None, constants.RPC_TMO_NORMAL, [
245 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
246 033684dd Michael Hanselmann
    ("timeout", None, None),
247 1f350e0f Michele Tartara
    ("reason", None, "The reason for the shutdown"),
248 60154921 Iustin Pop
    ], None, None, "Stops an instance"),
249 2ff587d4 Agata Murawska
  ("instance_balloon_memory", SINGLE, None, constants.RPC_TMO_NORMAL, [
250 ebe466d8 Guido Trotter
    ("instance", ED_INST_DICT, "Instance object"),
251 ebe466d8 Guido Trotter
    ("memory", None, None),
252 ebe466d8 Guido Trotter
    ], None, None, "Modify the amount of an instance's runtime memory"),
253 2ff587d4 Agata Murawska
  ("instance_run_rename", SINGLE, None, constants.RPC_TMO_SLOW, [
254 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
255 033684dd Michael Hanselmann
    ("old_name", None, None),
256 033684dd Michael Hanselmann
    ("debug", None, None),
257 60154921 Iustin Pop
    ], None, None, "Run the OS rename script for an instance"),
258 2ff587d4 Agata Murawska
  ("instance_migratable", SINGLE, None, constants.RPC_TMO_NORMAL, [
259 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
260 60154921 Iustin Pop
    ], None, None, "Checks whether the given instance can be migrated"),
261 2ff587d4 Agata Murawska
  ("migration_info", SINGLE, None, constants.RPC_TMO_NORMAL, [
262 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
263 60154921 Iustin Pop
    ], None, None,
264 033684dd Michael Hanselmann
    "Gather the information necessary to prepare an instance migration"),
265 2ff587d4 Agata Murawska
  ("accept_instance", SINGLE, None, constants.RPC_TMO_NORMAL, [
266 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
267 033684dd Michael Hanselmann
    ("info", None, "Result for the call_migration_info call"),
268 033684dd Michael Hanselmann
    ("target", None, "Target hostname (usually an IP address)"),
269 60154921 Iustin Pop
    ], None, None, "Prepare a node to accept an instance"),
270 2ff587d4 Agata Murawska
  ("instance_finalize_migration_dst", SINGLE, None, constants.RPC_TMO_NORMAL, [
271 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
272 033684dd Michael Hanselmann
    ("info", None, "Result for the call_migration_info call"),
273 033684dd Michael Hanselmann
    ("success", None, "Whether the migration was a success or failure"),
274 60154921 Iustin Pop
    ], None, None, "Finalize any target-node migration specific operation"),
275 2ff587d4 Agata Murawska
  ("instance_migrate", SINGLE, None, constants.RPC_TMO_SLOW, [
276 bc0a2284 Helga Velroyen
    ("cluster_name", None, "Cluster name"),
277 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
278 033684dd Michael Hanselmann
    ("target", None, "Target node name"),
279 033684dd Michael Hanselmann
    ("live", None, "Whether the migration should be done live or not"),
280 60154921 Iustin Pop
    ], None, None, "Migrate an instance"),
281 2ff587d4 Agata Murawska
  ("instance_finalize_migration_src", SINGLE, None, constants.RPC_TMO_SLOW, [
282 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
283 033684dd Michael Hanselmann
    ("success", None, "Whether the migration succeeded or not"),
284 033684dd Michael Hanselmann
    ("live", None, "Whether the user requested a live migration or not"),
285 60154921 Iustin Pop
    ], None, None, "Finalize the instance migration on the source node"),
286 2ff587d4 Agata Murawska
  ("instance_get_migration_status", SINGLE, None, constants.RPC_TMO_SLOW, [
287 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
288 60154921 Iustin Pop
    ], None, _MigrationStatusPostProc, "Report migration status"),
289 2ff587d4 Agata Murawska
  ("instance_start", SINGLE, None, constants.RPC_TMO_NORMAL, [
290 5fce6a89 Constantinos Venetsanopoulos
    ("instance_hvp_bep", ED_INST_DICT_HVP_BEP_DP, None),
291 c4de9b7a Michael Hanselmann
    ("startup_paused", None, None),
292 1fa6fcba Michele Tartara
    ("reason", None, "The reason for the startup"),
293 60154921 Iustin Pop
    ], None, None, "Starts an instance"),
294 2ff587d4 Agata Murawska
  ("instance_os_add", SINGLE, None, constants.RPC_TMO_1DAY, [
295 b8291e00 René Nussbaumer
    ("instance_osp", ED_INST_DICT_OSP_DP, None),
296 c4de9b7a Michael Hanselmann
    ("reinstall", None, None),
297 c4de9b7a Michael Hanselmann
    ("debug", None, None),
298 60154921 Iustin Pop
    ], None, None, "Starts an instance"),
299 033684dd Michael Hanselmann
  ]
300 033684dd Michael Hanselmann
301 033684dd Michael Hanselmann
_IMPEXP_CALLS = [
302 2ff587d4 Agata Murawska
  ("import_start", SINGLE, None, constants.RPC_TMO_NORMAL, [
303 cd40dc53 Michael Hanselmann
    ("opts", ED_OBJECT_DICT, None),
304 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, None),
305 46c293f0 Michael Hanselmann
    ("component", None, None),
306 cd40dc53 Michael Hanselmann
    ("dest", ED_IMPEXP_IO, "Import destination"),
307 60154921 Iustin Pop
    ], None, None, "Starts an import daemon"),
308 2ff587d4 Agata Murawska
  ("export_start", SINGLE, None, constants.RPC_TMO_NORMAL, [
309 cd40dc53 Michael Hanselmann
    ("opts", ED_OBJECT_DICT, None),
310 46c293f0 Michael Hanselmann
    ("host", None, None),
311 46c293f0 Michael Hanselmann
    ("port", None, None),
312 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, None),
313 46c293f0 Michael Hanselmann
    ("component", None, None),
314 cd40dc53 Michael Hanselmann
    ("source", ED_IMPEXP_IO, "Export source"),
315 60154921 Iustin Pop
    ], None, None, "Starts an export daemon"),
316 2ff587d4 Agata Murawska
  ("impexp_status", SINGLE, None, constants.RPC_TMO_FAST, [
317 033684dd Michael Hanselmann
    ("names", None, "Import/export names"),
318 60154921 Iustin Pop
    ], None, _ImpExpStatusPostProc, "Gets the status of an import or export"),
319 2ff587d4 Agata Murawska
  ("impexp_abort", SINGLE, None, constants.RPC_TMO_NORMAL, [
320 033684dd Michael Hanselmann
    ("name", None, "Import/export name"),
321 60154921 Iustin Pop
    ], None, None, "Aborts an import or export"),
322 2ff587d4 Agata Murawska
  ("impexp_cleanup", SINGLE, None, constants.RPC_TMO_NORMAL, [
323 033684dd Michael Hanselmann
    ("name", None, "Import/export name"),
324 60154921 Iustin Pop
    ], None, None, "Cleans up after an import or export"),
325 2ff587d4 Agata Murawska
  ("export_info", SINGLE, None, constants.RPC_TMO_FAST, [
326 033684dd Michael Hanselmann
    ("path", None, None),
327 60154921 Iustin Pop
    ], None, None, "Queries the export information in a given path"),
328 2ff587d4 Agata Murawska
  ("finalize_export", SINGLE, None, constants.RPC_TMO_NORMAL, [
329 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, None),
330 cd40dc53 Michael Hanselmann
    ("snap_disks", ED_FINALIZE_EXPORT_DISKS, None),
331 60154921 Iustin Pop
    ], None, None, "Request the completion of an export operation"),
332 2ff587d4 Agata Murawska
  ("export_list", MULTI, None, constants.RPC_TMO_FAST, [], None, None,
333 60154921 Iustin Pop
   "Gets the stored exports list"),
334 2ff587d4 Agata Murawska
  ("export_remove", SINGLE, None, constants.RPC_TMO_FAST, [
335 033684dd Michael Hanselmann
    ("export", None, None),
336 60154921 Iustin Pop
    ], None, None, "Requests removal of a given export"),
337 033684dd Michael Hanselmann
  ]
338 033684dd Michael Hanselmann
339 033684dd Michael Hanselmann
_X509_CALLS = [
340 2ff587d4 Agata Murawska
  ("x509_cert_create", SINGLE, None, constants.RPC_TMO_NORMAL, [
341 033684dd Michael Hanselmann
    ("validity", None, "Validity in seconds"),
342 60154921 Iustin Pop
    ], None, None, "Creates a new X509 certificate for SSL/TLS"),
343 2ff587d4 Agata Murawska
  ("x509_cert_remove", SINGLE, None, constants.RPC_TMO_NORMAL, [
344 033684dd Michael Hanselmann
    ("name", None, "Certificate name"),
345 60154921 Iustin Pop
    ], None, None, "Removes a X509 certificate"),
346 033684dd Michael Hanselmann
  ]
347 033684dd Michael Hanselmann
348 033684dd Michael Hanselmann
_BLOCKDEV_CALLS = [
349 2ff587d4 Agata Murawska
  ("bdev_sizes", MULTI, None, constants.RPC_TMO_URGENT, [
350 033684dd Michael Hanselmann
    ("devices", None, None),
351 60154921 Iustin Pop
    ], None, None,
352 60154921 Iustin Pop
   "Gets the sizes of requested block devices present on a node"),
353 2ff587d4 Agata Murawska
  ("blockdev_create", SINGLE, None, constants.RPC_TMO_NORMAL, [
354 cd40dc53 Michael Hanselmann
    ("bdev", ED_OBJECT_DICT, None),
355 033684dd Michael Hanselmann
    ("size", None, None),
356 033684dd Michael Hanselmann
    ("owner", None, None),
357 033684dd Michael Hanselmann
    ("on_primary", None, None),
358 033684dd Michael Hanselmann
    ("info", None, None),
359 ee1478e5 Bernardo Dal Seno
    ("exclusive_storage", None, None),
360 60154921 Iustin Pop
    ], None, None, "Request creation of a given block device"),
361 2ff587d4 Agata Murawska
  ("blockdev_wipe", SINGLE, None, constants.RPC_TMO_SLOW, [
362 c7ea9827 René Nussbaumer
    ("bdev", ED_SINGLE_DISK_DICT_DP, None),
363 033684dd Michael Hanselmann
    ("offset", None, None),
364 033684dd Michael Hanselmann
    ("size", None, None),
365 60154921 Iustin Pop
    ], None, None,
366 033684dd Michael Hanselmann
    "Request wipe at given offset with given size of a block device"),
367 2ff587d4 Agata Murawska
  ("blockdev_remove", SINGLE, None, constants.RPC_TMO_NORMAL, [
368 cd40dc53 Michael Hanselmann
    ("bdev", ED_OBJECT_DICT, None),
369 60154921 Iustin Pop
    ], None, None, "Request removal of a given block device"),
370 2ff587d4 Agata Murawska
  ("blockdev_pause_resume_sync", SINGLE, None, constants.RPC_TMO_NORMAL, [
371 c7ea9827 René Nussbaumer
    ("disks", ED_DISKS_DICT_DP, None),
372 033684dd Michael Hanselmann
    ("pause", None, None),
373 60154921 Iustin Pop
    ], None, None, "Request a pause/resume of given block device"),
374 2ff587d4 Agata Murawska
  ("blockdev_assemble", SINGLE, None, constants.RPC_TMO_NORMAL, [
375 c7ea9827 René Nussbaumer
    ("disk", ED_SINGLE_DISK_DICT_DP, None),
376 033684dd Michael Hanselmann
    ("owner", None, None),
377 033684dd Michael Hanselmann
    ("on_primary", None, None),
378 033684dd Michael Hanselmann
    ("idx", None, None),
379 60154921 Iustin Pop
    ], None, None, "Request assembling of a given block device"),
380 2ff587d4 Agata Murawska
  ("blockdev_shutdown", SINGLE, None, constants.RPC_TMO_NORMAL, [
381 55de1d68 René Nussbaumer
    ("disk", ED_SINGLE_DISK_DICT_DP, None),
382 60154921 Iustin Pop
    ], None, None, "Request shutdown of a given block device"),
383 2ff587d4 Agata Murawska
  ("blockdev_addchildren", SINGLE, None, constants.RPC_TMO_NORMAL, [
384 c7ea9827 René Nussbaumer
    ("bdev", ED_SINGLE_DISK_DICT_DP, None),
385 cd40dc53 Michael Hanselmann
    ("ndevs", ED_OBJECT_DICT_LIST, None),
386 60154921 Iustin Pop
    ], None, None,
387 60154921 Iustin Pop
   "Request adding a list of children to a (mirroring) device"),
388 2ff587d4 Agata Murawska
  ("blockdev_removechildren", SINGLE, None, constants.RPC_TMO_NORMAL, [
389 cd40dc53 Michael Hanselmann
    ("bdev", ED_OBJECT_DICT, None),
390 cd40dc53 Michael Hanselmann
    ("ndevs", ED_OBJECT_DICT_LIST, None),
391 60154921 Iustin Pop
    ], None, None,
392 60154921 Iustin Pop
   "Request removing a list of children from a (mirroring) device"),
393 2ff587d4 Agata Murawska
  ("blockdev_close", SINGLE, None, constants.RPC_TMO_NORMAL, [
394 033684dd Michael Hanselmann
    ("instance_name", None, None),
395 cd40dc53 Michael Hanselmann
    ("disks", ED_OBJECT_DICT_LIST, None),
396 60154921 Iustin Pop
    ], None, None, "Closes the given block devices"),
397 6ef8077e Bernardo Dal Seno
  ("blockdev_getdimensions", SINGLE, None, constants.RPC_TMO_NORMAL, [
398 cd40dc53 Michael Hanselmann
    ("disks", ED_OBJECT_DICT_LIST, None),
399 6ef8077e Bernardo Dal Seno
    ], None, None, "Returns size and spindles of the given disks"),
400 2ff587d4 Agata Murawska
  ("drbd_disconnect_net", MULTI, None, constants.RPC_TMO_NORMAL, [
401 033684dd Michael Hanselmann
    ("nodes_ip", None, None),
402 cd40dc53 Michael Hanselmann
    ("disks", ED_OBJECT_DICT_LIST, None),
403 1c3231aa Thomas Thrainer
    ], _DrbdCallsPreProc, None,
404 1c3231aa Thomas Thrainer
   "Disconnects the network of the given drbd devices"),
405 2ff587d4 Agata Murawska
  ("drbd_attach_net", MULTI, None, constants.RPC_TMO_NORMAL, [
406 033684dd Michael Hanselmann
    ("nodes_ip", None, None),
407 c7ea9827 René Nussbaumer
    ("disks", ED_DISKS_DICT_DP, None),
408 033684dd Michael Hanselmann
    ("instance_name", None, None),
409 033684dd Michael Hanselmann
    ("multimaster", None, None),
410 1c3231aa Thomas Thrainer
    ], _DrbdCallsPreProc, None, "Connects the given DRBD devices"),
411 2ff587d4 Agata Murawska
  ("drbd_wait_sync", MULTI, None, constants.RPC_TMO_SLOW, [
412 033684dd Michael Hanselmann
    ("nodes_ip", None, None),
413 c7ea9827 René Nussbaumer
    ("disks", ED_DISKS_DICT_DP, None),
414 1c3231aa Thomas Thrainer
    ], _DrbdCallsPreProc, None,
415 60154921 Iustin Pop
   "Waits for the synchronization of drbd devices is complete"),
416 235a6b29 Thomas Thrainer
  ("drbd_needs_activation", SINGLE, None, constants.RPC_TMO_NORMAL, [
417 235a6b29 Thomas Thrainer
    ("nodes_ip", None, None),
418 235a6b29 Thomas Thrainer
    ("disks", ED_MULTI_DISKS_DICT_DP, None),
419 235a6b29 Thomas Thrainer
    ], _DrbdCallsPreProc, None,
420 235a6b29 Thomas Thrainer
   "Returns the drbd disks which need activation"),
421 2ff587d4 Agata Murawska
  ("blockdev_grow", SINGLE, None, constants.RPC_TMO_NORMAL, [
422 c7ea9827 René Nussbaumer
    ("cf_bdev", ED_SINGLE_DISK_DICT_DP, None),
423 033684dd Michael Hanselmann
    ("amount", None, None),
424 033684dd Michael Hanselmann
    ("dryrun", None, None),
425 cad0723b Iustin Pop
    ("backingstore", None, None),
426 e43a624e Bernardo Dal Seno
    ("es_flag", None, None),
427 cad0723b Iustin Pop
    ], None, None, "Request growing of the given block device by a"
428 cad0723b Iustin Pop
   " given amount"),
429 2ff587d4 Agata Murawska
  ("blockdev_export", SINGLE, None, constants.RPC_TMO_1DAY, [
430 c7ea9827 René Nussbaumer
    ("cf_bdev", ED_SINGLE_DISK_DICT_DP, None),
431 033684dd Michael Hanselmann
    ("dest_node", None, None),
432 033684dd Michael Hanselmann
    ("dest_path", None, None),
433 033684dd Michael Hanselmann
    ("cluster_name", None, None),
434 60154921 Iustin Pop
    ], None, None, "Export a given disk to another node"),
435 2ff587d4 Agata Murawska
  ("blockdev_snapshot", SINGLE, None, constants.RPC_TMO_NORMAL, [
436 c7ea9827 René Nussbaumer
    ("cf_bdev", ED_SINGLE_DISK_DICT_DP, None),
437 60154921 Iustin Pop
    ], None, None, "Export a given disk to another node"),
438 2ff587d4 Agata Murawska
  ("blockdev_rename", SINGLE, None, constants.RPC_TMO_NORMAL, [
439 cd40dc53 Michael Hanselmann
    ("devlist", ED_BLOCKDEV_RENAME, None),
440 60154921 Iustin Pop
    ], None, None, "Request rename of the given block devices"),
441 2ff587d4 Agata Murawska
  ("blockdev_find", SINGLE, None, constants.RPC_TMO_NORMAL, [
442 cd40dc53 Michael Hanselmann
    ("disk", ED_OBJECT_DICT, None),
443 60154921 Iustin Pop
    ], None, _BlockdevFindPostProc,
444 033684dd Michael Hanselmann
    "Request identification of a given block device"),
445 2ff587d4 Agata Murawska
  ("blockdev_getmirrorstatus", SINGLE, None, constants.RPC_TMO_NORMAL, [
446 70817cee René Nussbaumer
    ("disks", ED_DISKS_DICT_DP, None),
447 60154921 Iustin Pop
    ], None, _BlockdevGetMirrorStatusPostProc,
448 033684dd Michael Hanselmann
    "Request status of a (mirroring) device"),
449 2ff587d4 Agata Murawska
  ("blockdev_getmirrorstatus_multi", MULTI, None, constants.RPC_TMO_NORMAL, [
450 cd40dc53 Michael Hanselmann
    ("node_disks", ED_NODE_TO_DISK_DICT, None),
451 5449685e Iustin Pop
    ], _BlockdevGetMirrorStatusMultiPreProc,
452 5449685e Iustin Pop
   _BlockdevGetMirrorStatusMultiPostProc,
453 033684dd Michael Hanselmann
    "Request status of (mirroring) devices from multiple nodes"),
454 48e175a2 Iustin Pop
  ("blockdev_setinfo", SINGLE, None, constants.RPC_TMO_NORMAL, [
455 48e175a2 Iustin Pop
    ("disk", ED_OBJECT_DICT, None),
456 48e175a2 Iustin Pop
    ("info", None, None),
457 48e175a2 Iustin Pop
    ], None, None, "Sets metadata information on a given block device"),
458 033684dd Michael Hanselmann
  ]
459 033684dd Michael Hanselmann
460 033684dd Michael Hanselmann
_OS_CALLS = [
461 2ff587d4 Agata Murawska
  ("os_diagnose", MULTI, None, constants.RPC_TMO_FAST, [], None, None,
462 033684dd Michael Hanselmann
   "Request a diagnose of OS definitions"),
463 2ff587d4 Agata Murawska
  ("os_validate", MULTI, None, constants.RPC_TMO_FAST, [
464 033684dd Michael Hanselmann
    ("required", None, None),
465 033684dd Michael Hanselmann
    ("name", None, None),
466 033684dd Michael Hanselmann
    ("checks", None, None),
467 033684dd Michael Hanselmann
    ("params", None, None),
468 60154921 Iustin Pop
    ], None, None, "Run a validation routine for a given OS"),
469 2ff587d4 Agata Murawska
  ("os_get", SINGLE, None, constants.RPC_TMO_FAST, [
470 033684dd Michael Hanselmann
    ("name", None, None),
471 60154921 Iustin Pop
    ], None, _OsGetPostProc, "Returns an OS definition"),
472 033684dd Michael Hanselmann
  ]
473 033684dd Michael Hanselmann
474 b954f097 Constantinos Venetsanopoulos
_EXTSTORAGE_CALLS = [
475 b954f097 Constantinos Venetsanopoulos
  ("extstorage_diagnose", MULTI, None, constants.RPC_TMO_FAST, [], None, None,
476 b954f097 Constantinos Venetsanopoulos
   "Request a diagnose of ExtStorage Providers"),
477 b954f097 Constantinos Venetsanopoulos
  ]
478 b954f097 Constantinos Venetsanopoulos
479 033684dd Michael Hanselmann
_NODE_CALLS = [
480 2ff587d4 Agata Murawska
  ("node_has_ip_address", SINGLE, None, constants.RPC_TMO_FAST, [
481 033684dd Michael Hanselmann
    ("address", None, "IP address"),
482 60154921 Iustin Pop
    ], None, None, "Checks if a node has the given IP address"),
483 2ff587d4 Agata Murawska
  ("node_info", MULTI, None, constants.RPC_TMO_URGENT, [
484 4b92e992 Helga Velroyen
    ("storage_units", None,
485 da803ff1 Helga Velroyen
     "List of tuples '<storage_type>,<key>,[<param>]' to ask for disk space"
486 da803ff1 Helga Velroyen
     " information; the parameter list varies depending on the storage_type"),
487 030ab01a Helga Velroyen
    ("hv_specs", None,
488 030ab01a Helga Velroyen
     "List of hypervisor specification (name, hvparams) to ask for node "
489 030ab01a Helga Velroyen
     "information"),
490 1a3c5d4e Bernardo Dal Seno
    ], _NodeInfoPreProc, None, "Return node information"),
491 2ff587d4 Agata Murawska
  ("node_verify", MULTI, None, constants.RPC_TMO_NORMAL, [
492 5b0dfcef Helga Velroyen
    ("checkdict", None, "What to verify"),
493 5b0dfcef Helga Velroyen
    ("cluster_name", None, "Cluster name"),
494 5b0dfcef Helga Velroyen
    ("all_hvparams", None, "Dictionary mapping hypervisor names to hvparams"),
495 60154921 Iustin Pop
    ], None, None, "Request verification of given parameters"),
496 2ff587d4 Agata Murawska
  ("node_volumes", MULTI, None, constants.RPC_TMO_FAST, [], None, None,
497 60154921 Iustin Pop
   "Gets all volumes on node(s)"),
498 2ff587d4 Agata Murawska
  ("node_demote_from_mc", SINGLE, None, constants.RPC_TMO_FAST, [], None, None,
499 033684dd Michael Hanselmann
   "Demote a node from the master candidate role"),
500 2ff587d4 Agata Murawska
  ("node_powercycle", SINGLE, ACCEPT_OFFLINE_NODE, constants.RPC_TMO_NORMAL, [
501 033684dd Michael Hanselmann
    ("hypervisor", None, "Hypervisor type"),
502 8ef418bb Helga Velroyen
    ("hvparams", None, "Hypervisor parameters"),
503 60154921 Iustin Pop
    ], None, None, "Tries to powercycle a node"),
504 033684dd Michael Hanselmann
  ]
505 033684dd Michael Hanselmann
506 033684dd Michael Hanselmann
_MISC_CALLS = [
507 2ff587d4 Agata Murawska
  ("lv_list", MULTI, None, constants.RPC_TMO_URGENT, [
508 033684dd Michael Hanselmann
    ("vg_name", None, None),
509 60154921 Iustin Pop
    ], None, None, "Gets the logical volumes present in a given volume group"),
510 2ff587d4 Agata Murawska
  ("vg_list", MULTI, None, constants.RPC_TMO_URGENT, [], None, None,
511 dd6d2d09 Michael Hanselmann
   "Gets the volume group list"),
512 2ff587d4 Agata Murawska
  ("bridges_exist", SINGLE, None, constants.RPC_TMO_URGENT, [
513 033684dd Michael Hanselmann
    ("bridges_list", None, "Bridges which must be present on remote node"),
514 60154921 Iustin Pop
    ], None, None, "Checks if a node has all the bridges given"),
515 2ff587d4 Agata Murawska
  ("etc_hosts_modify", SINGLE, None, constants.RPC_TMO_NORMAL, [
516 033684dd Michael Hanselmann
    ("mode", None,
517 033684dd Michael Hanselmann
     "Mode to operate; currently L{constants.ETC_HOSTS_ADD} or"
518 033684dd Michael Hanselmann
     " L{constants.ETC_HOSTS_REMOVE}"),
519 033684dd Michael Hanselmann
    ("name", None, "Hostname to be modified"),
520 033684dd Michael Hanselmann
    ("ip", None, "IP address (L{constants.ETC_HOSTS_ADD} only)"),
521 60154921 Iustin Pop
    ], None, None, "Modify hosts file with name"),
522 2ff587d4 Agata Murawska
  ("drbd_helper", MULTI, None, constants.RPC_TMO_URGENT, [],
523 2ff587d4 Agata Murawska
   None, None, "Gets DRBD helper"),
524 db2203e0 Michael Hanselmann
  ("restricted_command", MULTI, None, constants.RPC_TMO_SLOW, [
525 db2203e0 Michael Hanselmann
    ("cmd", None, "Command name"),
526 db2203e0 Michael Hanselmann
    ], None, None, "Runs restricted command"),
527 2ff587d4 Agata Murawska
  ("run_oob", SINGLE, None, constants.RPC_TMO_NORMAL, [
528 033684dd Michael Hanselmann
    ("oob_program", None, None),
529 033684dd Michael Hanselmann
    ("command", None, None),
530 033684dd Michael Hanselmann
    ("remote_node", None, None),
531 033684dd Michael Hanselmann
    ("timeout", None, None),
532 60154921 Iustin Pop
    ], None, None, "Runs out-of-band command"),
533 2ff587d4 Agata Murawska
  ("hooks_runner", MULTI, None, constants.RPC_TMO_NORMAL, [
534 033684dd Michael Hanselmann
    ("hpath", None, None),
535 033684dd Michael Hanselmann
    ("phase", None, None),
536 033684dd Michael Hanselmann
    ("env", None, None),
537 60154921 Iustin Pop
    ], None, None, "Call the hooks runner"),
538 2ff587d4 Agata Murawska
  ("iallocator_runner", SINGLE, None, constants.RPC_TMO_NORMAL, [
539 033684dd Michael Hanselmann
    ("name", None, "Iallocator name"),
540 033684dd Michael Hanselmann
    ("idata", None, "JSON-encoded input string"),
541 60154921 Iustin Pop
    ], None, None, "Call an iallocator on a remote node"),
542 dd6d2d09 Michael Hanselmann
  ("test_delay", MULTI, None, _TestDelayTimeout, [
543 033684dd Michael Hanselmann
    ("duration", None, None),
544 60154921 Iustin Pop
    ], None, None, "Sleep for a fixed time on given node(s)"),
545 2ff587d4 Agata Murawska
  ("hypervisor_validate_params", MULTI, None, constants.RPC_TMO_NORMAL, [
546 68959ca5 Michael Hanselmann
    ("hvname", None, "Hypervisor name"),
547 68959ca5 Michael Hanselmann
    ("hvfull", None, "Parameters to be validated"),
548 60154921 Iustin Pop
    ], None, None, "Validate hypervisor params"),
549 ec5af888 Michael Hanselmann
  ("get_watcher_pause", SINGLE, None, constants.RPC_TMO_URGENT, [],
550 ec5af888 Michael Hanselmann
    None, None, "Get watcher pause end"),
551 99e222b1 Michael Hanselmann
  ("set_watcher_pause", MULTI, None, constants.RPC_TMO_URGENT, [
552 99e222b1 Michael Hanselmann
    ("until", None, None),
553 99e222b1 Michael Hanselmann
    ], None, None, "Set watcher pause end"),
554 033684dd Michael Hanselmann
  ]
555 033684dd Michael Hanselmann
556 d5a2a550 Michael Hanselmann
CALLS = {
557 5ae4945a Iustin Pop
  "RpcClientDefault":
558 a09f9847 Michael Hanselmann
    _Prepare(_IMPEXP_CALLS + _X509_CALLS + _OS_CALLS + _NODE_CALLS +
559 a09f9847 Michael Hanselmann
             _FILE_STORAGE_CALLS + _MISC_CALLS + _INSTANCE_CALLS +
560 b954f097 Constantinos Venetsanopoulos
             _BLOCKDEV_CALLS + _STORAGE_CALLS + _EXTSTORAGE_CALLS),
561 a09f9847 Michael Hanselmann
  "RpcClientJobQueue": _Prepare([
562 2ff587d4 Agata Murawska
    ("jobqueue_update", MULTI, None, constants.RPC_TMO_URGENT, [
563 fb1ffbca Michael Hanselmann
      ("file_name", None, None),
564 cd40dc53 Michael Hanselmann
      ("content", ED_COMPRESS, None),
565 60154921 Iustin Pop
      ], None, None, "Update job queue file"),
566 2ff587d4 Agata Murawska
    ("jobqueue_purge", SINGLE, None, constants.RPC_TMO_NORMAL, [], None, None,
567 dd6d2d09 Michael Hanselmann
     "Purge job queue"),
568 2ff587d4 Agata Murawska
    ("jobqueue_rename", MULTI, None, constants.RPC_TMO_URGENT, [
569 fb1ffbca Michael Hanselmann
      ("rename", None, None),
570 60154921 Iustin Pop
      ], None, None, "Rename job queue file"),
571 be6c403e Michael Hanselmann
    ("jobqueue_set_drain_flag", MULTI, None, constants.RPC_TMO_URGENT, [
572 be6c403e Michael Hanselmann
      ("flag", None, None),
573 be6c403e Michael Hanselmann
      ], None, None, "Set job queue drain flag"),
574 a09f9847 Michael Hanselmann
    ]),
575 a09f9847 Michael Hanselmann
  "RpcClientBootstrap": _Prepare([
576 2ff587d4 Agata Murawska
    ("node_start_master_daemons", SINGLE, None, constants.RPC_TMO_FAST, [
577 db04ce5d Michael Hanselmann
      ("no_voting", None, None),
578 60154921 Iustin Pop
      ], None, None, "Starts master daemons on a node"),
579 2ff587d4 Agata Murawska
    ("node_activate_master_ip", SINGLE, None, constants.RPC_TMO_FAST, [
580 c79198a0 Andrea Spadaccini
      ("master_params", ED_OBJECT_DICT, "Network parameters of the master"),
581 57c7bc57 Andrea Spadaccini
      ("use_external_mip_script", None,
582 57c7bc57 Andrea Spadaccini
       "Whether to use the user-provided master IP address setup script"),
583 60154921 Iustin Pop
      ], None, None,
584 8da2bd43 Andrea Spadaccini
      "Activates master IP on a node"),
585 2ff587d4 Agata Murawska
    ("node_stop_master", SINGLE, None, constants.RPC_TMO_FAST, [], None, None,
586 db04ce5d Michael Hanselmann
     "Deactivates master IP and stops master daemons on a node"),
587 2ff587d4 Agata Murawska
    ("node_deactivate_master_ip", SINGLE, None, constants.RPC_TMO_FAST, [
588 c79198a0 Andrea Spadaccini
      ("master_params", ED_OBJECT_DICT, "Network parameters of the master"),
589 57c7bc57 Andrea Spadaccini
      ("use_external_mip_script", None,
590 57c7bc57 Andrea Spadaccini
       "Whether to use the user-provided master IP address setup script"),
591 60154921 Iustin Pop
      ], None, None,
592 db04ce5d Michael Hanselmann
     "Deactivates master IP on a node"),
593 2ff587d4 Agata Murawska
    ("node_change_master_netmask", SINGLE, None, constants.RPC_TMO_FAST, [
594 41e079ce Andrea Spadaccini
      ("old_netmask", None, "The old value of the netmask"),
595 41e079ce Andrea Spadaccini
      ("netmask", None, "The new value of the netmask"),
596 41e079ce Andrea Spadaccini
      ("master_ip", None, "The master IP"),
597 41e079ce Andrea Spadaccini
      ("master_netdev", None, "The master network device"),
598 60154921 Iustin Pop
      ], None, None, "Change master IP netmask"),
599 2ff587d4 Agata Murawska
    ("node_leave_cluster", SINGLE, None, constants.RPC_TMO_NORMAL, [
600 db04ce5d Michael Hanselmann
      ("modify_ssh_setup", None, None),
601 60154921 Iustin Pop
      ], None, None,
602 60154921 Iustin Pop
     "Requests a node to clean the cluster information it has"),
603 2ff587d4 Agata Murawska
    ("master_info", MULTI, None, constants.RPC_TMO_URGENT, [], None, None,
604 dd6d2d09 Michael Hanselmann
     "Query master info"),
605 bd6d1202 René Nussbaumer
    ]),
606 bd6d1202 René Nussbaumer
  "RpcClientDnsOnly": _Prepare([
607 2ff587d4 Agata Murawska
    ("version", MULTI, ACCEPT_OFFLINE_NODE, constants.RPC_TMO_URGENT, [], None,
608 2ff587d4 Agata Murawska
     None, "Query node version"),
609 14fe92c7 Bernardo Dal Seno
    ("node_verify_light", MULTI, None, constants.RPC_TMO_NORMAL, [
610 5b0dfcef Helga Velroyen
      ("checkdict", None, "What to verify"),
611 5b0dfcef Helga Velroyen
      ("cluster_name", None, "Cluster name"),
612 5b0dfcef Helga Velroyen
      ("hvparams", None, "Dictionary mapping hypervisor names to hvparams"),
613 14fe92c7 Bernardo Dal Seno
      ], None, None, "Request verification of given parameters"),
614 a09f9847 Michael Hanselmann
    ]),
615 a09f9847 Michael Hanselmann
  "RpcClientConfig": _Prepare([
616 2ff587d4 Agata Murawska
    ("upload_file", MULTI, None, constants.RPC_TMO_NORMAL, [
617 cd40dc53 Michael Hanselmann
      ("file_name", ED_FILE_DETAILS, None),
618 60154921 Iustin Pop
      ], None, None, "Upload a file"),
619 2ff587d4 Agata Murawska
    ("write_ssconf_files", MULTI, None, constants.RPC_TMO_NORMAL, [
620 415a7304 Michael Hanselmann
      ("values", None, None),
621 60154921 Iustin Pop
      ], None, None, "Write ssconf files"),
622 a09f9847 Michael Hanselmann
    ]),
623 d5a2a550 Michael Hanselmann
  }