1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 #include "cls/rgw/cls_rgw_ops.h"
6 #include "common/Formatter.h"
7 #include "common/ceph_json.h"
8 #include "include/utime.h"
13 using ceph::Formatter
;
15 void rgw_cls_tag_timeout_op::dump(Formatter
*f
) const
17 f
->dump_int("tag_timeout", tag_timeout
);
20 void rgw_cls_tag_timeout_op::generate_test_instances(list
<rgw_cls_tag_timeout_op
*>& ls
)
22 ls
.push_back(new rgw_cls_tag_timeout_op
);
23 ls
.push_back(new rgw_cls_tag_timeout_op
);
24 ls
.back()->tag_timeout
= 23323;
27 void cls_rgw_gc_set_entry_op::dump(Formatter
*f
) const
29 f
->dump_unsigned("expiration_secs", expiration_secs
);
30 f
->open_object_section("obj_info");
35 void cls_rgw_gc_set_entry_op::generate_test_instances(list
<cls_rgw_gc_set_entry_op
*>& ls
)
37 ls
.push_back(new cls_rgw_gc_set_entry_op
);
38 ls
.push_back(new cls_rgw_gc_set_entry_op
);
39 ls
.back()->expiration_secs
= 123;
42 void cls_rgw_gc_defer_entry_op::dump(Formatter
*f
) const
44 f
->dump_unsigned("expiration_secs", expiration_secs
);
45 f
->dump_string("tag", tag
);
48 void cls_rgw_gc_defer_entry_op::generate_test_instances(list
<cls_rgw_gc_defer_entry_op
*>& ls
)
50 ls
.push_back(new cls_rgw_gc_defer_entry_op
);
51 ls
.push_back(new cls_rgw_gc_defer_entry_op
);
52 ls
.back()->expiration_secs
= 123;
53 ls
.back()->tag
= "footag";
56 void cls_rgw_gc_list_op::dump(Formatter
*f
) const
58 f
->dump_string("marker", marker
);
59 f
->dump_unsigned("max", max
);
60 f
->dump_bool("expired_only", expired_only
);
63 void cls_rgw_gc_list_op::generate_test_instances(list
<cls_rgw_gc_list_op
*>& ls
)
65 ls
.push_back(new cls_rgw_gc_list_op
);
66 ls
.push_back(new cls_rgw_gc_list_op
);
67 ls
.back()->marker
= "mymarker";
68 ls
.back()->max
= 2312;
71 void cls_rgw_gc_list_ret::dump(Formatter
*f
) const
73 encode_json("entries", entries
, f
);
74 f
->dump_string("next_marker", next_marker
);
75 f
->dump_int("truncated", (int)truncated
);
78 void cls_rgw_gc_list_ret::generate_test_instances(list
<cls_rgw_gc_list_ret
*>& ls
)
80 ls
.push_back(new cls_rgw_gc_list_ret
);
81 ls
.push_back(new cls_rgw_gc_list_ret
);
82 ls
.back()->entries
.push_back(cls_rgw_gc_obj_info());
83 ls
.back()->truncated
= true;
86 void cls_rgw_gc_remove_op::dump(Formatter
*f
) const
88 encode_json("tags", tags
, f
);
91 void cls_rgw_gc_remove_op::generate_test_instances(list
<cls_rgw_gc_remove_op
*>& ls
)
93 ls
.push_back(new cls_rgw_gc_remove_op
);
94 ls
.push_back(new cls_rgw_gc_remove_op
);
95 ls
.back()->tags
.push_back("tag1");
96 ls
.back()->tags
.push_back("tag2");
99 void cls_rgw_lc_get_entry_ret::dump(Formatter
*f
) const
101 encode_json("entry", entry
, f
);
104 void cls_rgw_lc_get_entry_ret::generate_test_instances(list
<cls_rgw_lc_get_entry_ret
*>& ls
)
106 cls_rgw_lc_entry
entry("bucket1", 6000, 0);
107 ls
.push_back(new cls_rgw_lc_get_entry_ret
);
108 ls
.back()->entry
= entry
;
111 void rgw_cls_obj_prepare_op::generate_test_instances(list
<rgw_cls_obj_prepare_op
*>& o
)
113 rgw_cls_obj_prepare_op
*op
= new rgw_cls_obj_prepare_op
;
114 op
->op
= CLS_RGW_OP_ADD
;
115 op
->key
.name
= "name";
117 op
->locator
= "locator";
119 o
.push_back(new rgw_cls_obj_prepare_op
);
122 void rgw_cls_obj_prepare_op::dump(Formatter
*f
) const
124 f
->dump_int("op", op
);
125 f
->dump_string("name", key
.name
);
126 f
->dump_string("tag", tag
);
127 f
->dump_string("locator", locator
);
128 f
->dump_bool("log_op", log_op
);
129 f
->dump_int("bilog_flags", bilog_flags
);
130 encode_json("zones_trace", zones_trace
, f
);
133 void rgw_cls_obj_complete_op::generate_test_instances(list
<rgw_cls_obj_complete_op
*>& o
)
135 rgw_cls_obj_complete_op
*op
= new rgw_cls_obj_complete_op
;
136 op
->op
= CLS_RGW_OP_DEL
;
137 op
->key
.name
= "name";
138 op
->locator
= "locator";
143 list
<rgw_bucket_dir_entry_meta
*> l
;
144 rgw_bucket_dir_entry_meta::generate_test_instances(l
);
145 auto iter
= l
.begin();
150 o
.push_back(new rgw_cls_obj_complete_op
);
153 void rgw_cls_obj_complete_op::dump(Formatter
*f
) const
155 f
->dump_int("op", (int)op
);
156 f
->dump_string("name", key
.name
);
157 f
->dump_string("instance", key
.instance
);
158 f
->dump_string("locator", locator
);
159 f
->open_object_section("ver");
162 f
->open_object_section("meta");
165 f
->dump_string("tag", tag
);
166 f
->dump_bool("log_op", log_op
);
167 f
->dump_int("bilog_flags", bilog_flags
);
168 encode_json("zones_trace", zones_trace
, f
);
171 void rgw_cls_link_olh_op::generate_test_instances(list
<rgw_cls_link_olh_op
*>& o
)
173 rgw_cls_link_olh_op
*op
= new rgw_cls_link_olh_op
;
174 op
->key
.name
= "name";
175 op
->olh_tag
= "olh_tag";
176 op
->delete_marker
= true;
177 op
->op_tag
= "op_tag";
179 list
<rgw_bucket_dir_entry_meta
*> l
;
180 rgw_bucket_dir_entry_meta::generate_test_instances(l
);
181 auto iter
= l
.begin();
187 o
.push_back(new rgw_cls_link_olh_op
);
190 void rgw_cls_link_olh_op::dump(Formatter
*f
) const
192 encode_json("key", key
, f
);
193 encode_json("olh_tag", olh_tag
, f
);
194 encode_json("delete_marker", delete_marker
, f
);
195 encode_json("op_tag", op_tag
, f
);
196 encode_json("meta", meta
, f
);
197 encode_json("olh_epoch", olh_epoch
, f
);
198 encode_json("log_op", log_op
, f
);
199 encode_json("bilog_flags", (uint32_t)bilog_flags
, f
);
200 utime_t
ut(unmod_since
);
201 encode_json("unmod_since", ut
, f
);
202 encode_json("high_precision_time", high_precision_time
, f
);
203 encode_json("zones_trace", zones_trace
, f
);
206 void rgw_cls_unlink_instance_op::generate_test_instances(list
<rgw_cls_unlink_instance_op
*>& o
)
208 rgw_cls_unlink_instance_op
*op
= new rgw_cls_unlink_instance_op
;
209 op
->key
.name
= "name";
210 op
->op_tag
= "op_tag";
216 o
.push_back(new rgw_cls_unlink_instance_op
);
219 void rgw_cls_unlink_instance_op::dump(Formatter
*f
) const
221 encode_json("key", key
, f
);
222 encode_json("op_tag", op_tag
, f
);
223 encode_json("olh_epoch", olh_epoch
, f
);
224 encode_json("log_op", log_op
, f
);
225 encode_json("bilog_flags", (uint32_t)bilog_flags
, f
);
226 encode_json("zones_trace", zones_trace
, f
);
229 void rgw_cls_read_olh_log_op::generate_test_instances(list
<rgw_cls_read_olh_log_op
*>& o
)
231 rgw_cls_read_olh_log_op
*op
= new rgw_cls_read_olh_log_op
;
232 op
->olh
.name
= "name";
233 op
->ver_marker
= 123;
234 op
->olh_tag
= "olh_tag";
238 o
.push_back(new rgw_cls_read_olh_log_op
);
241 void rgw_cls_read_olh_log_op::dump(Formatter
*f
) const
243 encode_json("olh", olh
, f
);
244 encode_json("ver_marker", ver_marker
, f
);
245 encode_json("olh_tag", olh_tag
, f
);
248 void rgw_cls_read_olh_log_ret::generate_test_instances(list
<rgw_cls_read_olh_log_ret
*>& o
)
250 rgw_cls_read_olh_log_ret
*r
= new rgw_cls_read_olh_log_ret
;
251 r
->is_truncated
= true;
252 list
<rgw_bucket_olh_log_entry
*> l
;
253 rgw_bucket_olh_log_entry::generate_test_instances(l
);
254 auto iter
= l
.begin();
255 r
->log
[1].push_back(*(*iter
));
259 o
.push_back(new rgw_cls_read_olh_log_ret
);
262 void rgw_cls_read_olh_log_ret::dump(Formatter
*f
) const
264 encode_json("log", log
, f
);
265 encode_json("is_truncated", is_truncated
, f
);
268 void rgw_cls_trim_olh_log_op::generate_test_instances(list
<rgw_cls_trim_olh_log_op
*>& o
)
270 rgw_cls_trim_olh_log_op
*op
= new rgw_cls_trim_olh_log_op
;
271 op
->olh
.name
= "olh.name";
273 op
->olh_tag
= "olh_tag";
277 o
.push_back(new rgw_cls_trim_olh_log_op
);
280 void rgw_cls_trim_olh_log_op::dump(Formatter
*f
) const
282 encode_json("olh", olh
, f
);
283 encode_json("ver", ver
, f
);
284 encode_json("olh_tag", olh_tag
, f
);
287 void rgw_cls_bucket_clear_olh_op::generate_test_instances(list
<rgw_cls_bucket_clear_olh_op
*>& o
)
290 rgw_cls_bucket_clear_olh_op
*op
= new rgw_cls_bucket_clear_olh_op
;
291 op
->key
.name
= "key.name";
292 op
->olh_tag
= "olh_tag";
295 o
.push_back(new rgw_cls_bucket_clear_olh_op
);
298 void rgw_cls_bucket_clear_olh_op::dump(Formatter
*f
) const
300 encode_json("key", key
, f
);
301 encode_json("olh_tag", olh_tag
, f
);
304 void rgw_cls_list_op::generate_test_instances(list
<rgw_cls_list_op
*>& o
)
306 rgw_cls_list_op
*op
= new rgw_cls_list_op
;
307 op
->start_obj
.name
= "start_obj";
308 op
->num_entries
= 100;
309 op
->filter_prefix
= "filter_prefix";
311 o
.push_back(new rgw_cls_list_op
);
314 void rgw_cls_list_op::dump(Formatter
*f
) const
316 f
->dump_string("start_obj", start_obj
.name
);
317 f
->dump_unsigned("num_entries", num_entries
);
320 void rgw_cls_list_ret::generate_test_instances(list
<rgw_cls_list_ret
*>& o
)
322 list
<rgw_bucket_dir
*> l
;
323 rgw_bucket_dir::generate_test_instances(l
);
324 for (auto iter
= l
.begin(); iter
!= l
.end(); ++iter
) {
325 rgw_bucket_dir
*d
= *iter
;
327 rgw_cls_list_ret
*ret
= new rgw_cls_list_ret
;
329 ret
->is_truncated
= true;
336 o
.push_back(new rgw_cls_list_ret
);
339 void rgw_cls_list_ret::dump(Formatter
*f
) const
341 f
->open_object_section("dir");
344 f
->dump_int("is_truncated", (int)is_truncated
);
347 void rgw_cls_check_index_ret::generate_test_instances(list
<rgw_cls_check_index_ret
*>& o
)
349 list
<rgw_bucket_dir_header
*> h
;
350 rgw_bucket_dir_header::generate_test_instances(h
);
351 rgw_cls_check_index_ret
*r
= new rgw_cls_check_index_ret
;
352 r
->existing_header
= *(h
.front());
353 r
->calculated_header
= *(h
.front());
356 for (auto iter
= h
.begin(); iter
!= h
.end(); ++iter
) {
359 o
.push_back(new rgw_cls_check_index_ret
);
362 void rgw_cls_check_index_ret::dump(Formatter
*f
) const
364 encode_json("existing_header", existing_header
, f
);
365 encode_json("calculated_header", calculated_header
, f
);
368 void rgw_cls_bucket_update_stats_op::generate_test_instances(list
<rgw_cls_bucket_update_stats_op
*>& o
)
370 rgw_cls_bucket_update_stats_op
*r
= new rgw_cls_bucket_update_stats_op
;
372 rgw_bucket_category_stats
& s
= r
->stats
[RGWObjCategory::None
];
374 s
.total_size_rounded
= 4096;
378 o
.push_back(new rgw_cls_bucket_update_stats_op
);
381 void rgw_cls_bucket_update_stats_op::dump(Formatter
*f
) const
383 encode_json("absolute", absolute
, f
);
384 map
<int, rgw_bucket_category_stats
> s
;
385 for (auto& entry
: stats
) {
386 s
[(int)entry
.first
] = entry
.second
;
388 encode_json("stats", s
, f
);
391 void cls_rgw_bi_log_list_op::dump(Formatter
*f
) const
393 f
->dump_string("marker", marker
);
394 f
->dump_unsigned("max", max
);
397 void cls_rgw_bi_log_list_op::generate_test_instances(list
<cls_rgw_bi_log_list_op
*>& ls
)
399 ls
.push_back(new cls_rgw_bi_log_list_op
);
400 ls
.push_back(new cls_rgw_bi_log_list_op
);
401 ls
.back()->marker
= "mark";
402 ls
.back()->max
= 123;
405 void cls_rgw_bi_log_trim_op::dump(Formatter
*f
) const
407 f
->dump_string("start_marker", start_marker
);
408 f
->dump_string("end_marker", end_marker
);
411 void cls_rgw_bi_log_trim_op::generate_test_instances(list
<cls_rgw_bi_log_trim_op
*>& ls
)
413 ls
.push_back(new cls_rgw_bi_log_trim_op
);
414 ls
.push_back(new cls_rgw_bi_log_trim_op
);
415 ls
.back()->start_marker
= "foo";
416 ls
.back()->end_marker
= "bar";
419 void cls_rgw_bi_log_list_ret::dump(Formatter
*f
) const
421 encode_json("entries", entries
, f
);
422 f
->dump_unsigned("truncated", (int)truncated
);
425 void cls_rgw_bi_log_list_ret::generate_test_instances(list
<cls_rgw_bi_log_list_ret
*>& ls
)
427 ls
.push_back(new cls_rgw_bi_log_list_ret
);
428 ls
.push_back(new cls_rgw_bi_log_list_ret
);
429 ls
.back()->entries
.push_back(rgw_bi_log_entry());
430 ls
.back()->truncated
= true;
433 void cls_rgw_mp_upload_part_info_update_op::generate_test_instances(std::list
<cls_rgw_mp_upload_part_info_update_op
*>& ls
)
435 ls
.push_back(new cls_rgw_mp_upload_part_info_update_op
);
436 ls
.back()->part_key
= "part1";
437 ls
.push_back(new cls_rgw_mp_upload_part_info_update_op
);
438 ls
.back()->part_key
= "part2";
441 void cls_rgw_mp_upload_part_info_update_op::dump(Formatter
* f
) const
443 encode_json("part_key", part_key
, f
);
444 encode_json("part_num", info
.num
, f
);
445 encode_json("part_prefix", info
.manifest
.get_prefix(), f
);
448 void cls_rgw_reshard_add_op::generate_test_instances(list
<cls_rgw_reshard_add_op
*>& ls
)
450 ls
.push_back(new cls_rgw_reshard_add_op
);
451 ls
.push_back(new cls_rgw_reshard_add_op
);
452 list
<cls_rgw_reshard_entry
*> l
;
453 cls_rgw_reshard_entry::generate_test_instances(l
);
454 auto iter
= l
.begin();
455 ls
.back()->entry
= *(*iter
);
458 void cls_rgw_reshard_add_op::dump(Formatter
*f
) const
460 encode_json("entry", entry
, f
);
463 void cls_rgw_reshard_list_op::generate_test_instances(list
<cls_rgw_reshard_list_op
*>& ls
)
465 ls
.push_back(new cls_rgw_reshard_list_op
);
466 ls
.push_back(new cls_rgw_reshard_list_op
);
467 ls
.back()->max
= 1000;
468 ls
.back()->marker
= "foo";
471 void cls_rgw_reshard_list_op::dump(Formatter
*f
) const
473 encode_json("max", max
, f
);
474 encode_json("marker", marker
, f
);
477 void cls_rgw_reshard_list_ret::generate_test_instances(list
<cls_rgw_reshard_list_ret
*>& ls
)
479 ls
.push_back(new cls_rgw_reshard_list_ret
);
480 ls
.push_back(new cls_rgw_reshard_list_ret
);
481 ls
.back()->entries
.push_back(cls_rgw_reshard_entry());
482 ls
.back()->is_truncated
= true;
485 void cls_rgw_reshard_list_ret::dump(Formatter
*f
) const
487 encode_json("entries", entries
, f
);
488 encode_json("is_truncated", is_truncated
, f
);
491 void cls_rgw_reshard_get_op::generate_test_instances(list
<cls_rgw_reshard_get_op
*>& ls
)
493 ls
.push_back(new cls_rgw_reshard_get_op
);
494 ls
.push_back(new cls_rgw_reshard_get_op
);
497 void cls_rgw_reshard_get_op::dump(Formatter
*f
) const
499 encode_json("entry", entry
, f
);
502 void cls_rgw_reshard_get_ret::generate_test_instances(list
<cls_rgw_reshard_get_ret
*>& ls
)
504 ls
.push_back(new cls_rgw_reshard_get_ret
);
505 ls
.push_back(new cls_rgw_reshard_get_ret
);
508 void cls_rgw_reshard_get_ret::dump(Formatter
*f
) const
510 encode_json("entry", entry
, f
);
513 void cls_rgw_reshard_remove_op::generate_test_instances(list
<cls_rgw_reshard_remove_op
*>& ls
)
515 ls
.push_back(new cls_rgw_reshard_remove_op
);
516 ls
.push_back(new cls_rgw_reshard_remove_op
);
517 ls
.back()->bucket_name
= "foo";
518 ls
.back()->bucket_id
= "bucket_id";
521 void cls_rgw_reshard_remove_op::dump(Formatter
*f
) const
523 encode_json("bucket_name", bucket_name
, f
);
524 encode_json("bucket_id", bucket_name
, f
);
528 void cls_rgw_set_bucket_resharding_op::generate_test_instances(
529 list
<cls_rgw_set_bucket_resharding_op
*>& ls
)
531 ls
.push_back(new cls_rgw_set_bucket_resharding_op
);
532 ls
.push_back(new cls_rgw_set_bucket_resharding_op
);
535 void cls_rgw_set_bucket_resharding_op::dump(Formatter
*f
) const
537 encode_json("entry", entry
, f
);
540 void cls_rgw_clear_bucket_resharding_op::generate_test_instances(
541 list
<cls_rgw_clear_bucket_resharding_op
*>& ls
)
543 ls
.push_back(new cls_rgw_clear_bucket_resharding_op
);
544 ls
.push_back(new cls_rgw_clear_bucket_resharding_op
);
547 void cls_rgw_clear_bucket_resharding_op::dump(Formatter
*f
) const
551 void cls_rgw_guard_bucket_resharding_op::generate_test_instances(
552 list
<cls_rgw_guard_bucket_resharding_op
*>& ls
)
554 ls
.push_back(new cls_rgw_guard_bucket_resharding_op
);
555 ls
.push_back(new cls_rgw_guard_bucket_resharding_op
);
558 void cls_rgw_guard_bucket_resharding_op::dump(Formatter
*f
) const
560 encode_json("ret_err", ret_err
, f
);
564 void cls_rgw_get_bucket_resharding_op::generate_test_instances(
565 list
<cls_rgw_get_bucket_resharding_op
*>& ls
)
567 ls
.push_back(new cls_rgw_get_bucket_resharding_op
);
568 ls
.push_back(new cls_rgw_get_bucket_resharding_op
);
571 void cls_rgw_get_bucket_resharding_op::dump(Formatter
*f
) const