]> git.proxmox.com Git - ceph.git/blob - ceph/src/mon/MonCommands.h
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / mon / MonCommands.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3 /*
4 * Ceph - scalable distributed file system
5 *
6 * Copyright (C) 2013 Inktank Storage, Inc.
7 * Copyright (C) 2013,2014 Cloudwatt <libre.licensing@cloudwatt.com>
8 *
9 * Author: Loic Dachary <loic@dachary.org>
10 *
11 * This is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Lesser General Public
13 * License version 2.1, as published by the Free Software
14 * Foundation. See file COPYING.
15 *
16 */
17
18 /* no guard; may be included multiple times */
19
20 /*
21 * Define commands that are reported by the monitor's
22 * "get_command_descriptions" command, and parsed by the Python
23 * frontend 'ceph' (and perhaps by other frontends, such as a RESTful
24 * server). The format is:
25 *
26 * COMMAND(signature, helpstring, modulename, req perms, availability)
27 * where:
28 * signature: describes the command and its parameters (more below)
29 * helpstring: displays in CLI help, API help (nice if it refers to
30 * parameter names from signature, 40-a few hundred chars)
31 * modulename: the monitor module or daemon this applies to:
32 * mds, osd, pg (osd), mon, auth, log, config-key, mgr
33 * req perms: required permission in that modulename space to execute command
34 * this also controls what type of REST command is accepted
35 *
36 * The commands describe themselves completely enough for the separate
37 * frontend(s) to be able to accept user input and validate it against
38 * the command descriptions, and generate a JSON object that contains
39 * key:value mappings of parameter names to validated parameter values.
40 *
41 * 'signature' is a space-separated list of individual command descriptors;
42 * each descriptor is either a literal string, which can contain no spaces or
43 * '=' signs (for instance, in "pg stat", both "pg" and "stat" are literal
44 * strings representing one descriptor each), or a list of key=val[,key=val...]
45 * which also includes no spaces.
46 *
47 * The key=val form describes a non-literal parameter. Each will have at
48 * least a name= and type=, and each type can have its own type-specific
49 * parameters. The parser is the arbiter of these types and their
50 * interpretation. A few more non-type-specific key=val pairs exist:
51 *
52 * req=false marks an optional parameter (default for req is 'true')
53 * n=<n> is a repeat count for how many of this argument must be supplied.
54 * n=1 is the default.
55 * n=N is a special case that means "1 or more".
56 *
57 * A perhaps-incomplete list of types:
58 *
59 * CephInt: Optional: range=min[|max]
60 * CephFloat: Optional range
61 * CephString: optional badchars
62 * CephSocketpath: validation involves "is it S_ISSOCK"
63 * CephIPAddr: v4 or v6 addr with optional port, syntax validated
64 * CephEntityAddr: CephIPAddr + optional '/nonce'
65 * CephPoolname: Plainold string
66 * CephObjectname: Another plainold string
67 * CephPgid: n.xxx where n is an int > 0, xxx is a hex number > 0
68 * CephName: daemon name, '*' or '<type>.<id>' (id must be int for type osd)
69 * CephOsdName: osd name, '*' or '<id> or 'osd.<id>' (id must be int)
70 * CephChoices: strings="foo|bar" means this param can be either
71 * CephFilepath: openable file
72 * CephFragment: cephfs 'fragID': val/bits, val in hex 0xnnn, bits in dec
73 * CephUUID: uuid in text matching Python uuid.UUID()
74 * CephPrefix: special type assigned to literals
75 *
76 * Example:
77 *
78 * COMMAND("auth add " \
79 * "name=entity,type=CephString " \
80 * "name=caps,type=CephString,n=N,req=false", \
81 * "add auth info for <name> from input file, or random key " \
82 * "if no input given, and/or any caps specified in the command")
83 *
84 * defines a command "auth add" that takes a required argument "entity"
85 * of type "CephString", and from 1 to N arguments named "caps" of type
86 * CephString, at least one of which is required. The front end will
87 * validate user input against this description. Let's say the user
88 * enters auth add client.admin 'mon rwx' 'osd *'. The result will be a
89 * JSON object like {"prefix":"auth add", "entity":"client.admin",
90 * "caps":["mon rwx", "osd *"]}.
91 * Note that
92 * - string literals are accumulated into 'prefix'
93 * - n=1 descriptors are given normal string or int object values
94 * - n=N descriptors are given array values
95 *
96 * NOTE: be careful with spaces. Each descriptor must be separated by
97 * one space, no other characters, so if you split lines as above, be
98 * sure to close and reopen the quotes, and be careful to include the '
99 * separating spaces in the quoted string.
100 *
101 * The monitor marshals this JSON into a std::map<string, cmd_vartype>
102 * where cmd_vartype is a boost::variant type-enforcing discriminated
103 * type, so the monitor is expected to know the type of each argument.
104 * See cmdparse.cc/h for more details.
105 *
106 * The flag parameter for COMMAND_WITH_FLAGS macro must be passed using
107 * FLAG(f), where 'f' may be one of the following:
108 *
109 * NONE - no flag assigned
110 * NOFORWARD - command may not be forwarded
111 * OBSOLETE - command is considered obsolete
112 * DEPRECATED - command is considered deprecated
113 * MGR - command goes to ceph-mgr (for luminous+)
114 * POLL - command is intended to be called periodically by the
115 * client (see iostat)
116 * HIDDEN - command is hidden (no reported by help etc)
117 *
118 * A command should always be first considered DEPRECATED before being
119 * considered OBSOLETE, giving due consideration to users and conforming
120 * to any guidelines regarding deprecating commands.
121 */
122
123 COMMAND("pg map name=pgid,type=CephPgid", "show mapping of pg to osds", \
124 "pg", "r")
125 COMMAND("pg repeer name=pgid,type=CephPgid", "force a PG to repeer",
126 "osd", "rw")
127 COMMAND("osd last-stat-seq name=id,type=CephOsdName", \
128 "get the last pg stats sequence number reported for this osd", \
129 "osd", "r")
130
131 /*
132 * auth commands AuthMonitor.cc
133 */
134
135 COMMAND("auth export name=entity,type=CephString,req=false", \
136 "write keyring for requested entity, or master keyring if none given", \
137 "auth", "rx")
138 COMMAND("auth get name=entity,type=CephString", \
139 "write keyring file with requested key", "auth", "rx")
140 COMMAND("auth get-key name=entity,type=CephString", "display requested key", \
141 "auth", "rx")
142 COMMAND("auth print-key name=entity,type=CephString", "display requested key", \
143 "auth", "rx")
144 COMMAND("auth print_key name=entity,type=CephString", "display requested key", \
145 "auth", "rx")
146 COMMAND_WITH_FLAG("auth list", "list authentication state", "auth", "rx",
147 FLAG(DEPRECATED))
148 COMMAND("auth ls", "list authentication state", "auth", "rx")
149 COMMAND("auth import", "auth import: read keyring file from -i <file>", \
150 "auth", "rwx")
151 COMMAND("auth add " \
152 "name=entity,type=CephString " \
153 "name=caps,type=CephString,n=N,req=false", \
154 "add auth info for <entity> from input file, or random key if no " \
155 "input is given, and/or any caps specified in the command",
156 "auth", "rwx")
157 COMMAND("auth get-or-create-key " \
158 "name=entity,type=CephString " \
159 "name=caps,type=CephString,n=N,req=false", \
160 "get, or add, key for <name> from system/caps pairs specified in the command. If key already exists, any given caps must match the existing caps for that key.", \
161 "auth", "rwx")
162 COMMAND("auth get-or-create " \
163 "name=entity,type=CephString " \
164 "name=caps,type=CephString,n=N,req=false", \
165 "add auth info for <entity> from input file, or random key if no input given, and/or any caps specified in the command", \
166 "auth", "rwx")
167 COMMAND("fs authorize " \
168 "name=filesystem,type=CephString " \
169 "name=entity,type=CephString " \
170 "name=caps,type=CephString,n=N", \
171 "add auth for <entity> to access file system <filesystem> based on following directory and permissions pairs", \
172 "auth", "rwx")
173 COMMAND("auth caps " \
174 "name=entity,type=CephString " \
175 "name=caps,type=CephString,n=N", \
176 "update caps for <name> from caps specified in the command", \
177 "auth", "rwx")
178 COMMAND_WITH_FLAG("auth del " \
179 "name=entity,type=CephString", \
180 "delete all caps for <name>", \
181 "auth", "rwx", \
182 FLAG(DEPRECATED))
183 COMMAND("auth rm " \
184 "name=entity,type=CephString", \
185 "remove all caps for <name>", \
186 "auth", "rwx")
187
188 /*
189 * Monitor commands (Monitor.cc)
190 */
191 COMMAND_WITH_FLAG("compact", "cause compaction of monitor's leveldb/rocksdb storage", \
192 "mon", "rw", \
193 FLAG(NOFORWARD)|FLAG(DEPRECATED))
194 COMMAND_WITH_FLAG("scrub", "scrub the monitor stores", \
195 "mon", "rw", \
196 FLAG(DEPRECATED))
197 COMMAND("fsid", "show cluster FSID/UUID", "mon", "r")
198 COMMAND("log name=logtext,type=CephString,n=N", \
199 "log supplied text to the monitor log", "mon", "rw")
200 COMMAND("log last "
201 "name=num,type=CephInt,range=1,req=false "
202 "name=level,type=CephChoices,strings=debug|info|sec|warn|error,req=false "
203 "name=channel,type=CephChoices,strings=*|cluster|audit,req=false", \
204 "print last few lines of the cluster log", \
205 "mon", "r")
206 COMMAND_WITH_FLAG("injectargs " \
207 "name=injected_args,type=CephString,n=N", \
208 "inject config arguments into monitor", "mon", "rw",
209 FLAG(NOFORWARD))
210
211 COMMAND("status", "show cluster status", "mon", "r")
212 COMMAND("health name=detail,type=CephChoices,strings=detail,req=false", \
213 "show cluster health", "mon", "r")
214 COMMAND("time-sync-status", "show time sync status", "mon", "r")
215 COMMAND("df name=detail,type=CephChoices,strings=detail,req=false", \
216 "show cluster free space stats", "mon", "r")
217 COMMAND("report name=tags,type=CephString,n=N,req=false", \
218 "report full status of cluster, optional title tag strings", \
219 "mon", "r")
220 COMMAND("features", "report of connected features", \
221 "mon", "r")
222 COMMAND("quorum_status", "report status of monitor quorum", \
223 "mon", "r")
224 COMMAND("mon ok-to-stop " \
225 "name=ids,type=CephString,n=N",
226 "check whether mon(s) can be safely stopped without reducing immediate " \
227 "availability",
228 "mon", "r")
229 COMMAND("mon ok-to-add-offline",
230 "check whether adding a mon and not starting it would break quorum",
231 "mon", "r")
232 COMMAND("mon ok-to-rm " \
233 "name=id,type=CephString",
234 "check whether removing the specified mon would break quorum",
235 "mon", "r")
236
237 COMMAND_WITH_FLAG("mon_status", "report status of monitors", "mon", "r",
238 FLAG(NOFORWARD))
239 COMMAND_WITH_FLAG("sync force " \
240 "name=yes_i_really_mean_it,type=CephBool,req=false " \
241 "name=i_know_what_i_am_doing,type=CephBool,req=false", \
242 "force sync of and clear monitor store", \
243 "mon", "rw", \
244 FLAG(NOFORWARD)|FLAG(DEPRECATED))
245 COMMAND_WITH_FLAG("heap " \
246 "name=heapcmd,type=CephChoices,strings=dump|start_profiler|stop_profiler|release|stats", \
247 "show heap usage info (available only if compiled with tcmalloc)", \
248 "mon", "rw", FLAG(NOFORWARD))
249 COMMAND("quorum name=quorumcmd,type=CephChoices,strings=enter|exit,n=1", \
250 "enter or exit quorum", "mon", "rw")
251 COMMAND("tell " \
252 "name=target,type=CephName " \
253 "name=args,type=CephString,n=N", \
254 "send a command to a specific daemon", "mon", "rw")
255 COMMAND_WITH_FLAG("version", "show mon daemon version", "mon", "r",
256 FLAG(NOFORWARD))
257
258 COMMAND("node ls " \
259 "name=type,type=CephChoices,strings=all|osd|mon|mds|mgr,req=false",
260 "list all nodes in cluster [type]", "mon", "r")
261 /*
262 * Monitor-specific commands under module 'mon'
263 */
264 COMMAND_WITH_FLAG("mon compact", \
265 "cause compaction of monitor's leveldb/rocksdb storage", \
266 "mon", "rw", \
267 FLAG(NOFORWARD))
268 COMMAND_WITH_FLAG("mon scrub",
269 "scrub the monitor stores", \
270 "mon", "rw", \
271 FLAG(NONE))
272 COMMAND_WITH_FLAG("mon sync force " \
273 "name=yes_i_really_mean_it,type=CephBool,req=false " \
274 "name=i_know_what_i_am_doing,type=CephBool,req=false", \
275 "force sync of and clear monitor store", \
276 "mon", "rw", \
277 FLAG(NOFORWARD))
278 COMMAND("mon metadata name=id,type=CephString,req=false",
279 "fetch metadata for mon <id>",
280 "mon", "r")
281 COMMAND("mon count-metadata name=property,type=CephString",
282 "count mons by metadata field property",
283 "mon", "r")
284 COMMAND("mon versions",
285 "check running versions of monitors",
286 "mon", "r")
287 COMMAND("versions",
288 "check running versions of ceph daemons",
289 "mon", "r")
290
291
292
293 /*
294 * MDS commands (MDSMonitor.cc)
295 */
296
297 COMMAND_WITH_FLAG("mds stat", "show MDS status", "mds", "r", FLAG(HIDDEN))
298 COMMAND_WITH_FLAG("mds dump "
299 "name=epoch,type=CephInt,req=false,range=0", \
300 "dump legacy MDS cluster info, optionally from epoch",
301 "mds", "r", FLAG(OBSOLETE))
302 COMMAND("fs dump "
303 "name=epoch,type=CephInt,req=false,range=0", \
304 "dump all CephFS status, optionally from epoch", "mds", "r")
305 COMMAND_WITH_FLAG("mds getmap " \
306 "name=epoch,type=CephInt,req=false,range=0", \
307 "get MDS map, optionally from epoch", "mds", "r", FLAG(OBSOLETE))
308 COMMAND("mds metadata name=who,type=CephString,req=false",
309 "fetch metadata for mds <role>",
310 "mds", "r")
311 COMMAND("mds count-metadata name=property,type=CephString",
312 "count MDSs by metadata field property",
313 "mds", "r")
314 COMMAND("mds versions",
315 "check running versions of MDSs",
316 "mds", "r")
317 COMMAND_WITH_FLAG("mds tell " \
318 "name=who,type=CephString " \
319 "name=args,type=CephString,n=N", \
320 "send command to particular mds", "mds", "rw", FLAG(OBSOLETE))
321 COMMAND("mds compat show", "show mds compatibility settings", \
322 "mds", "r")
323 COMMAND_WITH_FLAG("mds stop name=role,type=CephString", "stop mds", \
324 "mds", "rw", FLAG(OBSOLETE))
325 COMMAND_WITH_FLAG("mds deactivate name=role,type=CephString",
326 "clean up specified MDS rank (use with `set max_mds` to shrink cluster)", \
327 "mds", "rw", FLAG(OBSOLETE))
328 COMMAND("mds ok-to-stop name=ids,type=CephString,n=N",
329 "check whether stopping the specified MDS would reduce immediate availability",
330 "mds", "r")
331 COMMAND_WITH_FLAG("mds set_max_mds " \
332 "name=maxmds,type=CephInt,range=0", \
333 "set max MDS index", "mds", "rw", FLAG(OBSOLETE))
334 COMMAND_WITH_FLAG("mds set " \
335 "name=var,type=CephChoices,strings=max_mds|max_file_size|inline_data|"
336 "allow_new_snaps|allow_multimds|allow_multimds_snaps|allow_dirfrags " \
337 "name=val,type=CephString " \
338 "name=yes_i_really_mean_it,type=CephBool,req=false", \
339 "set mds parameter <var> to <val>", "mds", "rw", FLAG(OBSOLETE))
340 COMMAND_WITH_FLAG("mds freeze name=role_or_gid,type=CephString"
341 " name=val,type=CephString",
342 "freeze MDS yes/no", "mds", "rw", FLAG(HIDDEN))
343 // arbitrary limit 0-20 below; worth standing on head to make it
344 // relate to actual state definitions?
345 // #include "include/ceph_fs.h"
346 COMMAND_WITH_FLAG("mds set_state " \
347 "name=gid,type=CephInt,range=0 " \
348 "name=state,type=CephInt,range=0|20", \
349 "set mds state of <gid> to <numeric-state>", "mds", "rw", FLAG(HIDDEN))
350 COMMAND("mds fail name=role_or_gid,type=CephString", \
351 "Mark MDS failed: trigger a failover if a standby is available",
352 "mds", "rw")
353 COMMAND("mds repaired name=role,type=CephString", \
354 "mark a damaged MDS rank as no longer damaged", "mds", "rw")
355 COMMAND("mds rm " \
356 "name=gid,type=CephInt,range=0", \
357 "remove nonactive mds", "mds", "rw")
358 COMMAND_WITH_FLAG("mds rmfailed name=role,type=CephString " \
359 "name=yes_i_really_mean_it,type=CephBool,req=false", \
360 "remove failed rank", "mds", "rw", FLAG(HIDDEN))
361 COMMAND_WITH_FLAG("mds cluster_down", "take MDS cluster down", "mds", "rw", FLAG(OBSOLETE))
362 COMMAND_WITH_FLAG("mds cluster_up", "bring MDS cluster up", "mds", "rw", FLAG(OBSOLETE))
363 COMMAND("mds compat rm_compat " \
364 "name=feature,type=CephInt,range=0", \
365 "remove compatible feature", "mds", "rw")
366 COMMAND("mds compat rm_incompat " \
367 "name=feature,type=CephInt,range=0", \
368 "remove incompatible feature", "mds", "rw")
369 COMMAND_WITH_FLAG("mds add_data_pool " \
370 "name=pool,type=CephString", \
371 "add data pool <pool>", "mds", "rw", FLAG(OBSOLETE))
372 COMMAND_WITH_FLAG("mds rm_data_pool " \
373 "name=pool,type=CephString", \
374 "remove data pool <pool>", "mds", "rw", FLAG(OBSOLETE))
375 COMMAND_WITH_FLAG("mds remove_data_pool " \
376 "name=pool,type=CephString", \
377 "remove data pool <pool>", "mds", "rw", FLAG(OBSOLETE))
378 COMMAND_WITH_FLAG("mds newfs " \
379 "name=metadata,type=CephInt,range=0 " \
380 "name=data,type=CephInt,range=0 " \
381 "name=yes_i_really_mean_it,type=CephBool,req=false", \
382 "make new filesystem using pools <metadata> and <data>", \
383 "mds", "rw", FLAG(OBSOLETE))
384 COMMAND("fs new " \
385 "name=fs_name,type=CephString " \
386 "name=metadata,type=CephString " \
387 "name=data,type=CephString " \
388 "name=force,type=CephBool,req=false " \
389 "name=allow_dangerous_metadata_overlay,type=CephBool,req=false", \
390 "make new filesystem using named pools <metadata> and <data>", \
391 "fs", "rw")
392 COMMAND("fs fail " \
393 "name=fs_name,type=CephString ", \
394 "bring the file system down and all of its ranks", \
395 "fs", "rw")
396 COMMAND("fs rm " \
397 "name=fs_name,type=CephString " \
398 "name=yes_i_really_mean_it,type=CephBool,req=false", \
399 "disable the named filesystem", \
400 "fs", "rw")
401 COMMAND("fs reset " \
402 "name=fs_name,type=CephString " \
403 "name=yes_i_really_mean_it,type=CephBool,req=false", \
404 "disaster recovery only: reset to a single-MDS map", \
405 "fs", "rw")
406 COMMAND("fs ls ", \
407 "list filesystems", \
408 "fs", "r")
409 COMMAND("fs get name=fs_name,type=CephString", \
410 "get info about one filesystem", \
411 "fs", "r")
412 COMMAND("fs set " \
413 "name=fs_name,type=CephString " \
414 "name=var,type=CephChoices,strings=max_mds|max_file_size"
415 "|allow_new_snaps|inline_data|cluster_down|allow_dirfrags|balancer" \
416 "|standby_count_wanted|session_timeout|session_autoclose" \
417 "|allow_standby_replay|down|joinable|min_compat_client " \
418 "name=val,type=CephString " \
419 "name=yes_i_really_mean_it,type=CephBool,req=false", \
420 "set fs parameter <var> to <val>", "mds", "rw")
421 COMMAND("fs flag set name=flag_name,type=CephChoices,strings=enable_multiple "
422 "name=val,type=CephString " \
423 "name=yes_i_really_mean_it,type=CephBool,req=false", \
424 "Set a global CephFS flag", \
425 "fs", "rw")
426 COMMAND("fs add_data_pool name=fs_name,type=CephString " \
427 "name=pool,type=CephString", \
428 "add data pool <pool>", "mds", "rw")
429 COMMAND("fs rm_data_pool name=fs_name,type=CephString " \
430 "name=pool,type=CephString", \
431 "remove data pool <pool>", "mds", "rw")
432 COMMAND_WITH_FLAG("fs set_default name=fs_name,type=CephString", \
433 "set the default to the named filesystem", \
434 "fs", "rw", \
435 FLAG(DEPRECATED))
436 COMMAND("fs set-default name=fs_name,type=CephString", \
437 "set the default to the named filesystem", \
438 "fs", "rw")
439
440 /*
441 * Monmap commands
442 */
443 COMMAND("mon dump " \
444 "name=epoch,type=CephInt,range=0,req=false", \
445 "dump formatted monmap (optionally from epoch)", \
446 "mon", "r")
447 COMMAND("mon stat", "summarize monitor status", "mon", "r")
448 COMMAND("mon getmap " \
449 "name=epoch,type=CephInt,range=0,req=false", \
450 "get monmap", "mon", "r")
451 COMMAND("mon add " \
452 "name=name,type=CephString " \
453 "name=addr,type=CephIPAddr", \
454 "add new monitor named <name> at <addr>", "mon", "rw")
455 COMMAND("mon rm " \
456 "name=name,type=CephString", \
457 "remove monitor named <name>", "mon", "rw")
458 COMMAND_WITH_FLAG("mon remove " \
459 "name=name,type=CephString", \
460 "remove monitor named <name>", "mon", "rw", \
461 FLAG(DEPRECATED))
462 COMMAND("mon feature ls " \
463 "name=with_value,type=CephChoices,strings=--with-value,req=false", \
464 "list available mon map features to be set/unset", \
465 "mon", "r")
466 COMMAND("mon feature set " \
467 "name=feature_name,type=CephString " \
468 "name=yes_i_really_mean_it,type=CephBool,req=false", \
469 "set provided feature on mon map", \
470 "mon", "rw")
471 COMMAND("mon set-rank " \
472 "name=name,type=CephString " \
473 "name=rank,type=CephInt",
474 "set the rank for the specified mon",
475 "mon", "rw")
476 COMMAND("mon set-addrs " \
477 "name=name,type=CephString " \
478 "name=addrs,type=CephString",
479 "set the addrs (IPs and ports) a specific monitor binds to",
480 "mon", "rw")
481 COMMAND("mon enable-msgr2",
482 "enable the msgr2 protocol on port 3300",
483 "mon", "rw")
484
485 /*
486 * OSD commands
487 */
488 COMMAND("osd stat", "print summary of OSD map", "osd", "r")
489 COMMAND("osd dump " \
490 "name=epoch,type=CephInt,range=0,req=false",
491 "print summary of OSD map", "osd", "r")
492 COMMAND("osd tree " \
493 "name=epoch,type=CephInt,range=0,req=false " \
494 "name=states,type=CephChoices,strings=up|down|in|out|destroyed,n=N,req=false", \
495 "print OSD tree", "osd", "r")
496 COMMAND("osd tree-from " \
497 "name=epoch,type=CephInt,range=0,req=false " \
498 "name=bucket,type=CephString " \
499 "name=states,type=CephChoices,strings=up|down|in|out|destroyed,n=N,req=false", \
500 "print OSD tree in bucket", "osd", "r")
501 COMMAND("osd ls " \
502 "name=epoch,type=CephInt,range=0,req=false", \
503 "show all OSD ids", "osd", "r")
504 COMMAND("osd getmap " \
505 "name=epoch,type=CephInt,range=0,req=false", \
506 "get OSD map", "osd", "r")
507 COMMAND("osd getcrushmap " \
508 "name=epoch,type=CephInt,range=0,req=false", \
509 "get CRUSH map", "osd", "r")
510 COMMAND("osd getmaxosd", "show largest OSD id", "osd", "r")
511 COMMAND("osd ls-tree " \
512 "name=epoch,type=CephInt,range=0,req=false "
513 "name=name,type=CephString,req=true", \
514 "show OSD ids under bucket <name> in the CRUSH map", \
515 "osd", "r")
516 COMMAND("osd find " \
517 "name=id,type=CephOsdName", \
518 "find osd <id> in the CRUSH map and show its location", \
519 "osd", "r")
520 COMMAND("osd metadata " \
521 "name=id,type=CephOsdName,req=false", \
522 "fetch metadata for osd {id} (default all)", \
523 "osd", "r")
524 COMMAND("osd count-metadata name=property,type=CephString",
525 "count OSDs by metadata field property",
526 "osd", "r")
527 COMMAND("osd versions", \
528 "check running versions of OSDs",
529 "osd", "r")
530 COMMAND("osd numa-status",
531 "show NUMA status of OSDs",
532 "osd", "r")
533 COMMAND("osd map " \
534 "name=pool,type=CephPoolname " \
535 "name=object,type=CephObjectname " \
536 "name=nspace,type=CephString,req=false", \
537 "find pg for <object> in <pool> with [namespace]", "osd", "r")
538 COMMAND_WITH_FLAG("osd lspools", \
539 "list pools", "osd", "r", FLAG(DEPRECATED))
540 COMMAND_WITH_FLAG("osd crush rule list", "list crush rules", "osd", "r",
541 FLAG(DEPRECATED))
542 COMMAND("osd crush rule ls", "list crush rules", "osd", "r")
543 COMMAND("osd crush rule ls-by-class " \
544 "name=class,type=CephString,goodchars=[A-Za-z0-9-_.]", \
545 "list all crush rules that reference the same <class>", \
546 "osd", "r")
547 COMMAND("osd crush rule dump " \
548 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.],req=false", \
549 "dump crush rule <name> (default all)", \
550 "osd", "r")
551 COMMAND("osd crush dump", \
552 "dump crush map", \
553 "osd", "r")
554 COMMAND("osd setcrushmap name=prior_version,type=CephInt,req=false", \
555 "set crush map from input file", \
556 "osd", "rw")
557 COMMAND("osd crush set name=prior_version,type=CephInt,req=false", \
558 "set crush map from input file", \
559 "osd", "rw")
560 COMMAND("osd crush add-bucket " \
561 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
562 "name=type,type=CephString " \
563 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=],req=false", \
564 "add no-parent (probably root) crush bucket <name> of type <type> " \
565 "to location <args>", \
566 "osd", "rw")
567 COMMAND("osd crush rename-bucket " \
568 "name=srcname,type=CephString,goodchars=[A-Za-z0-9-_.] " \
569 "name=dstname,type=CephString,goodchars=[A-Za-z0-9-_.]", \
570 "rename bucket <srcname> to <dstname>", \
571 "osd", "rw")
572 COMMAND("osd crush set " \
573 "name=id,type=CephOsdName " \
574 "name=weight,type=CephFloat,range=0.0 " \
575 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=]", \
576 "update crushmap position and weight for <name> to <weight> with location <args>", \
577 "osd", "rw")
578 COMMAND("osd crush add " \
579 "name=id,type=CephOsdName " \
580 "name=weight,type=CephFloat,range=0.0 " \
581 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=]", \
582 "add or update crushmap position and weight for <name> with <weight> and location <args>", \
583 "osd", "rw")
584 COMMAND("osd crush set-all-straw-buckets-to-straw2",
585 "convert all CRUSH current straw buckets to use the straw2 algorithm",
586 "osd", "rw")
587 COMMAND("osd crush class create " \
588 "name=class,type=CephString,goodchars=[A-Za-z0-9-_]", \
589 "create crush device class <class>", \
590 "osd", "rw")
591 COMMAND("osd crush class rm " \
592 "name=class,type=CephString,goodchars=[A-Za-z0-9-_]", \
593 "remove crush device class <class>", \
594 "osd", "rw")
595 COMMAND("osd crush set-device-class " \
596 "name=class,type=CephString " \
597 "name=ids,type=CephString,n=N", \
598 "set the <class> of the osd(s) <id> [<id>...]," \
599 "or use <all|any> to set all.", \
600 "osd", "rw")
601 COMMAND("osd crush rm-device-class " \
602 "name=ids,type=CephString,n=N", \
603 "remove class of the osd(s) <id> [<id>...]," \
604 "or use <all|any> to remove all.", \
605 "osd", "rw")
606 COMMAND("osd crush class rename " \
607 "name=srcname,type=CephString,goodchars=[A-Za-z0-9-_] " \
608 "name=dstname,type=CephString,goodchars=[A-Za-z0-9-_]", \
609 "rename crush device class <srcname> to <dstname>", \
610 "osd", "rw")
611 COMMAND("osd crush create-or-move " \
612 "name=id,type=CephOsdName " \
613 "name=weight,type=CephFloat,range=0.0 " \
614 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=]", \
615 "create entry or move existing entry for <name> <weight> at/to location <args>", \
616 "osd", "rw")
617 COMMAND("osd crush move " \
618 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
619 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=]", \
620 "move existing entry for <name> to location <args>", \
621 "osd", "rw")
622 COMMAND("osd crush swap-bucket " \
623 "name=source,type=CephString,goodchars=[A-Za-z0-9-_.] " \
624 "name=dest,type=CephString,goodchars=[A-Za-z0-9-_.] " \
625 "name=yes_i_really_mean_it,type=CephBool,req=false", \
626 "swap existing bucket contents from (orphan) bucket <source> and <target>", \
627 "osd", "rw")
628 COMMAND("osd crush link " \
629 "name=name,type=CephString " \
630 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=]", \
631 "link existing entry for <name> under location <args>", \
632 "osd", "rw")
633 COMMAND("osd crush rm " \
634 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
635 "name=ancestor,type=CephString,req=false,goodchars=[A-Za-z0-9-_.]", \
636 "remove <name> from crush map (everywhere, or just at <ancestor>)",\
637 "osd", "rw")
638 COMMAND_WITH_FLAG("osd crush remove " \
639 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
640 "name=ancestor,type=CephString,req=false,goodchars=[A-Za-z0-9-_.]", \
641 "remove <name> from crush map (everywhere, or just at <ancestor>)", \
642 "osd", "rw", \
643 FLAG(DEPRECATED))
644 COMMAND("osd crush unlink " \
645 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
646 "name=ancestor,type=CephString,req=false,goodchars=[A-Za-z0-9-_.]", \
647 "unlink <name> from crush map (everywhere, or just at <ancestor>)", \
648 "osd", "rw")
649 COMMAND("osd crush reweight-all",
650 "recalculate the weights for the tree to ensure they sum correctly",
651 "osd", "rw")
652 COMMAND("osd crush reweight " \
653 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
654 "name=weight,type=CephFloat,range=0.0", \
655 "change <name>'s weight to <weight> in crush map", \
656 "osd", "rw")
657 COMMAND("osd crush reweight-subtree " \
658 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
659 "name=weight,type=CephFloat,range=0.0", \
660 "change all leaf items beneath <name> to <weight> in crush map", \
661 "osd", "rw")
662 COMMAND("osd crush tunables " \
663 "name=profile,type=CephChoices,strings=legacy|argonaut|bobtail|firefly|hammer|jewel|optimal|default", \
664 "set crush tunables values to <profile>", "osd", "rw")
665 COMMAND("osd crush set-tunable " \
666 "name=tunable,type=CephChoices,strings=straw_calc_version " \
667 "name=value,type=CephInt",
668 "set crush tunable <tunable> to <value>",
669 "osd", "rw")
670 COMMAND("osd crush get-tunable " \
671 "name=tunable,type=CephChoices,strings=straw_calc_version",
672 "get crush tunable <tunable>",
673 "osd", "r")
674 COMMAND("osd crush show-tunables", \
675 "show current crush tunables", "osd", "r")
676 COMMAND("osd crush rule create-simple " \
677 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
678 "name=root,type=CephString,goodchars=[A-Za-z0-9-_.] " \
679 "name=type,type=CephString,goodchars=[A-Za-z0-9-_.] " \
680 "name=mode,type=CephChoices,strings=firstn|indep,req=false",
681 "create crush rule <name> to start from <root>, replicate across buckets of type <type>, using a choose mode of <firstn|indep> (default firstn; indep best for erasure pools)", \
682 "osd", "rw")
683 COMMAND("osd crush rule create-replicated " \
684 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
685 "name=root,type=CephString,goodchars=[A-Za-z0-9-_.] " \
686 "name=type,type=CephString,goodchars=[A-Za-z0-9-_.] " \
687 "name=class,type=CephString,goodchars=[A-Za-z0-9-_.],req=false",
688 "create crush rule <name> for replicated pool to start from <root>, replicate across buckets of type <type>, use devices of type <class> (ssd or hdd)", \
689 "osd", "rw")
690 COMMAND("osd crush rule create-erasure " \
691 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
692 "name=profile,type=CephString,req=false,goodchars=[A-Za-z0-9-_.=]", \
693 "create crush rule <name> for erasure coded pool created with <profile> (default default)", \
694 "osd", "rw")
695 COMMAND("osd crush rule rm " \
696 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] ", \
697 "remove crush rule <name>", "osd", "rw")
698 COMMAND("osd crush rule rename " \
699 "name=srcname,type=CephString,goodchars=[A-Za-z0-9-_.] " \
700 "name=dstname,type=CephString,goodchars=[A-Za-z0-9-_.]", \
701 "rename crush rule <srcname> to <dstname>",
702 "osd", "rw")
703 COMMAND("osd crush tree "
704 "name=shadow,type=CephChoices,strings=--show-shadow,req=false", \
705 "dump crush buckets and items in a tree view",
706 "osd", "r")
707 COMMAND("osd crush ls name=node,type=CephString,goodchars=[A-Za-z0-9-_.]",
708 "list items beneath a node in the CRUSH tree",
709 "osd", "r")
710 COMMAND("osd crush class ls", \
711 "list all crush device classes", \
712 "osd", "r")
713 COMMAND("osd crush class ls-osd " \
714 "name=class,type=CephString,goodchars=[A-Za-z0-9-_]", \
715 "list all osds belonging to the specific <class>", \
716 "osd", "r")
717 COMMAND("osd crush get-device-class " \
718 "name=ids,type=CephString,n=N", \
719 "get classes of specified osd(s) <id> [<id>...]", \
720 "osd", "r")
721 COMMAND("osd crush weight-set ls",
722 "list crush weight sets",
723 "osd", "r")
724 COMMAND("osd crush weight-set dump",
725 "dump crush weight sets",
726 "osd", "r")
727 COMMAND("osd crush weight-set create-compat",
728 "create a default backward-compatible weight-set",
729 "osd", "rw")
730 COMMAND("osd crush weight-set create " \
731 "name=pool,type=CephPoolname "\
732 "name=mode,type=CephChoices,strings=flat|positional",
733 "create a weight-set for a given pool",
734 "osd", "rw")
735 COMMAND("osd crush weight-set rm name=pool,type=CephPoolname",
736 "remove the weight-set for a given pool",
737 "osd", "rw")
738 COMMAND("osd crush weight-set rm-compat",
739 "remove the backward-compatible weight-set",
740 "osd", "rw")
741 COMMAND("osd crush weight-set reweight " \
742 "name=pool,type=CephPoolname " \
743 "name=item,type=CephString " \
744 "name=weight,type=CephFloat,range=0.0,n=N",
745 "set weight for an item (bucket or osd) in a pool's weight-set",
746 "osd", "rw")
747 COMMAND("osd crush weight-set reweight-compat " \
748 "name=item,type=CephString " \
749 "name=weight,type=CephFloat,range=0.0,n=N",
750 "set weight for an item (bucket or osd) in the backward-compatible weight-set",
751 "osd", "rw")
752 COMMAND("osd setmaxosd " \
753 "name=newmax,type=CephInt,range=0", \
754 "set new maximum osd value", "osd", "rw")
755 COMMAND("osd set-full-ratio " \
756 "name=ratio,type=CephFloat,range=0.0|1.0", \
757 "set usage ratio at which OSDs are marked full",
758 "osd", "rw")
759 COMMAND("osd set-backfillfull-ratio " \
760 "name=ratio,type=CephFloat,range=0.0|1.0", \
761 "set usage ratio at which OSDs are marked too full to backfill",
762 "osd", "rw")
763 COMMAND("osd set-nearfull-ratio " \
764 "name=ratio,type=CephFloat,range=0.0|1.0", \
765 "set usage ratio at which OSDs are marked near-full",
766 "osd", "rw")
767 COMMAND("osd get-require-min-compat-client",
768 "get the minimum client version we will maintain compatibility with",
769 "osd", "r")
770 COMMAND("osd set-require-min-compat-client " \
771 "name=version,type=CephString " \
772 "name=yes_i_really_mean_it,type=CephBool,req=false", \
773 "set the minimum client version we will maintain compatibility with",
774 "osd", "rw")
775 COMMAND("osd pause", "pause osd", "osd", "rw")
776 COMMAND("osd unpause", "unpause osd", "osd", "rw")
777 COMMAND("osd erasure-code-profile set " \
778 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
779 "name=profile,type=CephString,n=N,req=false " \
780 "name=force,type=CephBool,req=false", \
781 "create erasure code profile <name> with [<key[=value]> ...] pairs. Add a --force at the end to override an existing profile (VERY DANGEROUS)", \
782 "osd", "rw")
783 COMMAND("osd erasure-code-profile get " \
784 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.]", \
785 "get erasure code profile <name>", \
786 "osd", "r")
787 COMMAND("osd erasure-code-profile rm " \
788 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.]", \
789 "remove erasure code profile <name>", \
790 "osd", "rw")
791 COMMAND("osd erasure-code-profile ls", \
792 "list all erasure code profiles", \
793 "osd", "r")
794 COMMAND("osd set " \
795 "name=key,type=CephChoices,strings=full|pause|noup|nodown|" \
796 "noout|noin|nobackfill|norebalance|norecover|noscrub|nodeep-scrub|" \
797 "notieragent|nosnaptrim|pglog_hardlimit " \
798 "name=yes_i_really_mean_it,type=CephBool,req=false", \
799 "set <key>", "osd", "rw")
800 COMMAND("osd unset " \
801 "name=key,type=CephChoices,strings=full|pause|noup|nodown|"\
802 "noout|noin|nobackfill|norebalance|norecover|noscrub|nodeep-scrub|" \
803 "notieragent|nosnaptrim", \
804 "unset <key>", "osd", "rw")
805 COMMAND("osd require-osd-release "\
806 "name=release,type=CephChoices,strings=luminous|mimic|nautilus " \
807 "name=yes_i_really_mean_it,type=CephBool,req=false", \
808 "set the minimum allowed OSD release to participate in the cluster",
809 "osd", "rw")
810 COMMAND("osd down " \
811 "type=CephString,name=ids,n=N", \
812 "set osd(s) <id> [<id>...] down, " \
813 "or use <any|all> to set all osds down", \
814 "osd", "rw")
815 COMMAND("osd out " \
816 "name=ids,type=CephString,n=N", \
817 "set osd(s) <id> [<id>...] out, " \
818 "or use <any|all> to set all osds out", \
819 "osd", "rw")
820 COMMAND("osd in " \
821 "name=ids,type=CephString,n=N", \
822 "set osd(s) <id> [<id>...] in, "
823 "can use <any|all> to automatically set all previously out osds in", \
824 "osd", "rw")
825 COMMAND_WITH_FLAG("osd rm " \
826 "name=ids,type=CephString,n=N", \
827 "remove osd(s) <id> [<id>...], "
828 "or use <any|all> to remove all osds", \
829 "osd", "rw",
830 FLAG(DEPRECATED))
831 COMMAND("osd add-noup " \
832 "name=ids,type=CephString,n=N", \
833 "mark osd(s) <id> [<id>...] as noup, " \
834 "or use <all|any> to mark all osds as noup", \
835 "osd", "rw")
836 COMMAND("osd add-nodown " \
837 "name=ids,type=CephString,n=N", \
838 "mark osd(s) <id> [<id>...] as nodown, " \
839 "or use <all|any> to mark all osds as nodown", \
840 "osd", "rw")
841 COMMAND("osd add-noin " \
842 "name=ids,type=CephString,n=N", \
843 "mark osd(s) <id> [<id>...] as noin, " \
844 "or use <all|any> to mark all osds as noin", \
845 "osd", "rw")
846 COMMAND("osd add-noout " \
847 "name=ids,type=CephString,n=N", \
848 "mark osd(s) <id> [<id>...] as noout, " \
849 "or use <all|any> to mark all osds as noout", \
850 "osd", "rw")
851 COMMAND("osd rm-noup " \
852 "name=ids,type=CephString,n=N", \
853 "allow osd(s) <id> [<id>...] to be marked up " \
854 "(if they are currently marked as noup), " \
855 "can use <all|any> to automatically filter out all noup osds", \
856 "osd", "rw")
857 COMMAND("osd rm-nodown " \
858 "name=ids,type=CephString,n=N", \
859 "allow osd(s) <id> [<id>...] to be marked down " \
860 "(if they are currently marked as nodown), " \
861 "can use <all|any> to automatically filter out all nodown osds", \
862 "osd", "rw")
863 COMMAND("osd rm-noin " \
864 "name=ids,type=CephString,n=N", \
865 "allow osd(s) <id> [<id>...] to be marked in " \
866 "(if they are currently marked as noin), " \
867 "can use <all|any> to automatically filter out all noin osds", \
868 "osd", "rw")
869 COMMAND("osd rm-noout " \
870 "name=ids,type=CephString,n=N", \
871 "allow osd(s) <id> [<id>...] to be marked out " \
872 "(if they are currently marked as noout), " \
873 "can use <all|any> to automatically filter out all noout osds", \
874 "osd", "rw")
875 COMMAND("osd reweight " \
876 "name=id,type=CephOsdName " \
877 "type=CephFloat,name=weight,range=0.0|1.0", \
878 "reweight osd to 0.0 < <weight> < 1.0", "osd", "rw")
879 COMMAND("osd reweightn " \
880 "name=weights,type=CephString",
881 "reweight osds with {<id>: <weight>,...})",
882 "osd", "rw")
883 COMMAND("osd force-create-pg " \
884 "name=pgid,type=CephPgid "\
885 "name=yes_i_really_mean_it,type=CephBool,req=false", \
886 "force creation of pg <pgid>",
887 "osd", "rw")
888 COMMAND("osd pg-temp " \
889 "name=pgid,type=CephPgid " \
890 "name=id,type=CephOsdName,n=N,req=false", \
891 "set pg_temp mapping pgid:[<id> [<id>...]] (developers only)", \
892 "osd", "rw")
893 COMMAND("osd pg-upmap " \
894 "name=pgid,type=CephPgid " \
895 "name=id,type=CephOsdName,n=N", \
896 "set pg_upmap mapping <pgid>:[<id> [<id>...]] (developers only)", \
897 "osd", "rw")
898 COMMAND("osd rm-pg-upmap " \
899 "name=pgid,type=CephPgid", \
900 "clear pg_upmap mapping for <pgid> (developers only)", \
901 "osd", "rw")
902 COMMAND("osd pg-upmap-items " \
903 "name=pgid,type=CephPgid " \
904 "name=id,type=CephOsdName,n=N", \
905 "set pg_upmap_items mapping <pgid>:{<id> to <id>, [...]} (developers only)", \
906 "osd", "rw")
907 COMMAND("osd rm-pg-upmap-items " \
908 "name=pgid,type=CephPgid", \
909 "clear pg_upmap_items mapping for <pgid> (developers only)", \
910 "osd", "rw")
911 COMMAND("osd primary-temp " \
912 "name=pgid,type=CephPgid " \
913 "name=id,type=CephOsdName", \
914 "set primary_temp mapping pgid:<id>|-1 (developers only)", \
915 "osd", "rw")
916 COMMAND("osd primary-affinity " \
917 "name=id,type=CephOsdName " \
918 "type=CephFloat,name=weight,range=0.0|1.0", \
919 "adjust osd primary-affinity from 0.0 <= <weight> <= 1.0", \
920 "osd", "rw")
921 COMMAND_WITH_FLAG("osd destroy-actual " \
922 "name=id,type=CephOsdName " \
923 "name=yes_i_really_mean_it,type=CephBool,req=false", \
924 "mark osd as being destroyed. Keeps the ID intact (allowing reuse), " \
925 "but removes cephx keys, config-key data and lockbox keys, "\
926 "rendering data permanently unreadable.", \
927 "osd", "rw", FLAG(HIDDEN))
928 COMMAND("osd purge-new " \
929 "name=id,type=CephOsdName " \
930 "name=yes_i_really_mean_it,type=CephBool,req=false", \
931 "purge all traces of an OSD that was partially created but never " \
932 "started", \
933 "osd", "rw")
934 COMMAND_WITH_FLAG("osd purge-actual " \
935 "name=id,type=CephOsdName " \
936 "name=yes_i_really_mean_it,type=CephBool,req=false", \
937 "purge all osd data from the monitors. Combines `osd destroy`, " \
938 "`osd rm`, and `osd crush rm`.", \
939 "osd", "rw", FLAG(HIDDEN))
940 COMMAND("osd lost " \
941 "name=id,type=CephOsdName " \
942 "name=yes_i_really_mean_it,type=CephBool,req=false", \
943 "mark osd as permanently lost. THIS DESTROYS DATA IF NO MORE REPLICAS EXIST, BE CAREFUL", \
944 "osd", "rw")
945 COMMAND_WITH_FLAG("osd create " \
946 "name=uuid,type=CephUUID,req=false " \
947 "name=id,type=CephOsdName,req=false", \
948 "create new osd (with optional UUID and ID)", "osd", "rw",
949 FLAG(DEPRECATED))
950 COMMAND("osd new " \
951 "name=uuid,type=CephUUID,req=true " \
952 "name=id,type=CephOsdName,req=false", \
953 "Create a new OSD. If supplied, the `id` to be replaced needs to " \
954 "exist and have been previously destroyed. " \
955 "Reads secrets from JSON file via `-i <file>` (see man page).", \
956 "osd", "rw")
957 COMMAND("osd blacklist " \
958 "name=blacklistop,type=CephChoices,strings=add|rm " \
959 "name=addr,type=CephEntityAddr " \
960 "name=expire,type=CephFloat,range=0.0,req=false", \
961 "add (optionally until <expire> seconds from now) or remove <addr> from blacklist", \
962 "osd", "rw")
963 COMMAND("osd blacklist ls", "show blacklisted clients", "osd", "r")
964 COMMAND("osd blacklist clear", "clear all blacklisted clients", "osd", "rw")
965 COMMAND("osd pool mksnap " \
966 "name=pool,type=CephPoolname " \
967 "name=snap,type=CephString", \
968 "make snapshot <snap> in <pool>", "osd", "rw")
969 COMMAND("osd pool rmsnap " \
970 "name=pool,type=CephPoolname " \
971 "name=snap,type=CephString", \
972 "remove snapshot <snap> from <pool>", "osd", "rw")
973 COMMAND("osd pool ls " \
974 "name=detail,type=CephChoices,strings=detail,req=false", \
975 "list pools", "osd", "r")
976 COMMAND("osd pool create " \
977 "name=pool,type=CephPoolname " \
978 "name=pg_num,type=CephInt,range=0 " \
979 "name=pgp_num,type=CephInt,range=0,req=false " \
980 "name=pool_type,type=CephChoices,strings=replicated|erasure,req=false " \
981 "name=erasure_code_profile,type=CephString,req=false,goodchars=[A-Za-z0-9-_.] " \
982 "name=rule,type=CephString,req=false " \
983 "name=expected_num_objects,type=CephInt,req=false " \
984 "name=size,type=CephInt,req=false " \
985 "name=pg_num_min,type=CephInt,range=0,req=false " \
986 "name=target_size_bytes,type=CephInt,range=0,req=false " \
987 "name=target_size_ratio,type=CephFloat,range=0|1,req=false",\
988 "create pool", "osd", "rw")
989 COMMAND_WITH_FLAG("osd pool delete " \
990 "name=pool,type=CephPoolname " \
991 "name=pool2,type=CephPoolname,req=false " \
992 "name=yes_i_really_really_mean_it,type=CephBool,req=false "
993 "name=yes_i_really_really_mean_it_not_faking,type=CephBool,req=false ", \
994 "delete pool", \
995 "osd", "rw", \
996 FLAG(DEPRECATED))
997 COMMAND("osd pool rm " \
998 "name=pool,type=CephPoolname " \
999 "name=pool2,type=CephPoolname,req=false " \
1000 "name=yes_i_really_really_mean_it,type=CephBool,req=false "
1001 "name=yes_i_really_really_mean_it_not_faking,type=CephBool,req=false ", \
1002 "remove pool", \
1003 "osd", "rw")
1004 COMMAND("osd pool rename " \
1005 "name=srcpool,type=CephPoolname " \
1006 "name=destpool,type=CephPoolname", \
1007 "rename <srcpool> to <destpool>", "osd", "rw")
1008 COMMAND("osd pool get " \
1009 "name=pool,type=CephPoolname " \
1010 "name=var,type=CephChoices,strings=size|min_size|pg_num|pgp_num|crush_rule|hashpspool|nodelete|nopgchange|nosizechange|write_fadvise_dontneed|noscrub|nodeep-scrub|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|use_gmt_hitset|target_max_objects|target_max_bytes|cache_target_dirty_ratio|cache_target_dirty_high_ratio|cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|erasure_code_profile|min_read_recency_for_promote|all|min_write_recency_for_promote|fast_read|hit_set_grade_decay_rate|hit_set_search_last_n|scrub_min_interval|scrub_max_interval|deep_scrub_interval|recovery_priority|recovery_op_priority|scrub_priority|compression_mode|compression_algorithm|compression_required_ratio|compression_max_blob_size|compression_min_blob_size|csum_type|csum_min_block|csum_max_block|allow_ec_overwrites|fingerprint_algorithm|pg_autoscale_mode|pg_autoscale_bias|pg_num_min|target_size_bytes|target_size_ratio", \
1011 "get pool parameter <var>", "osd", "r")
1012 COMMAND("osd pool set " \
1013 "name=pool,type=CephPoolname " \
1014 "name=var,type=CephChoices,strings=size|min_size|pg_num|pgp_num|pgp_num_actual|crush_rule|hashpspool|nodelete|nopgchange|nosizechange|write_fadvise_dontneed|noscrub|nodeep-scrub|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|use_gmt_hitset|target_max_bytes|target_max_objects|cache_target_dirty_ratio|cache_target_dirty_high_ratio|cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|min_read_recency_for_promote|min_write_recency_for_promote|fast_read|hit_set_grade_decay_rate|hit_set_search_last_n|scrub_min_interval|scrub_max_interval|deep_scrub_interval|recovery_priority|recovery_op_priority|scrub_priority|compression_mode|compression_algorithm|compression_required_ratio|compression_max_blob_size|compression_min_blob_size|csum_type|csum_min_block|csum_max_block|allow_ec_overwrites|fingerprint_algorithm|pg_autoscale_mode|pg_autoscale_bias|pg_num_min|target_size_bytes|target_size_ratio " \
1015 "name=val,type=CephString " \
1016 "name=yes_i_really_mean_it,type=CephBool,req=false", \
1017 "set pool parameter <var> to <val>", "osd", "rw")
1018 // 'val' is a CephString because it can include a unit. Perhaps
1019 // there should be a Python type for validation/conversion of strings
1020 // with units.
1021 COMMAND("osd pool set-quota " \
1022 "name=pool,type=CephPoolname " \
1023 "name=field,type=CephChoices,strings=max_objects|max_bytes " \
1024 "name=val,type=CephString",
1025 "set object or byte limit on pool", "osd", "rw")
1026 COMMAND("osd pool get-quota " \
1027 "name=pool,type=CephPoolname ",
1028 "obtain object or byte limits for pool",
1029 "osd", "r")
1030 COMMAND("osd pool application enable " \
1031 "name=pool,type=CephPoolname " \
1032 "name=app,type=CephString,goodchars=[A-Za-z0-9-_.] " \
1033 "name=yes_i_really_mean_it,type=CephBool,req=false", \
1034 "enable use of an application <app> [cephfs,rbd,rgw] on pool <poolname>",
1035 "osd", "rw")
1036 COMMAND("osd pool application disable " \
1037 "name=pool,type=CephPoolname " \
1038 "name=app,type=CephString " \
1039 "name=yes_i_really_mean_it,type=CephBool,req=false", \
1040 "disables use of an application <app> on pool <poolname>",
1041 "osd", "rw")
1042 COMMAND("osd pool application set " \
1043 "name=pool,type=CephPoolname " \
1044 "name=app,type=CephString " \
1045 "name=key,type=CephString,goodchars=[A-Za-z0-9-_.] " \
1046 "name=value,type=CephString,goodchars=[A-Za-z0-9-_.=]",
1047 "sets application <app> metadata key <key> to <value> on pool <poolname>",
1048 "osd", "rw")
1049 COMMAND("osd pool application rm " \
1050 "name=pool,type=CephPoolname " \
1051 "name=app,type=CephString " \
1052 "name=key,type=CephString",
1053 "removes application <app> metadata key <key> on pool <poolname>",
1054 "osd", "rw")
1055 COMMAND("osd pool application get " \
1056 "name=pool,type=CephPoolname,req=fasle " \
1057 "name=app,type=CephString,req=false " \
1058 "name=key,type=CephString,req=false",
1059 "get value of key <key> of application <app> on pool <poolname>",
1060 "osd", "r")
1061 COMMAND("osd utilization",
1062 "get basic pg distribution stats",
1063 "osd", "r")
1064
1065 // tiering
1066 COMMAND("osd tier add " \
1067 "name=pool,type=CephPoolname " \
1068 "name=tierpool,type=CephPoolname " \
1069 "name=force_nonempty,type=CephChoices,strings=--force-nonempty,req=false",
1070 "add the tier <tierpool> (the second one) to base pool <pool> (the first one)", \
1071 "osd", "rw")
1072 COMMAND("osd tier rm " \
1073 "name=pool,type=CephPoolname " \
1074 "name=tierpool,type=CephPoolname",
1075 "remove the tier <tierpool> (the second one) from base pool <pool> (the first one)", \
1076 "osd", "rw")
1077 COMMAND_WITH_FLAG("osd tier remove " \
1078 "name=pool,type=CephPoolname " \
1079 "name=tierpool,type=CephPoolname",
1080 "remove the tier <tierpool> (the second one) from base pool <pool> (the first one)", \
1081 "osd", "rw", \
1082 FLAG(DEPRECATED))
1083 COMMAND("osd tier cache-mode " \
1084 "name=pool,type=CephPoolname " \
1085 "name=mode,type=CephChoices,strings=none|writeback|forward|readonly|readforward|proxy|readproxy " \
1086 "name=yes_i_really_mean_it,type=CephBool,req=false", \
1087 "specify the caching mode for cache tier <pool>", "osd", "rw")
1088 COMMAND("osd tier set-overlay " \
1089 "name=pool,type=CephPoolname " \
1090 "name=overlaypool,type=CephPoolname", \
1091 "set the overlay pool for base pool <pool> to be <overlaypool>", "osd", "rw")
1092 COMMAND("osd tier rm-overlay " \
1093 "name=pool,type=CephPoolname ", \
1094 "remove the overlay pool for base pool <pool>", "osd", "rw")
1095 COMMAND_WITH_FLAG("osd tier remove-overlay " \
1096 "name=pool,type=CephPoolname ", \
1097 "remove the overlay pool for base pool <pool>", "osd", "rw", \
1098 FLAG(DEPRECATED))
1099
1100 COMMAND("osd tier add-cache " \
1101 "name=pool,type=CephPoolname " \
1102 "name=tierpool,type=CephPoolname " \
1103 "name=size,type=CephInt,range=0", \
1104 "add a cache <tierpool> (the second one) of size <size> to existing pool <pool> (the first one)", \
1105 "osd", "rw")
1106
1107 /*
1108 * mon/ConfigKeyService.cc
1109 */
1110
1111 COMMAND("config-key get " \
1112 "name=key,type=CephString", \
1113 "get <key>", "config-key", "r")
1114 COMMAND("config-key set " \
1115 "name=key,type=CephString " \
1116 "name=val,type=CephString,req=false", \
1117 "set <key> to value <val>", "config-key", "rw")
1118 COMMAND_WITH_FLAG("config-key put " \
1119 "name=key,type=CephString " \
1120 "name=val,type=CephString,req=false", \
1121 "put <key>, value <val>", "config-key", "rw",
1122 FLAG(DEPRECATED))
1123 COMMAND_WITH_FLAG("config-key del " \
1124 "name=key,type=CephString", \
1125 "delete <key>", "config-key", "rw", \
1126 FLAG(DEPRECATED))
1127 COMMAND("config-key rm " \
1128 "name=key,type=CephString", \
1129 "rm <key>", "config-key", "rw")
1130 COMMAND("config-key exists " \
1131 "name=key,type=CephString", \
1132 "check for <key>'s existence", "config-key", "r")
1133 COMMAND_WITH_FLAG("config-key list ", "list keys", "config-key", "r",
1134 FLAG(DEPRECATED))
1135 COMMAND("config-key ls ", "list keys", "config-key", "r")
1136 COMMAND("config-key dump " \
1137 "name=key,type=CephString,req=false", "dump keys and values (with optional prefix)", "config-key", "r")
1138
1139
1140 /*
1141 * mon/MgrMonitor.cc
1142 */
1143 COMMAND("mgr dump " \
1144 "name=epoch,type=CephInt,range=0,req=false", \
1145 "dump the latest MgrMap", \
1146 "mgr", "r")
1147 COMMAND("mgr fail name=who,type=CephString", \
1148 "treat the named manager daemon as failed", "mgr", "rw")
1149 COMMAND("mgr module ls",
1150 "list active mgr modules", "mgr", "r")
1151 COMMAND("mgr services",
1152 "list service endpoints provided by mgr modules",
1153 "mgr", "r")
1154 COMMAND("mgr module enable " \
1155 "name=module,type=CephString " \
1156 "name=force,type=CephChoices,strings=--force,req=false",
1157 "enable mgr module", "mgr", "rw")
1158 COMMAND("mgr module disable " \
1159 "name=module,type=CephString",
1160 "disable mgr module", "mgr", "rw")
1161 COMMAND("mgr metadata name=who,type=CephString,req=false",
1162 "dump metadata for all daemons or a specific daemon",
1163 "mgr", "r")
1164 COMMAND("mgr count-metadata name=property,type=CephString",
1165 "count ceph-mgr daemons by metadata field property",
1166 "mgr", "r")
1167 COMMAND("mgr versions", \
1168 "check running versions of ceph-mgr daemons",
1169 "mgr", "r")
1170
1171 // ConfigMonitor
1172 COMMAND("config set" \
1173 " name=who,type=CephString" \
1174 " name=name,type=CephString" \
1175 " name=value,type=CephString" \
1176 " name=force,type=CephBool,req=false",
1177 "Set a configuration option for one or more entities",
1178 "config", "rw")
1179 COMMAND("config rm" \
1180 " name=who,type=CephString" \
1181 " name=name,type=CephString",
1182 "Clear a configuration option for one or more entities",
1183 "config", "rw")
1184 COMMAND("config get " \
1185 "name=who,type=CephString " \
1186 "name=key,type=CephString,req=False",
1187 "Show configuration option(s) for an entity",
1188 "config", "r")
1189 COMMAND("config dump",
1190 "Show all configuration option(s)",
1191 "mon", "r")
1192 COMMAND("config help " \
1193 "name=key,type=CephString",
1194 "Describe a configuration option",
1195 "config", "r")
1196 COMMAND("config ls",
1197 "List available configuration options",
1198 "config", "r")
1199 COMMAND("config assimilate-conf",
1200 "Assimilate options from a conf, and return a new, minimal conf file",
1201 "config", "rw")
1202 COMMAND("config log name=num,type=CephInt,req=False",
1203 "Show recent history of config changes",
1204 "config", "r")
1205 COMMAND("config reset" \
1206 " name=num,type=CephInt",
1207 "Revert configuration to previous state",
1208 "config", "rw")
1209 COMMAND("config generate-minimal-conf",
1210 "Generate a minimal ceph.conf file",
1211 "config", "r")
1212
1213 COMMAND_WITH_FLAG("smart name=devid,type=CephString,req=false",
1214 "Query health metrics for underlying device",
1215 "mon", "rw", FLAG(HIDDEN))