Project

General

Profile

Calamari API 13 Gap analysis » History » Version 1

Jessica Mack, 06/02/2015 03:59 AM

1 1 Jessica Mack
h1. Calamari API 13 Gap analysis
2
3
h3. Summary of API coverage vs CLI feature set
4
5
<pre>
6
RADOS
7
ubuntu@vpm061:~$ ceph --help 2>&1 | grep -E "^[a-z]+" | sed '1d;2d' | wc -l
8
9
 
10
42 / 147 contains at least 10 duplicates
11
~30%
12
 
13
We have most of OSD commands implemented with the exception of creating, removal, tiering and erasure coding.
14
 
15
Pool commands done well, need to update when we have support in crush for EC and tier
16
 
17
Some Monitor commands implemented
18
 
19
PG ??
20
None of auth
21
 
22
MDS
23
None
24
 
25
RBD
26
0/30
27
None
28
 
29
RGW
30
0/63
31
None
32
 
33
CephFS
34
None
35
</pre>
36
 
37
h3. Auth
38
39
<pre>
40
auth add <entity> {<caps> [<caps>...]}   add auth info for <entity> from input
41
                                         file, or random key if no input given,
42
                                         and/or any caps specified in the
43
                                         command
44
auth caps <entity> <caps> [<caps>...]    update caps for <name> from caps
45
                                         specified in the command
46
auth del <entity>                        delete all caps for <name>
47
auth export {<entity>}                   write keyring for requested entity, or
48
                                         master keyring if none given
49
auth get <entity>                        write keyring file with requested key
50
auth get-key <entity>                    display requested key
51
auth get-or-create <entity> {<caps>      add auth info for <entity> from input
52
[<caps>...]}                             file, or random key if no input given,
53
                                         and/or any caps specified in the
54
                                         command
55
auth get-or-create-key <entity> {<caps>  get, or add, key for <name> from
56
[<caps>...]}                             system/caps pairs specified in the
57
                                         command.  If key already exists, any
58
                                         given caps must match the existing
59
                                         caps for that key.
60
auth import                              auth import: read keyring file from -i
61
                                         <file>
62
auth list                                list authentication state
63
auth print-key <entity>                  display requested key
64
</pre>
65
 
66
h3. Monitor
67
68
<pre>
69
compact                                  cause compaction of monitor's leveldb
70
                                         storage
71
config-key del <key>                     delete <key>
72
config-key exists <key>                  check for <key>'s existence
73
config-key get <key>                     get <key>
74
config-key list                          list keys
75
config-key put <key> {<val>}             put <key>, value <val>
76
df {detail}                              show cluster free space stats
77
fsid                                     show cluster FSID/UUID
78
health {detail}                          show cluster health
79
log <logtext> [<logtext>...]             log supplied text to the monitor log
80
mon add <name> <IPaddr[:port]>           add new monitor named <name> at <addr>
81
mon dump {<int[0-]>}                     dump formatted monmap (optionally from
82
                                         epoch)
83
mon getmap {<int[0-]>}                   get monmap
84
mon remove <name>                        remove monitor named <name>
85
mon stat                                 summarize monitor status
86
mon_status                               report status of monitors
87
quorum enter|exit                        enter or exit quorum
88
quorum_status                            report status of monitor quorum
89
report {<tags> [<tags>...]}              report full status of cluster,
90
                                         optional title tag strings
91
scrub                                    scrub the monitor stores
92
status                                   show cluster status
93
sync force {--yes-i-really-mean-it} {--  force sync of and clear monitor store
94
i-know-what-i-am-doing}                 
95
</pre>
96
 
97
h3. MDS
98
99
<pre>
100
mds add_data_pool <pool>                 add data pool <pool>
101
mds cluster_down                         take MDS cluster down
102
mds cluster_up                           bring MDS cluster up
103
mds compat rm_compat <int[0-]>           remove compatible feature
104
mds compat rm_incompat <int[0-]>         remove incompatible feature
105
mds compat show                          show mds compatibility settings
106
mds deactivate <who>                     stop mds
107
mds dump {<int[0-]>}                     dump info, optionally from epoch
108
mds fail <who>                           force mds to status failed
109
mds getmap {<int[0-]>}                   get MDS map, optionally from epoch
110
mds newfs <int[0-]> <int[0-]> {--yes-i-  make new filesystom using pools
111
really-mean-it}                          <metadata> and <data>
112
mds remove_data_pool <pool>              remove data pool <>
113
mds rm <int[0-]> <name (type.id)>        remove nonactive mds
114
mds rmfailed <int[0-]>                   remove failed mds
115
mds set max_mds|max_file_size|allow_new_ set mds parameter <var> to <val>
116
snaps|inline_data <val> {<confirm>}
117
mds set max_mds|max_file_size <val>      set mds parameter <var> to <val>
118
mds set_max_mds <int[0-]>                set max MDS index
119
mds set_state <int[0-]> <int[0-20]>      set mds state of <gid> to <numeric-
120
                                         state>
121
mds setmap <int[0-]>                     set mds map; must supply correct epoch
122
                                         number
123
mds stat                                 show MDS status
124
mds stop <who>                           stop mds
125
mds tell <who> <args> [<args>...]        send command to particular mds
126
mds unset allow_new_snaps {<sure>}       unset <key>
127
</pre>
128
 
129
h3. OSDs
130
131
<pre>
132
osd blacklist add|rm <EntityAddr>        add (optionally until <expire> seconds
133
{<float[0.0-]>}                          from now) or remove <addr> from
134
                                         blacklist
135
osd blacklist ls                         show blacklisted clients
136
osd create {<uuid>}                      create new osd (with optional UUID)
137
osd deep-scrub <who>                     initiate deep scrub on osd <who>
138
osd down <ids> [<ids>...]                set osd(s) <id> [<id>...] down
139
osd dump {<int[0-]>}                     print summary of OSD map
140
osd getmap {<int[0-]>}                   get OSD map
141
osd getmaxosd                            show largest OSD id
142
osd in <ids> [<ids>...]                  set osd(s) <id> [<id>...] in
143
osd lost <int[0-]> {--yes-i-really-mean- mark osd as permanently lost. THIS
144
it}                                      DESTROYS DATA IF NO MORE REPLICAS
145
                                         EXIST, BE CAREFUL
146
osd ls {<int[0-]>}                       show all OSD ids
147
osd metadata <int[0-]>                   fetch metadata for osd <id>
148
osd out <ids> [<ids>...]                 set osd(s) <id> [<id>...] out
149
osd pause                                pause osd
150
osd perf                                 print dump of OSD perf summary stats
151
osd repair <who>                         initiate repair on osd <who>
152
osd reweight <int[0-]> <float[0.0-1.0]>  reweight osd to 0.0 < <weight> < 1.0
153
osd reweight-by-utilization {<int[100-   reweight OSDs by utilization [overload-
154
]>}                                      percentage-for-consideration, default
155
                                         120]
156
osd rm <ids> [<ids>...]                  remove osd(s) <id> [<id>...] in
157
osd scrub <who>                          initiate scrub on osd <who>
158
osd set pause|noup|nodown|noout|noin|    
159
nobackfill|norecover|noscrub|nodeep-    
160
scrub|notieragent     set <key>                             
161
osd setmaxosd <int[0-]>                  set new maximum osd value
162
osd stat                                 print summary of OSD map
163
osd thrash <int[0-]>                     thrash OSDs for <num_epochs>
164
osd unpause                              unpause osd
165
osd unset pause|noup|nodown|noout|noin|nobackfill|norecover|noscrub|nodeep-scrub|notieragent      unset <key>                             
166
</pre>
167
 
168
h3. CRUSH
169
170
<pre>
171
osd crush add <osdname (id|osd.id)>      add or update crushmap position and
172
<float[0.0-]> <args> [<args>...]         weight for <name> with <weight> and
173
                                         location <args>
174
osd crush add-bucket <name> <type>       add no-parent (probably root) crush
175
                                         bucket <name> of type <type>
176
osd crush create-or-move <osdname (id|   create entry or move existing entry
177
osd.id)> <float[0.0-]> <args> [<args>..  for <name> <weight> at/to location
178
.]                                       <args>
179
osd crush dump                           dump crush map
180
osd crush link <name> <args> [<args>...] link existing entry for <name> under
181
                                         location <args>
182
osd crush move <name> <args> [<args>...] move existing entry for <name> to
183
                                         location <args>
184
osd crush remove <name> {<ancestor>}     remove <name> from crush map (
185
                                         everywhere, or just at <ancestor>)
186
osd crush reweight <name> <float[0.0-]>  change <name>'s weight to <weight> in
187
                                         crush map
188
osd crush rm <name> {<ancestor>}         remove <name> from crush map (
189
                                         everywhere, or just at <ancestor>)
190
osd crush rule create-erasure <name>     create crush rule <name> for erasure
191
{<profile>}                              coded pool created with <profile> (
192
                                         default default
193
osd crush rule create-simple <name>      create crush rule <name> to start from
194
<root> <type> {firstn|indep}             <root>, replicate across buckets of
195
                                         type <type>, using a choose mode of
196
                                         <firstn|indep> (default firstn; indep
197
                                         best for erasure pools)
198
osd crush rule dump {<name>}             dump crush rule <name> (default all)
199
osd crush rule list                      list crush rules
200
osd crush rule ls                        list crush rules
201
osd crush rule rm <name>                 remove crush rule <name>
202
osd crush set                            set crush map from input file
203
osd crush set <osdname (id|osd.id)>      update crushmap position and weight
204
<float[0.0-]> <args> [<args>...]         for <name> to <weight> with location
205
                                         <args>
206
osd crush show-tunables                  show current crush tunables  
207
osd crush tunables legacy|argonaut|      set crush tunables values to <profile>
208
bobtail|firefly|optimal|default
209
 
210
            
211
osd crush unlink <name> {<ancestor>}     unlink <name> from crush map (
212
                                         everywhere, or just at <ancestor>)
213
osd find <int[0-]>                       find osd <id> in the CRUSH map and
214
                                         show its location
215
osd getcrushmap {<int[0-]>}              get CRUSH map
216
osd setcrushmap                          set crush map from input file
217
osd tree {<int[0-]>}                     print OSD tree
218
 
219
Erasure Code
220
osd erasure-code-profile get <name>      get erasure code profile <name>
221
osd erasure-code-profile ls              list all erasure code profiles
222
osd erasure-code-profile rm <name>       remove erasure code profile <name>
223
osd erasure-code-profile set <name>      create erasure code profile <name>
224
{<profile> [<profile>...]}               with [<key[=value]> ...] pairs. Add a
225
                                         --force at the end to override an
226
                                         existing profile (VERY DANGEROUS)
227
</pre>
228
 
229
h3. Pool
230
231
<pre>
232
osd lspools {<int>}                      list pools
233
osd pool create <poolname> <int[0-]>     create pool
234
{<int[0-]>} {replicated|erasure}
235
{<erasure_code_profile>} {<ruleset>}       
236
osd pool delete <poolname> {<poolname>}  delete pool
237
{--yes-i-really-really-mean-it}         
238
osd pool get <poolname> size|min_size|   get pool parameter <var>
239
crash_replay_interval|pg_num|pgp_num|
240
crush_ruleset|hit_set_type|hit_set_
241
period|hit_set_count|hit_set_fpp|auid                         
242
osd pool mksnap <poolname> <snap>        make snapshot <snap> in <pool>
243
osd pool rename <poolname> <poolname>    rename <srcpool> to <destpool>
244
osd pool rmsnap <poolname> <snap>        remove snapshot <snap> from <pool>
245
osd pool set <poolname> size|min_size|   set pool parameter <var> to <val>
246
crash_replay_interval|pg_num|pgp_num|
247
crush_ruleset|hashpspool|hit_set_type|
248
hit_set_period|hit_set_count|hit_set_
249
fpp|debug_fake_ec_pool|target_max_
250
bytes|target_max_objects|cache_target_
251
dirty_ratio|cache_target_full_ratio|
252
cache_min_flush_age|cache_min_evict_
253
age|auid <val> {--yes-i-really-mean-it}                             
254
osd pool set-quota <poolname> max_       set object or byte limit on pool
255
objects|max_bytes <val>                 
256
osd pool stats {<name>}                  obtain stats from all pools, or from
257
                                         specified pool
258
osd primary-affinity <osdname (id|osd.   adjust osd primary-affinity from 0.0 <=
259
id)> <float[0.0-1.0]>                     <weight> <= 1.0
260
osd primary-temp <pgid> <id>             set primary_temp mapping pgid:<id>|-1 (
261
                                         developers only)
262
osd tier add <poolname> <poolname> {--   add the tier <tierpool> (the second
263
force-nonempty}                          one) to base pool <pool> (the first
264
                                         one)
265
osd tier add-cache <poolname>            add a cache <tierpool> (the second one)
266
<poolname> <int[0-]>                     of size <size> to existing pool
267
                                         <pool> (the first one)
268
269
 
270
osd tier cache-mode <poolname> none|     specify the caching mode for cache
271
writeback|invalidate+forward|readonly    tier <pool>
272
osd tier remove <poolname> <poolname>    remove the tier <tierpool> from base
273
                                         pool <pool>
274
osd tier remove-overlay <poolname>       remove the overlay pool for base pool
275
                                         <pool>
276
osd tier set-overlay <poolname>          set the overlay pool for base pool
277
<poolname>                               <pool> to be <overlaypool>
278
</pre>
279
 
280
h3. PG
281
282
<pre> 
283
osd map <poolname> <objectname>          find pg for <object> in <pool>
284
osd pg-temp <pgid> {<id> [<id>...]}      set pg_temp mapping pgid:[<id> [<id>...
285
                                         ]] (developers only)
286
pg debug unfound_objects_exist|degraded_ show debug info about pgs
287
pgs_exist                               
288
pg deep-scrub <pgid>                     start deep-scrub on <pgid>
289
pg dump {all|summary|sum|delta|pools|    show human-readable versions of pg map
290
osds|pgs|pgs_brief [all|summary|sum|     (only 'all' valid with plain)
291
delta|pools|osds|pgs|pgs_brief...]}     
292
pg dump_json {all|summary|sum|pools|     show human-readable version of pg map
293
osds|pgs [all|summary|sum|pools|osds|    in json only
294
pgs...]}                                
295
pg dump_pools_json                       show pg pools info in json only
296
pg dump_stuck {inactive|unclean|stale    show information about stuck pgs
297
[inactive|unclean|stale...]} {<int>}    
298
pg force_create_pg <pgid>                force creation of pg <pgid>
299
pg getmap                                get binary pg map to -o/stdout
300
pg map <pgid>                            show mapping of pg to osds
301
pg repair <pgid>                         start repair on <pgid>
302
pg scrub <pgid>                          start scrub on <pgid>
303
pg send_pg_creates                       trigger pg creates to be issued
304
pg set_full_ratio <float[0.0-1.0]>       set ratio at which pgs are considered
305
                                         full
306
pg set_nearfull_ratio <float[0.0-1.0]>   set ratio at which pgs are considered
307
                                         nearly full
308
pg stat                                  show placement group status.
309
</pre>
310
311
h3. Misc
312
313
<pre>
314
heap dump|start_profiler|stop_profiler|  show heap usage info (available only
315
release|stats                            if compiled with tcmalloc)
316
injectargs <injected_args> [<injected_   inject config arguments into monitor
317
args>...]                               
318
tell <name (type.id)> <args> [<args>...] send a command to a specific daemon
319
</pre>
320
 
321
h3. RBD
322
323
<pre>
324
 (ls | list) [-l | --long ] [pool-name] list rbd images
325
                                             (-l includes snapshots/clones)
326
 info <image-name>                           show information about image size,
327
                                             striping, etc.
328
 create [--order <bits>] --size <MB> <name>  create an empty image
329
 clone [--order <bits>] <parentsnap> <clonename>
330
                                             clone a snapshot into a COW
331
                                             child image
332
 children <snap-name>                        display children of snapshot
333
 flatten <image-name>                        fill clone with parent data
334
                                             (make it independent)
335
 resize --size <MB> <image-name>             resize (expand or contract) image
336
 rm <image-name>                             delete an image
337
 export <image-name> <path>                  export image to file
338
                                             "-" for stdout
339
 import <path> <image-name>                  import image from file
340
                                             (dest defaults
341
                                              as the filename part of file)
342
                                             "-" for stdin
343
 diff <image-name> [--from-snap <snap-name>] print extents that differ since
344
                                             a previous snap, or image creation
345
 export-diff <image-name> [--from-snap <snap-name>] <path>
346
                                             export an incremental diff to
347
                                             path, or "-" for stdout
348
 import-diff <path> <image-name>             import an incremental diff from
349
                                             path or "-" for stdin
350
 (cp | copy) <src> <dest>                    copy src image to dest
351
 (mv | rename) <src> <dest>                  rename src image to dest
352
 snap ls <image-name>                        dump list of image snapshots
353
 snap create <snap-name>                     create a snapshot
354
 snap rollback <snap-name>                   rollback image to snapshot
355
 snap rm <snap-name>                         deletes a snapshot
356
 snap purge <image-name>                     deletes all snapshots
357
 snap protect <snap-name>                    prevent a snapshot from being deleted
358
 snap unprotect <snap-name>                  allow a snapshot to be deleted
359
 watch <image-name>                          watch events on image
360
 map <image-name>                            map image to a block device
361
                                             using the kernel
362
 unmap <device>                              unmap a rbd device that was
363
                                             mapped by the kernel
364
 showmapped                                  show the rbd images mapped
365
                                             by the kernel
366
 lock list <image-name>                      show locks held on an image
367
 lock add <image-name> <id> [--shared <tag>] take a lock called id on an image
368
 lock remove <image-name> <id> <locker>      release a lock on an image
369
 bench-write <image-name>                    simple write benchmark
370
                --io-size <bytes>              write size
371
                --io-threads <num>             ios in flight
372
                --io-total <bytes>             total bytes to write
373
                --io-pattern <seq|rand>        write pattern
374
</pre>
375
 
376
h3. RGW
377
378
<pre> 
379
$ ./radosgw-admin --help
380
usage: radosgw-admin <cmd> [options...]
381
commands:
382
 user create                create a new user
383
 user modify                modify user
384
 user info                  get user info
385
 user rm                    remove user
386
 user suspend               suspend a user
387
 user enable                re-enable user after suspension
388
 user check                 check user info
389
 user stats                 show user stats as accounted by quota subsystem
390
 caps add                   add user capabilities
391
 caps rm                    remove user capabilities
392
 subuser create             create a new subuser
393
 subuser modify             modify subuser
394
 subuser rm                 remove subuser
395
 key create                 create access key
396
 key rm                     remove access key
397
 bucket list                list buckets
398
 bucket link                link bucket to specified user
399
 bucket unlink              unlink bucket from specified user
400
 bucket stats               returns bucket statistics
401
 bucket rm                  remove bucket
402
 bucket check               check bucket index
403
 object rm                  remove object
404
 object unlink              unlink object from bucket index
405
 quota set                  set quota params
406
 quota enable               enable quota
407
 quota disable              disable quota
408
 region get                 show region info
409
 regions list               list all regions set on this cluster
410
 region set                 set region info (requires infile)
411
 region default             set default region
412
 region-map get             show region-map
413
 region-map set             set region-map (requires infile)
414
 zone get                   show zone cluster params
415
 zone set                   set zone cluster params (requires infile)
416
 zone list                  list all zones set on this cluster
417
 pool add                   add an existing pool for data placement
418
 pool rm                    remove an existing pool from data placement set
419
 pools list                 list placement active set
420
 policy                     read bucket/object policy
421
 log list                   list log objects
422
 log show                   dump a log from specific object or (bucket + date
423
                            + bucket-id)
424
 log rm                     remove log object
425
 usage show                 show usage (by user, date range)
426
 usage trim                 trim usage (by user, date range)
427
 temp remove                remove temporary objects that were created up to
428
                            specified date (and optional time)
429
 gc list                    dump expired garbage collection objects (specify
430
                            --include-all to list all entries, including unexpired)
431
 gc process                 manually process garbage
432
 metadata get               get metadata info
433
 metadata put               put metadata info
434
 metadata rm                remove metadata info
435
 metadata list              list metadata info
436
 mdlog list                 list metadata log
437
 mdlog trim                 trim metadata log
438
 bilog list                 list bucket index log
439
 bilog trim                 trim bucket index log (use start-marker, end-marker)
440
 datalog list               list data log
441
 datalog trim               trim data log
442
 opstate list               list stateful operations entries (use client_id,
443
                            op_id, object)
444
 opstate set                set state on an entry (use client_id, op_id, object, state)
445
 opstate renew              renew state on an entry (use client_id, op_id, object)
446
 opstate rm                 remove entry (use client_id, op_id, object)
447
 replicalog get             get replica metadata log entry
448
 replicalog delete          delete replica metadata log entry
449
options:
450
  --uid=<id>                user id
451
  --subuser=<name>          subuser name
452
  --access-key=<key>        S3 access key
453
  --email=<email>
454
  --secret=<key>            specify secret key
455
  --gen-access-key          generate random access key (for S3)
456
  --gen-secret              generate random secret key
457
  --key-type=<type>         key type, options are: swift, s3
458
  --temp-url-key[-2]=<key>  temp url key
459
  --access=<access>         Set access permissions for sub-user, should be one
460
                            of read, write, readwrite, full
461
  --display-name=<name>
462
  --system                  set the system flag on the user
463
  --bucket=<bucket>
464
  --pool=<pool>
465
  --object=<object>
466
  --date=<date>
467
  --start-date=<date>
468
  --end-date=<date>
469
  --bucket-id=<bucket-id>
470
  --shard-id=<shard-id>     optional for mdlog list
471
                            required for:
472
                              mdlog trim
473
                              replica mdlog get/delete
474
                              replica datalog get/delete
475
  --metadata-key=<key>      key to retrieve metadata from with metadata get
476
  --rgw-region=<region>     region in which radosgw is running
477
  --rgw-zone=<zone>         zone in which radosgw is running
478
  --fix                     besides checking bucket index, will also fix it
479
  --check-objects           bucket check: rebuilds bucket index according to
480
                            actual objects state
481
  --format=<format>         specify output format for certain operations: xml,
482
                            json
483
  --purge-data              when specified, user removal will also purge all the
484
                            user data
485
  --purge-keys              when specified, subuser removal will also purge all the
486
                            subuser keys
487
  --purge-objects           remove a bucket's objects before deleting it
488
                            (NOTE: required to delete a non-empty bucket)
489
  --sync-stats              option to 'user stats', update user stats with current
490
                            stats reported by user's buckets indexes
491
  --show-log-entries=<flag> enable/disable dump of log entries on log show
492
  --show-log-sum=<flag>     enable/disable dump of log summation on log show
493
  --skip-zero-entries       log show only dumps entries that don't have zero value
494
                            in one of the numeric field
495
  --infile                  specify a file to read in when setting data
496
  --state=<state string>    specify a state for the opstate set command
497
  --replica-log-type        replica log type (metadata, data, bucket), required for
498
                            replica log operations
499
  --categories=<list>       comma separated list of categories, used in usage show
500
  --caps=<caps>             list of caps (e.g., "usage=read, write; user=read"
501
  --yes-i-really-mean-it    required for certain operations
502
 
503
 
504
Quota options:
505
  --bucket                  specified bucket for quota command
506
  --max-objects             specify max objects (negative value to disable)
507
  --max-size                specify max size (in bytes, negative value to disable)
508
  --quota-scope             scope of quota (bucket, user)
509
 
510
 --conf/-c FILE    read configuration from the given configuration file
511
 --id/-i ID        set ID portion of my name
512
 --name/-n TYPE.ID set name
513
 --cluster NAME    set cluster name (default: ceph)
514
 --version         show version and quit
515
</pre>