]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mon: destroy-new -> purge-new
authorSage Weil <sage@redhat.com>
Fri, 15 Jun 2018 19:05:20 +0000 (14:05 -0500)
committerSage Weil <sage@redhat.com>
Fri, 15 Jun 2018 19:11:01 +0000 (14:11 -0500)
What we actually want is a purge, not a destroy.  Destroy leaves the OSD
ID in used and allows it to be recreated.  What ceph-volume wants is to
purge all trace of the failed OSD setup.

Signed-off-by: Sage Weil <sage@redhat.com>
qa/workunits/cephtool/test.sh
src/mon/MonCap.cc
src/mon/MonCommands.h
src/mon/OSDMonitor.cc

index e525df9452cb775b4ded088769752cfe9e19b8ec..ac181ad3c3eb5065577f947af193b76a9b1b33fa 100755 (executable)
@@ -1334,7 +1334,7 @@ function test_mon_osd_create_destroy()
   expect_false ceph auth get-key client.osd-lockbox.$uuid2
   expect_false ceph config-key exists dm-crypt/osd/$uuid2/luks
 
-  ceph osd destroy-new osd.$id2 --yes-i-really-mean-it
+  ceph osd destroy osd.$id2 --yes-i-really-mean-it
   ceph osd destroy $id2 --yes-i-really-mean-it
   ceph osd find $id2
   expect_false ceph auth get-key osd.$id2
@@ -1348,13 +1348,13 @@ function test_mon_osd_create_destroy()
   ceph auth get-key osd.$id3
   ceph config-key exists dm-crypt/osd/$uuid3/luks
 
-  ceph osd purge osd.$id3 --yes-i-really-mean-it
+  ceph osd purge-new osd.$id3 --yes-i-really-mean-it
   expect_false ceph osd find $id2
   expect_false ceph auth get-key osd.$id2
   expect_false ceph auth get-key client.osd-lockbox.$uuid3
   expect_false ceph config-key exists dm-crypt/osd/$uuid3/luks
   ceph osd purge osd.$id3 --yes-i-really-mean-it
-  ceph osd purge osd.$id3 --yes-i-really-mean-it # idempotent
+  ceph osd purge-new osd.$id3 --yes-i-really-mean-it # idempotent
 
   ceph osd purge osd.$id --yes-i-really-mean-it
   ceph osd purge 123456 --yes-i-really-mean-it
index bd813cfd61f0044dda2bd6fd7e39bc4cfedc11cc..05ceaaa97c4977e2a241494a0261cd53e8527d05 100644 (file)
@@ -217,7 +217,7 @@ void MonCapGrant::expand_profile_mon(const EntityName& name) const
     profile_grants.push_back(MonCapGrant("osd", MON_CAP_R));  // read osdmap
     profile_grants.push_back(MonCapGrant("mon getmap"));
     profile_grants.push_back(MonCapGrant("osd new"));
-    profile_grants.push_back(MonCapGrant("osd destroy-new"));
+    profile_grants.push_back(MonCapGrant("osd purge-new"));
   }
   if (profile == "bootstrap-mds") {
     profile_grants.push_back(MonCapGrant("mon", MON_CAP_R));  // read monmap
index 9739485bd715fe6503960f35f972f34dd5d5615f..0f9d1c2cafe18caee1dd1a0ce9a950f2da242f71 100644 (file)
@@ -874,12 +874,11 @@ COMMAND("osd destroy " \
         "but removes cephx keys, config-key data and lockbox keys, "\
         "rendering data permanently unreadable.", \
         "osd", "rw", "cli,rest")
-COMMAND("osd destroy-new " \
+COMMAND("osd purge-new " \
         "name=id,type=CephOsdName " \
         "name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
-        "mark osd as being destroyed. Keeps the ID intact (allowing reuse), " \
-        "but removes cephx keys, config-key data and lockbox keys, "\
-        "rendering data permanently unreadable.  Only works on new, unbooted osd ids.", \
+        "purge all traces of an OSD that was partially created but never " \
+       "started", \
         "osd", "rw", "cli,rest")
 COMMAND("osd purge " \
         "name=id,type=CephOsdName " \
index 4dc4119e8dbb9995847ca7cbd252b546297bafff..683c4d59fcea67f32f453881375a426d4def6e0c 100644 (file)
@@ -10501,7 +10501,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
 
   } else if (prefix == "osd destroy" ||
             prefix == "osd purge" ||
-            prefix == "osd destroy-new") {
+            prefix == "osd purge-new") {
     /* Destroying an OSD means that we don't expect to further make use of
      * the OSDs data (which may even become unreadable after this operation),
      * and that we are okay with scrubbing all its cephx keys and config-key
@@ -10530,10 +10530,10 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
       goto reply;
     }
 
-    bool is_destroy = (prefix == "osd destroy" ||
-                      prefix == "osd destroy-new");
+    bool is_destroy = (prefix == "osd destroy");
     if (!is_destroy) {
-      assert("osd purge" == prefix);
+      assert("osd purge" == prefix ||
+            "osd purge-new" == prefix);
     }
 
     string sure;
@@ -10558,7 +10558,7 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
       goto reply;
     }
 
-    if (prefix == "osd destroy-new" &&
+    if (prefix == "osd purge-new" &&
        (osdmap.get_state(id) & CEPH_OSD_NEW) == 0) {
       ss << "osd." << id << " is not new";
       err = -EPERM;