diff options
author | Ali Masarwa <amasarwa@redhat.com> | 2024-12-10 14:09:50 +0100 |
---|---|---|
committer | Ali Masarwa <amasarwa@redhat.com> | 2024-12-17 12:06:11 +0100 |
commit | e03f5ca25f2b63ab4efab5860701293246aac9c9 (patch) | |
tree | 35ee67294af520f89c7e2d2cfff940b395a1944a /src | |
parent | RGW/logging: add filtering for bucket logging (diff) | |
download | ceph-e03f5ca25f2b63ab4efab5860701293246aac9c9.tar.xz ceph-e03f5ca25f2b63ab4efab5860701293246aac9c9.zip |
RGW\logging: convert s3_filter to key_filter
Signed-off-by: Ali Masarwa <amasarwa@redhat.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/rgw/rgw_bucket_logging.cc | 19 | ||||
-rw-r--r-- | src/rgw/rgw_bucket_logging.h | 30 |
2 files changed, 21 insertions, 28 deletions
diff --git a/src/rgw/rgw_bucket_logging.cc b/src/rgw/rgw_bucket_logging.cc index f63efeee940..d24a53024f1 100644 --- a/src/rgw/rgw_bucket_logging.cc +++ b/src/rgw/rgw_bucket_logging.cc @@ -31,7 +31,9 @@ bool configuration::decode_xml(XMLObj* obj) { logging_type = LoggingType::Standard; } else if (type == "Journal") { logging_type = LoggingType::Journal; - RGWXMLDecoder::decode_xml("Filter", s3_filter, o); + if (iter = o->find("Filter"); XMLObj* const filter_o = iter.get_next()) { + RGWXMLDecoder::decode_xml("S3Key", key_filter, filter_o); + } } else { // we don't allow for type "Any" in the configuration throw RGWXMLDecoder::err("invalid bucket logging record type: '" + type + "'"); @@ -74,8 +76,10 @@ void configuration::dump_xml(Formatter *f) const { break; case LoggingType::Journal: ::encode_xml("LoggingType", "Journal", f); - if (s3_filter.has_content()) { - ::encode_xml("Filter", s3_filter, f); + if (key_filter.has_content()) { + f->open_object_section("Filter"); + ::encode_xml("S3Key", key_filter, f); + f->close_section(); // Filter } break; case LoggingType::Any: @@ -122,8 +126,9 @@ void configuration::dump(Formatter *f) const { break; case LoggingType::Journal: encode_json("loggingType", "Journal", f); - if (s3_filter.has_content()) { - encode_json("Filter", s3_filter, f); + if (key_filter.has_content()) { + Formatter::ObjectSection s(*f, "Filter"); + encode_json("S3Key", key_filter, f); } break; case LoggingType::Any: @@ -533,8 +538,8 @@ int log_record(rgw::sal::Driver* driver, if (type != LoggingType::Any && configuration.logging_type != type) { return 0; } - if (configuration.s3_filter.has_content()) { - if (!match(configuration.s3_filter, obj)) { + if (configuration.key_filter.has_content()) { + if (!match(configuration.key_filter, obj->get_name())) { return 0; } } diff --git a/src/rgw/rgw_bucket_logging.h b/src/rgw/rgw_bucket_logging.h index bedd5d3e0bd..d4877bafb0f 100644 --- a/src/rgw/rgw_bucket_logging.h +++ b/src/rgw/rgw_bucket_logging.h @@ -50,24 +50,12 @@ namespace rgw::bucketlogging { <ObjectRollTime>integer</ObjectRollTime> <!-- Ceph extension --> <RecordsBatchSize>integer</RecordsBatchSize> <!-- Ceph extension --> <Filter> - <S3Key> - <FilterRule> - <Name>suffix/prefix/regex</Name> - <Value></Value> - </FilterRule> - </S3Key> - <S3Metadata> - <FilterRule> - <Name></Name> - <Value></Value> - </FilterRule> - </S3Metadata> - <S3Tags> - <FilterRule> - <Name></Name> - <Value></Value> - </FilterRule> - </S3Tags> + <S3Key> + <FilterRule> + <Name>suffix/prefix/regex</Name> + <Value></Value> + </FilterRule> + </S3Key> </Filter> </LoggingEnabled> </BucketLoggingStatus> @@ -99,7 +87,7 @@ struct configuration { PartitionDateSource date_source = PartitionDateSource::DeliveryTime; // EventTime: use only year, month, and day. The hour, minutes and seconds are set to 00 in the key // DeliveryTime: the time the log object was created - rgw_s3_filter s3_filter; + rgw_s3_key_filter key_filter; bool decode_xml(XMLObj *obj); void dump_xml(Formatter *f) const; void dump(Formatter *f) const; // json @@ -115,7 +103,7 @@ struct configuration { encode(records_batch_size, bl); encode(static_cast<int>(date_source), bl); if (logging_type == LoggingType::Journal) { - encode(s3_filter, bl); + encode(key_filter, bl); } ENCODE_FINISH(bl); } @@ -134,7 +122,7 @@ struct configuration { decode(type, bl); date_source = static_cast<PartitionDateSource>(type); if (logging_type == LoggingType::Journal) { - decode(s3_filter, bl); + decode(key_filter, bl); } DECODE_FINISH(bl); } |