Statistics
| Branch: | Tag: | Revision:

root / lib / rpc_defs.py @ 200a6dfe

History | View | Annotate | Download (25.5 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 b262a5c6 Dimitris Aragiorgis
 ED_NIC_DICT,
76 b262a5c6 Dimitris Aragiorgis
 ED_DEVICE_DICT) = range(1, 17)
77 d565f83f Michael Hanselmann
78 a09f9847 Michael Hanselmann
79 a09f9847 Michael Hanselmann
def _Prepare(calls):
80 a09f9847 Michael Hanselmann
  """Converts list of calls to dictionary.
81 a09f9847 Michael Hanselmann

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

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

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

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

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

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

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

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

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

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