<Value></Value>
</FilterRule>
</S3Key>
- <S3Metadata>
- <FilterRule>
- <Name></Name>
- <Value></Value>
- </FilterRule>
- </S3Metadata>
- <S3Tags>
- <FilterRule>
- <Name></Name>
- <Value></Value>
- </FilterRule>
- </S3Tags>
</Filter>
</LoggingEnabled>
</BucketLoggingStatus>
<Value></Value>
</FilterRule>
</S3Key>
- <S3Metadata>
- <FilterRule>
- <Name></Name>
- <Value></Value>
- </FilterRule>
- </S3Metadata>
- <S3Tags>
- <FilterRule>
- <Name></Name>
- <Value></Value>
- </FilterRule>
- </S3Tags>
</Filter>
</LoggingEnabled>
</BucketLoggingStatus>
"documentation":"indicates how many records to batch in memory before writing to the object. if set to zero, records are written syncronously to the object. if <code>ObjectRollTime</code>e is reached, the batch of records will be written to the object regardless of the number of records. </p>"
},
"Filter":{
- "shape":"NotificationConfigurationFilter",
- "documentation":"<p>A filter for all log object. Types of filter for the object by its: attributes, tags and key (prefix, suffix and regex).</p>"
+ "shape":"LoggingConfigurationFilter",
+ "documentation":"<p>A filter for all log object. Filter for the object by its key (prefix, suffix and regex).</p>"
}
},
"documentation":"<p>Describes where logs are stored the prefix assigned to all log object keys for a bucket, and their format. also, the level the delivery guarantee of the records.</p>"
"Standard",
"Journal"
]
+ },
+ "LoggingConfigurationFilter":{
+ "type":"structure",
+ "members":{
+ "Key":{
+ "shape":"S3KeyFilter",
+ "documentation":"<p/>",
+ "locationName":"S3Key"
+ }
+ },
+ "documentation":"<p>A filter for all log object. Filter for the object by its key (prefix, suffix and regex).</p>",
+ "locationName":"Filter"
}
},
"documentation":"<p/>"
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 + "'");
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:
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:
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;
}
}
<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>
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
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);
}
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);
}