]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge remote-tracking branch 'origin/master' into wip-rgw-versioning-4
authorYehuda Sadeh <yehuda@redhat.com>
Fri, 30 Jan 2015 00:05:14 +0000 (16:05 -0800)
committerYehuda Sadeh <yehuda@redhat.com>
Fri, 30 Jan 2015 00:05:14 +0000 (16:05 -0800)
Conflicts:
src/rgw/rgw_admin.cc

14 files changed:
1  2 
src/common/config_opts.h
src/osd/ReplicatedPG.cc
src/rgw/rgw_admin.cc
src/rgw/rgw_bucket.cc
src/rgw/rgw_common.cc
src/rgw/rgw_common.h
src/rgw/rgw_json_enc.cc
src/rgw/rgw_main.cc
src/rgw/rgw_rados.h
src/rgw/rgw_rest.cc
src/rgw/rgw_rest.h
src/rgw/rgw_rest_replica_log.cc
src/rgw/rgw_rest_s3.cc
src/test/encoding/types.h

Simple merge
Simple merge
index 092eac6a19cdb7928110d3561edaaaad637ed5ca,ad4122cd5570f5cf514bc0e2578c0bfbd0ca64a0..6efb129548c0cad927657791c155e0dc2edf4f45
@@@ -605,11 -557,17 +609,18 @@@ public
    }
  };
  
- static int init_bucket(string& bucket_name, RGWBucketInfo& bucket_info, rgw_bucket& bucket)
+ static int init_bucket(const string& bucket_name, const string& bucket_id,
+                        RGWBucketInfo& bucket_info, rgw_bucket& bucket)
  {
    if (!bucket_name.empty()) {
-     int r = store->get_bucket_info(obj_ctx, bucket_name, bucket_info, NULL);
 +    RGWObjectCtx obj_ctx(store);
 -      r = store->get_bucket_info(NULL, bucket_name, bucket_info, NULL);
+     int r;
+     if (bucket_id.empty()) {
 -      r = store->get_bucket_instance_info(NULL, bucket_instance_id, bucket_info, NULL, NULL);
++      r = store->get_bucket_info(obj_ctx, bucket_name, bucket_info, NULL);
+     } else {
+       string bucket_instance_id = bucket_name + ":" + bucket_id;
++      r = store->get_bucket_instance_info(obj_ctx, bucket_instance_id, bucket_info, NULL, NULL);
+     }
      if (r < 0) {
        cerr << "could not get bucket info for bucket=" << bucket_name << std::endl;
        return r;
      }   
    }
  
 +  if (opt_cmd == OPT_OLH_GET || opt_cmd == OPT_OLH_READLOG) {
 +    if (bucket_name.empty()) {
 +      cerr << "ERROR: bucket not specified" << std::endl;
 +      return EINVAL;
 +    }
 +    if (object.empty()) {
 +      cerr << "ERROR: object not specified" << std::endl;
 +      return EINVAL;
 +    }
 +    RGWBucketInfo bucket_info;
 +    int ret = init_bucket(bucket_name, bucket_info, bucket);
 +    if (ret < 0) {
 +      cerr << "ERROR: could not init bucket: " << cpp_strerror(-ret) << std::endl;
 +      return -ret;
 +    }
 +  }
 +
 +  if (opt_cmd == OPT_OLH_GET) {
 +    RGWOLHInfo olh;
 +    rgw_obj obj(bucket, object);
 +    int ret = store->get_olh(obj, &olh);
 +    if (ret < 0) {
 +      cerr << "ERROR: failed reading olh: " << cpp_strerror(-ret) << std::endl;
 +      return -ret;
 +    }
 +    encode_json("olh", olh, formatter);
 +    formatter->flush(cout);
 +  }
 +
 +  if (opt_cmd == OPT_OLH_READLOG) {
 +    map<uint64_t, vector<rgw_bucket_olh_log_entry> > log;
 +    bool is_truncated;
 +
 +    RGWObjectCtx rctx(store);
 +    rgw_obj obj(bucket, object);
 +
 +    RGWObjState *state;
 +
 +    int ret = store->get_obj_state(&rctx, obj, &state, NULL, false); /* don't follow olh */
 +    if (ret < 0) {
 +      return ret;
 +    }
 +
 +    ret = store->bucket_index_read_olh_log(*state, obj, 0, &log, &is_truncated);
 +    if (ret < 0) {
 +      cerr << "ERROR: failed reading olh: " << cpp_strerror(-ret) << std::endl;
 +      return -ret;
 +    }
 +    formatter->open_object_section("result");
 +    encode_json("is_truncated", is_truncated, formatter);
 +    encode_json("log", log, formatter);
 +    formatter->close_section();
 +    formatter->flush(cout);
 +  }
 +
 +  if (opt_cmd == OPT_BI_GET) {
 +    RGWBucketInfo bucket_info;
 +    int ret = init_bucket(bucket_name, bucket_info, bucket);
 +    if (ret < 0) {
 +      cerr << "ERROR: could not init bucket: " << cpp_strerror(-ret) << std::endl;
 +      return -ret;
 +    }
 +    rgw_obj obj(bucket, object);
 +    if (!object_version.empty()) {
 +      obj.set_instance(object_version);
 +    }
 +
 +    rgw_cls_bi_entry entry;
 +
 +    ret = store->bi_get(bucket, obj, bi_index_type, &entry);
 +    if (ret < 0) {
 +      cerr << "ERROR: bi_get(): " << cpp_strerror(-ret) << std::endl;
 +      return -ret;
 +    }
 +
 +    encode_json("entry", entry, formatter);
 +    formatter->flush(cout);
 +  }
 +
 +  if (opt_cmd == OPT_BI_PUT) {
 +    RGWBucketInfo bucket_info;
 +    int ret = init_bucket(bucket_name, bucket_info, bucket);
 +    if (ret < 0) {
 +      cerr << "ERROR: could not init bucket: " << cpp_strerror(-ret) << std::endl;
 +      return -ret;
 +    }
 +
 +    rgw_cls_bi_entry entry;
 +    cls_rgw_obj_key key;
 +    ret = read_decode_json(infile, entry, &key);
 +    if (ret < 0) {
 +      return 1;
 +    }
 +
 +    rgw_obj obj(bucket, key.name);
 +    obj.set_instance(key.instance);
 +
 +    ret = store->bi_put(bucket, obj, entry);
 +    if (ret < 0) {
 +      cerr << "ERROR: bi_put(): " << cpp_strerror(-ret) << std::endl;
 +      return -ret;
 +    }
 +  }
 +
 +  if (opt_cmd == OPT_BI_LIST) {
 +    RGWBucketInfo bucket_info;
 +    int ret = init_bucket(bucket_name, bucket_info, bucket);
 +    if (ret < 0) {
 +      cerr << "ERROR: could not init bucket: " << cpp_strerror(-ret) << std::endl;
 +      return -ret;
 +    }
 +
 +    list<rgw_cls_bi_entry> entries;
 +    bool is_truncated;
 +    if (max_entries < 0) {
 +      max_entries = 1000;
 +    }
 +
 +
 +    formatter->open_array_section("entries");
 +
 +    do {
 +      entries.clear();
 +      ret = store->bi_list(bucket, object, marker, max_entries, &entries, &is_truncated);
 +      if (ret < 0) {
 +        cerr << "ERROR: bi_list(): " << cpp_strerror(-ret) << std::endl;
 +        return -ret;
 +      }
 +
 +      list<rgw_cls_bi_entry>::iterator iter;
 +      for (iter = entries.begin(); iter != entries.end(); ++iter) {
 +        rgw_cls_bi_entry& entry = *iter;
 +        encode_json("entry", entry, formatter);
 +        marker = entry.idx;
 +      }
 +      formatter->flush(cout);
 +    } while (is_truncated);
 +    formatter->close_section();
 +    formatter->flush(cout);
 +  }
 +
    if (opt_cmd == OPT_OBJECT_RM) {
      RGWBucketInfo bucket_info;
-     int ret = init_bucket(bucket_name, bucket_info, bucket);
+     int ret = init_bucket(bucket_name, bucket_id, bucket_info, bucket);
      if (ret < 0) {
        cerr << "ERROR: could not init bucket: " << cpp_strerror(-ret) << std::endl;
        return -ret;
Simple merge
Simple merge
index 394c11ed774b46d771e0b5e001a65848fb2c3cb4,306f65e06f2a2a28bdc92dcda1b8a770dd042de5..e96d916f814b34f07a17798b2f352e63f3419816
@@@ -264,8 -252,9 +264,9 @@@ class RGWHTTPArg
    string& get(const char *name, bool *exists = NULL);
    int get_bool(const string& name, bool *val, bool *exists);
    int get_bool(const char *name, bool *val, bool *exists);
+   void get_bool(const char *name, bool *val, bool def_val);
  
 -  /** see if a parameter is contained in this XMLArgs */
 +  /** see if a parameter is contained in this RGWHTTPArgs */
    bool exists(const char *name) {
      map<string, string>::iterator iter = val_map.find(name);
      return (iter != val_map.end());
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 834e90d335b073f70dc1ad8f530fc817c4da5de6,30f051e9ac88d25e1f4f6a20b851a36fbfd3e624..0eeae6bc13b7733b496a503585c6dbcde15d8c16
@@@ -1705,10 -1541,10 +1705,10 @@@ void RGWCompleteMultipart_ObjStore_S3::
      dump_start(s);
      s->formatter->open_object_section_in_ns("CompleteMultipartUploadResult",
                          "http://s3.amazonaws.com/doc/2006-03-01/");
-     if (g_conf->rgw_dns_name.length())
-       s->formatter->dump_format("Location", "%s.%s", s->bucket_name_str.c_str(), g_conf->rgw_dns_name.c_str());
+     if (s->info.domain.length())
+       s->formatter->dump_format("Location", "%s.%s", s->bucket_name_str.c_str(), s->info.domain.c_str());
      s->formatter->dump_string("Bucket", s->bucket_name_str);
 -    s->formatter->dump_string("Key", s->object);
 +    s->formatter->dump_string("Key", s->object.name);
      s->formatter->dump_string("ETag", etag);
      s->formatter->close_section();
      rgw_flush_formatter_and_reset(s, s->formatter);
Simple merge