]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: radosgw-admin date params now also accept time
authorYehuda Sadeh <yehuda@inktank.com>
Thu, 21 Jun 2012 22:17:19 +0000 (15:17 -0700)
committerYehuda Sadeh <yehuda@inktank.com>
Tue, 3 Jul 2012 23:23:42 +0000 (16:23 -0700)
The date format now is "YYYY-MM-DD[ hh:mm:ss]". Got rid of
the --time param for the old ops log stuff.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
Conflicts:

src/test/cli/radosgw-admin/help.t

src/rgw/rgw_admin.cc
src/test/cli/radosgw-admin/help.t

index 8b5699c38962d5ea8613820a676d06fdee4d8613..b3b4485d704049ba5c2852bcf5cc1d8f6745424d 100644 (file)
@@ -74,10 +74,9 @@ void _usage()
   cerr << "   --bucket=<bucket>\n";
   cerr << "   --pool=<pool>\n";
   cerr << "   --object=<object>\n";
-  cerr << "   --date=<yyyy-mm-dd>\n";
-  cerr << "   --start-date=<yyyy-mm-dd>\n";
-  cerr << "   --end-date=<yyyy-mm-dd>\n";
-  cerr << "   --time=<HH:MM:SS>\n";
+  cerr << "   --date=<date>\n";
+  cerr << "   --start-date=<date>\n";
+  cerr << "   --end-date=<date>\n";
   cerr << "   --bucket-id=<bucket-id>\n";
   cerr << "   --format=<format>         specify output format for certain operations: xml,\n";
   cerr << "                             json\n";
@@ -90,6 +89,9 @@ void _usage()
   cerr << "   --skip-zero-entries       log show only dumps entries that don't have zero value\n";
   cerr << "                             in one of the numeric field\n";
   cerr << "   --yes-i-really-mean-it    required for certain operations\n";
+  cerr << "\n";
+  cerr << "<date> := \"YYYY-MM-DD[ hh:mm:ss]\"\n";
+  cerr << "\n";
   generic_client_usage();
 }
 
@@ -514,16 +516,34 @@ enum ObjectKeyType {
   KEY_TYPE_S3,
 };
 
-static void parse_date(string& date, uint64_t *epoch)
+static void parse_date(string& date, uint64_t *epoch, string *out_date = NULL, string *out_time = NULL)
 {
   struct tm tm;
 
   memset(&tm, 0, sizeof(tm));
 
   const char *p = strptime(date.c_str(), "%Y-%m-%d", &tm);
-  if (p && !*p) { // success!
-    time_t t = timegm(&tm);
+  if (p) {
+    if (*p == ' ') {
+      p++;
+      strptime(p, " %I:%M:%S", &tm);
+    }
+  } else {
+    return;
+  }
+  time_t t = timegm(&tm);
+  if (epoch)
     *epoch = (uint64_t)t;
+
+  if (out_date) {
+    char buf[32];
+    strftime(buf, sizeof(buf), "%F", &tm);
+    *out_date = buf;
+  }
+  if (out_time) {
+    char buf[32];
+    strftime(buf, sizeof(buf), "%T", &tm);
+    *out_time = buf;
   }
 }
 
@@ -538,7 +558,7 @@ int main(int argc, char **argv)
 
   std::string user_id, access_key, secret_key, user_email, display_name;
   std::string bucket_name, pool_name, object;
-  std::string date, time, subuser, access, format;
+  std::string date, subuser, access, format;
   std::string start_date, end_date;
   std::string key_type_str;
   ObjectKeyType key_type = KEY_TYPE_S3;
@@ -623,16 +643,14 @@ int main(int argc, char **argv)
       auid = tmp;
     } else if (ceph_argparse_witharg(args, i, &val, "--max-buckets", (char*)NULL)) {
       max_buckets = atoi(val.c_str());
-    } else if (ceph_argparse_witharg(args, i, &val, "--date", (char*)NULL)) {
+    } else if (ceph_argparse_witharg(args, i, &val, "--date", "--time", (char*)NULL)) {
       date = val;
       if (end_date.empty())
         end_date = date;
-    } else if (ceph_argparse_witharg(args, i, &val, "--start-date", (char*)NULL)) {
+    } else if (ceph_argparse_witharg(args, i, &val, "--start-date", "--start-time", (char*)NULL)) {
       start_date = val;
-    } else if (ceph_argparse_witharg(args, i, &val, "--end-date", (char*)NULL)) {
+    } else if (ceph_argparse_witharg(args, i, &val, "--end-date", "--end-time", (char*)NULL)) {
       end_date = val;
-    } else if (ceph_argparse_witharg(args, i, &val, "--time", (char*)NULL)) {
-      time = val;
     } else if (ceph_argparse_witharg(args, i, &val, "--access", (char*)NULL)) {
       access = val;
       perm_mask = str_to_perm(access.c_str());
@@ -1093,7 +1111,9 @@ int main(int argc, char **argv)
       cerr << "date wasn't specified" << std::endl;
       return usage();
     }
-    int r = store->remove_temp_objects(date, time);
+    string parsed_date, parsed_time;
+    parse_date(date, NULL, &parsed_date, &parsed_time);
+    int r = store->remove_temp_objects(parsed_date, parsed_time);
     if (r < 0) {
       cerr << "failure removing temp objects: " << cpp_strerror(r) << std::endl;
       return 1;
index 94b6ce4febdb357a081f54e7e916cbf97fd85b5e..75a18aaa455ea4e760fb34cfc74358bc9c7fb6bd 100644 (file)
      --bucket=<bucket>
      --pool=<pool>
      --object=<object>
-     --date=<yyyy-mm-dd>
-     --start-date=<yyyy-mm-dd>
-     --end-date=<yyyy-mm-dd>
-     --time=<HH:MM:SS>
+     --date=<date>
+     --start-date=<date>
+     --end-date=<date>
      --bucket-id=<bucket-id>
      --format=<format>         specify output format for certain operations: xml,
                                json
@@ -61,6 +60,9 @@
      --skip-zero-entries       log show only dumps entries that don't have zero value
                                in one of the numeric field
      --yes-i-really-mean-it    required for certain operations
+  
+  <date> := "YYYY-MM-DD[ hh:mm:ss]"
+  
     --conf/-c        Read configuration from the given configuration file
     -d               Run in foreground, log to stderr.
     -f               Run in foreground, log to usual location.