]> git.proxmox.com Git - ceph.git/blob - ceph/src/mon/MonCommands.h
bump version to 18.2.2-pve1
[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 * "-- "
82 * "name=some_option,type=CephString,req=false",
83 * "add auth info for <name> from input file, or random key "
84 * "if no input given, and/or any caps specified in the command")
85 *
86 * defines a command "auth add" that takes a required argument "entity"
87 * of type "CephString", and from 1 to N arguments named "caps" of type
88 * CephString, at least one of which is required. The front end will
89 * validate user input against this description. Let's say the user
90 * enters auth add client.admin 'mon rwx' 'osd *'. The result will be a
91 * JSON object like {"prefix":"auth add", "entity":"client.admin",
92 * "caps":["mon rwx", "osd *"]}.
93 *
94 * The -- separates positional from non-positional (and, by implication,
95 * optional) arguments. Note that CephBool is assumed to be non-positional
96 * and will also implicitly mark that any following arguments are
97 * non-positional.
98 *
99 * Note that
100 * - string literals are accumulated into 'prefix'
101 * - n=1 descriptors are given normal string or int object values
102 * - n=N descriptors are given array values
103 *
104 * NOTE: be careful with spaces. Each descriptor must be separated by
105 * one space, no other characters, so if you split lines as above, be
106 * sure to close and reopen the quotes, and be careful to include the '
107 * separating spaces in the quoted string.
108 *
109 * The monitor marshals this JSON into a std::map<string, cmd_vartype>
110 * where cmd_vartype is a boost::variant type-enforcing discriminated
111 * type, so the monitor is expected to know the type of each argument.
112 * See cmdparse.cc/h for more details.
113 *
114 * The flag parameter for COMMAND_WITH_FLAGS macro must be passed using
115 * FLAG(f), where 'f' may be one of the following:
116 *
117 * NONE - no flag assigned
118 * NOFORWARD - command may not be forwarded
119 * OBSOLETE - command is considered obsolete
120 * DEPRECATED - command is considered deprecated
121 * MGR - command goes to ceph-mgr (for luminous+)
122 * POLL - command is intended to be called periodically by the
123 * client (see iostat)
124 * HIDDEN - command is hidden (no reported by help etc)
125 * TELL - tell/asok command. it's an alias of (NOFORWARD | HIDDEN)
126 *
127 * A command should always be first considered DEPRECATED before being
128 * considered OBSOLETE, giving due consideration to users and conforming
129 * to any guidelines regarding deprecating commands.
130 */
131
132 COMMAND("pg map name=pgid,type=CephPgid", "show mapping of pg to osds", \
133 "pg", "r")
134 COMMAND("pg repeer name=pgid,type=CephPgid", "force a PG to repeer",
135 "osd", "rw")
136 COMMAND("osd last-stat-seq name=id,type=CephOsdName", \
137 "get the last pg stats sequence number reported for this osd", \
138 "osd", "r")
139
140 /*
141 * auth commands AuthMonitor.cc
142 */
143
144 COMMAND("auth export name=entity,type=CephString,req=false", \
145 "write keyring for requested entity, or master keyring if none given", \
146 "auth", "rx")
147 COMMAND("auth get name=entity,type=CephString", \
148 "write keyring file with requested key", "auth", "rx")
149 COMMAND("auth get-key name=entity,type=CephString", "display requested key", \
150 "auth", "rx")
151 COMMAND("auth print-key name=entity,type=CephString", "display requested key", \
152 "auth", "rx")
153 COMMAND("auth print_key name=entity,type=CephString", "display requested key", \
154 "auth", "rx")
155 COMMAND_WITH_FLAG("auth list", "list authentication state", "auth", "rx",
156 FLAG(DEPRECATED))
157 COMMAND("auth ls", "list authentication state", "auth", "rx")
158 COMMAND("auth import", "auth import: read keyring file from -i <file>",
159 "auth", "rwx")
160 COMMAND("auth add "
161 "name=entity,type=CephString "
162 "name=caps,type=CephString,n=N,req=false",
163 "add auth info for <entity> from input file, or random key if no "
164 "input is given, and/or any caps specified in the command",
165 "auth", "rwx")
166 COMMAND("auth get-or-create-key "
167 "name=entity,type=CephString "
168 "name=caps,type=CephString,n=N,req=false",
169 "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.",
170 "auth", "rwx")
171 COMMAND("auth get-or-create "
172 "name=entity,type=CephString "
173 "name=caps,type=CephString,n=N,req=false",
174 "add auth info for <entity> from input file, or random key if no input given, and/or any caps specified in the command",
175 "auth", "rwx")
176 COMMAND("auth get-or-create-pending "
177 "name=entity,type=CephString",
178 "generate and/or retrieve existing pending key (rotated into place on first use)",
179 "auth", "rwx")
180 COMMAND("auth clear-pending "
181 "name=entity,type=CephString",
182 "clear pending key",
183 "auth", "rwx")
184 COMMAND("auth commit-pending "
185 "name=entity,type=CephString",
186 "rotate pending key into active position",
187 "auth", "rwx")
188 COMMAND("fs authorize "
189 "name=filesystem,type=CephString "
190 "name=entity,type=CephString "
191 "name=caps,type=CephString,n=N",
192 "add auth for <entity> to access file system <filesystem> based on following directory and permissions pairs",
193 "auth", "rwx")
194 COMMAND("auth caps "
195 "name=entity,type=CephString "
196 "name=caps,type=CephString,n=N",
197 "update caps for <name> from caps specified in the command",
198 "auth", "rwx")
199 COMMAND_WITH_FLAG("auth del "
200 "name=entity,type=CephString",
201 "delete all caps for <name>",
202 "auth", "rwx",
203 FLAG(DEPRECATED))
204 COMMAND("auth rm "
205 "name=entity,type=CephString",
206 "remove all caps for <name>",
207 "auth", "rwx")
208
209 /*
210 * Monitor commands (Monitor.cc)
211 */
212 COMMAND_WITH_FLAG("compact", "cause compaction of monitor's leveldb/rocksdb storage",
213 "mon", "rw",
214 FLAG(TELL))
215 COMMAND("fsid", "show cluster FSID/UUID", "mon", "r")
216 COMMAND("log name=logtext,type=CephString,n=N",
217 "log supplied text to the monitor log", "mon", "rw")
218 COMMAND("log last "
219 "name=num,type=CephInt,range=1,req=false "
220 "name=level,type=CephChoices,strings=debug|info|sec|warn|error,req=false "
221 "name=channel,type=CephChoices,strings=*|cluster|audit|cephadm,req=false",
222 "print last few lines of the cluster log",
223 "mon", "r")
224
225 COMMAND("status", "show cluster status", "mon", "r")
226 COMMAND("health name=detail,type=CephChoices,strings=detail,req=false",
227 "show cluster health", "mon", "r")
228 COMMAND("health mute "\
229 "name=code,type=CephString "
230 "name=ttl,type=CephString,req=false "
231 "name=sticky,type=CephBool,req=false",
232 "mute health alert", "mon", "w")
233 COMMAND("health unmute "\
234 "name=code,type=CephString,req=false",
235 "unmute existing health alert mute(s)", "mon", "w")
236 COMMAND("time-sync-status", "show time sync status", "mon", "r")
237 COMMAND("df name=detail,type=CephChoices,strings=detail,req=false",
238 "show cluster free space stats", "mon", "r")
239 COMMAND("report name=tags,type=CephString,n=N,req=false",
240 "report full status of cluster, optional title tag strings",
241 "mon", "r")
242 COMMAND("features", "report of connected features",
243 "mon", "r")
244 COMMAND("quorum_status", "report status of monitor quorum",
245 "mon", "r")
246 COMMAND("mon ok-to-stop "
247 "name=ids,type=CephString,n=N",
248 "check whether mon(s) can be safely stopped without reducing immediate "
249 "availability",
250 "mon", "r")
251 COMMAND("mon ok-to-add-offline",
252 "check whether adding a mon and not starting it would break quorum",
253 "mon", "r")
254 COMMAND("mon ok-to-rm "
255 "name=id,type=CephString",
256 "check whether removing the specified mon would break quorum",
257 "mon", "r")
258
259 COMMAND("tell "
260 "name=target,type=CephName "
261 "name=args,type=CephString,n=N",
262 "send a command to a specific daemon", "mon", "rw")
263 COMMAND_WITH_FLAG("version", "show mon daemon version", "mon", "r",
264 FLAG(TELL))
265
266 COMMAND("node ls "
267 "name=type,type=CephChoices,strings=all|osd|mon|mds|mgr,req=false",
268 "list all nodes in cluster [type]", "mon", "r")
269 /*
270 * Monitor-specific commands under module 'mon'
271 */
272 COMMAND_WITH_FLAG("mon scrub",
273 "scrub the monitor stores",
274 "mon", "rw",
275 FLAG(NONE))
276 COMMAND("mon metadata name=id,type=CephString,req=false",
277 "fetch metadata for mon <id>",
278 "mon", "r")
279 COMMAND("mon count-metadata name=property,type=CephString",
280 "count mons by metadata field property",
281 "mon", "r")
282 COMMAND("mon versions",
283 "check running versions of monitors",
284 "mon", "r")
285 COMMAND("versions",
286 "check running versions of ceph daemons",
287 "mon", "r")
288
289
290
291 /*
292 * MDS commands (MDSMonitor.cc)
293 */
294
295 #define FS_NAME_GOODCHARS "[A-Za-z0-9-_.]"
296 COMMAND_WITH_FLAG("mds stat", "show MDS status", "mds", "r", FLAG(HIDDEN))
297 COMMAND("fs dump "
298 "name=epoch,type=CephInt,req=false,range=0",
299 "dump all CephFS status, optionally from epoch", "mds", "r")
300 COMMAND("mds metadata name=who,type=CephString,req=false",
301 "fetch metadata for mds <role>",
302 "mds", "r")
303 COMMAND("mds count-metadata name=property,type=CephString",
304 "count MDSs by metadata field property",
305 "mds", "r")
306 COMMAND("mds versions",
307 "check running versions of MDSs",
308 "mds", "r")
309 COMMAND("mds ok-to-stop name=ids,type=CephString,n=N",
310 "check whether stopping the specified MDS would reduce immediate availability",
311 "mds", "r")
312 COMMAND_WITH_FLAG("mds freeze name=role_or_gid,type=CephString"
313 " name=val,type=CephString",
314 "freeze MDS yes/no", "mds", "rw", FLAG(HIDDEN))
315 // arbitrary limit 0-20 below; worth standing on head to make it
316 // relate to actual state definitions?
317 // #include "include/ceph_fs.h"
318 COMMAND_WITH_FLAG("mds set_state "
319 "name=gid,type=CephInt,range=0 "
320 "name=state,type=CephInt,range=0|20",
321 "set mds state of <gid> to <numeric-state>", "mds", "rw", FLAG(HIDDEN))
322 COMMAND("mds fail name=role_or_gid,type=CephString",
323 "Mark MDS failed: trigger a failover if a standby is available",
324 "mds", "rw")
325 COMMAND("mds repaired name=role,type=CephString",
326 "mark a damaged MDS rank as no longer damaged", "mds", "rw")
327 COMMAND("mds rm "
328 "name=gid,type=CephInt,range=0",
329 "remove nonactive mds", "mds", "rw")
330 COMMAND_WITH_FLAG("mds rmfailed name=role,type=CephString "
331 "name=yes_i_really_mean_it,type=CephBool,req=false",
332 "remove failed rank", "mds", "rw", FLAG(HIDDEN))
333 COMMAND_WITH_FLAG("mds compat show", "show mds compatibility settings",
334 "mds", "r", FLAG(DEPRECATED))
335 COMMAND("fs compat show "
336 "name=fs_name,type=CephString ",
337 "show fs compatibility settings",
338 "mds", "r")
339 COMMAND_WITH_FLAG("mds compat rm_compat "
340 "name=feature,type=CephInt,range=0",
341 "remove compatible feature", "mds", "rw", FLAG(DEPRECATED))
342 COMMAND_WITH_FLAG("mds compat rm_incompat "
343 "name=feature,type=CephInt,range=0",
344 "remove incompatible feature", "mds", "rw", FLAG(DEPRECATED))
345 COMMAND("fs new "
346 "name=fs_name,type=CephString,goodchars=" FS_NAME_GOODCHARS
347 " name=metadata,type=CephString "
348 "name=data,type=CephString "
349 "name=force,type=CephBool,req=false "
350 "name=allow_dangerous_metadata_overlay,type=CephBool,req=false "
351 "name=fscid,type=CephInt,range=0,req=false "
352 "name=recover,type=CephBool,req=false",
353 "make new filesystem using named pools <metadata> and <data>",
354 "fs", "rw")
355 COMMAND("fs fail "
356 "name=fs_name,type=CephString ",
357 "bring the file system down and all of its ranks",
358 "fs", "rw")
359 COMMAND("fs rm "
360 "name=fs_name,type=CephString "
361 "name=yes_i_really_mean_it,type=CephBool,req=false",
362 "disable the named filesystem",
363 "fs", "rw")
364 COMMAND("fs reset "
365 "name=fs_name,type=CephString "
366 "name=yes_i_really_mean_it,type=CephBool,req=false",
367 "disaster recovery only: reset to a single-MDS map",
368 "fs", "rw")
369 COMMAND("fs ls ",
370 "list filesystems",
371 "fs", "r")
372 COMMAND("fs get name=fs_name,type=CephString",
373 "get info about one filesystem",
374 "fs", "r")
375 COMMAND("fs set "
376 "name=fs_name,type=CephString "
377 "name=var,type=CephChoices,strings=max_mds|max_file_size"
378 "|allow_new_snaps|inline_data|cluster_down|allow_dirfrags|balancer"
379 "|standby_count_wanted|session_timeout|session_autoclose"
380 "|allow_standby_replay|down|joinable|min_compat_client|bal_rank_mask"
381 "|refuse_client_session "
382 "name=val,type=CephString "
383 "name=yes_i_really_mean_it,type=CephBool,req=false "
384 "name=yes_i_really_really_mean_it,type=CephBool,req=false",
385 "set fs parameter <var> to <val>", "mds", "rw")
386 COMMAND("fs flag set name=flag_name,type=CephChoices,strings=enable_multiple "
387 "name=val,type=CephString "
388 "name=yes_i_really_mean_it,type=CephBool,req=false",
389 "Set a global CephFS flag",
390 "fs", "rw")
391
392 COMMAND("fs feature ls",
393 "list available cephfs features to be set/unset",
394 "mds", "r")
395
396 COMMAND("fs lsflags name=fs_name,type=CephString",
397 "list the flags set on a ceph filesystem",
398 "fs", "r")
399
400 COMMAND("fs compat "
401 "name=fs_name,type=CephString "
402 "name=subop,type=CephChoices,strings=rm_compat|rm_incompat|add_compat|add_incompat "
403 "name=feature,type=CephInt "
404 "name=feature_str,type=CephString,req=false ",
405 "manipulate compat settings", "fs", "rw")
406
407 COMMAND("fs required_client_features "
408 "name=fs_name,type=CephString "
409 "name=subop,type=CephChoices,strings=add|rm "
410 "name=val,type=CephString ",
411 "add/remove required features of clients", "mds", "rw")
412
413 COMMAND("fs add_data_pool name=fs_name,type=CephString "
414 "name=pool,type=CephString",
415 "add data pool <pool>", "mds", "rw")
416 COMMAND("fs rm_data_pool name=fs_name,type=CephString "
417 "name=pool,type=CephString",
418 "remove data pool <pool>", "mds", "rw")
419 COMMAND_WITH_FLAG("fs set_default name=fs_name,type=CephString",
420 "set the default to the named filesystem",
421 "fs", "rw",
422 FLAG(DEPRECATED))
423 COMMAND("fs set-default name=fs_name,type=CephString",
424 "set the default to the named filesystem",
425 "fs", "rw")
426 COMMAND("fs mirror enable "
427 "name=fs_name,type=CephString ",
428 "enable mirroring for a ceph filesystem", "mds", "rw")
429 COMMAND("fs mirror disable "
430 "name=fs_name,type=CephString ",
431 "disable mirroring for a ceph filesystem", "mds", "rw")
432 COMMAND("fs mirror peer_add "
433 "name=fs_name,type=CephString "
434 "name=uuid,type=CephString "
435 "name=remote_cluster_spec,type=CephString "
436 "name=remote_fs_name,type=CephString",
437 "add a mirror peer for a ceph filesystem", "mds", "rw")
438 COMMAND("fs mirror peer_remove "
439 "name=fs_name,type=CephString "
440 "name=uuid,type=CephString ",
441 "remove a mirror peer for a ceph filesystem", "mds", "rw")
442 COMMAND("fs rename "
443 "name=fs_name,type=CephString "
444 "name=new_fs_name,type=CephString,goodchars=" FS_NAME_GOODCHARS
445 " name=yes_i_really_mean_it,type=CephBool,req=false",
446 "rename a ceph file system", "mds", "rw")
447
448 /*
449 * Monmap commands
450 */
451 COMMAND("mon dump "
452 "name=epoch,type=CephInt,range=0,req=false",
453 "dump formatted monmap (optionally from epoch)",
454 "mon", "r")
455 COMMAND("mon stat", "summarize monitor status", "mon", "r")
456 COMMAND("mon getmap "
457 "name=epoch,type=CephInt,range=0,req=false",
458 "get monmap", "mon", "r")
459 COMMAND("mon add "
460 "name=name,type=CephString "
461 "name=addr,type=CephIPAddr "
462 "name=location,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=],req=false",
463 "add new monitor named <name> at <addr>, possibly with CRUSH location <location>", "mon", "rw")
464 COMMAND("mon rm "
465 "name=name,type=CephString",
466 "remove monitor named <name>", "mon", "rw")
467 COMMAND_WITH_FLAG("mon remove "
468 "name=name,type=CephString",
469 "remove monitor named <name>", "mon", "rw",
470 FLAG(DEPRECATED))
471 COMMAND("mon feature ls "
472 "name=with_value,type=CephBool,req=false",
473 "list available mon map features to be set/unset",
474 "mon", "r")
475 COMMAND("mon feature set "
476 "name=feature_name,type=CephString "
477 "name=yes_i_really_mean_it,type=CephBool,req=false",
478 "set provided feature on mon map",
479 "mon", "rw")
480 COMMAND("mon set-rank "
481 "name=name,type=CephString "
482 "name=rank,type=CephInt",
483 "set the rank for the specified mon",
484 "mon", "rw")
485 COMMAND("mon set-addrs "
486 "name=name,type=CephString "
487 "name=addrs,type=CephString",
488 "set the addrs (IPs and ports) a specific monitor binds to",
489 "mon", "rw")
490 COMMAND("mon set-weight "
491 "name=name,type=CephString "
492 "name=weight,type=CephInt,range=0|65535",
493 "set the weight for the specified mon",
494 "mon", "rw")
495 COMMAND("mon enable-msgr2",
496 "enable the msgr2 protocol on port 3300",
497 "mon", "rw")
498 COMMAND("mon set election_strategy " \
499 "name=strategy,type=CephString", \
500 "set the election strategy to use; choices classic, disallow, connectivity", \
501 "mon", "rw")
502 COMMAND("mon add disallowed_leader " \
503 "name=name,type=CephString", \
504 "prevent the named mon from being a leader", \
505 "mon", "rw")
506 COMMAND("mon rm disallowed_leader " \
507 "name=name,type=CephString", \
508 "allow the named mon to be a leader again", \
509 "mon", "rw")
510 COMMAND("mon set_location " \
511 "name=name,type=CephString "
512 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=]",
513 "specify location <args> for the monitor <name>, using CRUSH bucket names", \
514 "mon", "rw")
515 COMMAND("mon enable_stretch_mode " \
516 "name=tiebreaker_mon,type=CephString, "
517 "name=new_crush_rule,type=CephString, "
518 "name=dividing_bucket,type=CephString, ",
519 "enable stretch mode, changing the peering rules and "
520 "failure handling on all pools with <tiebreaker_mon> "
521 "as the tiebreaker and setting <dividing_bucket> locations "
522 "as the units for stretching across",
523 "mon", "rw")
524 COMMAND("mon set_new_tiebreaker " \
525 "name=name,type=CephString "
526 "name=yes_i_really_mean_it,type=CephBool,req=false",
527 "switch the stretch tiebreaker to be the named mon", \
528 "mon", "rw")
529
530 /*
531 * OSD commands
532 */
533 COMMAND("osd stat", "print summary of OSD map", "osd", "r")
534 COMMAND("osd dump "
535 "name=epoch,type=CephInt,range=0,req=false",
536 "print summary of OSD map", "osd", "r")
537 COMMAND("osd info "
538 "name=id,type=CephOsdName,req=false",
539 "print osd's {id} information (instead of all osds from map)",
540 "osd", "r")
541 COMMAND("osd tree "
542 "name=epoch,type=CephInt,range=0,req=false "
543 "name=states,type=CephChoices,strings=up|down|in|out|destroyed,n=N,req=false",
544 "print OSD tree", "osd", "r")
545 COMMAND("osd tree-from "
546 "name=epoch,type=CephInt,range=0,req=false "
547 "name=bucket,type=CephString "
548 "name=states,type=CephChoices,strings=up|down|in|out|destroyed,n=N,req=false",
549 "print OSD tree in bucket", "osd", "r")
550 COMMAND("osd ls "
551 "name=epoch,type=CephInt,range=0,req=false",
552 "show all OSD ids", "osd", "r")
553 COMMAND("osd getmap "
554 "name=epoch,type=CephInt,range=0,req=false",
555 "get OSD map", "osd", "r")
556 COMMAND("osd getcrushmap "
557 "name=epoch,type=CephInt,range=0,req=false",
558 "get CRUSH map", "osd", "r")
559 COMMAND("osd getmaxosd", "show largest OSD id", "osd", "r")
560 COMMAND("osd ls-tree "
561 "name=epoch,type=CephInt,range=0,req=false "
562 "name=name,type=CephString,req=true",
563 "show OSD ids under bucket <name> in the CRUSH map",
564 "osd", "r")
565 COMMAND("osd find "
566 "name=id,type=CephOsdName",
567 "find osd <id> in the CRUSH map and show its location",
568 "osd", "r")
569 COMMAND("osd metadata "
570 "name=id,type=CephOsdName,req=false",
571 "fetch metadata for osd {id} (default all)",
572 "osd", "r")
573 COMMAND("osd count-metadata name=property,type=CephString",
574 "count OSDs by metadata field property",
575 "osd", "r")
576 COMMAND("osd versions",
577 "check running versions of OSDs",
578 "osd", "r")
579 COMMAND("osd numa-status",
580 "show NUMA status of OSDs",
581 "osd", "r")
582 COMMAND("osd map "
583 "name=pool,type=CephPoolname "
584 "name=object,type=CephObjectname "
585 "name=nspace,type=CephString,req=false",
586 "find pg for <object> in <pool> with [namespace]", "osd", "r")
587 COMMAND_WITH_FLAG("osd lspools",
588 "list pools", "osd", "r", FLAG(DEPRECATED))
589 COMMAND_WITH_FLAG("osd crush rule list", "list crush rules", "osd", "r",
590 FLAG(DEPRECATED))
591 COMMAND("osd crush rule ls", "list crush rules", "osd", "r")
592 COMMAND("osd crush rule ls-by-class "
593 "name=class,type=CephString,goodchars=[A-Za-z0-9-_.]",
594 "list all crush rules that reference the same <class>",
595 "osd", "r")
596 COMMAND("osd crush rule dump "
597 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.],req=false",
598 "dump crush rule <name> (default all)",
599 "osd", "r")
600 COMMAND("osd crush dump",
601 "dump crush map",
602 "osd", "r")
603 COMMAND("osd setcrushmap name=prior_version,type=CephInt,req=false",
604 "set crush map from input file",
605 "osd", "rw")
606 COMMAND("osd crush set name=prior_version,type=CephInt,req=false",
607 "set crush map from input file",
608 "osd", "rw")
609 COMMAND("osd crush add-bucket "
610 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] "
611 "name=type,type=CephString "
612 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=],req=false",
613 "add no-parent (probably root) crush bucket <name> of type <type> "
614 "to location <args>",
615 "osd", "rw")
616 COMMAND("osd crush rename-bucket "
617 "name=srcname,type=CephString,goodchars=[A-Za-z0-9-_.] "
618 "name=dstname,type=CephString,goodchars=[A-Za-z0-9-_.]",
619 "rename bucket <srcname> to <dstname>",
620 "osd", "rw")
621 COMMAND("osd crush set "
622 "name=id,type=CephOsdName "
623 "name=weight,type=CephFloat,range=0.0 "
624 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=]",
625 "update crushmap position and weight for <name> to <weight> with location <args>",
626 "osd", "rw")
627 COMMAND("osd crush add "
628 "name=id,type=CephOsdName "
629 "name=weight,type=CephFloat,range=0.0 "
630 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=]",
631 "add or update crushmap position and weight for <name> with <weight> and location <args>",
632 "osd", "rw")
633 COMMAND("osd crush set-all-straw-buckets-to-straw2",
634 "convert all CRUSH current straw buckets to use the straw2 algorithm",
635 "osd", "rw")
636 COMMAND("osd crush class create "
637 "name=class,type=CephString,goodchars=[A-Za-z0-9-_]",
638 "create crush device class <class>",
639 "osd", "rw")
640 COMMAND("osd crush class rm "
641 "name=class,type=CephString,goodchars=[A-Za-z0-9-_]",
642 "remove crush device class <class>",
643 "osd", "rw")
644 COMMAND("osd crush set-device-class "
645 "name=class,type=CephString "
646 "name=ids,type=CephString,n=N",
647 "set the <class> of the osd(s) <id> [<id>...],"
648 "or use <all|any> to set all.",
649 "osd", "rw")
650 COMMAND("osd crush rm-device-class "
651 "name=ids,type=CephString,n=N",
652 "remove class of the osd(s) <id> [<id>...],"
653 "or use <all|any> to remove all.",
654 "osd", "rw")
655 COMMAND("osd crush class rename "
656 "name=srcname,type=CephString,goodchars=[A-Za-z0-9-_] "
657 "name=dstname,type=CephString,goodchars=[A-Za-z0-9-_]",
658 "rename crush device class <srcname> to <dstname>",
659 "osd", "rw")
660 COMMAND("osd crush create-or-move "
661 "name=id,type=CephOsdName "
662 "name=weight,type=CephFloat,range=0.0 "
663 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=]",
664 "create entry or move existing entry for <name> <weight> at/to location <args>",
665 "osd", "rw")
666 COMMAND("osd crush move "
667 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] "
668 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=]",
669 "move existing entry for <name> to location <args>",
670 "osd", "rw")
671 COMMAND("osd crush swap-bucket "
672 "name=source,type=CephString,goodchars=[A-Za-z0-9-_.] "
673 "name=dest,type=CephString,goodchars=[A-Za-z0-9-_.] "
674 "name=yes_i_really_mean_it,type=CephBool,req=false",
675 "swap existing bucket contents from (orphan) bucket <source> and <target>",
676 "osd", "rw")
677 COMMAND("osd crush link "
678 "name=name,type=CephString "
679 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=]",
680 "link existing entry for <name> under location <args>",
681 "osd", "rw")
682 COMMAND("osd crush rm "
683 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] "
684 "name=ancestor,type=CephString,req=false,goodchars=[A-Za-z0-9-_.]",
685 "remove <name> from crush map (everywhere, or just at <ancestor>)",\
686 "osd", "rw")
687 COMMAND_WITH_FLAG("osd crush remove "
688 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] "
689 "name=ancestor,type=CephString,req=false,goodchars=[A-Za-z0-9-_.]",
690 "remove <name> from crush map (everywhere, or just at <ancestor>)",
691 "osd", "rw",
692 FLAG(DEPRECATED))
693 COMMAND("osd crush unlink "
694 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] "
695 "name=ancestor,type=CephString,req=false,goodchars=[A-Za-z0-9-_.]",
696 "unlink <name> from crush map (everywhere, or just at <ancestor>)",
697 "osd", "rw")
698 COMMAND("osd crush reweight-all",
699 "recalculate the weights for the tree to ensure they sum correctly",
700 "osd", "rw")
701 COMMAND("osd crush reweight "
702 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] "
703 "name=weight,type=CephFloat,range=0.0",
704 "change <name>'s weight to <weight> in crush map",
705 "osd", "rw")
706 COMMAND("osd crush reweight-subtree "
707 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] "
708 "name=weight,type=CephFloat,range=0.0",
709 "change all leaf items beneath <name> to <weight> in crush map",
710 "osd", "rw")
711 COMMAND("osd crush tunables "
712 "name=profile,type=CephChoices,strings=legacy|argonaut|bobtail|firefly|hammer|jewel|optimal|default",
713 "set crush tunables values to <profile>", "osd", "rw")
714 COMMAND("osd crush set-tunable "
715 "name=tunable,type=CephChoices,strings=straw_calc_version "
716 "name=value,type=CephInt",
717 "set crush tunable <tunable> to <value>",
718 "osd", "rw")
719 COMMAND("osd crush get-tunable "
720 "name=tunable,type=CephChoices,strings=straw_calc_version",
721 "get crush tunable <tunable>",
722 "osd", "r")
723 COMMAND("osd crush show-tunables",
724 "show current crush tunables", "osd", "r")
725 COMMAND("osd crush rule create-simple "
726 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] "
727 "name=root,type=CephString,goodchars=[A-Za-z0-9-_.] "
728 "name=type,type=CephString,goodchars=[A-Za-z0-9-_.] "
729 "name=mode,type=CephChoices,strings=firstn|indep,req=false",
730 "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)",
731 "osd", "rw")
732 COMMAND("osd crush rule create-replicated "
733 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] "
734 "name=root,type=CephString,goodchars=[A-Za-z0-9-_.] "
735 "name=type,type=CephString,goodchars=[A-Za-z0-9-_.] "
736 "name=class,type=CephString,goodchars=[A-Za-z0-9-_.],req=false",
737 "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)",
738 "osd", "rw")
739 COMMAND("osd crush rule create-erasure "
740 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] "
741 "name=profile,type=CephString,req=false,goodchars=[A-Za-z0-9-_.=]",
742 "create crush rule <name> for erasure coded pool created with <profile> (default default)",
743 "osd", "rw")
744 COMMAND("osd crush rule rm "
745 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] ",
746 "remove crush rule <name>", "osd", "rw")
747 COMMAND("osd crush rule rename "
748 "name=srcname,type=CephString,goodchars=[A-Za-z0-9-_.] "
749 "name=dstname,type=CephString,goodchars=[A-Za-z0-9-_.]",
750 "rename crush rule <srcname> to <dstname>",
751 "osd", "rw")
752 COMMAND("osd crush tree "
753 "name=show_shadow,type=CephBool,req=false",
754 "dump crush buckets and items in a tree view",
755 "osd", "r")
756 COMMAND("osd crush ls name=node,type=CephString,goodchars=[A-Za-z0-9-_.]",
757 "list items beneath a node in the CRUSH tree",
758 "osd", "r")
759 COMMAND("osd crush class ls",
760 "list all crush device classes",
761 "osd", "r")
762 COMMAND("osd crush class ls-osd "
763 "name=class,type=CephString,goodchars=[A-Za-z0-9-_]",
764 "list all osds belonging to the specific <class>",
765 "osd", "r")
766 COMMAND("osd crush get-device-class "
767 "name=ids,type=CephString,n=N",
768 "get classes of specified osd(s) <id> [<id>...]",
769 "osd", "r")
770 COMMAND("osd crush weight-set ls",
771 "list crush weight sets",
772 "osd", "r")
773 COMMAND("osd crush weight-set dump",
774 "dump crush weight sets",
775 "osd", "r")
776 COMMAND("osd crush weight-set create-compat",
777 "create a default backward-compatible weight-set",
778 "osd", "rw")
779 COMMAND("osd crush weight-set create "
780 "name=pool,type=CephPoolname "\
781 "name=mode,type=CephChoices,strings=flat|positional",
782 "create a weight-set for a given pool",
783 "osd", "rw")
784 COMMAND("osd crush weight-set rm name=pool,type=CephPoolname",
785 "remove the weight-set for a given pool",
786 "osd", "rw")
787 COMMAND("osd crush weight-set rm-compat",
788 "remove the backward-compatible weight-set",
789 "osd", "rw")
790 COMMAND("osd crush weight-set reweight "
791 "name=pool,type=CephPoolname "
792 "name=item,type=CephString "
793 "name=weight,type=CephFloat,range=0.0,n=N",
794 "set weight for an item (bucket or osd) in a pool's weight-set",
795 "osd", "rw")
796 COMMAND("osd crush weight-set reweight-compat "
797 "name=item,type=CephString "
798 "name=weight,type=CephFloat,range=0.0,n=N",
799 "set weight for an item (bucket or osd) in the backward-compatible weight-set",
800 "osd", "rw")
801 COMMAND("osd setmaxosd "
802 "name=newmax,type=CephInt,range=0",
803 "set new maximum osd value", "osd", "rw")
804 COMMAND("osd set-full-ratio "
805 "name=ratio,type=CephFloat,range=0.0|1.0",
806 "set usage ratio at which OSDs are marked full",
807 "osd", "rw")
808 COMMAND("osd set-backfillfull-ratio "
809 "name=ratio,type=CephFloat,range=0.0|1.0",
810 "set usage ratio at which OSDs are marked too full to backfill",
811 "osd", "rw")
812 COMMAND("osd set-nearfull-ratio "
813 "name=ratio,type=CephFloat,range=0.0|1.0",
814 "set usage ratio at which OSDs are marked near-full",
815 "osd", "rw")
816 COMMAND("osd get-require-min-compat-client",
817 "get the minimum client version we will maintain compatibility with",
818 "osd", "r")
819 COMMAND("osd set-require-min-compat-client "
820 "name=version,type=CephString "
821 "name=yes_i_really_mean_it,type=CephBool,req=false",
822 "set the minimum client version we will maintain compatibility with",
823 "osd", "rw")
824 COMMAND("osd pause", "pause osd", "osd", "rw")
825 COMMAND("osd unpause", "unpause osd", "osd", "rw")
826 COMMAND("osd erasure-code-profile set "
827 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] "
828 "name=profile,type=CephString,n=N,req=false "
829 "name=force,type=CephBool,req=false",
830 "create erasure code profile <name> with [<key[=value]> ...] pairs. Add a --force at the end to override an existing profile (VERY DANGEROUS)",
831 "osd", "rw")
832 COMMAND("osd erasure-code-profile get "
833 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.]",
834 "get erasure code profile <name>",
835 "osd", "r")
836 COMMAND("osd erasure-code-profile rm "
837 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.]",
838 "remove erasure code profile <name>",
839 "osd", "rw")
840 COMMAND("osd erasure-code-profile ls",
841 "list all erasure code profiles",
842 "osd", "r")
843 COMMAND("osd set "
844 "name=key,type=CephChoices,strings=full|pause|noup|nodown|"
845 "noout|noin|nobackfill|norebalance|norecover|noscrub|nodeep-scrub|"
846 "notieragent|nosnaptrim|pglog_hardlimit|noautoscale "
847 "name=yes_i_really_mean_it,type=CephBool,req=false",
848 "set <key>", "osd", "rw")
849 COMMAND("osd unset "
850 "name=key,type=CephChoices,strings=full|pause|noup|nodown|"\
851 "noout|noin|nobackfill|norebalance|norecover|noscrub|nodeep-scrub|"
852 "notieragent|nosnaptrim|noautoscale",
853 "unset <key>", "osd", "rw")
854 COMMAND("osd require-osd-release "\
855 "name=release,type=CephChoices,strings=octopus|pacific|quincy|reef "
856 "name=yes_i_really_mean_it,type=CephBool,req=false",
857 "set the minimum allowed OSD release to participate in the cluster",
858 "osd", "rw")
859 COMMAND("osd down "
860 "name=ids,type=CephString,n=N "
861 "name=definitely_dead,type=CephBool,req=false",
862 "set osd(s) <id> [<id>...] down, "
863 "or use <any|all> to set all osds down",
864 "osd", "rw")
865 COMMAND("osd stop "
866 "type=CephString,name=ids,n=N",
867 "stop the corresponding osd daemons and mark them as down",
868 "osd", "rw")
869 COMMAND("osd out "
870 "name=ids,type=CephString,n=N",
871 "set osd(s) <id> [<id>...] out, "
872 "or use <any|all> to set all osds out",
873 "osd", "rw")
874 COMMAND("osd in "
875 "name=ids,type=CephString,n=N",
876 "set osd(s) <id> [<id>...] in, "
877 "can use <any|all> to automatically set all previously out osds in",
878 "osd", "rw")
879 COMMAND_WITH_FLAG("osd rm "
880 "name=ids,type=CephString,n=N",
881 "remove osd(s) <id> [<id>...], "
882 "or use <any|all> to remove all osds",
883 "osd", "rw",
884 FLAG(DEPRECATED))
885 COMMAND_WITH_FLAG("osd add-noup "
886 "name=ids,type=CephString,n=N",
887 "mark osd(s) <id> [<id>...] as noup, "
888 "or use <all|any> to mark all osds as noup",
889 "osd", "rw",
890 FLAG(DEPRECATED))
891 COMMAND_WITH_FLAG("osd add-nodown "
892 "name=ids,type=CephString,n=N",
893 "mark osd(s) <id> [<id>...] as nodown, "
894 "or use <all|any> to mark all osds as nodown",
895 "osd", "rw",
896 FLAG(DEPRECATED))
897 COMMAND_WITH_FLAG("osd add-noin "
898 "name=ids,type=CephString,n=N",
899 "mark osd(s) <id> [<id>...] as noin, "
900 "or use <all|any> to mark all osds as noin",
901 "osd", "rw",
902 FLAG(DEPRECATED))
903 COMMAND_WITH_FLAG("osd add-noout "
904 "name=ids,type=CephString,n=N",
905 "mark osd(s) <id> [<id>...] as noout, "
906 "or use <all|any> to mark all osds as noout",
907 "osd", "rw",
908 FLAG(DEPRECATED))
909 COMMAND_WITH_FLAG("osd rm-noup "
910 "name=ids,type=CephString,n=N",
911 "allow osd(s) <id> [<id>...] to be marked up "
912 "(if they are currently marked as noup), "
913 "can use <all|any> to automatically filter out all noup osds",
914 "osd", "rw",
915 FLAG(DEPRECATED))
916 COMMAND_WITH_FLAG("osd rm-nodown "
917 "name=ids,type=CephString,n=N",
918 "allow osd(s) <id> [<id>...] to be marked down "
919 "(if they are currently marked as nodown), "
920 "can use <all|any> to automatically filter out all nodown osds",
921 "osd", "rw",
922 FLAG(DEPRECATED))
923 COMMAND_WITH_FLAG("osd rm-noin "
924 "name=ids,type=CephString,n=N",
925 "allow osd(s) <id> [<id>...] to be marked in "
926 "(if they are currently marked as noin), "
927 "can use <all|any> to automatically filter out all noin osds",
928 "osd", "rw",
929 FLAG(DEPRECATED))
930 COMMAND_WITH_FLAG("osd rm-noout "
931 "name=ids,type=CephString,n=N",
932 "allow osd(s) <id> [<id>...] to be marked out "
933 "(if they are currently marked as noout), "
934 "can use <all|any> to automatically filter out all noout osds",
935 "osd", "rw",
936 FLAG(DEPRECATED))
937 COMMAND("osd set-group "
938 "name=flags,type=CephString "
939 "name=who,type=CephString,n=N",
940 "set <flags> for batch osds or crush nodes, "
941 "<flags> must be a comma-separated subset of {noup,nodown,noin,noout}",
942 "osd", "rw")
943 COMMAND("osd unset-group "
944 "name=flags,type=CephString "
945 "name=who,type=CephString,n=N",
946 "unset <flags> for batch osds or crush nodes, "
947 "<flags> must be a comma-separated subset of {noup,nodown,noin,noout}",
948 "osd", "rw")
949 COMMAND("osd reweight "
950 "name=id,type=CephOsdName "
951 "type=CephFloat,name=weight,range=0.0|1.0",
952 "reweight osd to 0.0 < <weight> < 1.0", "osd", "rw")
953 COMMAND("osd reweightn "
954 "name=weights,type=CephString",
955 "reweight osds with {<id>: <weight>,...}",
956 "osd", "rw")
957 COMMAND("osd force-create-pg "
958 "name=pgid,type=CephPgid "\
959 "name=yes_i_really_mean_it,type=CephBool,req=false",
960 "force creation of pg <pgid>",
961 "osd", "rw")
962 COMMAND("osd pg-temp "
963 "name=pgid,type=CephPgid "
964 "name=id,type=CephOsdName,n=N,req=false",
965 "set pg_temp mapping <pgid>:[<id> [<id>...]] (developers only)",
966 "osd", "rw")
967 COMMAND("osd pg-upmap "
968 "name=pgid,type=CephPgid "
969 "name=id,type=CephOsdName,n=N",
970 "set pg_upmap mapping <pgid>:[<id> [<id>...]] (developers only)",
971 "osd", "rw")
972 COMMAND("osd rm-pg-upmap "
973 "name=pgid,type=CephPgid",
974 "clear pg_upmap mapping for <pgid> (developers only)",
975 "osd", "rw")
976 COMMAND("osd pg-upmap-items "
977 "name=pgid,type=CephPgid "
978 "name=id,type=CephOsdName,n=N",
979 "set pg_upmap_items mapping <pgid>:{<id> to <id>, [...]} (developers only)",
980 "osd", "rw")
981 COMMAND("osd rm-pg-upmap-items "
982 "name=pgid,type=CephPgid",
983 "clear pg_upmap_items mapping for <pgid> (developers only)",
984 "osd", "rw")
985 COMMAND("osd pg-upmap-primary "
986 "name=pgid,type=CephPgid "
987 "name=id,type=CephOsdName ",
988 "set pg primary osd <pgid>:<id> (id (osd) must be part of pgid)",
989 "osd", "rw")
990 COMMAND("osd rm-pg-upmap-primary "
991 "name=pgid,type=CephPgid ",
992 "clear pg primary setting for <pgid>",
993 "osd", "rw")
994 COMMAND("osd primary-temp "
995 "name=pgid,type=CephPgid "
996 "name=id,type=CephOsdName",
997 "set primary_temp mapping pgid:<id> (developers only)",
998 "osd", "rw")
999 COMMAND("osd rm-primary-temp "
1000 "name=pgid,type=CephPgid ",
1001 "clear primary_temp mapping pgid (developers only)",
1002 "osd", "rw")
1003 COMMAND("osd primary-affinity "
1004 "name=id,type=CephOsdName "
1005 "type=CephFloat,name=weight,range=0.0|1.0",
1006 "adjust osd primary-affinity from 0.0 <= <weight> <= 1.0",
1007 "osd", "rw")
1008 COMMAND_WITH_FLAG("osd destroy-actual "
1009 "name=id,type=CephOsdName "
1010 "name=yes_i_really_mean_it,type=CephBool,req=false",
1011 "mark osd as being destroyed. Keeps the ID intact (allowing reuse), "
1012 "but removes cephx keys, config-key data and lockbox keys, "\
1013 "rendering data permanently unreadable.",
1014 "osd", "rw", FLAG(HIDDEN))
1015 COMMAND("osd purge-new "
1016 "name=id,type=CephOsdName "
1017 "name=yes_i_really_mean_it,type=CephBool,req=false",
1018 "purge all traces of an OSD that was partially created but never "
1019 "started",
1020 "osd", "rw")
1021 COMMAND_WITH_FLAG("osd purge-actual "
1022 "name=id,type=CephOsdName "
1023 "name=yes_i_really_mean_it,type=CephBool,req=false",
1024 "purge all osd data from the monitors. Combines `osd destroy`, "
1025 "`osd rm`, and `osd crush rm`.",
1026 "osd", "rw", FLAG(HIDDEN))
1027 COMMAND("osd lost "
1028 "name=id,type=CephOsdName "
1029 "name=yes_i_really_mean_it,type=CephBool,req=false",
1030 "mark osd as permanently lost. THIS DESTROYS DATA IF NO MORE REPLICAS EXIST, BE CAREFUL",
1031 "osd", "rw")
1032 COMMAND_WITH_FLAG("osd create "
1033 "name=uuid,type=CephUUID,req=false "
1034 "name=id,type=CephOsdName,req=false",
1035 "create new osd (with optional UUID and ID)", "osd", "rw",
1036 FLAG(DEPRECATED))
1037 COMMAND("osd new "
1038 "name=uuid,type=CephUUID,req=true "
1039 "name=id,type=CephOsdName,req=false",
1040 "Create a new OSD. If supplied, the `id` to be replaced needs to "
1041 "exist and have been previously destroyed. "
1042 "Reads secrets from JSON file via `-i <file>` (see man page).",
1043 "osd", "rw")
1044 COMMAND("osd blocklist "
1045 "name=range,type=CephString,goodchars=[range],req=false "
1046 "name=blocklistop,type=CephChoices,strings=add|rm "
1047 "name=addr,type=CephEntityAddr "
1048 "name=expire,type=CephFloat,range=0.0,req=false",
1049 "add (optionally until <expire> seconds from now) or remove <addr> from blocklist",
1050 "osd", "rw")
1051 COMMAND("osd blocklist ls", "show blocklisted clients", "osd", "r")
1052 COMMAND("osd blocklist clear", "clear all blocklisted clients", "osd", "rw")
1053
1054 COMMAND_WITH_FLAG("osd blacklist "
1055 "name=blacklistop,type=CephChoices,strings=add|rm "
1056 "name=addr,type=CephEntityAddr "
1057 "name=expire,type=CephFloat,range=0.0,req=false",
1058 "add (optionally until <expire> seconds from now) or remove <addr> from blacklist",
1059 "osd", "rw",
1060 FLAG(DEPRECATED))
1061 COMMAND_WITH_FLAG("osd blacklist ls", "show blacklisted clients", "osd", "r",
1062 FLAG(DEPRECATED))
1063 COMMAND_WITH_FLAG("osd blacklist clear", "clear all blacklisted clients", "osd", "rw",
1064 FLAG(DEPRECATED))
1065
1066 COMMAND("osd pool mksnap "
1067 "name=pool,type=CephPoolname "
1068 "name=snap,type=CephString",
1069 "make snapshot <snap> in <pool>", "osd", "rw")
1070 COMMAND("osd pool rmsnap "
1071 "name=pool,type=CephPoolname "
1072 "name=snap,type=CephString",
1073 "remove snapshot <snap> from <pool>", "osd", "rw")
1074 COMMAND("osd pool ls "
1075 "name=detail,type=CephChoices,strings=detail,req=false",
1076 "list pools", "osd", "r")
1077 COMMAND("osd pool create "
1078 "name=pool,type=CephPoolname "
1079 "name=pg_num,type=CephInt,range=0,req=false "
1080 "name=pgp_num,type=CephInt,range=0,req=false "
1081 "name=pool_type,type=CephChoices,strings=replicated|erasure,req=false "
1082 "name=erasure_code_profile,type=CephString,req=false,goodchars=[A-Za-z0-9-_.] "
1083 "name=rule,type=CephString,req=false "
1084 "name=expected_num_objects,type=CephInt,range=0,req=false "
1085 "name=size,type=CephInt,range=0,req=false "
1086 "name=pg_num_min,type=CephInt,range=0,req=false "
1087 "name=pg_num_max,type=CephInt,range=0,req=false "
1088 "name=autoscale_mode,type=CephChoices,strings=on|off|warn,req=false "
1089 "name=bulk,type=CephBool,req=false "
1090 "name=target_size_bytes,type=CephInt,range=0,req=false "
1091 "name=target_size_ratio,type=CephFloat,range=0.0,req=false "\
1092 "name=yes_i_really_mean_it,type=CephBool,req=false"
1093 "name=crimson,type=CephBool,req=false",
1094 "create pool", "osd", "rw")
1095 COMMAND_WITH_FLAG("osd pool delete "
1096 "name=pool,type=CephPoolname "
1097 "name=pool2,type=CephPoolname,req=false "
1098 "name=yes_i_really_really_mean_it,type=CephBool,req=false "
1099 "name=yes_i_really_really_mean_it_not_faking,type=CephBool,req=false ",
1100 "delete pool",
1101 "osd", "rw",
1102 FLAG(DEPRECATED))
1103 COMMAND("osd pool rm "
1104 "name=pool,type=CephPoolname "
1105 "name=pool2,type=CephPoolname,req=false "
1106 "name=yes_i_really_really_mean_it,type=CephBool,req=false "
1107 "name=yes_i_really_really_mean_it_not_faking,type=CephBool,req=false ",
1108 "remove pool",
1109 "osd", "rw")
1110 COMMAND("osd pool rename "
1111 "name=srcpool,type=CephPoolname "
1112 "name=destpool,type=CephPoolname "
1113 "name=yes_i_really_mean_it,type=CephBool,req=false",
1114 "rename <srcpool> to <destpool>", "osd", "rw")
1115 COMMAND("osd pool get "
1116 "name=pool,type=CephPoolname "
1117 "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|pg_num_max|target_size_bytes|target_size_ratio|dedup_tier|dedup_chunk_algorithm|dedup_cdc_chunk_size|eio|bulk",
1118 "get pool parameter <var>", "osd", "r")
1119 COMMAND("osd pool set "
1120 "name=pool,type=CephPoolname "
1121 "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|pg_num_max|target_size_bytes|target_size_ratio|dedup_tier|dedup_chunk_algorithm|dedup_cdc_chunk_size|eio|bulk "
1122 "name=val,type=CephString "
1123 "name=yes_i_really_mean_it,type=CephBool,req=false",
1124 "set pool parameter <var> to <val>", "osd", "rw")
1125 // 'val' is a CephString because it can include a unit. Perhaps
1126 // there should be a Python type for validation/conversion of strings
1127 // with units.
1128 COMMAND("osd pool set-quota "
1129 "name=pool,type=CephPoolname "
1130 "name=field,type=CephChoices,strings=max_objects|max_bytes "
1131 "name=val,type=CephString",
1132 "set object or byte limit on pool", "osd", "rw")
1133 COMMAND("osd pool get-quota "
1134 "name=pool,type=CephPoolname ",
1135 "obtain object or byte limits for pool",
1136 "osd", "r")
1137 COMMAND("osd pool application enable "
1138 "name=pool,type=CephPoolname "
1139 "name=app,type=CephString,goodchars=[A-Za-z0-9-_.] "
1140 "name=yes_i_really_mean_it,type=CephBool,req=false",
1141 "enable use of an application <app> [cephfs,rbd,rgw] on pool <poolname>",
1142 "osd", "rw")
1143 COMMAND("osd pool application disable "
1144 "name=pool,type=CephPoolname "
1145 "name=app,type=CephString "
1146 "name=yes_i_really_mean_it,type=CephBool,req=false",
1147 "disables use of an application <app> on pool <poolname>",
1148 "osd", "rw")
1149 COMMAND("osd pool application set "
1150 "name=pool,type=CephPoolname "
1151 "name=app,type=CephString "
1152 "name=key,type=CephString,goodchars=[A-Za-z0-9-_.] "
1153 "name=value,type=CephString,goodchars=[A-Za-z0-9-_.=]",
1154 "sets application <app> metadata key <key> to <value> on pool <poolname>",
1155 "osd", "rw")
1156 COMMAND("osd pool application rm "
1157 "name=pool,type=CephPoolname "
1158 "name=app,type=CephString "
1159 "name=key,type=CephString",
1160 "removes application <app> metadata key <key> on pool <poolname>",
1161 "osd", "rw")
1162 COMMAND("osd pool application get "
1163 "name=pool,type=CephPoolname,req=fasle "
1164 "name=app,type=CephString,req=false "
1165 "name=key,type=CephString,req=false",
1166 "get value of key <key> of application <app> on pool <poolname>",
1167 "osd", "r")
1168 COMMAND("osd utilization",
1169 "get basic pg distribution stats",
1170 "osd", "r")
1171 COMMAND("osd force_healthy_stretch_mode " \
1172 "name=yes_i_really_mean_it,type=CephBool,req=false",
1173 "force a healthy stretch mode, requiring the full number of CRUSH buckets "
1174 "to peer and letting all non-tiebreaker monitors be elected leader ",
1175 "osd", "rw")
1176 COMMAND("osd force_recovery_stretch_mode " \
1177 "name=yes_i_really_mean_it,type=CephBool,req=false",
1178 "try and force a recovery stretch mode, increasing the "
1179 "pool size to its non-failure value if currently degraded and "
1180 "all monitor buckets are up",
1181 "osd", "rw")
1182 COMMAND("osd set-allow-crimson " \
1183 "name=yes_i_really_mean_it,type=CephBool,req=false",
1184 "Allow crimson-osds to boot and join the cluster. Note, crimson-osd is "
1185 "not yet considered stable and may crash or cause data loss -- should "
1186 "be avoided outside of testing and development. This setting is "
1187 "irrevocable",
1188 "osd", "rw")
1189
1190
1191 // tiering
1192 COMMAND("osd tier add "
1193 "name=pool,type=CephPoolname "
1194 "name=tierpool,type=CephPoolname "
1195 "name=force_nonempty,type=CephBool,req=false",
1196 "add the tier <tierpool> (the second one) to base pool <pool> (the first one)",
1197 "osd", "rw")
1198 COMMAND("osd tier rm "
1199 "name=pool,type=CephPoolname "
1200 "name=tierpool,type=CephPoolname",
1201 "remove the tier <tierpool> (the second one) from base pool <pool> (the first one)",
1202 "osd", "rw")
1203 COMMAND_WITH_FLAG("osd tier remove "
1204 "name=pool,type=CephPoolname "
1205 "name=tierpool,type=CephPoolname",
1206 "remove the tier <tierpool> (the second one) from base pool <pool> (the first one)",
1207 "osd", "rw",
1208 FLAG(DEPRECATED))
1209 COMMAND("osd tier cache-mode "
1210 "name=pool,type=CephPoolname "
1211 "name=mode,type=CephChoices,strings=writeback|proxy|readproxy|readonly|none "
1212 "name=yes_i_really_mean_it,type=CephBool,req=false",
1213 "specify the caching mode for cache tier <pool>", "osd", "rw")
1214 COMMAND("osd tier set-overlay "
1215 "name=pool,type=CephPoolname "
1216 "name=overlaypool,type=CephPoolname",
1217 "set the overlay pool for base pool <pool> to be <overlaypool>", "osd", "rw")
1218 COMMAND("osd tier rm-overlay "
1219 "name=pool,type=CephPoolname ",
1220 "remove the overlay pool for base pool <pool>", "osd", "rw")
1221 COMMAND_WITH_FLAG("osd tier remove-overlay "
1222 "name=pool,type=CephPoolname ",
1223 "remove the overlay pool for base pool <pool>", "osd", "rw",
1224 FLAG(DEPRECATED))
1225
1226 COMMAND("osd tier add-cache "
1227 "name=pool,type=CephPoolname "
1228 "name=tierpool,type=CephPoolname "
1229 "name=size,type=CephInt,range=0",
1230 "add a cache <tierpool> (the second one) of size <size> to existing pool <pool> (the first one)",
1231 "osd", "rw")
1232
1233 /*
1234 * mon/KVMonitor.cc
1235 */
1236
1237 COMMAND("config-key get "
1238 "name=key,type=CephString",
1239 "get <key>", "config-key", "r")
1240 COMMAND("config-key set "
1241 "name=key,type=CephString "
1242 "name=val,type=CephString,req=false",
1243 "set <key> to value <val>", "config-key", "rw")
1244 COMMAND_WITH_FLAG("config-key put "
1245 "name=key,type=CephString "
1246 "name=val,type=CephString,req=false",
1247 "put <key>, value <val>", "config-key", "rw",
1248 FLAG(DEPRECATED))
1249 COMMAND_WITH_FLAG("config-key del "
1250 "name=key,type=CephString",
1251 "delete <key>", "config-key", "rw",
1252 FLAG(DEPRECATED))
1253 COMMAND("config-key rm "
1254 "name=key,type=CephString",
1255 "rm <key>", "config-key", "rw")
1256 COMMAND("config-key exists "
1257 "name=key,type=CephString",
1258 "check for <key>'s existence", "config-key", "r")
1259 COMMAND_WITH_FLAG("config-key list ", "list keys", "config-key", "r",
1260 FLAG(DEPRECATED))
1261 COMMAND("config-key ls ", "list keys", "config-key", "r")
1262 COMMAND("config-key dump "
1263 "name=key,type=CephString,req=false", "dump keys and values (with optional prefix)", "config-key", "r")
1264
1265
1266 /*
1267 * mon/MgrMonitor.cc
1268 */
1269 COMMAND("mgr stat",
1270 "dump basic info about the mgr cluster state",
1271 "mgr", "r")
1272 COMMAND("mgr dump "
1273 "name=epoch,type=CephInt,range=0,req=false",
1274 "dump the latest MgrMap",
1275 "mgr", "r")
1276 COMMAND("mgr fail name=who,type=CephString,req=false",
1277 "treat the named manager daemon as failed", "mgr", "rw")
1278 COMMAND("mgr module ls",
1279 "list active mgr modules", "mgr", "r")
1280 COMMAND("mgr services",
1281 "list service endpoints provided by mgr modules",
1282 "mgr", "r")
1283 COMMAND("mgr module enable "
1284 "name=module,type=CephString "
1285 "name=force,type=CephBool,req=false",
1286 "enable mgr module", "mgr", "rw")
1287 COMMAND("mgr module disable "
1288 "name=module,type=CephString",
1289 "disable mgr module", "mgr", "rw")
1290 COMMAND("mgr metadata name=who,type=CephString,req=false",
1291 "dump metadata for all daemons or a specific daemon",
1292 "mgr", "r")
1293 COMMAND("mgr count-metadata name=property,type=CephString",
1294 "count ceph-mgr daemons by metadata field property",
1295 "mgr", "r")
1296 COMMAND("mgr versions",
1297 "check running versions of ceph-mgr daemons",
1298 "mgr", "r")
1299
1300 // ConfigMonitor
1301 COMMAND("config set"
1302 " name=who,type=CephString"
1303 " name=name,type=CephString"
1304 " name=value,type=CephString"
1305 " name=force,type=CephBool,req=false",
1306 "Set a configuration option for one or more entities",
1307 "config", "rw")
1308 COMMAND("config rm"
1309 " name=who,type=CephString"
1310 " name=name,type=CephString",
1311 "Clear a configuration option for one or more entities",
1312 "config", "rw")
1313 COMMAND("config get "
1314 "name=who,type=CephString "
1315 "name=key,type=CephString,req=false",
1316 "Show configuration option(s) for an entity",
1317 "config", "r")
1318 COMMAND("config dump",
1319 "Show all configuration option(s)",
1320 "mon", "r")
1321 COMMAND("config help "
1322 "name=key,type=CephString",
1323 "Describe a configuration option",
1324 "config", "r")
1325 COMMAND("config ls",
1326 "List available configuration options",
1327 "config", "r")
1328 COMMAND("config assimilate-conf",
1329 "Assimilate options from a conf, and return a new, minimal conf file",
1330 "config", "rw")
1331 COMMAND("config log name=num,type=CephInt,req=false",
1332 "Show recent history of config changes",
1333 "config", "r")
1334 COMMAND("config reset "
1335 "name=num,type=CephInt,range=0",
1336 "Revert configuration to a historical version specified by <num>",
1337 "config", "rw")
1338 COMMAND("config generate-minimal-conf",
1339 "Generate a minimal ceph.conf file",
1340 "config", "r")
1341
1342
1343
1344
1345 // these are tell commands that were implemented as CLI commands in
1346 // the broken pre-octopus way that we want to allow to work when a
1347 // monitor has upgraded to octopus+ but the monmap min_mon_release is
1348 // still < octopus. we exclude things that weren't well supported
1349 // before and that aren't implemented by the octopus mon anymore.
1350 //
1351 // the command set below matches the kludge in Monitor::handle_command
1352 // that shunts these off to the asok machinery.
1353
1354 COMMAND_WITH_FLAG("injectargs "
1355 "name=injected_args,type=CephString,n=N",
1356 "inject config arguments into monitor", "mon", "rw",
1357 FLAG(TELL))
1358 COMMAND_WITH_FLAG("smart name=devid,type=CephString,req=false",
1359 "Query health metrics for underlying device",
1360 "mon", "rw",
1361 FLAG(TELL))
1362 COMMAND_WITH_FLAG("mon_status",
1363 "report status of monitors",
1364 "mon", "r",
1365 FLAG(TELL))
1366 COMMAND_WITH_FLAG("heap "
1367 "name=heapcmd,type=CephChoices,strings=dump|start_profiler|stop_profiler|release|stats "
1368 "name=value,type=CephString,req=false",
1369 "show heap usage info (available only if compiled with tcmalloc)",
1370 "mon", "rw",
1371 FLAG(TELL))
1372 COMMAND_WITH_FLAG("connection scores dump",
1373 "show the scores used in connectivity-based elections",
1374 "mon", "rwx",
1375 FLAG(TELL))
1376 COMMAND_WITH_FLAG("connection scores reset",
1377 "reset the scores used in connectivity-based elections",
1378 "mon", "rwx",
1379 FLAG(TELL))
1380 COMMAND_WITH_FLAG("sync_force "
1381 "name=yes_i_really_mean_it,type=CephBool,req=false",
1382 "force sync of and clear monitor store",
1383 "mon", "rw",
1384 FLAG(TELL))
1385 COMMAND_WITH_FLAG("add_bootstrap_peer_hint "
1386 "name=addr,type=CephIPAddr",
1387 "add peer address as potential bootstrap "
1388 "peer for cluster bringup",
1389 "mon", "rw",
1390 FLAG(TELL))
1391 COMMAND_WITH_FLAG("add_bootstrap_peer_hintv "
1392 "name=addrv,type=CephString",
1393 "add peer address vector as potential bootstrap "
1394 "peer for cluster bringup",
1395 "mon", "rw",
1396 FLAG(TELL))
1397 COMMAND_WITH_FLAG("quorum enter ",
1398 "force monitor back into quorum",
1399 "mon", "rw",
1400 FLAG(TELL))
1401 COMMAND_WITH_FLAG("quorum exit",
1402 "force monitor out of the quorum",
1403 "mon", "rw",
1404 FLAG(TELL))
1405 COMMAND_WITH_FLAG("ops",
1406 "show the ops currently in flight",
1407 "mon", "r",
1408 FLAG(TELL))
1409 COMMAND_WITH_FLAG("sessions",
1410 "list existing sessions",
1411 "mon", "r",
1412 FLAG(TELL))
1413 COMMAND_WITH_FLAG("dump_historic_ops",
1414 "show recent ops",
1415 "mon", "r",
1416 FLAG(TELL))
1417 COMMAND_WITH_FLAG("dump_historic_slow_ops",
1418 "show recent slow ops",
1419 "mon", "r",
1420 FLAG(TELL))