Statistics
| Branch: | Tag: | Revision:

root / lib / rpc_defs.py @ be9150ea

History | View | Annotate | Download (24.9 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 1c3231aa Thomas Thrainer
def _DrbdCallsPreProc(node, args):
146 1c3231aa Thomas Thrainer
  """Add the target node UUID as additional field for DRBD related calls."""
147 1c3231aa Thomas Thrainer
  return args + [node]
148 1c3231aa Thomas Thrainer
149 1c3231aa Thomas Thrainer
150 26d502d0 Michael Hanselmann
def _OsGetPostProc(result):
151 26d502d0 Michael Hanselmann
  """Post-processor for L{rpc.RpcRunner.call_os_get}.
152 26d502d0 Michael Hanselmann

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

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

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

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