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