Statistics
| Branch: | Tag: | Revision:

root / lib / rpc_defs.py @ 95e7e85e

History | View | Annotate | Download (24.2 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 cbe4a0a5 Dimitris Aragiorgis
 ED_SINGLE_DISK_DICT_DP,
74 cbe4a0a5 Dimitris Aragiorgis
 ED_NIC_DICT) = range(1, 15)
75 d565f83f Michael Hanselmann
76 a09f9847 Michael Hanselmann
77 a09f9847 Michael Hanselmann
def _Prepare(calls):
78 a09f9847 Michael Hanselmann
  """Converts list of calls to dictionary.
79 a09f9847 Michael Hanselmann

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

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

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

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

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

125 26d502d0 Michael Hanselmann
  """
126 82cce526 Michael Hanselmann
  if not result.fail_msg:
127 82cce526 Michael Hanselmann
    for idx, (success, status) in enumerate(result.payload):
128 26d502d0 Michael Hanselmann
      if success:
129 82cce526 Michael Hanselmann
        result.payload[idx] = (success, objects.BlockDevStatus.FromDict(status))
130 26d502d0 Michael Hanselmann
131 26d502d0 Michael Hanselmann
  return result
132 26d502d0 Michael Hanselmann
133 26d502d0 Michael Hanselmann
134 1a3c5d4e Bernardo Dal Seno
def _NodeInfoPreProc(node, args):
135 1a3c5d4e Bernardo Dal Seno
  """Prepare the exclusive_storage argument for node_info calls."""
136 1a3c5d4e Bernardo Dal Seno
  assert len(args) == 3
137 1a3c5d4e Bernardo Dal Seno
  # The third argument is either a dictionary with one value for each node, or
138 1a3c5d4e Bernardo Dal Seno
  # a fixed value to be used for all the nodes
139 1a3c5d4e Bernardo Dal Seno
  if type(args[2]) is dict:
140 1a3c5d4e Bernardo Dal Seno
    return [args[0], args[1], args[2][node]]
141 1a3c5d4e Bernardo Dal Seno
  else:
142 1a3c5d4e Bernardo Dal Seno
    return args
143 1a3c5d4e Bernardo Dal Seno
144 1a3c5d4e Bernardo Dal Seno
145 26d502d0 Michael Hanselmann
def _OsGetPostProc(result):
146 26d502d0 Michael Hanselmann
  """Post-processor for L{rpc.RpcRunner.call_os_get}.
147 26d502d0 Michael Hanselmann

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

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

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

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