Statistics
| Branch: | Tag: | Revision:

root / lib / rpc_defs.py @ bc57fa8d

History | View | Annotate | Download (25.7 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 0c3d9c7c Thomas Thrainer
 ED_NODE_TO_DISK_DICT_DP,
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 c5708931 Dimitris Aragiorgis
 ED_NIC_DICT,
76 c5708931 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 26d502d0 Michael Hanselmann
def _OsGetPostProc(result):
148 26d502d0 Michael Hanselmann
  """Post-processor for L{rpc.RpcRunner.call_os_get}.
149 26d502d0 Michael Hanselmann

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

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

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

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