From: Casey Bodley Date: Sun, 7 Nov 2021 14:37:45 +0000 (-0500) Subject: cls/rgw: RGWModifyOp <-> string conversions X-Git-Tag: v17.1.0~390^2~5 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=6d445a8ed758e98940c330bb2de1b14bb8184e4f;p=ceph.git cls/rgw: RGWModifyOp <-> string conversions Signed-off-by: Casey Bodley --- diff --git a/src/cls/rgw/cls_rgw_types.cc b/src/cls/rgw/cls_rgw_types.cc index 247d9c00bccdb..261e8b177d08c 100644 --- a/src/cls/rgw/cls_rgw_types.cc +++ b/src/cls/rgw/cls_rgw_types.cc @@ -77,6 +77,45 @@ void decode_json_obj(rgw_zone_set& zs, JSONObj *obj) decode_json_obj(zs.entries, obj); } +std::string_view to_string(RGWModifyOp op) +{ + switch (op) { + case CLS_RGW_OP_ADD: return "write"; + case CLS_RGW_OP_DEL: return "del"; + case CLS_RGW_OP_CANCEL: return "cancel"; + case CLS_RGW_OP_LINK_OLH: return "link_olh"; + case CLS_RGW_OP_LINK_OLH_DM: return "link_olh_del"; + case CLS_RGW_OP_UNLINK_INSTANCE: return "unlink_instance"; + case CLS_RGW_OP_SYNCSTOP: return "syncstop"; + case CLS_RGW_OP_RESYNC: return "resync"; + default: + case CLS_RGW_OP_UNKNOWN: return "unknown"; + } +} + +RGWModifyOp parse_modify_op(std::string_view name) +{ + if (name == "write") { + return CLS_RGW_OP_ADD; + } else if (name == "del") { + return CLS_RGW_OP_DEL; + } else if (name == "cancel") { + return CLS_RGW_OP_CANCEL; + } else if (name == "link_olh") { + return CLS_RGW_OP_LINK_OLH; + } else if (name == "link_olh_del") { + return CLS_RGW_OP_LINK_OLH_DM; + } else if (name == "unlink_instance") { + return CLS_RGW_OP_UNLINK_INSTANCE; + } else if (name == "syncstop") { + return CLS_RGW_OP_SYNCSTOP; + } else if (name == "resync") { + return CLS_RGW_OP_RESYNC; + } else { + return CLS_RGW_OP_UNKNOWN; + } +} + void rgw_bucket_pending_info::generate_test_instances(list& o) { rgw_bucket_pending_info *i = new rgw_bucket_pending_info; @@ -436,27 +475,7 @@ void rgw_bi_log_entry::decode_json(JSONObj *obj) JSONDecoder::decode_json("op_tag", tag, obj); string op_str; JSONDecoder::decode_json("op", op_str, obj); - if (op_str == "write") { - op = CLS_RGW_OP_ADD; - } else if (op_str == "del") { - op = CLS_RGW_OP_DEL; - } else if (op_str == "cancel") { - op = CLS_RGW_OP_CANCEL; - } else if (op_str == "unknown") { - op = CLS_RGW_OP_UNKNOWN; - } else if (op_str == "link_olh") { - op = CLS_RGW_OP_LINK_OLH; - } else if (op_str == "link_olh_del") { - op = CLS_RGW_OP_LINK_OLH_DM; - } else if (op_str == "unlink_instance") { - op = CLS_RGW_OP_UNLINK_INSTANCE; - } else if (op_str == "syncstop") { - op = CLS_RGW_OP_SYNCSTOP; - } else if (op_str == "resync") { - op = CLS_RGW_OP_RESYNC; - } else { - op = CLS_RGW_OP_UNKNOWN; - } + op = parse_modify_op(op_str); JSONDecoder::decode_json("object", object, obj); JSONDecoder::decode_json("instance", instance, obj); string state_str; @@ -485,39 +504,7 @@ void rgw_bi_log_entry::dump(Formatter *f) const { f->dump_string("op_id", id); f->dump_string("op_tag", tag); - switch (op) { - case CLS_RGW_OP_ADD: - f->dump_string("op", "write"); - break; - case CLS_RGW_OP_DEL: - f->dump_string("op", "del"); - break; - case CLS_RGW_OP_CANCEL: - f->dump_string("op", "cancel"); - break; - case CLS_RGW_OP_UNKNOWN: - f->dump_string("op", "unknown"); - break; - case CLS_RGW_OP_LINK_OLH: - f->dump_string("op", "link_olh"); - break; - case CLS_RGW_OP_LINK_OLH_DM: - f->dump_string("op", "link_olh_del"); - break; - case CLS_RGW_OP_UNLINK_INSTANCE: - f->dump_string("op", "unlink_instance"); - break; - case CLS_RGW_OP_SYNCSTOP: - f->dump_string("op", "syncstop"); - break; - case CLS_RGW_OP_RESYNC: - f->dump_string("op", "resync"); - break; - default: - f->dump_string("op", "invalid"); - break; - } - + f->dump_string("op", to_string(op)); f->dump_string("object", object); f->dump_string("instance", instance); diff --git a/src/cls/rgw/cls_rgw_types.h b/src/cls/rgw/cls_rgw_types.h index 7ad40d7edd072..57db49645a937 100644 --- a/src/cls/rgw/cls_rgw_types.h +++ b/src/cls/rgw/cls_rgw_types.h @@ -3,6 +3,7 @@ #pragma once +#include #include #include "common/ceph_time.h" #include "common/Formatter.h" @@ -96,6 +97,13 @@ enum RGWModifyOp { CLS_RGW_OP_RESYNC = 8, }; +std::string_view to_string(RGWModifyOp op); +RGWModifyOp parse_modify_op(std::string_view name); + +inline std::ostream& operator<<(std::ostream& out, RGWModifyOp op) { + return out << to_string(op); +} + enum RGWBILogFlags { RGW_BILOG_FLAG_VERSIONED_OP = 0x1, };