Skip to content

Commit

Permalink
Merge pull request #12731 from oritwas/wip-rgw-realm-set
Browse files Browse the repository at this point in the history
rgw realm set fixes

Reviewed-by: Casey Bodley <cbodley@redhat.com>
  • Loading branch information
cbodley committed Jan 9, 2017
2 parents 30cfc81 + 4facc5f commit e0acce4
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 12 deletions.
37 changes: 26 additions & 11 deletions src/rgw/rgw_admin.cc
Expand Up @@ -3045,7 +3045,7 @@ int main(int argc, char **argv)
cerr << "failed to list realmss: " << cpp_strerror(-ret) << std::endl;
return -ret;
}
formatter->open_object_section("realmss_list");
formatter->open_object_section("realms_list");
encode_json("default_info", default_id, formatter);
encode_json("realms", realms, formatter);
formatter->close_section();
Expand Down Expand Up @@ -3103,24 +3103,39 @@ int main(int argc, char **argv)
cerr << "no realm name or id provided" << std::endl;
return EINVAL;
}
if (infile.empty()) {
cerr << "no realm input file provided" << std::endl;
return EINVAL;
}
RGWRealm realm(realm_id, realm_name);
int ret = realm.init(g_ceph_context, store, false);
if (ret < 0) {
bool new_realm = false;
int ret = realm.init(g_ceph_context, store);
if (ret < 0 && ret != -ENOENT) {
cerr << "failed to init realm: " << cpp_strerror(-ret) << std::endl;
return -ret;
} else if (ret == -ENOENT) {
new_realm = true;
}
ret = read_decode_json(infile, realm);
if (ret < 0) {
return 1;
}
ret = realm.update();
if (ret < 0) {
cerr << "ERROR: couldn't store realm info: " << cpp_strerror(-ret) << std::endl;
return 1;
if (!realm_name.empty() && realm.get_name() != realm_name) {
cerr << "mismatch between --rgw-realm " << realm_name << " and json input file name " <<
realm.get_name() << std::endl;
return EINVAL;
}
/* new realm */
if (new_realm) {
cout << "clearing period and epoch for new realm" << std::endl;
realm.clear_current_period_and_epoch();
ret = realm.create();
if (ret < 0) {
cerr << "ERROR: couldn't create new realm: " << cpp_strerror(-ret) << std::endl;
return 1;
}
} else {
ret = realm.update();
if (ret < 0) {
cerr << "ERROR: couldn't store realm info: " << cpp_strerror(-ret) << std::endl;
return 1;
}
}

if (set_default) {
Expand Down
5 changes: 4 additions & 1 deletion src/rgw/rgw_rados.h
Expand Up @@ -1503,7 +1503,10 @@ class RGWRealm : public RGWSystemMetaObj
return current_period;
}
int set_current_period(RGWPeriod& period);

void clear_current_period_and_epoch() {
current_period.clear();
epoch = 0;
}
epoch_t get_epoch() const { return epoch; }

string get_control_oid();
Expand Down

0 comments on commit e0acce4

Please sign in to comment.