Statistics
| Branch: | Tag: | Revision:

root / lib / rpc_defs.py @ a57e502a

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 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 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 26d502d0 Michael Hanselmann
def _OsGetPostProc(result):
147 26d502d0 Michael Hanselmann
  """Post-processor for L{rpc.RpcRunner.call_os_get}.
148 26d502d0 Michael Hanselmann

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

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

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

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