]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: add valid and empty in class LCExpiration. 15807/head
authorZhang Shaowen <zhangshaowen@cmss.chinamobile.com>
Fri, 7 Jul 2017 06:17:38 +0000 (14:17 +0800)
committerZhang Shaowen <zhangshaowen@cmss.chinamobile.com>
Fri, 7 Jul 2017 06:34:04 +0000 (14:34 +0800)
Signed-off-by: Zhang Shaowen <zhangshaowen@cmss.chinamobile.com>
src/rgw/rgw_lc.cc
src/rgw/rgw_lc.h
src/rgw/rgw_lc_s3.cc
src/rgw/rgw_lc_s3.h

index 0a33d4716b97600a273acef79ece88500578ac71..1d91df58ce5a80e67f9ec2aca6a353e55502ece6 100644 (file)
@@ -27,22 +27,15 @@ const char* LC_STATUS[] = {
 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;
@@ -80,7 +73,7 @@ bool RGWLifecycleConfiguration::_add_rule(LCRule *rule)
 
 int RGWLifecycleConfiguration::check_and_add_rule(LCRule *rule)
 {
-  if (!rule->validate()) {
+  if (!rule->valid()) {
     return -EINVAL;
   }
   string id;
@@ -111,7 +104,7 @@ bool RGWLifecycleConfiguration::has_same_action(const lc_op& first, const lc_op&
 
 //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;
index d9df3d2a476eed530efba9feca9fda79df2f5b8a..fe96a7500d5fe3fdc5f45515d9c8f951a58f7b3c 100644 (file)
@@ -62,20 +62,32 @@ public:
   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)
 
@@ -152,7 +164,7 @@ public:
     dm_expiration = _dm_expiration;
   }
 
-  bool validate();
+  bool valid();
   
   void encode(bufferlist& bl) const {
      ENCODE_START(4, 1, bl);
@@ -241,7 +253,7 @@ public:
 
   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; }
index 525cd0a435320a7ac5b10a14c075e5160fd6e50c..ea64847a0c733af1ca0eef4583cce7a3812fdc95 100644 (file)
@@ -31,6 +31,7 @@ bool LCExpiration_S3::xml_end(const char * el) {
     }
   } else {
     date = lc_date->get_data();
+    //We need return xml error according to S3
     if (boost::none == ceph::from_iso_8601(date)) {
       return false;
     }
@@ -127,15 +128,15 @@ void LCRule_S3::to_xml(CephContext *cct, ostream& out) {
   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);
   }
@@ -152,7 +153,7 @@ int RGWLifecycleConfiguration_S3::rebuild(RGWRados *store, RGWLifecycleConfigura
     if (ret < 0)
       return ret;
   }
-  if (!dest.validate()) {
+  if (!dest.valid()) {
     ret = -ERR_INVALID_REQUEST;
   }
   return ret;
index 8d74bcaae791ea74f2ee838f5e9848b475483d78..ed1af0c0053e3527d3ec27ac96742cf6e88c26b8 100644 (file)
@@ -152,15 +152,15 @@ public:
     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);
     }