using namespace std;
using namespace librados;
-bool LCRule::validate()
+bool LCRule::valid()
{
if (id.length() > MAX_ID_LEN) {
return false;
}
- else if(!expiration.has_days() && !expiration.has_date() &&
- !noncur_expiration.has_days() && !mp_expiration.has_days() && !dm_expiration) {
+ else if(expiration.empty() && noncur_expiration.empty() && mp_expiration.empty() && !dm_expiration) {
return false;
}
- else if (expiration.has_days() && expiration.get_days() <= 0) {
- return false;
- }
- else if (noncur_expiration.has_days() && noncur_expiration.get_days() <=0) {
- return false;
- }
- else if (mp_expiration.has_days() && mp_expiration.get_days() <= 0) {
+ else if (!expiration.valid() || !noncur_expiration.valid() || !mp_expiration.valid()) {
return false;
}
return true;
int RGWLifecycleConfiguration::check_and_add_rule(LCRule *rule)
{
- if (!rule->validate()) {
+ if (!rule->valid()) {
return -EINVAL;
}
string id;
//Rules are conflicted: if one rule's prefix starts with other rule's prefix, and these two rules
//define same action.
-bool RGWLifecycleConfiguration::validate()
+bool RGWLifecycleConfiguration::valid()
{
if (prefix_map.size() < 2) {
return true;
void dump(Formatter *f) const;
// static void generate_test_instances(list<ACLOwner*>& o);
void set_days(const string& _days) { days = _days; }
- string get_days_str() const{
+ string get_days_str() const {
return days;
}
- int get_days() {return atoi(days.c_str()); }
+ int get_days() const {return atoi(days.c_str()); }
bool has_days() const {
return !days.empty();
}
void set_date(const string& _date) { date = _date; }
- string get_date() const{
+ string get_date() const {
return date;
}
bool has_date() const {
return !date.empty();
}
+ bool empty() const {
+ return days.empty() && date.empty();
+ }
+ bool valid() const {
+ if (!days.empty() && !date.empty()) {
+ return false;
+ } else if (!days.empty() && get_days() <= 0) {
+ return false;
+ }
+ //We've checked date in xml parsing
+ return true;
+ }
};
WRITE_CLASS_ENCODER(LCExpiration)
dm_expiration = _dm_expiration;
}
- bool validate();
+ bool valid();
void encode(bufferlist& bl) const {
ENCODE_START(4, 1, bl);
int check_and_add_rule(LCRule* rule);
- bool validate();
+ bool valid();
multimap<string, LCRule>& get_rule_map() { return rule_map; }
map<string, lc_op>& get_prefix_map() { return prefix_map; }
}
} else {
date = lc_date->get_data();
+ //We need return xml error according to S3
if (boost::none == ceph::from_iso_8601(date)) {
return false;
}
out << "<ID>" << id << "</ID>";
out << "<Prefix>" << prefix << "</Prefix>";
out << "<Status>" << status << "</Status>";
- if (expiration.has_days() || expiration.has_date() || dm_expiration) {
+ if (!expiration.empty() || dm_expiration) {
LCExpiration_S3 expir(expiration.get_days_str(), expiration.get_date(), dm_expiration);
expir.to_xml(out);
}
- if (noncur_expiration.has_days()) {
+ if (!noncur_expiration.empty()) {
LCNoncurExpiration_S3& noncur_expir = static_cast<LCNoncurExpiration_S3&>(noncur_expiration);
noncur_expir.to_xml(out);
}
- if (mp_expiration.has_days()) {
+ if (!mp_expiration.empty()) {
LCMPExpiration_S3& mp_expir = static_cast<LCMPExpiration_S3&>(mp_expiration);
mp_expir.to_xml(out);
}
if (ret < 0)
return ret;
}
- if (!dest.validate()) {
+ if (!dest.valid()) {
ret = -ERR_INVALID_REQUEST;
}
return ret;
encode_xml("ID", id, f);
encode_xml("Prefix", prefix, f);
encode_xml("Status", status, f);
- if (expiration.has_days() || expiration.has_date() || dm_expiration) {
+ if (!expiration.empty() || dm_expiration) {
LCExpiration_S3 expir(expiration.get_days_str(), expiration.get_date(), dm_expiration);
expir.dump_xml(f);
}
- if (noncur_expiration.has_days()) {
+ if (!noncur_expiration.empty()) {
const LCNoncurExpiration_S3& noncur_expir = static_cast<const LCNoncurExpiration_S3&>(noncur_expiration);
noncur_expir.dump_xml(f);
}
- if (mp_expiration.has_days()) {
+ if (!mp_expiration.empty()) {
const LCMPExpiration_S3& mp_expir = static_cast<const LCMPExpiration_S3&>(mp_expiration);
mp_expir.dump_xml(f);
}