1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
6 #include "cls/rgw/cls_rgw_types.h"
8 struct rgw_cls_tag_timeout_op
12 rgw_cls_tag_timeout_op() : tag_timeout(0) {}
14 void encode(ceph::buffer::list
&bl
) const {
15 ENCODE_START(1, 1, bl
);
16 encode(tag_timeout
, bl
);
19 void decode(ceph::buffer::list::const_iterator
&bl
) {
21 decode(tag_timeout
, bl
);
24 void dump(ceph::Formatter
*f
) const;
25 static void generate_test_instances(std::list
<rgw_cls_tag_timeout_op
*>& ls
);
27 WRITE_CLASS_ENCODER(rgw_cls_tag_timeout_op
)
29 struct rgw_cls_obj_prepare_op
37 rgw_zone_set zones_trace
;
39 rgw_cls_obj_prepare_op() : op(CLS_RGW_OP_UNKNOWN
), log_op(false), bilog_flags(0) {}
41 void encode(ceph::buffer::list
&bl
) const {
42 ENCODE_START(7, 5, bl
);
43 uint8_t c
= (uint8_t)op
;
49 encode(bilog_flags
, bl
);
50 encode(zones_trace
, bl
);
53 void decode(ceph::buffer::list::const_iterator
&bl
) {
54 DECODE_START_LEGACY_COMPAT_LEN(7, 3, 3, bl
);
72 decode(bilog_flags
, bl
);
75 decode(zones_trace
, bl
);
79 void dump(ceph::Formatter
*f
) const;
80 static void generate_test_instances(std::list
<rgw_cls_obj_prepare_op
*>& o
);
82 WRITE_CLASS_ENCODER(rgw_cls_obj_prepare_op
)
84 struct rgw_cls_obj_complete_op
89 rgw_bucket_entry_ver ver
;
90 rgw_bucket_dir_entry_meta meta
;
95 std::list
<cls_rgw_obj_key
> remove_objs
;
96 rgw_zone_set zones_trace
;
98 rgw_cls_obj_complete_op() : op(CLS_RGW_OP_ADD
), log_op(false), bilog_flags(0) {}
100 void encode(ceph::buffer::list
&bl
) const {
101 ENCODE_START(9, 7, bl
);
102 uint8_t c
= (uint8_t)op
;
104 encode(ver
.epoch
, bl
);
108 encode(remove_objs
, bl
);
112 encode(bilog_flags
, bl
);
113 encode(zones_trace
, bl
);
116 void decode(ceph::buffer::list::const_iterator
&bl
) {
117 DECODE_START_LEGACY_COMPAT_LEN(9, 3, 3, bl
);
122 decode(key
.name
, bl
);
124 decode(ver
.epoch
, bl
);
130 if (struct_v
>= 4 && struct_v
< 7) {
131 std::list
<std::string
> old_remove_objs
;
132 decode(old_remove_objs
, bl
);
134 for (auto iter
= old_remove_objs
.begin();
135 iter
!= old_remove_objs
.end(); ++iter
) {
138 remove_objs
.push_back(k
);
141 decode(remove_objs
, bl
);
155 decode(bilog_flags
, bl
);
158 decode(zones_trace
, bl
);
162 void dump(ceph::Formatter
*f
) const;
163 static void generate_test_instances(std::list
<rgw_cls_obj_complete_op
*>& o
);
165 WRITE_CLASS_ENCODER(rgw_cls_obj_complete_op
)
167 struct rgw_cls_link_olh_op
{
172 rgw_bucket_dir_entry_meta meta
;
175 uint16_t bilog_flags
;
176 ceph::real_time unmod_since
; /* only create delete marker if newer then this */
177 bool high_precision_time
;
178 rgw_zone_set zones_trace
;
180 rgw_cls_link_olh_op() : delete_marker(false), olh_epoch(0), log_op(false), bilog_flags(0), high_precision_time(false) {}
182 void encode(ceph::buffer::list
& bl
) const {
183 ENCODE_START(5, 1, bl
);
186 encode(delete_marker
, bl
);
189 encode(olh_epoch
, bl
);
191 encode(bilog_flags
, bl
);
192 uint64_t t
= ceph::real_clock::to_time_t(unmod_since
);
194 encode(unmod_since
, bl
);
195 encode(high_precision_time
, bl
);
196 encode(zones_trace
, bl
);
200 void decode(ceph::buffer::list::const_iterator
& bl
) {
204 decode(delete_marker
, bl
);
207 decode(olh_epoch
, bl
);
209 decode(bilog_flags
, bl
);
213 unmod_since
= ceph::real_clock::from_time_t(static_cast<time_t>(t
));
218 decode(unmod_since
, bl
);
221 decode(high_precision_time
, bl
);
224 decode(zones_trace
, bl
);
229 static void generate_test_instances(std::list
<rgw_cls_link_olh_op
*>& o
);
230 void dump(ceph::Formatter
*f
) const;
232 WRITE_CLASS_ENCODER(rgw_cls_link_olh_op
)
234 struct rgw_cls_unlink_instance_op
{
239 uint16_t bilog_flags
;
241 rgw_zone_set zones_trace
;
243 rgw_cls_unlink_instance_op() : olh_epoch(0), log_op(false), bilog_flags(0) {}
245 void encode(ceph::buffer::list
& bl
) const {
246 ENCODE_START(3, 1, bl
);
249 encode(olh_epoch
, bl
);
251 encode(bilog_flags
, bl
);
253 encode(zones_trace
, bl
);
257 void decode(ceph::buffer::list::const_iterator
& bl
) {
261 decode(olh_epoch
, bl
);
263 decode(bilog_flags
, bl
);
268 decode(zones_trace
, bl
);
273 static void generate_test_instances(std::list
<rgw_cls_unlink_instance_op
*>& o
);
274 void dump(ceph::Formatter
*f
) const;
276 WRITE_CLASS_ENCODER(rgw_cls_unlink_instance_op
)
278 struct rgw_cls_read_olh_log_op
284 rgw_cls_read_olh_log_op() : ver_marker(0) {}
286 void encode(ceph::buffer::list
&bl
) const {
287 ENCODE_START(1, 1, bl
);
289 encode(ver_marker
, bl
);
293 void decode(ceph::buffer::list::const_iterator
&bl
) {
296 decode(ver_marker
, bl
);
300 static void generate_test_instances(std::list
<rgw_cls_read_olh_log_op
*>& o
);
301 void dump(ceph::Formatter
*f
) const;
303 WRITE_CLASS_ENCODER(rgw_cls_read_olh_log_op
)
306 struct rgw_cls_read_olh_log_ret
308 std::map
<uint64_t, std::vector
<rgw_bucket_olh_log_entry
> > log
;
311 rgw_cls_read_olh_log_ret() : is_truncated(false) {}
313 void encode(ceph::buffer::list
&bl
) const {
314 ENCODE_START(1, 1, bl
);
316 encode(is_truncated
, bl
);
319 void decode(ceph::buffer::list::const_iterator
&bl
) {
322 decode(is_truncated
, bl
);
325 static void generate_test_instances(std::list
<rgw_cls_read_olh_log_ret
*>& o
);
326 void dump(ceph::Formatter
*f
) const;
328 WRITE_CLASS_ENCODER(rgw_cls_read_olh_log_ret
)
330 struct rgw_cls_trim_olh_log_op
336 rgw_cls_trim_olh_log_op() : ver(0) {}
338 void encode(ceph::buffer::list
&bl
) const {
339 ENCODE_START(1, 1, bl
);
345 void decode(ceph::buffer::list::const_iterator
&bl
) {
352 static void generate_test_instances(std::list
<rgw_cls_trim_olh_log_op
*>& o
);
353 void dump(ceph::Formatter
*f
) const;
355 WRITE_CLASS_ENCODER(rgw_cls_trim_olh_log_op
)
357 struct rgw_cls_bucket_clear_olh_op
{
361 rgw_cls_bucket_clear_olh_op() {}
363 void encode(ceph::buffer::list
& bl
) const {
364 ENCODE_START(1, 1, bl
);
370 void decode(ceph::buffer::list::const_iterator
& bl
) {
377 static void generate_test_instances(std::list
<rgw_cls_bucket_clear_olh_op
*>& o
);
378 void dump(ceph::Formatter
*f
) const;
380 WRITE_CLASS_ENCODER(rgw_cls_bucket_clear_olh_op
)
382 struct rgw_cls_list_op
384 cls_rgw_obj_key start_obj
;
385 uint32_t num_entries
;
386 std::string filter_prefix
;
388 std::string delimiter
;
390 rgw_cls_list_op() : num_entries(0), list_versions(false) {}
392 void encode(ceph::buffer::list
&bl
) const {
393 ENCODE_START(6, 4, bl
);
394 encode(num_entries
, bl
);
395 encode(filter_prefix
, bl
);
396 encode(start_obj
, bl
);
397 encode(list_versions
, bl
);
398 encode(delimiter
, bl
);
401 void decode(ceph::buffer::list::const_iterator
&bl
) {
402 DECODE_START_LEGACY_COMPAT_LEN(6, 2, 2, bl
);
404 decode(start_obj
.name
, bl
);
406 decode(num_entries
, bl
);
408 decode(filter_prefix
, bl
);
411 decode(start_obj
, bl
);
414 decode(list_versions
, bl
);
417 decode(delimiter
, bl
);
421 void dump(ceph::Formatter
*f
) const;
422 static void generate_test_instances(std::list
<rgw_cls_list_op
*>& o
);
424 WRITE_CLASS_ENCODER(rgw_cls_list_op
)
426 struct rgw_cls_list_ret
{
430 // if is_truncated is true, starting marker for next iteration; this
431 // is necessary as it's possible after maximum number of tries we
432 // still might have zero entries to return, in which case we have to
433 // at least move the ball foward
434 cls_rgw_obj_key marker
;
436 // cls_filtered is not transmitted; it is assumed true for versions
437 // on/after 3 and false for prior versions; this allows the rgw
438 // layer to know when an older osd (cls) does not do the filtering
446 void encode(ceph::buffer::list
&bl
) const {
447 ENCODE_START(4, 2, bl
);
449 encode(is_truncated
, bl
);
453 void decode(ceph::buffer::list::const_iterator
&bl
) {
454 DECODE_START_LEGACY_COMPAT_LEN(4, 2, 2, bl
);
456 decode(is_truncated
, bl
);
457 cls_filtered
= struct_v
>= 3;
463 void dump(ceph::Formatter
*f
) const;
464 static void generate_test_instances(std::list
<rgw_cls_list_ret
*>& o
);
466 WRITE_CLASS_ENCODER(rgw_cls_list_ret
)
468 struct rgw_cls_check_index_ret
470 rgw_bucket_dir_header existing_header
;
471 rgw_bucket_dir_header calculated_header
;
473 rgw_cls_check_index_ret() {}
475 void encode(ceph::buffer::list
&bl
) const {
476 ENCODE_START(1, 1, bl
);
477 encode(existing_header
, bl
);
478 encode(calculated_header
, bl
);
481 void decode(ceph::buffer::list::const_iterator
&bl
) {
483 decode(existing_header
, bl
);
484 decode(calculated_header
, bl
);
487 void dump(ceph::Formatter
*f
) const;
488 static void generate_test_instances(std::list
<rgw_cls_check_index_ret
*>& o
);
490 WRITE_CLASS_ENCODER(rgw_cls_check_index_ret
)
492 struct rgw_cls_bucket_update_stats_op
494 bool absolute
{false};
495 std::map
<RGWObjCategory
, rgw_bucket_category_stats
> stats
;
497 rgw_cls_bucket_update_stats_op() {}
499 void encode(ceph::buffer::list
&bl
) const {
500 ENCODE_START(1, 1, bl
);
501 encode(absolute
, bl
);
505 void decode(ceph::buffer::list::const_iterator
&bl
) {
507 decode(absolute
, bl
);
511 void dump(ceph::Formatter
*f
) const;
512 static void generate_test_instances(std::list
<rgw_cls_bucket_update_stats_op
*>& o
);
514 WRITE_CLASS_ENCODER(rgw_cls_bucket_update_stats_op
)
516 struct rgw_cls_obj_remove_op
{
517 std::list
<std::string
> keep_attr_prefixes
;
519 void encode(ceph::buffer::list
& bl
) const {
520 ENCODE_START(1, 1, bl
);
521 encode(keep_attr_prefixes
, bl
);
525 void decode(ceph::buffer::list::const_iterator
& bl
) {
527 decode(keep_attr_prefixes
, bl
);
531 WRITE_CLASS_ENCODER(rgw_cls_obj_remove_op
)
533 struct rgw_cls_obj_store_pg_ver_op
{
536 void encode(ceph::buffer::list
& bl
) const {
537 ENCODE_START(1, 1, bl
);
542 void decode(ceph::buffer::list::const_iterator
& bl
) {
548 WRITE_CLASS_ENCODER(rgw_cls_obj_store_pg_ver_op
)
550 struct rgw_cls_obj_check_attrs_prefix
{
551 std::string check_prefix
;
554 rgw_cls_obj_check_attrs_prefix() : fail_if_exist(false) {}
556 void encode(ceph::buffer::list
& bl
) const {
557 ENCODE_START(1, 1, bl
);
558 encode(check_prefix
, bl
);
559 encode(fail_if_exist
, bl
);
563 void decode(ceph::buffer::list::const_iterator
& bl
) {
565 decode(check_prefix
, bl
);
566 decode(fail_if_exist
, bl
);
570 WRITE_CLASS_ENCODER(rgw_cls_obj_check_attrs_prefix
)
572 struct rgw_cls_obj_check_mtime
{
573 ceph::real_time mtime
;
574 RGWCheckMTimeType type
;
575 bool high_precision_time
;
577 rgw_cls_obj_check_mtime() : type(CLS_RGW_CHECK_TIME_MTIME_EQ
), high_precision_time(false) {}
579 void encode(ceph::buffer::list
& bl
) const {
580 ENCODE_START(2, 1, bl
);
582 encode((uint8_t)type
, bl
);
583 encode(high_precision_time
, bl
);
587 void decode(ceph::buffer::list::const_iterator
& bl
) {
592 type
= (RGWCheckMTimeType
)c
;
594 decode(high_precision_time
, bl
);
599 WRITE_CLASS_ENCODER(rgw_cls_obj_check_mtime
)
601 struct rgw_cls_usage_log_add_op
{
602 rgw_usage_log_info info
;
605 void encode(ceph::buffer::list
& bl
) const {
606 ENCODE_START(2, 1, bl
);
608 encode(user
.to_str(), bl
);
612 void decode(ceph::buffer::list::const_iterator
& bl
) {
623 WRITE_CLASS_ENCODER(rgw_cls_usage_log_add_op
)
625 struct rgw_cls_bi_get_op
{
627 BIIndexType type
; /* namespace: plain, instance, olh */
629 rgw_cls_bi_get_op() : type(BIIndexType::Plain
) {}
631 void encode(ceph::buffer::list
& bl
) const {
632 ENCODE_START(1, 1, bl
);
634 encode((uint8_t)type
, bl
);
638 void decode(ceph::buffer::list::const_iterator
& bl
) {
643 type
= (BIIndexType
)c
;
647 WRITE_CLASS_ENCODER(rgw_cls_bi_get_op
)
649 struct rgw_cls_bi_get_ret
{
650 rgw_cls_bi_entry entry
;
652 rgw_cls_bi_get_ret() {}
654 void encode(ceph::buffer::list
& bl
) const {
655 ENCODE_START(1, 1, bl
);
660 void decode(ceph::buffer::list::const_iterator
& bl
) {
666 WRITE_CLASS_ENCODER(rgw_cls_bi_get_ret
)
668 struct rgw_cls_bi_put_op
{
669 rgw_cls_bi_entry entry
;
671 rgw_cls_bi_put_op() {}
673 void encode(ceph::buffer::list
& bl
) const {
674 ENCODE_START(1, 1, bl
);
679 void decode(ceph::buffer::list::const_iterator
& bl
) {
685 WRITE_CLASS_ENCODER(rgw_cls_bi_put_op
)
687 struct rgw_cls_bi_list_op
{
689 std::string name_filter
; // limit resultto one object and its instances
692 rgw_cls_bi_list_op() : max(0) {}
694 void encode(ceph::buffer::list
& bl
) const {
695 ENCODE_START(1, 1, bl
);
697 encode(name_filter
, bl
);
702 void decode(ceph::buffer::list::const_iterator
& bl
) {
705 decode(name_filter
, bl
);
710 WRITE_CLASS_ENCODER(rgw_cls_bi_list_op
)
712 struct rgw_cls_bi_list_ret
{
713 std::list
<rgw_cls_bi_entry
> entries
;
716 rgw_cls_bi_list_ret() : is_truncated(false) {}
718 void encode(ceph::buffer::list
& bl
) const {
719 ENCODE_START(1, 1, bl
);
721 encode(is_truncated
, bl
);
725 void decode(ceph::buffer::list::const_iterator
& bl
) {
728 decode(is_truncated
, bl
);
732 WRITE_CLASS_ENCODER(rgw_cls_bi_list_ret
)
734 struct rgw_cls_usage_log_read_op
{
735 uint64_t start_epoch
;
740 std::string iter
; // should be empty for the first call, non empty for subsequent calls
741 uint32_t max_entries
;
743 void encode(ceph::buffer::list
& bl
) const {
744 ENCODE_START(2, 1, bl
);
745 encode(start_epoch
, bl
);
746 encode(end_epoch
, bl
);
749 encode(max_entries
, bl
);
754 void decode(ceph::buffer::list::const_iterator
& bl
) {
756 decode(start_epoch
, bl
);
757 decode(end_epoch
, bl
);
760 decode(max_entries
, bl
);
767 WRITE_CLASS_ENCODER(rgw_cls_usage_log_read_op
)
769 struct rgw_cls_usage_log_read_ret
{
770 std::map
<rgw_user_bucket
, rgw_usage_log_entry
> usage
;
772 std::string next_iter
;
774 void encode(ceph::buffer::list
& bl
) const {
775 ENCODE_START(1, 1, bl
);
777 encode(truncated
, bl
);
778 encode(next_iter
, bl
);
782 void decode(ceph::buffer::list::const_iterator
& bl
) {
785 decode(truncated
, bl
);
786 decode(next_iter
, bl
);
790 WRITE_CLASS_ENCODER(rgw_cls_usage_log_read_ret
)
792 struct rgw_cls_usage_log_trim_op
{
793 uint64_t start_epoch
;
798 void encode(ceph::buffer::list
& bl
) const {
799 ENCODE_START(3, 2, bl
);
800 encode(start_epoch
, bl
);
801 encode(end_epoch
, bl
);
807 void decode(ceph::buffer::list::const_iterator
& bl
) {
809 decode(start_epoch
, bl
);
810 decode(end_epoch
, bl
);
818 WRITE_CLASS_ENCODER(rgw_cls_usage_log_trim_op
)
820 struct cls_rgw_gc_set_entry_op
{
821 uint32_t expiration_secs
;
822 cls_rgw_gc_obj_info info
;
823 cls_rgw_gc_set_entry_op() : expiration_secs(0) {}
825 void encode(ceph::buffer::list
& bl
) const {
826 ENCODE_START(1, 1, bl
);
827 encode(expiration_secs
, bl
);
832 void decode(ceph::buffer::list::const_iterator
& bl
) {
834 decode(expiration_secs
, bl
);
839 void dump(ceph::Formatter
*f
) const;
840 static void generate_test_instances(std::list
<cls_rgw_gc_set_entry_op
*>& ls
);
842 WRITE_CLASS_ENCODER(cls_rgw_gc_set_entry_op
)
844 struct cls_rgw_gc_defer_entry_op
{
845 uint32_t expiration_secs
;
847 cls_rgw_gc_defer_entry_op() : expiration_secs(0) {}
849 void encode(ceph::buffer::list
& bl
) const {
850 ENCODE_START(1, 1, bl
);
851 encode(expiration_secs
, bl
);
856 void decode(ceph::buffer::list::const_iterator
& bl
) {
858 decode(expiration_secs
, bl
);
863 void dump(ceph::Formatter
*f
) const;
864 static void generate_test_instances(std::list
<cls_rgw_gc_defer_entry_op
*>& ls
);
866 WRITE_CLASS_ENCODER(cls_rgw_gc_defer_entry_op
)
868 struct cls_rgw_gc_list_op
{
873 cls_rgw_gc_list_op() : max(0), expired_only(true) {}
875 void encode(ceph::buffer::list
& bl
) const {
876 ENCODE_START(2, 1, bl
);
879 encode(expired_only
, bl
);
883 void decode(ceph::buffer::list::const_iterator
& bl
) {
888 decode(expired_only
, bl
);
893 void dump(ceph::Formatter
*f
) const;
894 static void generate_test_instances(std::list
<cls_rgw_gc_list_op
*>& ls
);
896 WRITE_CLASS_ENCODER(cls_rgw_gc_list_op
)
898 struct cls_rgw_gc_list_ret
{
899 std::list
<cls_rgw_gc_obj_info
> entries
;
900 std::string next_marker
;
903 cls_rgw_gc_list_ret() : truncated(false) {}
905 void encode(ceph::buffer::list
& bl
) const {
906 ENCODE_START(2, 1, bl
);
908 encode(next_marker
, bl
);
909 encode(truncated
, bl
);
913 void decode(ceph::buffer::list::const_iterator
& bl
) {
917 decode(next_marker
, bl
);
918 decode(truncated
, bl
);
922 void dump(ceph::Formatter
*f
) const;
923 static void generate_test_instances(std::list
<cls_rgw_gc_list_ret
*>& ls
);
925 WRITE_CLASS_ENCODER(cls_rgw_gc_list_ret
)
927 struct cls_rgw_gc_remove_op
{
928 std::vector
<std::string
> tags
;
930 cls_rgw_gc_remove_op() {}
932 void encode(ceph::buffer::list
& bl
) const {
933 ENCODE_START(1, 1, bl
);
938 void decode(ceph::buffer::list::const_iterator
& bl
) {
944 void dump(ceph::Formatter
*f
) const;
945 static void generate_test_instances(std::list
<cls_rgw_gc_remove_op
*>& ls
);
947 WRITE_CLASS_ENCODER(cls_rgw_gc_remove_op
)
949 struct cls_rgw_bi_log_list_op
{
953 cls_rgw_bi_log_list_op() : max(0) {}
955 void encode(ceph::buffer::list
& bl
) const {
956 ENCODE_START(1, 1, bl
);
962 void decode(ceph::buffer::list::const_iterator
& bl
) {
969 void dump(ceph::Formatter
*f
) const;
970 static void generate_test_instances(std::list
<cls_rgw_bi_log_list_op
*>& ls
);
972 WRITE_CLASS_ENCODER(cls_rgw_bi_log_list_op
)
974 struct cls_rgw_bi_log_trim_op
{
975 std::string start_marker
;
976 std::string end_marker
;
978 cls_rgw_bi_log_trim_op() {}
980 void encode(ceph::buffer::list
& bl
) const {
981 ENCODE_START(1, 1, bl
);
982 encode(start_marker
, bl
);
983 encode(end_marker
, bl
);
987 void decode(ceph::buffer::list::const_iterator
& bl
) {
989 decode(start_marker
, bl
);
990 decode(end_marker
, bl
);
994 void dump(ceph::Formatter
*f
) const;
995 static void generate_test_instances(std::list
<cls_rgw_bi_log_trim_op
*>& ls
);
997 WRITE_CLASS_ENCODER(cls_rgw_bi_log_trim_op
)
999 struct cls_rgw_bi_log_list_ret
{
1000 std::list
<rgw_bi_log_entry
> entries
;
1003 cls_rgw_bi_log_list_ret() : truncated(false) {}
1005 void encode(ceph::buffer::list
& bl
) const {
1006 ENCODE_START(1, 1, bl
);
1007 encode(entries
, bl
);
1008 encode(truncated
, bl
);
1012 void decode(ceph::buffer::list::const_iterator
& bl
) {
1013 DECODE_START(1, bl
);
1014 decode(entries
, bl
);
1015 decode(truncated
, bl
);
1019 void dump(ceph::Formatter
*f
) const;
1020 static void generate_test_instances(std::list
<cls_rgw_bi_log_list_ret
*>& ls
);
1022 WRITE_CLASS_ENCODER(cls_rgw_bi_log_list_ret
)
1024 struct cls_rgw_lc_get_next_entry_op
{
1026 cls_rgw_lc_get_next_entry_op() {}
1028 void encode(ceph::buffer::list
& bl
) const {
1029 ENCODE_START(1, 1, bl
);
1034 void decode(ceph::buffer::list::const_iterator
& bl
) {
1035 DECODE_START(1, bl
);
1040 WRITE_CLASS_ENCODER(cls_rgw_lc_get_next_entry_op
)
1042 struct cls_rgw_lc_get_next_entry_ret
{
1043 cls_rgw_lc_entry entry
;
1045 cls_rgw_lc_get_next_entry_ret() {}
1047 void encode(ceph::buffer::list
& bl
) const {
1048 ENCODE_START(2, 2, bl
);
1053 void decode(ceph::buffer::list::const_iterator
& bl
) {
1054 DECODE_START(2, bl
);
1056 std::pair
<std::string
, int> oe
;
1058 entry
= {oe
.first
, 0 /* start */, uint32_t(oe
.second
)};
1066 WRITE_CLASS_ENCODER(cls_rgw_lc_get_next_entry_ret
)
1068 struct cls_rgw_lc_get_entry_op
{
1070 cls_rgw_lc_get_entry_op() {}
1071 cls_rgw_lc_get_entry_op(const std::string
& _marker
) : marker(_marker
) {}
1073 void encode(ceph::buffer::list
& bl
) const {
1074 ENCODE_START(1, 1, bl
);
1079 void decode(ceph::buffer::list::const_iterator
& bl
) {
1080 DECODE_START(1, bl
);
1085 WRITE_CLASS_ENCODER(cls_rgw_lc_get_entry_op
)
1087 struct cls_rgw_lc_get_entry_ret
{
1088 cls_rgw_lc_entry entry
;
1090 cls_rgw_lc_get_entry_ret() {}
1091 cls_rgw_lc_get_entry_ret(cls_rgw_lc_entry
&& _entry
)
1092 : entry(std::move(_entry
)) {}
1094 void encode(ceph::buffer::list
& bl
) const {
1095 ENCODE_START(1, 1, bl
);
1100 void decode(ceph::buffer::list::const_iterator
& bl
) {
1101 DECODE_START(1, bl
);
1107 WRITE_CLASS_ENCODER(cls_rgw_lc_get_entry_ret
)
1109 struct cls_rgw_lc_rm_entry_op
{
1110 cls_rgw_lc_entry entry
;
1111 cls_rgw_lc_rm_entry_op() {}
1113 void encode(ceph::buffer::list
& bl
) const {
1114 ENCODE_START(2, 2, bl
);
1119 void decode(ceph::buffer::list::const_iterator
& bl
) {
1120 DECODE_START(2, bl
);
1122 std::pair
<std::string
, int> oe
;
1124 entry
= {oe
.first
, 0 /* start */, uint32_t(oe
.second
)};
1131 WRITE_CLASS_ENCODER(cls_rgw_lc_rm_entry_op
)
1133 struct cls_rgw_lc_set_entry_op
{
1134 cls_rgw_lc_entry entry
;
1135 cls_rgw_lc_set_entry_op() {}
1137 void encode(ceph::buffer::list
& bl
) const {
1138 ENCODE_START(2, 2, bl
);
1143 void decode(ceph::buffer::list::const_iterator
& bl
) {
1144 DECODE_START(2, bl
);
1146 std::pair
<std::string
, int> oe
;
1148 entry
= {oe
.first
, 0 /* start */, uint32_t(oe
.second
)};
1155 WRITE_CLASS_ENCODER(cls_rgw_lc_set_entry_op
)
1157 struct cls_rgw_lc_put_head_op
{
1158 cls_rgw_lc_obj_head head
;
1161 cls_rgw_lc_put_head_op() {}
1163 void encode(ceph::buffer::list
& bl
) const {
1164 ENCODE_START(1, 1, bl
);
1169 void decode(ceph::buffer::list::const_iterator
& bl
) {
1170 DECODE_START(1, bl
);
1176 WRITE_CLASS_ENCODER(cls_rgw_lc_put_head_op
)
1178 struct cls_rgw_lc_get_head_ret
{
1179 cls_rgw_lc_obj_head head
;
1181 cls_rgw_lc_get_head_ret() {}
1183 void encode(ceph::buffer::list
& bl
) const {
1184 ENCODE_START(1, 1, bl
);
1189 void decode(ceph::buffer::list::const_iterator
& bl
) {
1190 DECODE_START(1, bl
);
1196 WRITE_CLASS_ENCODER(cls_rgw_lc_get_head_ret
)
1198 struct cls_rgw_lc_list_entries_op
{
1200 uint32_t max_entries
= 0;
1201 uint8_t compat_v
{0};
1203 cls_rgw_lc_list_entries_op() {}
1205 void encode(ceph::buffer::list
& bl
) const {
1206 ENCODE_START(3, 1, bl
);
1208 encode(max_entries
, bl
);
1212 void decode(ceph::buffer::list::const_iterator
& bl
) {
1213 DECODE_START(3, bl
);
1214 compat_v
= struct_v
;
1216 decode(max_entries
, bl
);
1221 WRITE_CLASS_ENCODER(cls_rgw_lc_list_entries_op
)
1223 struct cls_rgw_lc_list_entries_ret
{
1224 std::vector
<cls_rgw_lc_entry
> entries
;
1225 bool is_truncated
{false};
1228 cls_rgw_lc_list_entries_ret(uint8_t compat_v
= 3)
1229 : compat_v(compat_v
) {}
1231 void encode(ceph::buffer::list
& bl
) const {
1232 ENCODE_START(compat_v
, 1, bl
);
1233 if (compat_v
<= 2) {
1234 std::map
<std::string
, int> oes
;
1235 std::for_each(entries
.begin(), entries
.end(),
1236 [&oes
](const cls_rgw_lc_entry
& elt
)
1237 {oes
.insert({elt
.bucket
, elt
.status
});});
1240 encode(entries
, bl
);
1242 encode(is_truncated
, bl
);
1246 void decode(ceph::buffer::list::const_iterator
& bl
) {
1247 DECODE_START(3, bl
);
1248 compat_v
= struct_v
;
1249 if (struct_v
<= 2) {
1250 std::map
<std::string
, int> oes
;
1252 std::for_each(oes
.begin(), oes
.end(),
1253 [this](const std::pair
<std::string
, int>& oe
)
1254 {entries
.push_back({oe
.first
, 0 /* start */,
1255 uint32_t(oe
.second
)});});
1257 decode(entries
, bl
);
1259 if (struct_v
>= 2) {
1260 decode(is_truncated
, bl
);
1265 WRITE_CLASS_ENCODER(cls_rgw_lc_list_entries_ret
)
1267 struct cls_rgw_reshard_add_op
{
1268 cls_rgw_reshard_entry entry
;
1270 cls_rgw_reshard_add_op() {}
1272 void encode(ceph::buffer::list
& bl
) const {
1273 ENCODE_START(1, 1, bl
);
1278 void decode(ceph::buffer::list::const_iterator
& bl
) {
1279 DECODE_START(1, bl
);
1283 static void generate_test_instances(std::list
<cls_rgw_reshard_add_op
*>& o
);
1284 void dump(ceph::Formatter
*f
) const;
1286 WRITE_CLASS_ENCODER(cls_rgw_reshard_add_op
)
1288 struct cls_rgw_reshard_list_op
{
1292 cls_rgw_reshard_list_op() {}
1294 void encode(ceph::buffer::list
& bl
) const {
1295 ENCODE_START(1, 1, bl
);
1301 void decode(ceph::buffer::list::const_iterator
& bl
) {
1302 DECODE_START(1, bl
);
1307 static void generate_test_instances(std::list
<cls_rgw_reshard_list_op
*>& o
);
1308 void dump(ceph::Formatter
*f
) const;
1310 WRITE_CLASS_ENCODER(cls_rgw_reshard_list_op
)
1313 struct cls_rgw_reshard_list_ret
{
1314 std::list
<cls_rgw_reshard_entry
> entries
;
1315 bool is_truncated
{false};
1317 cls_rgw_reshard_list_ret() {}
1319 void encode(ceph::buffer::list
& bl
) const {
1320 ENCODE_START(1, 1, bl
);
1321 encode(entries
, bl
);
1322 encode(is_truncated
, bl
);
1326 void decode(ceph::buffer::list::const_iterator
& bl
) {
1327 DECODE_START(1, bl
);
1328 decode(entries
, bl
);
1329 decode(is_truncated
, bl
);
1332 static void generate_test_instances(std::list
<cls_rgw_reshard_list_ret
*>& o
);
1333 void dump(ceph::Formatter
*f
) const;
1335 WRITE_CLASS_ENCODER(cls_rgw_reshard_list_ret
)
1337 struct cls_rgw_reshard_get_op
{
1338 cls_rgw_reshard_entry entry
;
1340 cls_rgw_reshard_get_op() {}
1342 void encode(ceph::buffer::list
& bl
) const {
1343 ENCODE_START(1, 1, bl
);
1348 void decode(ceph::buffer::list::const_iterator
& bl
) {
1349 DECODE_START(1, bl
);
1353 static void generate_test_instances(std::list
<cls_rgw_reshard_get_op
*>& o
);
1354 void dump(ceph::Formatter
*f
) const;
1356 WRITE_CLASS_ENCODER(cls_rgw_reshard_get_op
)
1358 struct cls_rgw_reshard_get_ret
{
1359 cls_rgw_reshard_entry entry
;
1361 cls_rgw_reshard_get_ret() {}
1363 void encode(ceph::buffer::list
& bl
) const {
1364 ENCODE_START(1, 1, bl
);
1369 void decode(ceph::buffer::list::const_iterator
& bl
) {
1370 DECODE_START(1, bl
);
1374 static void generate_test_instances(std::list
<cls_rgw_reshard_get_ret
*>& o
);
1375 void dump(ceph::Formatter
*f
) const;
1377 WRITE_CLASS_ENCODER(cls_rgw_reshard_get_ret
)
1379 struct cls_rgw_reshard_remove_op
{
1381 std::string bucket_name
;
1382 std::string bucket_id
;
1384 cls_rgw_reshard_remove_op() {}
1386 void encode(ceph::buffer::list
& bl
) const {
1387 ENCODE_START(1, 1, bl
);
1389 encode(bucket_name
, bl
);
1390 encode(bucket_id
, bl
);
1394 void decode(ceph::buffer::list::const_iterator
& bl
) {
1395 DECODE_START(1, bl
);
1397 decode(bucket_name
, bl
);
1398 decode(bucket_id
, bl
);
1401 static void generate_test_instances(std::list
<cls_rgw_reshard_remove_op
*>& o
);
1402 void dump(ceph::Formatter
*f
) const;
1404 WRITE_CLASS_ENCODER(cls_rgw_reshard_remove_op
)
1406 struct cls_rgw_set_bucket_resharding_op
{
1407 cls_rgw_bucket_instance_entry entry
;
1409 void encode(ceph::buffer::list
& bl
) const {
1410 ENCODE_START(1, 1, bl
);
1415 void decode(ceph::buffer::list::const_iterator
& bl
) {
1416 DECODE_START(1, bl
);
1420 static void generate_test_instances(std::list
<cls_rgw_set_bucket_resharding_op
*>& o
);
1421 void dump(ceph::Formatter
*f
) const;
1423 WRITE_CLASS_ENCODER(cls_rgw_set_bucket_resharding_op
)
1425 struct cls_rgw_clear_bucket_resharding_op
{
1426 void encode(ceph::buffer::list
& bl
) const {
1427 ENCODE_START(1, 1, bl
);
1431 void decode(ceph::buffer::list::const_iterator
& bl
) {
1432 DECODE_START(1, bl
);
1435 static void generate_test_instances(std::list
<cls_rgw_clear_bucket_resharding_op
*>& o
);
1436 void dump(ceph::Formatter
*f
) const;
1438 WRITE_CLASS_ENCODER(cls_rgw_clear_bucket_resharding_op
)
1440 struct cls_rgw_guard_bucket_resharding_op
{
1443 void encode(ceph::buffer::list
& bl
) const {
1444 ENCODE_START(1, 1, bl
);
1445 encode(ret_err
, bl
);
1449 void decode(ceph::buffer::list::const_iterator
& bl
) {
1450 DECODE_START(1, bl
);
1451 decode(ret_err
, bl
);
1455 static void generate_test_instances(std::list
<cls_rgw_guard_bucket_resharding_op
*>& o
);
1456 void dump(ceph::Formatter
*f
) const;
1458 WRITE_CLASS_ENCODER(cls_rgw_guard_bucket_resharding_op
)
1460 struct cls_rgw_get_bucket_resharding_op
{
1462 void encode(ceph::buffer::list
& bl
) const {
1463 ENCODE_START(1, 1, bl
);
1467 void decode(ceph::buffer::list::const_iterator
& bl
) {
1468 DECODE_START(1, bl
);
1472 static void generate_test_instances(std::list
<cls_rgw_get_bucket_resharding_op
*>& o
);
1473 void dump(ceph::Formatter
*f
) const;
1475 WRITE_CLASS_ENCODER(cls_rgw_get_bucket_resharding_op
)
1477 struct cls_rgw_get_bucket_resharding_ret
{
1478 cls_rgw_bucket_instance_entry new_instance
;
1480 void encode(ceph::buffer::list
& bl
) const {
1481 ENCODE_START(1, 1, bl
);
1482 encode(new_instance
, bl
);
1486 void decode(ceph::buffer::list::const_iterator
& bl
) {
1487 DECODE_START(1, bl
);
1488 decode(new_instance
, bl
);
1492 static void generate_test_instances(std::list
<cls_rgw_get_bucket_resharding_ret
*>& o
);
1493 void dump(ceph::Formatter
*f
) const;
1495 WRITE_CLASS_ENCODER(cls_rgw_get_bucket_resharding_ret
)