]>
git.proxmox.com Git - ceph.git/blob - 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
4 * Ceph - scalable distributed file system
6 * Copyright (C) 2013 Inktank Storage, Inc.
7 * Copyright (C) 2013,2014 Cloudwatt <libre.licensing@cloudwatt.com>
9 * Author: Loic Dachary <loic@dachary.org>
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.
18 /* no guard; may be included multiple times */
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:
26 * COMMAND(signature, helpstring, modulename, req perms, availability)
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
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.
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.
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:
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.
55 * n=N is a special case that means "1 or more".
57 * A perhaps-incomplete list of types:
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
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")
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 *"]}.
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
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.
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.
106 * The flag parameter for COMMAND_WITH_FLAGS macro must be passed using
107 * FLAG(f), where 'f' may be one of the following:
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)
118 * A command should always be first considered DEPRECATED before being
119 * considered OBSOLETE, giving due consideration to users and conforming
120 * to any guidelines regarding deprecating commands.
123 COMMAND ( "pg map name=pgid,type=CephPgid" , "show mapping of pg to osds" , \
125 COMMAND ( "pg repeer name=pgid,type=CephPgid" , "force a PG to repeer" ,
127 COMMAND ( "osd last-stat-seq name=id,type=CephOsdName" , \
128 "get the last pg stats sequence number reported for this osd" , \
132 * auth commands AuthMonitor.cc
135 COMMAND ( "auth export name=entity,type=CephString,req=false" , \
136 "write keyring for requested entity, or master keyring if none given" , \
138 COMMAND ( "auth get name=entity,type=CephString" , \
139 "write keyring file with requested key" , "auth" , "rx" )
140 COMMAND ( "auth get-key name=entity,type=CephString" , "display requested key" , \
142 COMMAND ( "auth print-key name=entity,type=CephString" , "display requested key" , \
144 COMMAND ( "auth print_key name=entity,type=CephString" , "display requested key" , \
146 COMMAND_WITH_FLAG ( "auth list" , "list authentication state" , "auth" , "rx" ,
148 COMMAND ( "auth ls" , "list authentication state" , "auth" , "rx" )
149 COMMAND ( "auth import" , "auth import: read keyring file from -i <file>" , \
151 COMMAND ( "auth add " \
152 "name=entity,type=CephString " \
153 "name=caps,type=CephString,n=N,req=false" , \
154 "add auth info for <entity> from input file, or random key if no " \
155 "input is given, and/or any caps specified in the command" ,
157 COMMAND ( "auth get-or-create-key " \
158 "name=entity,type=CephString " \
159 "name=caps,type=CephString,n=N,req=false" , \
160 "get, or add, key for <name> from system/caps pairs specified in the command. If key already exists, any given caps must match the existing caps for that key." , \
162 COMMAND ( "auth get-or-create " \
163 "name=entity,type=CephString " \
164 "name=caps,type=CephString,n=N,req=false" , \
165 "add auth info for <entity> from input file, or random key if no input given, and/or any caps specified in the command" , \
167 COMMAND ( "fs authorize " \
168 "name=filesystem,type=CephString " \
169 "name=entity,type=CephString " \
170 "name=caps,type=CephString,n=N" , \
171 "add auth for <entity> to access file system <filesystem> based on following directory and permissions pairs" , \
173 COMMAND ( "auth caps " \
174 "name=entity,type=CephString " \
175 "name=caps,type=CephString,n=N" , \
176 "update caps for <name> from caps specified in the command" , \
178 COMMAND_WITH_FLAG ( "auth del " \
179 "name=entity,type=CephString" , \
180 "delete all caps for <name>" , \
184 "name=entity,type=CephString" , \
185 "remove all caps for <name>" , \
189 * Monitor commands (Monitor.cc)
191 COMMAND_WITH_FLAG ( "compact" , "cause compaction of monitor's leveldb/rocksdb storage" , \
193 FLAG ( NOFORWARD
)| FLAG ( DEPRECATED
))
194 COMMAND_WITH_FLAG ( "scrub" , "scrub the monitor stores" , \
197 COMMAND ( "fsid" , "show cluster FSID/UUID" , "mon" , "r" )
198 COMMAND ( "log name=logtext,type=CephString,n=N" , \
199 "log supplied text to the monitor log" , "mon" , "rw" )
201 "name=num,type=CephInt,range=1,req=false "
202 "name=level,type=CephChoices,strings=debug|info|sec|warn|error,req=false "
203 "name=channel,type=CephChoices,strings=*|cluster|audit,req=false" , \
204 "print last few lines of the cluster log" , \
206 COMMAND_WITH_FLAG ( "injectargs " \
207 "name=injected_args,type=CephString,n=N" , \
208 "inject config arguments into monitor" , "mon" , "rw" ,
211 COMMAND ( "status" , "show cluster status" , "mon" , "r" )
212 COMMAND ( "health name=detail,type=CephChoices,strings=detail,req=false" , \
213 "show cluster health" , "mon" , "r" )
214 COMMAND ( "time-sync-status" , "show time sync status" , "mon" , "r" )
215 COMMAND ( "df name=detail,type=CephChoices,strings=detail,req=false" , \
216 "show cluster free space stats" , "mon" , "r" )
217 COMMAND ( "report name=tags,type=CephString,n=N,req=false" , \
218 "report full status of cluster, optional title tag strings" , \
220 COMMAND ( "features" , "report of connected features" , \
222 COMMAND ( "quorum_status" , "report status of monitor quorum" , \
224 COMMAND ( "mon ok-to-stop " \
225 "name=ids,type=CephString,n=N" ,
226 "check whether mon(s) can be safely stopped without reducing immediate " \
229 COMMAND ( "mon ok-to-add-offline" ,
230 "check whether adding a mon and not starting it would break quorum" ,
232 COMMAND ( "mon ok-to-rm " \
233 "name=id,type=CephString" ,
234 "check whether removing the specified mon would break quorum" ,
237 COMMAND_WITH_FLAG ( "mon_status" , "report status of monitors" , "mon" , "r" ,
239 COMMAND_WITH_FLAG ( "sync force " \
240 "name=yes_i_really_mean_it,type=CephBool,req=false " \
241 "name=i_know_what_i_am_doing,type=CephBool,req=false" , \
242 "force sync of and clear monitor store" , \
244 FLAG ( NOFORWARD
)| FLAG ( DEPRECATED
))
245 COMMAND_WITH_FLAG ( "heap " \
246 "name=heapcmd,type=CephChoices,strings=dump|start_profiler|stop_profiler|release|stats" , \
247 "show heap usage info (available only if compiled with tcmalloc)" , \
248 "mon" , "rw" , FLAG ( NOFORWARD
))
249 COMMAND ( "quorum name=quorumcmd,type=CephChoices,strings=enter|exit,n=1" , \
250 "enter or exit quorum" , "mon" , "rw" )
252 "name=target,type=CephName " \
253 "name=args,type=CephString,n=N" , \
254 "send a command to a specific daemon" , "mon" , "rw" )
255 COMMAND_WITH_FLAG ( "version" , "show mon daemon version" , "mon" , "r" ,
259 "name=type,type=CephChoices,strings=all|osd|mon|mds|mgr,req=false" ,
260 "list all nodes in cluster [type]" , "mon" , "r" )
262 * Monitor-specific commands under module 'mon'
264 COMMAND_WITH_FLAG ( "mon compact" , \
265 "cause compaction of monitor's leveldb/rocksdb storage" , \
268 COMMAND_WITH_FLAG ( "mon scrub" ,
269 "scrub the monitor stores" , \
272 COMMAND_WITH_FLAG ( "mon sync force " \
273 "name=yes_i_really_mean_it,type=CephBool,req=false " \
274 "name=i_know_what_i_am_doing,type=CephBool,req=false" , \
275 "force sync of and clear monitor store" , \
278 COMMAND ( "mon metadata name=id,type=CephString,req=false" ,
279 "fetch metadata for mon <id>" ,
281 COMMAND ( "mon count-metadata name=property,type=CephString" ,
282 "count mons by metadata field property" ,
284 COMMAND ( "mon versions" ,
285 "check running versions of monitors" ,
288 "check running versions of ceph daemons" ,
294 * MDS commands (MDSMonitor.cc)
297 COMMAND_WITH_FLAG ( "mds stat" , "show MDS status" , "mds" , "r" , FLAG ( HIDDEN
))
298 COMMAND_WITH_FLAG ( "mds dump "
299 "name=epoch,type=CephInt,req=false,range=0" , \
300 "dump legacy MDS cluster info, optionally from epoch" ,
301 "mds" , "r" , FLAG ( OBSOLETE
))
303 "name=epoch,type=CephInt,req=false,range=0" , \
304 "dump all CephFS status, optionally from epoch" , "mds" , "r" )
305 COMMAND_WITH_FLAG ( "mds getmap " \
306 "name=epoch,type=CephInt,req=false,range=0" , \
307 "get MDS map, optionally from epoch" , "mds" , "r" , FLAG ( OBSOLETE
))
308 COMMAND ( "mds metadata name=who,type=CephString,req=false" ,
309 "fetch metadata for mds <role>" ,
311 COMMAND ( "mds count-metadata name=property,type=CephString" ,
312 "count MDSs by metadata field property" ,
314 COMMAND ( "mds versions" ,
315 "check running versions of MDSs" ,
317 COMMAND_WITH_FLAG ( "mds tell " \
318 "name=who,type=CephString " \
319 "name=args,type=CephString,n=N" , \
320 "send command to particular mds" , "mds" , "rw" , FLAG ( OBSOLETE
))
321 COMMAND ( "mds compat show" , "show mds compatibility settings" , \
323 COMMAND_WITH_FLAG ( "mds stop name=role,type=CephString" , "stop mds" , \
324 "mds" , "rw" , FLAG ( OBSOLETE
))
325 COMMAND_WITH_FLAG ( "mds deactivate name=role,type=CephString" ,
326 "clean up specified MDS rank (use with `set max_mds` to shrink cluster)" , \
327 "mds" , "rw" , FLAG ( OBSOLETE
))
328 COMMAND ( "mds ok-to-stop name=ids,type=CephString,n=N" ,
329 "check whether stopping the specified MDS would reduce immediate availability" ,
331 COMMAND_WITH_FLAG ( "mds set_max_mds " \
332 "name=maxmds,type=CephInt,range=0" , \
333 "set max MDS index" , "mds" , "rw" , FLAG ( OBSOLETE
))
334 COMMAND_WITH_FLAG ( "mds set " \
335 "name=var,type=CephChoices,strings=max_mds|max_file_size|inline_data|"
336 "allow_new_snaps|allow_multimds|allow_multimds_snaps|allow_dirfrags " \
337 "name=val,type=CephString " \
338 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
339 "set mds parameter <var> to <val>" , "mds" , "rw" , FLAG ( OBSOLETE
))
340 COMMAND_WITH_FLAG ( "mds freeze name=role_or_gid,type=CephString"
341 " name=val,type=CephString" ,
342 "freeze MDS yes/no" , "mds" , "rw" , FLAG ( HIDDEN
))
343 // arbitrary limit 0-20 below; worth standing on head to make it
344 // relate to actual state definitions?
345 // #include "include/ceph_fs.h"
346 COMMAND_WITH_FLAG ( "mds set_state " \
347 "name=gid,type=CephInt,range=0 " \
348 "name=state,type=CephInt,range=0|20" , \
349 "set mds state of <gid> to <numeric-state>" , "mds" , "rw" , FLAG ( HIDDEN
))
350 COMMAND ( "mds fail name=role_or_gid,type=CephString" , \
351 "Mark MDS failed: trigger a failover if a standby is available" ,
353 COMMAND ( "mds repaired name=role,type=CephString" , \
354 "mark a damaged MDS rank as no longer damaged" , "mds" , "rw" )
356 "name=gid,type=CephInt,range=0" , \
357 "remove nonactive mds" , "mds" , "rw" )
358 COMMAND_WITH_FLAG ( "mds rmfailed name=role,type=CephString " \
359 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
360 "remove failed rank" , "mds" , "rw" , FLAG ( HIDDEN
))
361 COMMAND_WITH_FLAG ( "mds cluster_down" , "take MDS cluster down" , "mds" , "rw" , FLAG ( OBSOLETE
))
362 COMMAND_WITH_FLAG ( "mds cluster_up" , "bring MDS cluster up" , "mds" , "rw" , FLAG ( OBSOLETE
))
363 COMMAND ( "mds compat rm_compat " \
364 "name=feature,type=CephInt,range=0" , \
365 "remove compatible feature" , "mds" , "rw" )
366 COMMAND ( "mds compat rm_incompat " \
367 "name=feature,type=CephInt,range=0" , \
368 "remove incompatible feature" , "mds" , "rw" )
369 COMMAND_WITH_FLAG ( "mds add_data_pool " \
370 "name=pool,type=CephString" , \
371 "add data pool <pool>" , "mds" , "rw" , FLAG ( OBSOLETE
))
372 COMMAND_WITH_FLAG ( "mds rm_data_pool " \
373 "name=pool,type=CephString" , \
374 "remove data pool <pool>" , "mds" , "rw" , FLAG ( OBSOLETE
))
375 COMMAND_WITH_FLAG ( "mds remove_data_pool " \
376 "name=pool,type=CephString" , \
377 "remove data pool <pool>" , "mds" , "rw" , FLAG ( OBSOLETE
))
378 COMMAND_WITH_FLAG ( "mds newfs " \
379 "name=metadata,type=CephInt,range=0 " \
380 "name=data,type=CephInt,range=0 " \
381 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
382 "make new filesystem using pools <metadata> and <data>" , \
383 "mds" , "rw" , FLAG ( OBSOLETE
))
385 "name=fs_name,type=CephString " \
386 "name=metadata,type=CephString " \
387 "name=data,type=CephString " \
388 "name=force,type=CephBool,req=false " \
389 "name=allow_dangerous_metadata_overlay,type=CephBool,req=false" , \
390 "make new filesystem using named pools <metadata> and <data>" , \
393 "name=fs_name,type=CephString " , \
394 "bring the file system down and all of its ranks" , \
397 "name=fs_name,type=CephString " \
398 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
399 "disable the named filesystem" , \
401 COMMAND ( "fs reset " \
402 "name=fs_name,type=CephString " \
403 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
404 "disaster recovery only: reset to a single-MDS map" , \
407 "list filesystems" , \
409 COMMAND ( "fs get name=fs_name,type=CephString" , \
410 "get info about one filesystem" , \
413 "name=fs_name,type=CephString " \
414 "name=var,type=CephChoices,strings=max_mds|max_file_size"
415 "|allow_new_snaps|inline_data|cluster_down|allow_dirfrags|balancer" \
416 "|standby_count_wanted|session_timeout|session_autoclose" \
417 "|allow_standby_replay|down|joinable|min_compat_client " \
418 "name=val,type=CephString " \
419 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
420 "set fs parameter <var> to <val>" , "mds" , "rw" )
421 COMMAND ( "fs flag set name=flag_name,type=CephChoices,strings=enable_multiple "
422 "name=val,type=CephString " \
423 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
424 "Set a global CephFS flag" , \
426 COMMAND ( "fs add_data_pool name=fs_name,type=CephString " \
427 "name=pool,type=CephString" , \
428 "add data pool <pool>" , "mds" , "rw" )
429 COMMAND ( "fs rm_data_pool name=fs_name,type=CephString " \
430 "name=pool,type=CephString" , \
431 "remove data pool <pool>" , "mds" , "rw" )
432 COMMAND_WITH_FLAG ( "fs set_default name=fs_name,type=CephString" , \
433 "set the default to the named filesystem" , \
436 COMMAND ( "fs set-default name=fs_name,type=CephString" , \
437 "set the default to the named filesystem" , \
443 COMMAND ( "mon dump " \
444 "name=epoch,type=CephInt,range=0,req=false" , \
445 "dump formatted monmap (optionally from epoch)" , \
447 COMMAND ( "mon stat" , "summarize monitor status" , "mon" , "r" )
448 COMMAND ( "mon getmap " \
449 "name=epoch,type=CephInt,range=0,req=false" , \
450 "get monmap" , "mon" , "r" )
452 "name=name,type=CephString " \
453 "name=addr,type=CephIPAddr" , \
454 "add new monitor named <name> at <addr>" , "mon" , "rw" )
456 "name=name,type=CephString" , \
457 "remove monitor named <name>" , "mon" , "rw" )
458 COMMAND_WITH_FLAG ( "mon remove " \
459 "name=name,type=CephString" , \
460 "remove monitor named <name>" , "mon" , "rw" , \
462 COMMAND ( "mon feature ls " \
463 "name=with_value,type=CephChoices,strings=--with-value,req=false" , \
464 "list available mon map features to be set/unset" , \
466 COMMAND ( "mon feature set " \
467 "name=feature_name,type=CephString " \
468 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
469 "set provided feature on mon map" , \
471 COMMAND ( "mon set-rank " \
472 "name=name,type=CephString " \
473 "name=rank,type=CephInt" ,
474 "set the rank for the specified mon" ,
476 COMMAND ( "mon set-addrs " \
477 "name=name,type=CephString " \
478 "name=addrs,type=CephString" ,
479 "set the addrs (IPs and ports) a specific monitor binds to" ,
481 COMMAND ( "mon enable-msgr2" ,
482 "enable the msgr2 protocol on port 3300" ,
488 COMMAND ( "osd stat" , "print summary of OSD map" , "osd" , "r" )
489 COMMAND ( "osd dump " \
490 "name=epoch,type=CephInt,range=0,req=false" ,
491 "print summary of OSD map" , "osd" , "r" )
492 COMMAND ( "osd tree " \
493 "name=epoch,type=CephInt,range=0,req=false " \
494 "name=states,type=CephChoices,strings=up|down|in|out|destroyed,n=N,req=false" , \
495 "print OSD tree" , "osd" , "r" )
496 COMMAND ( "osd tree-from " \
497 "name=epoch,type=CephInt,range=0,req=false " \
498 "name=bucket,type=CephString " \
499 "name=states,type=CephChoices,strings=up|down|in|out|destroyed,n=N,req=false" , \
500 "print OSD tree in bucket" , "osd" , "r" )
502 "name=epoch,type=CephInt,range=0,req=false" , \
503 "show all OSD ids" , "osd" , "r" )
504 COMMAND ( "osd getmap " \
505 "name=epoch,type=CephInt,range=0,req=false" , \
506 "get OSD map" , "osd" , "r" )
507 COMMAND ( "osd getcrushmap " \
508 "name=epoch,type=CephInt,range=0,req=false" , \
509 "get CRUSH map" , "osd" , "r" )
510 COMMAND ( "osd getmaxosd" , "show largest OSD id" , "osd" , "r" )
511 COMMAND ( "osd ls-tree " \
512 "name=epoch,type=CephInt,range=0,req=false "
513 "name=name,type=CephString,req=true" , \
514 "show OSD ids under bucket <name> in the CRUSH map" , \
516 COMMAND ( "osd find " \
517 "name=id,type=CephOsdName" , \
518 "find osd <id> in the CRUSH map and show its location" , \
520 COMMAND ( "osd metadata " \
521 "name=id,type=CephOsdName,req=false" , \
522 "fetch metadata for osd {id} (default all)" , \
524 COMMAND ( "osd count-metadata name=property,type=CephString" ,
525 "count OSDs by metadata field property" ,
527 COMMAND ( "osd versions" , \
528 "check running versions of OSDs" ,
530 COMMAND ( "osd numa-status" ,
531 "show NUMA status of OSDs" ,
534 "name=pool,type=CephPoolname " \
535 "name=object,type=CephObjectname " \
536 "name=nspace,type=CephString,req=false" , \
537 "find pg for <object> in <pool> with [namespace]" , "osd" , "r" )
538 COMMAND_WITH_FLAG ( "osd lspools" , \
539 "list pools" , "osd" , "r" , FLAG ( DEPRECATED
))
540 COMMAND_WITH_FLAG ( "osd crush rule list" , "list crush rules" , "osd" , "r" ,
542 COMMAND ( "osd crush rule ls" , "list crush rules" , "osd" , "r" )
543 COMMAND ( "osd crush rule ls-by-class " \
544 "name=class,type=CephString,goodchars=[A-Za-z0-9-_.]" , \
545 "list all crush rules that reference the same <class>" , \
547 COMMAND ( "osd crush rule dump " \
548 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.],req=false" , \
549 "dump crush rule <name> (default all)" , \
551 COMMAND ( "osd crush dump" , \
554 COMMAND ( "osd setcrushmap name=prior_version,type=CephInt,req=false" , \
555 "set crush map from input file" , \
557 COMMAND ( "osd crush set name=prior_version,type=CephInt,req=false" , \
558 "set crush map from input file" , \
560 COMMAND ( "osd crush add-bucket " \
561 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
562 "name=type,type=CephString " \
563 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=],req=false" , \
564 "add no-parent (probably root) crush bucket <name> of type <type> " \
565 "to location <args>" , \
567 COMMAND ( "osd crush rename-bucket " \
568 "name=srcname,type=CephString,goodchars=[A-Za-z0-9-_.] " \
569 "name=dstname,type=CephString,goodchars=[A-Za-z0-9-_.]" , \
570 "rename bucket <srcname> to <dstname>" , \
572 COMMAND ( "osd crush set " \
573 "name=id,type=CephOsdName " \
574 "name=weight,type=CephFloat,range=0.0 " \
575 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=]" , \
576 "update crushmap position and weight for <name> to <weight> with location <args>" , \
578 COMMAND ( "osd crush add " \
579 "name=id,type=CephOsdName " \
580 "name=weight,type=CephFloat,range=0.0 " \
581 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=]" , \
582 "add or update crushmap position and weight for <name> with <weight> and location <args>" , \
584 COMMAND ( "osd crush set-all-straw-buckets-to-straw2" ,
585 "convert all CRUSH current straw buckets to use the straw2 algorithm" ,
587 COMMAND ( "osd crush class create " \
588 "name=class,type=CephString,goodchars=[A-Za-z0-9-_]" , \
589 "create crush device class <class>" , \
591 COMMAND ( "osd crush class rm " \
592 "name=class,type=CephString,goodchars=[A-Za-z0-9-_]" , \
593 "remove crush device class <class>" , \
595 COMMAND ( "osd crush set-device-class " \
596 "name=class,type=CephString " \
597 "name=ids,type=CephString,n=N" , \
598 "set the <class> of the osd(s) <id> [<id>...]," \
599 "or use <all|any> to set all." , \
601 COMMAND ( "osd crush rm-device-class " \
602 "name=ids,type=CephString,n=N" , \
603 "remove class of the osd(s) <id> [<id>...]," \
604 "or use <all|any> to remove all." , \
606 COMMAND ( "osd crush class rename " \
607 "name=srcname,type=CephString,goodchars=[A-Za-z0-9-_] " \
608 "name=dstname,type=CephString,goodchars=[A-Za-z0-9-_]" , \
609 "rename crush device class <srcname> to <dstname>" , \
611 COMMAND ( "osd crush create-or-move " \
612 "name=id,type=CephOsdName " \
613 "name=weight,type=CephFloat,range=0.0 " \
614 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=]" , \
615 "create entry or move existing entry for <name> <weight> at/to location <args>" , \
617 COMMAND ( "osd crush move " \
618 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
619 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=]" , \
620 "move existing entry for <name> to location <args>" , \
622 COMMAND ( "osd crush swap-bucket " \
623 "name=source,type=CephString,goodchars=[A-Za-z0-9-_.] " \
624 "name=dest,type=CephString,goodchars=[A-Za-z0-9-_.] " \
625 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
626 "swap existing bucket contents from (orphan) bucket <source> and <target>" , \
628 COMMAND ( "osd crush link " \
629 "name=name,type=CephString " \
630 "name=args,type=CephString,n=N,goodchars=[A-Za-z0-9-_.=]" , \
631 "link existing entry for <name> under location <args>" , \
633 COMMAND ( "osd crush rm " \
634 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
635 "name=ancestor,type=CephString,req=false,goodchars=[A-Za-z0-9-_.]" , \
636 "remove <name> from crush map (everywhere, or just at <ancestor>)" , \
638 COMMAND_WITH_FLAG ( "osd crush remove " \
639 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
640 "name=ancestor,type=CephString,req=false,goodchars=[A-Za-z0-9-_.]" , \
641 "remove <name> from crush map (everywhere, or just at <ancestor>)" , \
644 COMMAND ( "osd crush unlink " \
645 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
646 "name=ancestor,type=CephString,req=false,goodchars=[A-Za-z0-9-_.]" , \
647 "unlink <name> from crush map (everywhere, or just at <ancestor>)" , \
649 COMMAND ( "osd crush reweight-all" ,
650 "recalculate the weights for the tree to ensure they sum correctly" ,
652 COMMAND ( "osd crush reweight " \
653 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
654 "name=weight,type=CephFloat,range=0.0" , \
655 "change <name>'s weight to <weight> in crush map" , \
657 COMMAND ( "osd crush reweight-subtree " \
658 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
659 "name=weight,type=CephFloat,range=0.0" , \
660 "change all leaf items beneath <name> to <weight> in crush map" , \
662 COMMAND ( "osd crush tunables " \
663 "name=profile,type=CephChoices,strings=legacy|argonaut|bobtail|firefly|hammer|jewel|optimal|default" , \
664 "set crush tunables values to <profile>" , "osd" , "rw" )
665 COMMAND ( "osd crush set-tunable " \
666 "name=tunable,type=CephChoices,strings=straw_calc_version " \
667 "name=value,type=CephInt" ,
668 "set crush tunable <tunable> to <value>" ,
670 COMMAND ( "osd crush get-tunable " \
671 "name=tunable,type=CephChoices,strings=straw_calc_version" ,
672 "get crush tunable <tunable>" ,
674 COMMAND ( "osd crush show-tunables" , \
675 "show current crush tunables" , "osd" , "r" )
676 COMMAND ( "osd crush rule create-simple " \
677 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
678 "name=root,type=CephString,goodchars=[A-Za-z0-9-_.] " \
679 "name=type,type=CephString,goodchars=[A-Za-z0-9-_.] " \
680 "name=mode,type=CephChoices,strings=firstn|indep,req=false" ,
681 "create crush rule <name> to start from <root>, replicate across buckets of type <type>, using a choose mode of <firstn|indep> (default firstn; indep best for erasure pools)" , \
683 COMMAND ( "osd crush rule create-replicated " \
684 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
685 "name=root,type=CephString,goodchars=[A-Za-z0-9-_.] " \
686 "name=type,type=CephString,goodchars=[A-Za-z0-9-_.] " \
687 "name=class,type=CephString,goodchars=[A-Za-z0-9-_.],req=false" ,
688 "create crush rule <name> for replicated pool to start from <root>, replicate across buckets of type <type>, use devices of type <class> (ssd or hdd)" , \
690 COMMAND ( "osd crush rule create-erasure " \
691 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
692 "name=profile,type=CephString,req=false,goodchars=[A-Za-z0-9-_.=]" , \
693 "create crush rule <name> for erasure coded pool created with <profile> (default default)" , \
695 COMMAND ( "osd crush rule rm " \
696 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " , \
697 "remove crush rule <name>" , "osd" , "rw" )
698 COMMAND ( "osd crush rule rename " \
699 "name=srcname,type=CephString,goodchars=[A-Za-z0-9-_.] " \
700 "name=dstname,type=CephString,goodchars=[A-Za-z0-9-_.]" , \
701 "rename crush rule <srcname> to <dstname>" ,
703 COMMAND ( "osd crush tree "
704 "name=shadow,type=CephChoices,strings=--show-shadow,req=false" , \
705 "dump crush buckets and items in a tree view" ,
707 COMMAND ( "osd crush ls name=node,type=CephString,goodchars=[A-Za-z0-9-_.]" ,
708 "list items beneath a node in the CRUSH tree" ,
710 COMMAND ( "osd crush class ls" , \
711 "list all crush device classes" , \
713 COMMAND ( "osd crush class ls-osd " \
714 "name=class,type=CephString,goodchars=[A-Za-z0-9-_]" , \
715 "list all osds belonging to the specific <class>" , \
717 COMMAND ( "osd crush get-device-class " \
718 "name=ids,type=CephString,n=N" , \
719 "get classes of specified osd(s) <id> [<id>...]" , \
721 COMMAND ( "osd crush weight-set ls" ,
722 "list crush weight sets" ,
724 COMMAND ( "osd crush weight-set dump" ,
725 "dump crush weight sets" ,
727 COMMAND ( "osd crush weight-set create-compat" ,
728 "create a default backward-compatible weight-set" ,
730 COMMAND ( "osd crush weight-set create " \
731 "name=pool,type=CephPoolname " \
732 "name=mode,type=CephChoices,strings=flat|positional" ,
733 "create a weight-set for a given pool" ,
735 COMMAND ( "osd crush weight-set rm name=pool,type=CephPoolname" ,
736 "remove the weight-set for a given pool" ,
738 COMMAND ( "osd crush weight-set rm-compat" ,
739 "remove the backward-compatible weight-set" ,
741 COMMAND ( "osd crush weight-set reweight " \
742 "name=pool,type=CephPoolname " \
743 "name=item,type=CephString " \
744 "name=weight,type=CephFloat,range=0.0,n=N" ,
745 "set weight for an item (bucket or osd) in a pool's weight-set" ,
747 COMMAND ( "osd crush weight-set reweight-compat " \
748 "name=item,type=CephString " \
749 "name=weight,type=CephFloat,range=0.0,n=N" ,
750 "set weight for an item (bucket or osd) in the backward-compatible weight-set" ,
752 COMMAND ( "osd setmaxosd " \
753 "name=newmax,type=CephInt,range=0" , \
754 "set new maximum osd value" , "osd" , "rw" )
755 COMMAND ( "osd set-full-ratio " \
756 "name=ratio,type=CephFloat,range=0.0|1.0" , \
757 "set usage ratio at which OSDs are marked full" ,
759 COMMAND ( "osd set-backfillfull-ratio " \
760 "name=ratio,type=CephFloat,range=0.0|1.0" , \
761 "set usage ratio at which OSDs are marked too full to backfill" ,
763 COMMAND ( "osd set-nearfull-ratio " \
764 "name=ratio,type=CephFloat,range=0.0|1.0" , \
765 "set usage ratio at which OSDs are marked near-full" ,
767 COMMAND ( "osd get-require-min-compat-client" ,
768 "get the minimum client version we will maintain compatibility with" ,
770 COMMAND ( "osd set-require-min-compat-client " \
771 "name=version,type=CephString " \
772 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
773 "set the minimum client version we will maintain compatibility with" ,
775 COMMAND ( "osd pause" , "pause osd" , "osd" , "rw" )
776 COMMAND ( "osd unpause" , "unpause osd" , "osd" , "rw" )
777 COMMAND ( "osd erasure-code-profile set " \
778 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.] " \
779 "name=profile,type=CephString,n=N,req=false " \
780 "name=force,type=CephBool,req=false" , \
781 "create erasure code profile <name> with [<key[=value]> ...] pairs. Add a --force at the end to override an existing profile (VERY DANGEROUS)" , \
783 COMMAND ( "osd erasure-code-profile get " \
784 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.]" , \
785 "get erasure code profile <name>" , \
787 COMMAND ( "osd erasure-code-profile rm " \
788 "name=name,type=CephString,goodchars=[A-Za-z0-9-_.]" , \
789 "remove erasure code profile <name>" , \
791 COMMAND ( "osd erasure-code-profile ls" , \
792 "list all erasure code profiles" , \
795 "name=key,type=CephChoices,strings=full|pause|noup|nodown|" \
796 "noout|noin|nobackfill|norebalance|norecover|noscrub|nodeep-scrub|" \
797 "notieragent|nosnaptrim|pglog_hardlimit " \
798 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
799 "set <key>" , "osd" , "rw" )
800 COMMAND ( "osd unset " \
801 "name=key,type=CephChoices,strings=full|pause|noup|nodown|" \
802 "noout|noin|nobackfill|norebalance|norecover|noscrub|nodeep-scrub|" \
803 "notieragent|nosnaptrim" , \
804 "unset <key>" , "osd" , "rw" )
805 COMMAND ( "osd require-osd-release " \
806 "name=release,type=CephChoices,strings=luminous|mimic|nautilus " \
807 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
808 "set the minimum allowed OSD release to participate in the cluster" ,
810 COMMAND ( "osd down " \
811 "type=CephString,name=ids,n=N" , \
812 "set osd(s) <id> [<id>...] down, " \
813 "or use <any|all> to set all osds down" , \
816 "name=ids,type=CephString,n=N" , \
817 "set osd(s) <id> [<id>...] out, " \
818 "or use <any|all> to set all osds out" , \
821 "name=ids,type=CephString,n=N" , \
822 "set osd(s) <id> [<id>...] in, "
823 "can use <any|all> to automatically set all previously out osds in" , \
825 COMMAND_WITH_FLAG ( "osd rm " \
826 "name=ids,type=CephString,n=N" , \
827 "remove osd(s) <id> [<id>...], "
828 "or use <any|all> to remove all osds" , \
831 COMMAND ( "osd add-noup " \
832 "name=ids,type=CephString,n=N" , \
833 "mark osd(s) <id> [<id>...] as noup, " \
834 "or use <all|any> to mark all osds as noup" , \
836 COMMAND ( "osd add-nodown " \
837 "name=ids,type=CephString,n=N" , \
838 "mark osd(s) <id> [<id>...] as nodown, " \
839 "or use <all|any> to mark all osds as nodown" , \
841 COMMAND ( "osd add-noin " \
842 "name=ids,type=CephString,n=N" , \
843 "mark osd(s) <id> [<id>...] as noin, " \
844 "or use <all|any> to mark all osds as noin" , \
846 COMMAND ( "osd add-noout " \
847 "name=ids,type=CephString,n=N" , \
848 "mark osd(s) <id> [<id>...] as noout, " \
849 "or use <all|any> to mark all osds as noout" , \
851 COMMAND ( "osd rm-noup " \
852 "name=ids,type=CephString,n=N" , \
853 "allow osd(s) <id> [<id>...] to be marked up " \
854 "(if they are currently marked as noup), " \
855 "can use <all|any> to automatically filter out all noup osds" , \
857 COMMAND ( "osd rm-nodown " \
858 "name=ids,type=CephString,n=N" , \
859 "allow osd(s) <id> [<id>...] to be marked down " \
860 "(if they are currently marked as nodown), " \
861 "can use <all|any> to automatically filter out all nodown osds" , \
863 COMMAND ( "osd rm-noin " \
864 "name=ids,type=CephString,n=N" , \
865 "allow osd(s) <id> [<id>...] to be marked in " \
866 "(if they are currently marked as noin), " \
867 "can use <all|any> to automatically filter out all noin osds" , \
869 COMMAND ( "osd rm-noout " \
870 "name=ids,type=CephString,n=N" , \
871 "allow osd(s) <id> [<id>...] to be marked out " \
872 "(if they are currently marked as noout), " \
873 "can use <all|any> to automatically filter out all noout osds" , \
875 COMMAND ( "osd reweight " \
876 "name=id,type=CephOsdName " \
877 "type=CephFloat,name=weight,range=0.0|1.0" , \
878 "reweight osd to 0.0 < <weight> < 1.0" , "osd" , "rw" )
879 COMMAND ( "osd reweightn " \
880 "name=weights,type=CephString" ,
881 "reweight osds with {<id>: <weight>,...})" ,
883 COMMAND ( "osd force-create-pg " \
884 "name=pgid,type=CephPgid " \
885 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
886 "force creation of pg <pgid>" ,
888 COMMAND ( "osd pg-temp " \
889 "name=pgid,type=CephPgid " \
890 "name=id,type=CephOsdName,n=N,req=false" , \
891 "set pg_temp mapping pgid:[<id> [<id>...]] (developers only)" , \
893 COMMAND ( "osd pg-upmap " \
894 "name=pgid,type=CephPgid " \
895 "name=id,type=CephOsdName,n=N" , \
896 "set pg_upmap mapping <pgid>:[<id> [<id>...]] (developers only)" , \
898 COMMAND ( "osd rm-pg-upmap " \
899 "name=pgid,type=CephPgid" , \
900 "clear pg_upmap mapping for <pgid> (developers only)" , \
902 COMMAND ( "osd pg-upmap-items " \
903 "name=pgid,type=CephPgid " \
904 "name=id,type=CephOsdName,n=N" , \
905 "set pg_upmap_items mapping <pgid>:{<id> to <id>, [...]} (developers only)" , \
907 COMMAND ( "osd rm-pg-upmap-items " \
908 "name=pgid,type=CephPgid" , \
909 "clear pg_upmap_items mapping for <pgid> (developers only)" , \
911 COMMAND ( "osd primary-temp " \
912 "name=pgid,type=CephPgid " \
913 "name=id,type=CephOsdName" , \
914 "set primary_temp mapping pgid:<id>|-1 (developers only)" , \
916 COMMAND ( "osd primary-affinity " \
917 "name=id,type=CephOsdName " \
918 "type=CephFloat,name=weight,range=0.0|1.0" , \
919 "adjust osd primary-affinity from 0.0 <= <weight> <= 1.0" , \
921 COMMAND_WITH_FLAG ( "osd destroy-actual " \
922 "name=id,type=CephOsdName " \
923 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
924 "mark osd as being destroyed. Keeps the ID intact (allowing reuse), " \
925 "but removes cephx keys, config-key data and lockbox keys, " \
926 "rendering data permanently unreadable." , \
927 "osd" , "rw" , FLAG ( HIDDEN
))
928 COMMAND ( "osd purge-new " \
929 "name=id,type=CephOsdName " \
930 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
931 "purge all traces of an OSD that was partially created but never " \
934 COMMAND_WITH_FLAG ( "osd purge-actual " \
935 "name=id,type=CephOsdName " \
936 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
937 "purge all osd data from the monitors. Combines `osd destroy`, " \
938 "`osd rm`, and `osd crush rm`." , \
939 "osd" , "rw" , FLAG ( HIDDEN
))
940 COMMAND ( "osd lost " \
941 "name=id,type=CephOsdName " \
942 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
943 "mark osd as permanently lost. THIS DESTROYS DATA IF NO MORE REPLICAS EXIST, BE CAREFUL" , \
945 COMMAND_WITH_FLAG ( "osd create " \
946 "name=uuid,type=CephUUID,req=false " \
947 "name=id,type=CephOsdName,req=false" , \
948 "create new osd (with optional UUID and ID)" , "osd" , "rw" ,
951 "name=uuid,type=CephUUID,req=true " \
952 "name=id,type=CephOsdName,req=false" , \
953 "Create a new OSD. If supplied, the `id` to be replaced needs to " \
954 "exist and have been previously destroyed. " \
955 "Reads secrets from JSON file via `-i <file>` (see man page)." , \
957 COMMAND ( "osd blacklist " \
958 "name=blacklistop,type=CephChoices,strings=add|rm " \
959 "name=addr,type=CephEntityAddr " \
960 "name=expire,type=CephFloat,range=0.0,req=false" , \
961 "add (optionally until <expire> seconds from now) or remove <addr> from blacklist" , \
963 COMMAND ( "osd blacklist ls" , "show blacklisted clients" , "osd" , "r" )
964 COMMAND ( "osd blacklist clear" , "clear all blacklisted clients" , "osd" , "rw" )
965 COMMAND ( "osd pool mksnap " \
966 "name=pool,type=CephPoolname " \
967 "name=snap,type=CephString" , \
968 "make snapshot <snap> in <pool>" , "osd" , "rw" )
969 COMMAND ( "osd pool rmsnap " \
970 "name=pool,type=CephPoolname " \
971 "name=snap,type=CephString" , \
972 "remove snapshot <snap> from <pool>" , "osd" , "rw" )
973 COMMAND ( "osd pool ls " \
974 "name=detail,type=CephChoices,strings=detail,req=false" , \
975 "list pools" , "osd" , "r" )
976 COMMAND ( "osd pool create " \
977 "name=pool,type=CephPoolname " \
978 "name=pg_num,type=CephInt,range=0 " \
979 "name=pgp_num,type=CephInt,range=0,req=false " \
980 "name=pool_type,type=CephChoices,strings=replicated|erasure,req=false " \
981 "name=erasure_code_profile,type=CephString,req=false,goodchars=[A-Za-z0-9-_.] " \
982 "name=rule,type=CephString,req=false " \
983 "name=expected_num_objects,type=CephInt,req=false " \
984 "name=size,type=CephInt,req=false " \
985 "name=pg_num_min,type=CephInt,range=0,req=false " \
986 "name=target_size_bytes,type=CephInt,range=0,req=false " \
987 "name=target_size_ratio,type=CephFloat,range=0|1,req=false" , \
988 "create pool" , "osd" , "rw" )
989 COMMAND_WITH_FLAG ( "osd pool delete " \
990 "name=pool,type=CephPoolname " \
991 "name=pool2,type=CephPoolname,req=false " \
992 "name=yes_i_really_really_mean_it,type=CephBool,req=false "
993 "name=yes_i_really_really_mean_it_not_faking,type=CephBool,req=false " , \
997 COMMAND ( "osd pool rm " \
998 "name=pool,type=CephPoolname " \
999 "name=pool2,type=CephPoolname,req=false " \
1000 "name=yes_i_really_really_mean_it,type=CephBool,req=false "
1001 "name=yes_i_really_really_mean_it_not_faking,type=CephBool,req=false " , \
1004 COMMAND ( "osd pool rename " \
1005 "name=srcpool,type=CephPoolname " \
1006 "name=destpool,type=CephPoolname" , \
1007 "rename <srcpool> to <destpool>" , "osd" , "rw" )
1008 COMMAND ( "osd pool get " \
1009 "name=pool,type=CephPoolname " \
1010 "name=var,type=CephChoices,strings=size|min_size|pg_num|pgp_num|crush_rule|hashpspool|nodelete|nopgchange|nosizechange|write_fadvise_dontneed|noscrub|nodeep-scrub|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|use_gmt_hitset|target_max_objects|target_max_bytes|cache_target_dirty_ratio|cache_target_dirty_high_ratio|cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|erasure_code_profile|min_read_recency_for_promote|all|min_write_recency_for_promote|fast_read|hit_set_grade_decay_rate|hit_set_search_last_n|scrub_min_interval|scrub_max_interval|deep_scrub_interval|recovery_priority|recovery_op_priority|scrub_priority|compression_mode|compression_algorithm|compression_required_ratio|compression_max_blob_size|compression_min_blob_size|csum_type|csum_min_block|csum_max_block|allow_ec_overwrites|fingerprint_algorithm|pg_autoscale_mode|pg_autoscale_bias|pg_num_min|target_size_bytes|target_size_ratio" , \
1011 "get pool parameter <var>" , "osd" , "r" )
1012 COMMAND ( "osd pool set " \
1013 "name=pool,type=CephPoolname " \
1014 "name=var,type=CephChoices,strings=size|min_size|pg_num|pgp_num|pgp_num_actual|crush_rule|hashpspool|nodelete|nopgchange|nosizechange|write_fadvise_dontneed|noscrub|nodeep-scrub|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|use_gmt_hitset|target_max_bytes|target_max_objects|cache_target_dirty_ratio|cache_target_dirty_high_ratio|cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|min_read_recency_for_promote|min_write_recency_for_promote|fast_read|hit_set_grade_decay_rate|hit_set_search_last_n|scrub_min_interval|scrub_max_interval|deep_scrub_interval|recovery_priority|recovery_op_priority|scrub_priority|compression_mode|compression_algorithm|compression_required_ratio|compression_max_blob_size|compression_min_blob_size|csum_type|csum_min_block|csum_max_block|allow_ec_overwrites|fingerprint_algorithm|pg_autoscale_mode|pg_autoscale_bias|pg_num_min|target_size_bytes|target_size_ratio " \
1015 "name=val,type=CephString " \
1016 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
1017 "set pool parameter <var> to <val>" , "osd" , "rw" )
1018 // 'val' is a CephString because it can include a unit. Perhaps
1019 // there should be a Python type for validation/conversion of strings
1021 COMMAND ( "osd pool set-quota " \
1022 "name=pool,type=CephPoolname " \
1023 "name=field,type=CephChoices,strings=max_objects|max_bytes " \
1024 "name=val,type=CephString" ,
1025 "set object or byte limit on pool" , "osd" , "rw" )
1026 COMMAND ( "osd pool get-quota " \
1027 "name=pool,type=CephPoolname " ,
1028 "obtain object or byte limits for pool" ,
1030 COMMAND ( "osd pool application enable " \
1031 "name=pool,type=CephPoolname " \
1032 "name=app,type=CephString,goodchars=[A-Za-z0-9-_.] " \
1033 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
1034 "enable use of an application <app> [cephfs,rbd,rgw] on pool <poolname>" ,
1036 COMMAND ( "osd pool application disable " \
1037 "name=pool,type=CephPoolname " \
1038 "name=app,type=CephString " \
1039 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
1040 "disables use of an application <app> on pool <poolname>" ,
1042 COMMAND ( "osd pool application set " \
1043 "name=pool,type=CephPoolname " \
1044 "name=app,type=CephString " \
1045 "name=key,type=CephString,goodchars=[A-Za-z0-9-_.] " \
1046 "name=value,type=CephString,goodchars=[A-Za-z0-9-_.=]" ,
1047 "sets application <app> metadata key <key> to <value> on pool <poolname>" ,
1049 COMMAND ( "osd pool application rm " \
1050 "name=pool,type=CephPoolname " \
1051 "name=app,type=CephString " \
1052 "name=key,type=CephString" ,
1053 "removes application <app> metadata key <key> on pool <poolname>" ,
1055 COMMAND ( "osd pool application get " \
1056 "name=pool,type=CephPoolname,req=fasle " \
1057 "name=app,type=CephString,req=false " \
1058 "name=key,type=CephString,req=false" ,
1059 "get value of key <key> of application <app> on pool <poolname>" ,
1061 COMMAND ( "osd utilization" ,
1062 "get basic pg distribution stats" ,
1066 COMMAND ( "osd tier add " \
1067 "name=pool,type=CephPoolname " \
1068 "name=tierpool,type=CephPoolname " \
1069 "name=force_nonempty,type=CephChoices,strings=--force-nonempty,req=false" ,
1070 "add the tier <tierpool> (the second one) to base pool <pool> (the first one)" , \
1072 COMMAND ( "osd tier rm " \
1073 "name=pool,type=CephPoolname " \
1074 "name=tierpool,type=CephPoolname" ,
1075 "remove the tier <tierpool> (the second one) from base pool <pool> (the first one)" , \
1077 COMMAND_WITH_FLAG ( "osd tier remove " \
1078 "name=pool,type=CephPoolname " \
1079 "name=tierpool,type=CephPoolname" ,
1080 "remove the tier <tierpool> (the second one) from base pool <pool> (the first one)" , \
1083 COMMAND ( "osd tier cache-mode " \
1084 "name=pool,type=CephPoolname " \
1085 "name=mode,type=CephChoices,strings=none|writeback|forward|readonly|readforward|proxy|readproxy " \
1086 "name=yes_i_really_mean_it,type=CephBool,req=false" , \
1087 "specify the caching mode for cache tier <pool>" , "osd" , "rw" )
1088 COMMAND ( "osd tier set-overlay " \
1089 "name=pool,type=CephPoolname " \
1090 "name=overlaypool,type=CephPoolname" , \
1091 "set the overlay pool for base pool <pool> to be <overlaypool>" , "osd" , "rw" )
1092 COMMAND ( "osd tier rm-overlay " \
1093 "name=pool,type=CephPoolname " , \
1094 "remove the overlay pool for base pool <pool>" , "osd" , "rw" )
1095 COMMAND_WITH_FLAG ( "osd tier remove-overlay " \
1096 "name=pool,type=CephPoolname " , \
1097 "remove the overlay pool for base pool <pool>" , "osd" , "rw" , \
1100 COMMAND ( "osd tier add-cache " \
1101 "name=pool,type=CephPoolname " \
1102 "name=tierpool,type=CephPoolname " \
1103 "name=size,type=CephInt,range=0" , \
1104 "add a cache <tierpool> (the second one) of size <size> to existing pool <pool> (the first one)" , \
1108 * mon/ConfigKeyService.cc
1111 COMMAND ( "config-key get " \
1112 "name=key,type=CephString" , \
1113 "get <key>" , "config-key" , "r" )
1114 COMMAND ( "config-key set " \
1115 "name=key,type=CephString " \
1116 "name=val,type=CephString,req=false" , \
1117 "set <key> to value <val>" , "config-key" , "rw" )
1118 COMMAND_WITH_FLAG ( "config-key put " \
1119 "name=key,type=CephString " \
1120 "name=val,type=CephString,req=false" , \
1121 "put <key>, value <val>" , "config-key" , "rw" ,
1123 COMMAND_WITH_FLAG ( "config-key del " \
1124 "name=key,type=CephString" , \
1125 "delete <key>" , "config-key" , "rw" , \
1127 COMMAND ( "config-key rm " \
1128 "name=key,type=CephString" , \
1129 "rm <key>" , "config-key" , "rw" )
1130 COMMAND ( "config-key exists " \
1131 "name=key,type=CephString" , \
1132 "check for <key>'s existence" , "config-key" , "r" )
1133 COMMAND_WITH_FLAG ( "config-key list " , "list keys" , "config-key" , "r" ,
1135 COMMAND ( "config-key ls " , "list keys" , "config-key" , "r" )
1136 COMMAND ( "config-key dump " \
1137 "name=key,type=CephString,req=false" , "dump keys and values (with optional prefix)" , "config-key" , "r" )
1143 COMMAND ( "mgr dump " \
1144 "name=epoch,type=CephInt,range=0,req=false" , \
1145 "dump the latest MgrMap" , \
1147 COMMAND ( "mgr fail name=who,type=CephString" , \
1148 "treat the named manager daemon as failed" , "mgr" , "rw" )
1149 COMMAND ( "mgr module ls" ,
1150 "list active mgr modules" , "mgr" , "r" )
1151 COMMAND ( "mgr services" ,
1152 "list service endpoints provided by mgr modules" ,
1154 COMMAND ( "mgr module enable " \
1155 "name=module,type=CephString " \
1156 "name=force,type=CephChoices,strings=--force,req=false" ,
1157 "enable mgr module" , "mgr" , "rw" )
1158 COMMAND ( "mgr module disable " \
1159 "name=module,type=CephString" ,
1160 "disable mgr module" , "mgr" , "rw" )
1161 COMMAND ( "mgr metadata name=who,type=CephString,req=false" ,
1162 "dump metadata for all daemons or a specific daemon" ,
1164 COMMAND ( "mgr count-metadata name=property,type=CephString" ,
1165 "count ceph-mgr daemons by metadata field property" ,
1167 COMMAND ( "mgr versions" , \
1168 "check running versions of ceph-mgr daemons" ,
1172 COMMAND ( "config set" \
1173 " name=who,type=CephString" \
1174 " name=name,type=CephString" \
1175 " name=value,type=CephString" \
1176 " name=force,type=CephBool,req=false" ,
1177 "Set a configuration option for one or more entities" ,
1179 COMMAND ( "config rm" \
1180 " name=who,type=CephString" \
1181 " name=name,type=CephString" ,
1182 "Clear a configuration option for one or more entities" ,
1184 COMMAND ( "config get " \
1185 "name=who,type=CephString " \
1186 "name=key,type=CephString,req=False" ,
1187 "Show configuration option(s) for an entity" ,
1189 COMMAND ( "config dump" ,
1190 "Show all configuration option(s)" ,
1192 COMMAND ( "config help " \
1193 "name=key,type=CephString" ,
1194 "Describe a configuration option" ,
1196 COMMAND ( "config ls" ,
1197 "List available configuration options" ,
1199 COMMAND ( "config assimilate-conf" ,
1200 "Assimilate options from a conf, and return a new, minimal conf file" ,
1202 COMMAND ( "config log name=num,type=CephInt,req=False" ,
1203 "Show recent history of config changes" ,
1205 COMMAND ( "config reset" \
1206 " name=num,type=CephInt" ,
1207 "Revert configuration to previous state" ,
1209 COMMAND ( "config generate-minimal-conf" ,
1210 "Generate a minimal ceph.conf file" ,
1213 COMMAND_WITH_FLAG ( "smart name=devid,type=CephString,req=false" ,
1214 "Query health metrics for underlying device" ,
1215 "mon" , "rw" , FLAG ( HIDDEN
))