Statistics
| Branch: | Tag: | Revision:

root / lib / rpc_defs.py @ cd40dc53

History | View | Annotate | Download (16.5 kB)

1 d5a2a550 Michael Hanselmann
#
2 d5a2a550 Michael Hanselmann
#
3 d5a2a550 Michael Hanselmann
4 d5a2a550 Michael Hanselmann
# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 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 033684dd Michael Hanselmann
  - Timeout (e.g. L{TMO_NORMAL})
28 033684dd Michael Hanselmann
  - List of arguments as tuples
29 033684dd Michael Hanselmann

30 033684dd Michael Hanselmann
    - Name as string
31 cd40dc53 Michael Hanselmann
    - Argument kind used for encoding/decoding
32 033684dd Michael Hanselmann
    - Description for docstring (can be C{None})
33 033684dd Michael Hanselmann

34 033684dd Michael Hanselmann
  - Return value wrapper (e.g. for deserializing into L{objects}-based objects)
35 033684dd Michael Hanselmann
  - Short call description for docstring
36 033684dd Michael Hanselmann

37 d5a2a550 Michael Hanselmann
"""
38 d5a2a550 Michael Hanselmann
39 d5a2a550 Michael Hanselmann
40 0d1e78dd Michael Hanselmann
# Guidelines for choosing timeouts:
41 0d1e78dd Michael Hanselmann
# - call used during watcher: timeout of 1min, _TMO_URGENT
42 0d1e78dd Michael Hanselmann
# - trivial (but be sure it is trivial) (e.g. reading a file): 5min, _TMO_FAST
43 0d1e78dd Michael Hanselmann
# - other calls: 15 min, _TMO_NORMAL
44 0d1e78dd Michael Hanselmann
# - special calls (instance add, etc.): either _TMO_SLOW (1h) or huge timeouts
45 d5a2a550 Michael Hanselmann
TMO_URGENT = 60 # one minute
46 d5a2a550 Michael Hanselmann
TMO_FAST = 5 * 60 # five minutes
47 d5a2a550 Michael Hanselmann
TMO_NORMAL = 15 * 60 # 15 minutes
48 d5a2a550 Michael Hanselmann
TMO_SLOW = 3600 # one hour
49 d5a2a550 Michael Hanselmann
TMO_4HRS = 4 * 3600
50 d5a2a550 Michael Hanselmann
TMO_1DAY = 86400
51 d5a2a550 Michael Hanselmann
52 d5a2a550 Michael Hanselmann
SINGLE = "single-node"
53 d5a2a550 Michael Hanselmann
MULTI = "multi-node"
54 d5a2a550 Michael Hanselmann
55 cd40dc53 Michael Hanselmann
# Constants for encoding/decoding
56 cd40dc53 Michael Hanselmann
(ED_OBJECT_DICT,
57 cd40dc53 Michael Hanselmann
 ED_OBJECT_DICT_LIST,
58 cd40dc53 Michael Hanselmann
 ED_INST_DICT,
59 cd40dc53 Michael Hanselmann
 ED_INST_DICT_HVP_BEP,
60 cd40dc53 Michael Hanselmann
 ED_NODE_TO_DISK_DICT,
61 cd40dc53 Michael Hanselmann
 ED_INST_DICT_OSP,
62 cd40dc53 Michael Hanselmann
 ED_IMPEXP_IO,
63 cd40dc53 Michael Hanselmann
 ED_FILE_DETAILS,
64 cd40dc53 Michael Hanselmann
 ED_FINALIZE_EXPORT_DISKS,
65 cd40dc53 Michael Hanselmann
 ED_COMPRESS,
66 cd40dc53 Michael Hanselmann
 ED_BLOCKDEV_RENAME) = range(1, 12)
67 d565f83f Michael Hanselmann
68 033684dd Michael Hanselmann
_FILE_STORAGE_CALLS = [
69 033684dd Michael Hanselmann
  ("file_storage_dir_create", SINGLE, TMO_FAST, [
70 033684dd Michael Hanselmann
    ("file_storage_dir", None, "File storage directory"),
71 033684dd Michael Hanselmann
    ], None, "Create the given file storage directory"),
72 033684dd Michael Hanselmann
  ("file_storage_dir_remove", SINGLE, TMO_FAST, [
73 033684dd Michael Hanselmann
    ("file_storage_dir", None, "File storage directory"),
74 033684dd Michael Hanselmann
    ], None, "Remove the given file storage directory"),
75 033684dd Michael Hanselmann
  ("file_storage_dir_rename", SINGLE, TMO_FAST, [
76 033684dd Michael Hanselmann
    ("old_file_storage_dir", None, "Old name"),
77 033684dd Michael Hanselmann
    ("new_file_storage_dir", None, "New name"),
78 033684dd Michael Hanselmann
    ], None, "Rename file storage directory"),
79 033684dd Michael Hanselmann
  ]
80 033684dd Michael Hanselmann
81 033684dd Michael Hanselmann
_STORAGE_CALLS = [
82 033684dd Michael Hanselmann
  ("storage_list", MULTI, TMO_NORMAL, [
83 033684dd Michael Hanselmann
    ("su_name", None, None),
84 033684dd Michael Hanselmann
    ("su_args", None, None),
85 033684dd Michael Hanselmann
    ("name", None, None),
86 033684dd Michael Hanselmann
    ("fields", None, None),
87 033684dd Michael Hanselmann
    ], None, "Get list of storage units"),
88 033684dd Michael Hanselmann
  ("storage_modify", SINGLE, TMO_NORMAL, [
89 033684dd Michael Hanselmann
    ("su_name", None, None),
90 033684dd Michael Hanselmann
    ("su_args", None, None),
91 033684dd Michael Hanselmann
    ("name", None, None),
92 033684dd Michael Hanselmann
    ("changes", None, None),
93 033684dd Michael Hanselmann
    ], None, "Modify a storage unit"),
94 033684dd Michael Hanselmann
  ("storage_execute", SINGLE, TMO_NORMAL, [
95 033684dd Michael Hanselmann
    ("su_name", None, None),
96 033684dd Michael Hanselmann
    ("su_args", None, None),
97 033684dd Michael Hanselmann
    ("name", None, None),
98 033684dd Michael Hanselmann
    ("op", None, None),
99 033684dd Michael Hanselmann
    ], None, "Executes an operation on a storage unit"),
100 033684dd Michael Hanselmann
  ]
101 033684dd Michael Hanselmann
102 033684dd Michael Hanselmann
_INSTANCE_CALLS = [
103 033684dd Michael Hanselmann
  ("instance_info", SINGLE, TMO_URGENT, [
104 033684dd Michael Hanselmann
    ("instance", None, "Instance name"),
105 033684dd Michael Hanselmann
    ("hname", None, "Hypervisor type"),
106 033684dd Michael Hanselmann
    ], None, "Returns information about a single instance"),
107 033684dd Michael Hanselmann
  ("all_instances_info", MULTI, TMO_URGENT, [
108 033684dd Michael Hanselmann
    ("hypervisor_list", None, "Hypervisors to query for instances"),
109 033684dd Michael Hanselmann
    ], None, "Returns information about all instances on the given nodes"),
110 033684dd Michael Hanselmann
  ("instance_list", MULTI, TMO_URGENT, [
111 033684dd Michael Hanselmann
    ("hypervisor_list", None, "Hypervisors to query for instances"),
112 033684dd Michael Hanselmann
    ], None, "Returns the list of running instances on the given nodes"),
113 033684dd Michael Hanselmann
  ("instance_reboot", SINGLE, TMO_NORMAL, [
114 cd40dc53 Michael Hanselmann
    ("inst", ED_INST_DICT, "Instance object"),
115 033684dd Michael Hanselmann
    ("reboot_type", None, None),
116 033684dd Michael Hanselmann
    ("shutdown_timeout", None, None),
117 033684dd Michael Hanselmann
    ], None, "Returns the list of running instances on the given nodes"),
118 033684dd Michael Hanselmann
  ("instance_shutdown", SINGLE, TMO_NORMAL, [
119 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
120 033684dd Michael Hanselmann
    ("timeout", None, None),
121 033684dd Michael Hanselmann
    ], None, "Stops an instance"),
122 033684dd Michael Hanselmann
  ("instance_run_rename", SINGLE, TMO_SLOW, [
123 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
124 033684dd Michael Hanselmann
    ("old_name", None, None),
125 033684dd Michael Hanselmann
    ("debug", None, None),
126 033684dd Michael Hanselmann
    ], None, "Run the OS rename script for an instance"),
127 033684dd Michael Hanselmann
  ("instance_migratable", SINGLE, TMO_NORMAL, [
128 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
129 033684dd Michael Hanselmann
    ], None, "Checks whether the given instance can be migrated"),
130 033684dd Michael Hanselmann
  ("migration_info", SINGLE, TMO_NORMAL, [
131 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
132 033684dd Michael Hanselmann
    ], None,
133 033684dd Michael Hanselmann
    "Gather the information necessary to prepare an instance migration"),
134 033684dd Michael Hanselmann
  ("accept_instance", SINGLE, TMO_NORMAL, [
135 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
136 033684dd Michael Hanselmann
    ("info", None, "Result for the call_migration_info call"),
137 033684dd Michael Hanselmann
    ("target", None, "Target hostname (usually an IP address)"),
138 033684dd Michael Hanselmann
    ], None, "Prepare a node to accept an instance"),
139 033684dd Michael Hanselmann
  ("instance_finalize_migration_dst", SINGLE, TMO_NORMAL, [
140 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
141 033684dd Michael Hanselmann
    ("info", None, "Result for the call_migration_info call"),
142 033684dd Michael Hanselmann
    ("success", None, "Whether the migration was a success or failure"),
143 033684dd Michael Hanselmann
    ], None, "Finalize any target-node migration specific operation"),
144 033684dd Michael Hanselmann
  ("instance_migrate", SINGLE, TMO_SLOW, [
145 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
146 033684dd Michael Hanselmann
    ("target", None, "Target node name"),
147 033684dd Michael Hanselmann
    ("live", None, "Whether the migration should be done live or not"),
148 033684dd Michael Hanselmann
    ], None, "Migrate an instance"),
149 033684dd Michael Hanselmann
  ("instance_finalize_migration_src", SINGLE, TMO_SLOW, [
150 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
151 033684dd Michael Hanselmann
    ("success", None, "Whether the migration succeeded or not"),
152 033684dd Michael Hanselmann
    ("live", None, "Whether the user requested a live migration or not"),
153 033684dd Michael Hanselmann
    ], None, "Finalize the instance migration on the source node"),
154 e3ac8406 Andrea Spadaccini
  ("instance_get_migration_status", SINGLE, TMO_SLOW, [
155 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, "Instance object"),
156 e3ac8406 Andrea Spadaccini
    ], "self._MigrationStatusPostProc", "Report migration status"),
157 c4de9b7a Michael Hanselmann
  ("instance_start", SINGLE, TMO_NORMAL, [
158 cd40dc53 Michael Hanselmann
    ("instance_hvp_bep", ED_INST_DICT_HVP_BEP, None),
159 c4de9b7a Michael Hanselmann
    ("startup_paused", None, None),
160 c4de9b7a Michael Hanselmann
    ], None, "Starts an instance"),
161 c4de9b7a Michael Hanselmann
  ("instance_os_add", SINGLE, TMO_1DAY, [
162 cd40dc53 Michael Hanselmann
    ("instance_osp", ED_INST_DICT_OSP, None),
163 c4de9b7a Michael Hanselmann
    ("reinstall", None, None),
164 c4de9b7a Michael Hanselmann
    ("debug", None, None),
165 c4de9b7a Michael Hanselmann
    ], None, "Starts an instance"),
166 033684dd Michael Hanselmann
  ]
167 033684dd Michael Hanselmann
168 033684dd Michael Hanselmann
_IMPEXP_CALLS = [
169 46c293f0 Michael Hanselmann
  ("import_start", SINGLE, TMO_NORMAL, [
170 cd40dc53 Michael Hanselmann
    ("opts", ED_OBJECT_DICT, None),
171 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, None),
172 46c293f0 Michael Hanselmann
    ("component", None, None),
173 cd40dc53 Michael Hanselmann
    ("dest", ED_IMPEXP_IO, "Import destination"),
174 46c293f0 Michael Hanselmann
    ], None, "Starts an import daemon"),
175 46c293f0 Michael Hanselmann
  ("export_start", SINGLE, TMO_NORMAL, [
176 cd40dc53 Michael Hanselmann
    ("opts", ED_OBJECT_DICT, None),
177 46c293f0 Michael Hanselmann
    ("host", None, None),
178 46c293f0 Michael Hanselmann
    ("port", None, None),
179 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, None),
180 46c293f0 Michael Hanselmann
    ("component", None, None),
181 cd40dc53 Michael Hanselmann
    ("source", ED_IMPEXP_IO, "Export source"),
182 46c293f0 Michael Hanselmann
    ], None, "Starts an export daemon"),
183 033684dd Michael Hanselmann
  ("impexp_status", SINGLE, TMO_FAST, [
184 033684dd Michael Hanselmann
    ("names", None, "Import/export names"),
185 033684dd Michael Hanselmann
    ], "self._ImpExpStatusPostProc", "Gets the status of an import or export"),
186 033684dd Michael Hanselmann
  ("impexp_abort", SINGLE, TMO_NORMAL, [
187 033684dd Michael Hanselmann
    ("name", None, "Import/export name"),
188 033684dd Michael Hanselmann
    ], None, "Aborts an import or export"),
189 033684dd Michael Hanselmann
  ("impexp_cleanup", SINGLE, TMO_NORMAL, [
190 033684dd Michael Hanselmann
    ("name", None, "Import/export name"),
191 033684dd Michael Hanselmann
    ], None, "Cleans up after an import or export"),
192 033684dd Michael Hanselmann
  ("export_info", SINGLE, TMO_FAST, [
193 033684dd Michael Hanselmann
    ("path", None, None),
194 033684dd Michael Hanselmann
    ], None, "Queries the export information in a given path"),
195 033684dd Michael Hanselmann
  ("finalize_export", SINGLE, TMO_NORMAL, [
196 cd40dc53 Michael Hanselmann
    ("instance", ED_INST_DICT, None),
197 cd40dc53 Michael Hanselmann
    ("snap_disks", ED_FINALIZE_EXPORT_DISKS, None),
198 033684dd Michael Hanselmann
    ], None, "Request the completion of an export operation"),
199 033684dd Michael Hanselmann
  ("export_list", MULTI, TMO_FAST, [], None, "Gets the stored exports list"),
200 033684dd Michael Hanselmann
  ("export_remove", SINGLE, TMO_FAST, [
201 033684dd Michael Hanselmann
    ("export", None, None),
202 033684dd Michael Hanselmann
    ], None, "Requests removal of a given export"),
203 033684dd Michael Hanselmann
  ]
204 033684dd Michael Hanselmann
205 033684dd Michael Hanselmann
_X509_CALLS = [
206 033684dd Michael Hanselmann
  ("x509_cert_create", SINGLE, TMO_NORMAL, [
207 033684dd Michael Hanselmann
    ("validity", None, "Validity in seconds"),
208 033684dd Michael Hanselmann
    ], None, "Creates a new X509 certificate for SSL/TLS"),
209 033684dd Michael Hanselmann
  ("x509_cert_remove", SINGLE, TMO_NORMAL, [
210 033684dd Michael Hanselmann
    ("name", None, "Certificate name"),
211 033684dd Michael Hanselmann
    ], None, "Removes a X509 certificate"),
212 033684dd Michael Hanselmann
  ]
213 033684dd Michael Hanselmann
214 033684dd Michael Hanselmann
_BLOCKDEV_CALLS = [
215 033684dd Michael Hanselmann
  ("bdev_sizes", MULTI, TMO_URGENT, [
216 033684dd Michael Hanselmann
    ("devices", None, None),
217 033684dd Michael Hanselmann
    ], None, "Gets the sizes of requested block devices present on a node"),
218 033684dd Michael Hanselmann
  ("blockdev_create", SINGLE, TMO_NORMAL, [
219 cd40dc53 Michael Hanselmann
    ("bdev", ED_OBJECT_DICT, None),
220 033684dd Michael Hanselmann
    ("size", None, None),
221 033684dd Michael Hanselmann
    ("owner", None, None),
222 033684dd Michael Hanselmann
    ("on_primary", None, None),
223 033684dd Michael Hanselmann
    ("info", None, None),
224 033684dd Michael Hanselmann
    ], None, "Request creation of a given block device"),
225 033684dd Michael Hanselmann
  ("blockdev_wipe", SINGLE, TMO_SLOW, [
226 cd40dc53 Michael Hanselmann
    ("bdev", ED_OBJECT_DICT, None),
227 033684dd Michael Hanselmann
    ("offset", None, None),
228 033684dd Michael Hanselmann
    ("size", None, None),
229 033684dd Michael Hanselmann
    ], None,
230 033684dd Michael Hanselmann
    "Request wipe at given offset with given size of a block device"),
231 033684dd Michael Hanselmann
  ("blockdev_remove", SINGLE, TMO_NORMAL, [
232 cd40dc53 Michael Hanselmann
    ("bdev", ED_OBJECT_DICT, None),
233 033684dd Michael Hanselmann
    ], None, "Request removal of a given block device"),
234 033684dd Michael Hanselmann
  ("blockdev_pause_resume_sync", SINGLE, TMO_NORMAL, [
235 cd40dc53 Michael Hanselmann
    ("disks", ED_OBJECT_DICT_LIST, None),
236 033684dd Michael Hanselmann
    ("pause", None, None),
237 033684dd Michael Hanselmann
    ], None, "Request a pause/resume of given block device"),
238 033684dd Michael Hanselmann
  ("blockdev_assemble", SINGLE, TMO_NORMAL, [
239 cd40dc53 Michael Hanselmann
    ("disk", ED_OBJECT_DICT, None),
240 033684dd Michael Hanselmann
    ("owner", None, None),
241 033684dd Michael Hanselmann
    ("on_primary", None, None),
242 033684dd Michael Hanselmann
    ("idx", None, None),
243 033684dd Michael Hanselmann
    ], None, "Request assembling of a given block device"),
244 033684dd Michael Hanselmann
  ("blockdev_shutdown", SINGLE, TMO_NORMAL, [
245 cd40dc53 Michael Hanselmann
    ("disk", ED_OBJECT_DICT, None),
246 033684dd Michael Hanselmann
    ], None, "Request shutdown of a given block device"),
247 033684dd Michael Hanselmann
  ("blockdev_addchildren", SINGLE, TMO_NORMAL, [
248 cd40dc53 Michael Hanselmann
    ("bdev", ED_OBJECT_DICT, None),
249 cd40dc53 Michael Hanselmann
    ("ndevs", ED_OBJECT_DICT_LIST, None),
250 033684dd Michael Hanselmann
    ], None, "Request adding a list of children to a (mirroring) device"),
251 033684dd Michael Hanselmann
  ("blockdev_removechildren", SINGLE, TMO_NORMAL, [
252 cd40dc53 Michael Hanselmann
    ("bdev", ED_OBJECT_DICT, None),
253 cd40dc53 Michael Hanselmann
    ("ndevs", ED_OBJECT_DICT_LIST, None),
254 033684dd Michael Hanselmann
    ], None, "Request removing a list of children from a (mirroring) device"),
255 033684dd Michael Hanselmann
  ("blockdev_close", SINGLE, TMO_NORMAL, [
256 033684dd Michael Hanselmann
    ("instance_name", None, None),
257 cd40dc53 Michael Hanselmann
    ("disks", ED_OBJECT_DICT_LIST, None),
258 033684dd Michael Hanselmann
    ], None, "Closes the given block devices"),
259 033684dd Michael Hanselmann
  ("blockdev_getsize", SINGLE, TMO_NORMAL, [
260 cd40dc53 Michael Hanselmann
    ("disks", ED_OBJECT_DICT_LIST, None),
261 033684dd Michael Hanselmann
    ], None, "Returns the size of the given disks"),
262 033684dd Michael Hanselmann
  ("drbd_disconnect_net", MULTI, TMO_NORMAL, [
263 033684dd Michael Hanselmann
    ("nodes_ip", None, None),
264 cd40dc53 Michael Hanselmann
    ("disks", ED_OBJECT_DICT_LIST, None),
265 033684dd Michael Hanselmann
    ], None, "Disconnects the network of the given drbd devices"),
266 033684dd Michael Hanselmann
  ("drbd_attach_net", MULTI, TMO_NORMAL, [
267 033684dd Michael Hanselmann
    ("nodes_ip", None, None),
268 cd40dc53 Michael Hanselmann
    ("disks", ED_OBJECT_DICT_LIST, None),
269 033684dd Michael Hanselmann
    ("instance_name", None, None),
270 033684dd Michael Hanselmann
    ("multimaster", None, None),
271 033684dd Michael Hanselmann
    ], None, "Connects the given DRBD devices"),
272 033684dd Michael Hanselmann
  ("drbd_wait_sync", MULTI, TMO_SLOW, [
273 033684dd Michael Hanselmann
    ("nodes_ip", None, None),
274 cd40dc53 Michael Hanselmann
    ("disks", ED_OBJECT_DICT_LIST, None),
275 033684dd Michael Hanselmann
    ], None, "Waits for the synchronization of drbd devices is complete"),
276 033684dd Michael Hanselmann
  ("blockdev_grow", SINGLE, TMO_NORMAL, [
277 cd40dc53 Michael Hanselmann
    ("cf_bdev", ED_OBJECT_DICT, None),
278 033684dd Michael Hanselmann
    ("amount", None, None),
279 033684dd Michael Hanselmann
    ("dryrun", None, None),
280 033684dd Michael Hanselmann
    ], None, "Request a snapshot of the given block device"),
281 033684dd Michael Hanselmann
  ("blockdev_export", SINGLE, TMO_1DAY, [
282 cd40dc53 Michael Hanselmann
    ("cf_bdev", ED_OBJECT_DICT, None),
283 033684dd Michael Hanselmann
    ("dest_node", None, None),
284 033684dd Michael Hanselmann
    ("dest_path", None, None),
285 033684dd Michael Hanselmann
    ("cluster_name", None, None),
286 033684dd Michael Hanselmann
    ], None, "Export a given disk to another node"),
287 033684dd Michael Hanselmann
  ("blockdev_snapshot", SINGLE, TMO_NORMAL, [
288 cd40dc53 Michael Hanselmann
    ("cf_bdev", ED_OBJECT_DICT, None),
289 033684dd Michael Hanselmann
    ], None, "Export a given disk to another node"),
290 033684dd Michael Hanselmann
  ("blockdev_rename", SINGLE, TMO_NORMAL, [
291 cd40dc53 Michael Hanselmann
    ("devlist", ED_BLOCKDEV_RENAME, None),
292 033684dd Michael Hanselmann
    ], None, "Request rename of the given block devices"),
293 033684dd Michael Hanselmann
  ("blockdev_find", SINGLE, TMO_NORMAL, [
294 cd40dc53 Michael Hanselmann
    ("disk", ED_OBJECT_DICT, None),
295 033684dd Michael Hanselmann
    ], "self._BlockdevFindPostProc",
296 033684dd Michael Hanselmann
    "Request identification of a given block device"),
297 033684dd Michael Hanselmann
  ("blockdev_getmirrorstatus", SINGLE, TMO_NORMAL, [
298 cd40dc53 Michael Hanselmann
    ("disks", ED_OBJECT_DICT_LIST, None),
299 033684dd Michael Hanselmann
    ], "self._BlockdevGetMirrorStatusPostProc",
300 033684dd Michael Hanselmann
    "Request status of a (mirroring) device"),
301 033684dd Michael Hanselmann
  ("blockdev_getmirrorstatus_multi", MULTI, TMO_NORMAL, [
302 cd40dc53 Michael Hanselmann
    ("node_disks", ED_NODE_TO_DISK_DICT, None),
303 033684dd Michael Hanselmann
    ], "self._BlockdevGetMirrorStatusMultiPostProc",
304 033684dd Michael Hanselmann
    "Request status of (mirroring) devices from multiple nodes"),
305 033684dd Michael Hanselmann
  ]
306 033684dd Michael Hanselmann
307 033684dd Michael Hanselmann
_OS_CALLS = [
308 033684dd Michael Hanselmann
  ("os_diagnose", MULTI, TMO_FAST, [], None,
309 033684dd Michael Hanselmann
   "Request a diagnose of OS definitions"),
310 033684dd Michael Hanselmann
  ("os_validate", MULTI, TMO_FAST, [
311 033684dd Michael Hanselmann
    ("required", None, None),
312 033684dd Michael Hanselmann
    ("name", None, None),
313 033684dd Michael Hanselmann
    ("checks", None, None),
314 033684dd Michael Hanselmann
    ("params", None, None),
315 033684dd Michael Hanselmann
    ], None, "Run a validation routine for a given OS"),
316 033684dd Michael Hanselmann
  ("os_get", SINGLE, TMO_FAST, [
317 033684dd Michael Hanselmann
    ("name", None, None),
318 033684dd Michael Hanselmann
    ], "self._OsGetPostProc", "Returns an OS definition"),
319 033684dd Michael Hanselmann
  ]
320 033684dd Michael Hanselmann
321 033684dd Michael Hanselmann
_NODE_CALLS = [
322 033684dd Michael Hanselmann
  ("node_has_ip_address", SINGLE, TMO_FAST, [
323 033684dd Michael Hanselmann
    ("address", None, "IP address"),
324 033684dd Michael Hanselmann
    ], None, "Checks if a node has the given IP address"),
325 033684dd Michael Hanselmann
  ("node_info", MULTI, TMO_URGENT, [
326 033684dd Michael Hanselmann
    ("vg_name", None,
327 033684dd Michael Hanselmann
     "Name of the volume group to ask for disk space information"),
328 033684dd Michael Hanselmann
    ("hypervisor_type", None,
329 033684dd Michael Hanselmann
     "Name of the hypervisor to ask for memory information"),
330 033684dd Michael Hanselmann
    ], None, "Return node information"),
331 033684dd Michael Hanselmann
  ("node_verify", MULTI, TMO_NORMAL, [
332 033684dd Michael Hanselmann
    ("checkdict", None, None),
333 033684dd Michael Hanselmann
    ("cluster_name", None, None),
334 033684dd Michael Hanselmann
    ], None, "Request verification of given parameters"),
335 033684dd Michael Hanselmann
  ("node_volumes", MULTI, TMO_FAST, [], None, "Gets all volumes on node(s)"),
336 033684dd Michael Hanselmann
  ("node_demote_from_mc", SINGLE, TMO_FAST, [], None,
337 033684dd Michael Hanselmann
   "Demote a node from the master candidate role"),
338 033684dd Michael Hanselmann
  ("node_powercycle", SINGLE, TMO_NORMAL, [
339 033684dd Michael Hanselmann
    ("hypervisor", None, "Hypervisor type"),
340 033684dd Michael Hanselmann
    ], None, "Tries to powercycle a node"),
341 033684dd Michael Hanselmann
  ]
342 033684dd Michael Hanselmann
343 033684dd Michael Hanselmann
_MISC_CALLS = [
344 033684dd Michael Hanselmann
  ("lv_list", MULTI, TMO_URGENT, [
345 033684dd Michael Hanselmann
    ("vg_name", None, None),
346 033684dd Michael Hanselmann
    ], None, "Gets the logical volumes present in a given volume group"),
347 033684dd Michael Hanselmann
  ("vg_list", MULTI, TMO_URGENT, [], None, "Gets the volume group list"),
348 033684dd Michael Hanselmann
  ("bridges_exist", SINGLE, TMO_URGENT, [
349 033684dd Michael Hanselmann
    ("bridges_list", None, "Bridges which must be present on remote node"),
350 033684dd Michael Hanselmann
    ], None, "Checks if a node has all the bridges given"),
351 033684dd Michael Hanselmann
  ("etc_hosts_modify", SINGLE, TMO_NORMAL, [
352 033684dd Michael Hanselmann
    ("mode", None,
353 033684dd Michael Hanselmann
     "Mode to operate; currently L{constants.ETC_HOSTS_ADD} or"
354 033684dd Michael Hanselmann
     " L{constants.ETC_HOSTS_REMOVE}"),
355 033684dd Michael Hanselmann
    ("name", None, "Hostname to be modified"),
356 033684dd Michael Hanselmann
    ("ip", None, "IP address (L{constants.ETC_HOSTS_ADD} only)"),
357 033684dd Michael Hanselmann
    ], None, "Modify hosts file with name"),
358 033684dd Michael Hanselmann
  ("drbd_helper", MULTI, TMO_URGENT, [], None, "Gets DRBD helper"),
359 033684dd Michael Hanselmann
  ("run_oob", SINGLE, TMO_NORMAL, [
360 033684dd Michael Hanselmann
    ("oob_program", None, None),
361 033684dd Michael Hanselmann
    ("command", None, None),
362 033684dd Michael Hanselmann
    ("remote_node", None, None),
363 033684dd Michael Hanselmann
    ("timeout", None, None),
364 033684dd Michael Hanselmann
    ], None, "Runs out-of-band command"),
365 033684dd Michael Hanselmann
  ("hooks_runner", MULTI, TMO_NORMAL, [
366 033684dd Michael Hanselmann
    ("hpath", None, None),
367 033684dd Michael Hanselmann
    ("phase", None, None),
368 033684dd Michael Hanselmann
    ("env", None, None),
369 033684dd Michael Hanselmann
    ], None, "Call the hooks runner"),
370 033684dd Michael Hanselmann
  ("iallocator_runner", SINGLE, TMO_NORMAL, [
371 033684dd Michael Hanselmann
    ("name", None, "Iallocator name"),
372 033684dd Michael Hanselmann
    ("idata", None, "JSON-encoded input string"),
373 033684dd Michael Hanselmann
    ], None, "Call an iallocator on a remote node"),
374 033684dd Michael Hanselmann
  ("test_delay", MULTI, None, [
375 033684dd Michael Hanselmann
    ("duration", None, None),
376 033684dd Michael Hanselmann
    ], None, "Sleep for a fixed time on given node(s)"),
377 68959ca5 Michael Hanselmann
  ("hypervisor_validate_params", MULTI, TMO_NORMAL, [
378 68959ca5 Michael Hanselmann
    ("hvname", None, "Hypervisor name"),
379 68959ca5 Michael Hanselmann
    ("hvfull", None, "Parameters to be validated"),
380 68959ca5 Michael Hanselmann
    ], None, "Validate hypervisor params"),
381 033684dd Michael Hanselmann
  ]
382 033684dd Michael Hanselmann
383 d5a2a550 Michael Hanselmann
CALLS = {
384 83816869 Michael Hanselmann
  "RpcClientDefault": (_IMPEXP_CALLS + _X509_CALLS + _OS_CALLS + _NODE_CALLS +
385 f69b367e Michael Hanselmann
    _FILE_STORAGE_CALLS + _MISC_CALLS + _INSTANCE_CALLS + _BLOCKDEV_CALLS +
386 f69b367e Michael Hanselmann
    _STORAGE_CALLS),
387 fb1ffbca Michael Hanselmann
  "RpcClientJobQueue": [
388 fb1ffbca Michael Hanselmann
    ("jobqueue_update", MULTI, TMO_URGENT, [
389 fb1ffbca Michael Hanselmann
      ("file_name", None, None),
390 cd40dc53 Michael Hanselmann
      ("content", ED_COMPRESS, None),
391 fb1ffbca Michael Hanselmann
      ], None, "Update job queue file"),
392 fb1ffbca Michael Hanselmann
    ("jobqueue_purge", SINGLE, TMO_NORMAL, [], None, "Purge job queue"),
393 fb1ffbca Michael Hanselmann
    ("jobqueue_rename", MULTI, TMO_URGENT, [
394 fb1ffbca Michael Hanselmann
      ("rename", None, None),
395 fb1ffbca Michael Hanselmann
      ], None, "Rename job queue file"),
396 fb1ffbca Michael Hanselmann
    ],
397 db04ce5d Michael Hanselmann
  "RpcClientBootstrap": [
398 db04ce5d Michael Hanselmann
    ("node_start_master_daemons", SINGLE, TMO_FAST, [
399 db04ce5d Michael Hanselmann
      ("no_voting", None, None),
400 db04ce5d Michael Hanselmann
      ], None, "Starts master daemons on a node"),
401 db04ce5d Michael Hanselmann
    ("node_activate_master_ip", SINGLE, TMO_FAST, [], None,
402 db04ce5d Michael Hanselmann
     "Activates master IP on a node"),
403 db04ce5d Michael Hanselmann
    ("node_stop_master", SINGLE, TMO_FAST, [], None,
404 db04ce5d Michael Hanselmann
     "Deactivates master IP and stops master daemons on a node"),
405 db04ce5d Michael Hanselmann
    ("node_deactivate_master_ip", SINGLE, TMO_FAST, [], None,
406 db04ce5d Michael Hanselmann
     "Deactivates master IP on a node"),
407 db04ce5d Michael Hanselmann
    ("node_change_master_netmask", SINGLE, TMO_FAST, [
408 db04ce5d Michael Hanselmann
      ("netmask", None, None),
409 db04ce5d Michael Hanselmann
      ], None, "Change master IP netmask"),
410 db04ce5d Michael Hanselmann
    ("node_leave_cluster", SINGLE, TMO_NORMAL, [
411 db04ce5d Michael Hanselmann
      ("modify_ssh_setup", None, None),
412 db04ce5d Michael Hanselmann
      ], None, "Requests a node to clean the cluster information it has"),
413 db04ce5d Michael Hanselmann
    ("master_info", MULTI, TMO_URGENT, [], None, "Query master info"),
414 db04ce5d Michael Hanselmann
    ("version", MULTI, TMO_URGENT, [], None, "Query node version"),
415 db04ce5d Michael Hanselmann
    ],
416 415a7304 Michael Hanselmann
  "RpcClientConfig": [
417 415a7304 Michael Hanselmann
    ("upload_file", MULTI, TMO_NORMAL, [
418 cd40dc53 Michael Hanselmann
      ("file_name", ED_FILE_DETAILS, None),
419 415a7304 Michael Hanselmann
      ], None, "Upload a file"),
420 415a7304 Michael Hanselmann
    ("write_ssconf_files", MULTI, TMO_NORMAL, [
421 415a7304 Michael Hanselmann
      ("values", None, None),
422 415a7304 Michael Hanselmann
      ], None, "Write ssconf files"),
423 415a7304 Michael Hanselmann
    ],
424 d5a2a550 Michael Hanselmann
  }