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;
87 void cls_rgw_gc_remove_op::dump(Formatter
*f
) const
89 encode_json("tags", tags
, f
);
92 void cls_rgw_gc_remove_op::generate_test_instances(list
<cls_rgw_gc_remove_op
*>& ls
)
94 ls
.push_back(new cls_rgw_gc_remove_op
);
95 ls
.push_back(new cls_rgw_gc_remove_op
);
96 ls
.back()->tags
.push_back("tag1");
97 ls
.back()->tags
.push_back("tag2");
100 void rgw_cls_obj_prepare_op::generate_test_instances(list
<rgw_cls_obj_prepare_op
*>& o
)
102 rgw_cls_obj_prepare_op
*op
= new rgw_cls_obj_prepare_op
;
103 op
->op
= CLS_RGW_OP_ADD
;
104 op
->key
.name
= "name";
106 op
->locator
= "locator";
108 o
.push_back(new rgw_cls_obj_prepare_op
);
111 void rgw_cls_obj_prepare_op::dump(Formatter
*f
) const
113 f
->dump_int("op", op
);
114 f
->dump_string("name", key
.name
);
115 f
->dump_string("tag", tag
);
116 f
->dump_string("locator", locator
);
117 f
->dump_bool("log_op", log_op
);
118 f
->dump_int("bilog_flags", bilog_flags
);
119 encode_json("zones_trace", zones_trace
, f
);
122 void rgw_cls_obj_complete_op::generate_test_instances(list
<rgw_cls_obj_complete_op
*>& o
)
124 rgw_cls_obj_complete_op
*op
= new rgw_cls_obj_complete_op
;
125 op
->op
= CLS_RGW_OP_DEL
;
126 op
->key
.name
= "name";
127 op
->locator
= "locator";
132 list
<rgw_bucket_dir_entry_meta
*> l
;
133 rgw_bucket_dir_entry_meta::generate_test_instances(l
);
134 auto iter
= l
.begin();
139 o
.push_back(new rgw_cls_obj_complete_op
);
142 void rgw_cls_obj_complete_op::dump(Formatter
*f
) const
144 f
->dump_int("op", (int)op
);
145 f
->dump_string("name", key
.name
);
146 f
->dump_string("instance", key
.instance
);
147 f
->dump_string("locator", locator
);
148 f
->open_object_section("ver");
151 f
->open_object_section("meta");
154 f
->dump_string("tag", tag
);
155 f
->dump_bool("log_op", log_op
);
156 f
->dump_int("bilog_flags", bilog_flags
);
157 encode_json("zones_trace", zones_trace
, f
);
160 void rgw_cls_link_olh_op::generate_test_instances(list
<rgw_cls_link_olh_op
*>& o
)
162 rgw_cls_link_olh_op
*op
= new rgw_cls_link_olh_op
;
163 op
->key
.name
= "name";
164 op
->olh_tag
= "olh_tag";
165 op
->delete_marker
= true;
166 op
->op_tag
= "op_tag";
168 list
<rgw_bucket_dir_entry_meta
*> l
;
169 rgw_bucket_dir_entry_meta::generate_test_instances(l
);
170 auto iter
= l
.begin();
176 o
.push_back(new rgw_cls_link_olh_op
);
179 void rgw_cls_link_olh_op::dump(Formatter
*f
) const
181 encode_json("key", key
, f
);
182 encode_json("olh_tag", olh_tag
, f
);
183 encode_json("delete_marker", delete_marker
, f
);
184 encode_json("op_tag", op_tag
, f
);
185 encode_json("meta", meta
, f
);
186 encode_json("olh_epoch", olh_epoch
, f
);
187 encode_json("log_op", log_op
, f
);
188 encode_json("bilog_flags", (uint32_t)bilog_flags
, f
);
189 utime_t
ut(unmod_since
);
190 encode_json("unmod_since", ut
, f
);
191 encode_json("high_precision_time", high_precision_time
, f
);
192 encode_json("zones_trace", zones_trace
, f
);
195 void rgw_cls_unlink_instance_op::generate_test_instances(list
<rgw_cls_unlink_instance_op
*>& o
)
197 rgw_cls_unlink_instance_op
*op
= new rgw_cls_unlink_instance_op
;
198 op
->key
.name
= "name";
199 op
->op_tag
= "op_tag";
205 o
.push_back(new rgw_cls_unlink_instance_op
);
208 void rgw_cls_unlink_instance_op::dump(Formatter
*f
) const
210 encode_json("key", key
, f
);
211 encode_json("op_tag", op_tag
, f
);
212 encode_json("olh_epoch", olh_epoch
, f
);
213 encode_json("log_op", log_op
, f
);
214 encode_json("bilog_flags", (uint32_t)bilog_flags
, f
);
215 encode_json("zones_trace", zones_trace
, f
);
218 void rgw_cls_read_olh_log_op::generate_test_instances(list
<rgw_cls_read_olh_log_op
*>& o
)
220 rgw_cls_read_olh_log_op
*op
= new rgw_cls_read_olh_log_op
;
221 op
->olh
.name
= "name";
222 op
->ver_marker
= 123;
223 op
->olh_tag
= "olh_tag";
227 o
.push_back(new rgw_cls_read_olh_log_op
);
230 void rgw_cls_read_olh_log_op::dump(Formatter
*f
) const
232 encode_json("olh", olh
, f
);
233 encode_json("ver_marker", ver_marker
, f
);
234 encode_json("olh_tag", olh_tag
, f
);
237 void rgw_cls_read_olh_log_ret::generate_test_instances(list
<rgw_cls_read_olh_log_ret
*>& o
)
239 rgw_cls_read_olh_log_ret
*r
= new rgw_cls_read_olh_log_ret
;
240 r
->is_truncated
= true;
241 list
<rgw_bucket_olh_log_entry
*> l
;
242 rgw_bucket_olh_log_entry::generate_test_instances(l
);
243 auto iter
= l
.begin();
244 r
->log
[1].push_back(*(*iter
));
248 o
.push_back(new rgw_cls_read_olh_log_ret
);
251 void rgw_cls_read_olh_log_ret::dump(Formatter
*f
) const
253 encode_json("log", log
, f
);
254 encode_json("is_truncated", is_truncated
, f
);
257 void rgw_cls_trim_olh_log_op::generate_test_instances(list
<rgw_cls_trim_olh_log_op
*>& o
)
259 rgw_cls_trim_olh_log_op
*op
= new rgw_cls_trim_olh_log_op
;
260 op
->olh
.name
= "olh.name";
262 op
->olh_tag
= "olh_tag";
266 o
.push_back(new rgw_cls_trim_olh_log_op
);
269 void rgw_cls_trim_olh_log_op::dump(Formatter
*f
) const
271 encode_json("olh", olh
, f
);
272 encode_json("ver", ver
, f
);
273 encode_json("olh_tag", olh_tag
, f
);
276 void rgw_cls_bucket_clear_olh_op::generate_test_instances(list
<rgw_cls_bucket_clear_olh_op
*>& o
)
279 rgw_cls_bucket_clear_olh_op
*op
= new rgw_cls_bucket_clear_olh_op
;
280 op
->key
.name
= "key.name";
281 op
->olh_tag
= "olh_tag";
284 o
.push_back(new rgw_cls_bucket_clear_olh_op
);
287 void rgw_cls_bucket_clear_olh_op::dump(Formatter
*f
) const
289 encode_json("key", key
, f
);
290 encode_json("olh_tag", olh_tag
, f
);
293 void rgw_cls_list_op::generate_test_instances(list
<rgw_cls_list_op
*>& o
)
295 rgw_cls_list_op
*op
= new rgw_cls_list_op
;
296 op
->start_obj
.name
= "start_obj";
297 op
->num_entries
= 100;
298 op
->filter_prefix
= "filter_prefix";
300 o
.push_back(new rgw_cls_list_op
);
303 void rgw_cls_list_op::dump(Formatter
*f
) const
305 f
->dump_string("start_obj", start_obj
.name
);
306 f
->dump_unsigned("num_entries", num_entries
);
309 void rgw_cls_list_ret::generate_test_instances(list
<rgw_cls_list_ret
*>& o
)
311 list
<rgw_bucket_dir
*> l
;
312 rgw_bucket_dir::generate_test_instances(l
);
313 for (auto iter
= l
.begin(); iter
!= l
.end(); ++iter
) {
314 rgw_bucket_dir
*d
= *iter
;
316 rgw_cls_list_ret
*ret
= new rgw_cls_list_ret
;
318 ret
->is_truncated
= true;
325 o
.push_back(new rgw_cls_list_ret
);
328 void rgw_cls_list_ret::dump(Formatter
*f
) const
330 f
->open_object_section("dir");
333 f
->dump_int("is_truncated", (int)is_truncated
);
336 void rgw_cls_check_index_ret::generate_test_instances(list
<rgw_cls_check_index_ret
*>& o
)
338 list
<rgw_bucket_dir_header
*> h
;
339 rgw_bucket_dir_header::generate_test_instances(h
);
340 rgw_cls_check_index_ret
*r
= new rgw_cls_check_index_ret
;
341 r
->existing_header
= *(h
.front());
342 r
->calculated_header
= *(h
.front());
345 for (auto iter
= h
.begin(); iter
!= h
.end(); ++iter
) {
348 o
.push_back(new rgw_cls_check_index_ret
);
351 void rgw_cls_check_index_ret::dump(Formatter
*f
) const
353 encode_json("existing_header", existing_header
, f
);
354 encode_json("calculated_header", calculated_header
, f
);
357 void rgw_cls_bucket_update_stats_op::generate_test_instances(list
<rgw_cls_bucket_update_stats_op
*>& o
)
359 rgw_cls_bucket_update_stats_op
*r
= new rgw_cls_bucket_update_stats_op
;
361 rgw_bucket_category_stats
& s
= r
->stats
[RGWObjCategory::None
];
363 s
.total_size_rounded
= 4096;
367 o
.push_back(new rgw_cls_bucket_update_stats_op
);
370 void rgw_cls_bucket_update_stats_op::dump(Formatter
*f
) const
372 encode_json("absolute", absolute
, f
);
373 map
<int, rgw_bucket_category_stats
> s
;
374 for (auto& entry
: stats
) {
375 s
[(int)entry
.first
] = entry
.second
;
377 encode_json("stats", s
, f
);
380 void cls_rgw_bi_log_list_op::dump(Formatter
*f
) const
382 f
->dump_string("marker", marker
);
383 f
->dump_unsigned("max", max
);
386 void cls_rgw_bi_log_list_op::generate_test_instances(list
<cls_rgw_bi_log_list_op
*>& ls
)
388 ls
.push_back(new cls_rgw_bi_log_list_op
);
389 ls
.push_back(new cls_rgw_bi_log_list_op
);
390 ls
.back()->marker
= "mark";
391 ls
.back()->max
= 123;
394 void cls_rgw_bi_log_trim_op::dump(Formatter
*f
) const
396 f
->dump_string("start_marker", start_marker
);
397 f
->dump_string("end_marker", end_marker
);
400 void cls_rgw_bi_log_trim_op::generate_test_instances(list
<cls_rgw_bi_log_trim_op
*>& ls
)
402 ls
.push_back(new cls_rgw_bi_log_trim_op
);
403 ls
.push_back(new cls_rgw_bi_log_trim_op
);
404 ls
.back()->start_marker
= "foo";
405 ls
.back()->end_marker
= "bar";
408 void cls_rgw_bi_log_list_ret::dump(Formatter
*f
) const
410 encode_json("entries", entries
, f
);
411 f
->dump_unsigned("truncated", (int)truncated
);
414 void cls_rgw_bi_log_list_ret::generate_test_instances(list
<cls_rgw_bi_log_list_ret
*>& ls
)
416 ls
.push_back(new cls_rgw_bi_log_list_ret
);
417 ls
.push_back(new cls_rgw_bi_log_list_ret
);
418 ls
.back()->entries
.push_back(rgw_bi_log_entry());
419 ls
.back()->truncated
= true;
422 void cls_rgw_reshard_add_op::generate_test_instances(list
<cls_rgw_reshard_add_op
*>& ls
)
424 ls
.push_back(new cls_rgw_reshard_add_op
);
425 ls
.push_back(new cls_rgw_reshard_add_op
);
426 list
<cls_rgw_reshard_entry
*> l
;
427 cls_rgw_reshard_entry::generate_test_instances(l
);
428 auto iter
= l
.begin();
429 ls
.back()->entry
= *(*iter
);
432 void cls_rgw_reshard_add_op::dump(Formatter
*f
) const
434 encode_json("entry", entry
, f
);
437 void cls_rgw_reshard_list_op::generate_test_instances(list
<cls_rgw_reshard_list_op
*>& ls
)
439 ls
.push_back(new cls_rgw_reshard_list_op
);
440 ls
.push_back(new cls_rgw_reshard_list_op
);
441 ls
.back()->max
= 1000;
442 ls
.back()->marker
= "foo";
445 void cls_rgw_reshard_list_op::dump(Formatter
*f
) const
447 encode_json("max", max
, f
);
448 encode_json("marker", marker
, f
);
451 void cls_rgw_reshard_list_ret::generate_test_instances(list
<cls_rgw_reshard_list_ret
*>& ls
)
453 ls
.push_back(new cls_rgw_reshard_list_ret
);
454 ls
.push_back(new cls_rgw_reshard_list_ret
);
455 ls
.back()->entries
.push_back(cls_rgw_reshard_entry());
456 ls
.back()->is_truncated
= true;
459 void cls_rgw_reshard_list_ret::dump(Formatter
*f
) const
461 encode_json("entries", entries
, f
);
462 encode_json("is_truncated", is_truncated
, f
);
465 void cls_rgw_reshard_get_op::generate_test_instances(list
<cls_rgw_reshard_get_op
*>& ls
)
467 ls
.push_back(new cls_rgw_reshard_get_op
);
468 ls
.push_back(new cls_rgw_reshard_get_op
);
471 void cls_rgw_reshard_get_op::dump(Formatter
*f
) const
473 encode_json("entry", entry
, f
);
476 void cls_rgw_reshard_get_ret::generate_test_instances(list
<cls_rgw_reshard_get_ret
*>& ls
)
478 ls
.push_back(new cls_rgw_reshard_get_ret
);
479 ls
.push_back(new cls_rgw_reshard_get_ret
);
482 void cls_rgw_reshard_get_ret::dump(Formatter
*f
) const
484 encode_json("entry", entry
, f
);
487 void cls_rgw_reshard_remove_op::generate_test_instances(list
<cls_rgw_reshard_remove_op
*>& ls
)
489 ls
.push_back(new cls_rgw_reshard_remove_op
);
490 ls
.push_back(new cls_rgw_reshard_remove_op
);
491 ls
.back()->bucket_name
= "foo";
492 ls
.back()->bucket_id
= "bucket_id";
495 void cls_rgw_reshard_remove_op::dump(Formatter
*f
) const
497 encode_json("bucket_name", bucket_name
, f
);
498 encode_json("bucket_id", bucket_name
, f
);
502 void cls_rgw_set_bucket_resharding_op::generate_test_instances(
503 list
<cls_rgw_set_bucket_resharding_op
*>& ls
)
505 ls
.push_back(new cls_rgw_set_bucket_resharding_op
);
506 ls
.push_back(new cls_rgw_set_bucket_resharding_op
);
509 void cls_rgw_set_bucket_resharding_op::dump(Formatter
*f
) const
511 encode_json("entry", entry
, f
);
514 void cls_rgw_clear_bucket_resharding_op::generate_test_instances(
515 list
<cls_rgw_clear_bucket_resharding_op
*>& ls
)
517 ls
.push_back(new cls_rgw_clear_bucket_resharding_op
);
518 ls
.push_back(new cls_rgw_clear_bucket_resharding_op
);
521 void cls_rgw_clear_bucket_resharding_op::dump(Formatter
*f
) const
525 void cls_rgw_guard_bucket_resharding_op::generate_test_instances(
526 list
<cls_rgw_guard_bucket_resharding_op
*>& ls
)
528 ls
.push_back(new cls_rgw_guard_bucket_resharding_op
);
529 ls
.push_back(new cls_rgw_guard_bucket_resharding_op
);
532 void cls_rgw_guard_bucket_resharding_op::dump(Formatter
*f
) const
534 encode_json("ret_err", ret_err
, f
);
538 void cls_rgw_get_bucket_resharding_op::generate_test_instances(
539 list
<cls_rgw_get_bucket_resharding_op
*>& ls
)
541 ls
.push_back(new cls_rgw_get_bucket_resharding_op
);
542 ls
.push_back(new cls_rgw_get_bucket_resharding_op
);
545 void cls_rgw_get_bucket_resharding_op::dump(Formatter
*f
) const