]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/rook: remove prepare jobs based on PVC not device set
authorJoseph Sawaya <jsawaya@redhat.com>
Thu, 19 Aug 2021 18:49:44 +0000 (14:49 -0400)
committerJoseph Sawaya <jsawaya@redhat.com>
Thu, 19 Aug 2021 20:01:51 +0000 (16:01 -0400)
This commit fixes a bug in the OSD removal process that removes all
prepare jobs for OSDs in the same device set as the one that is being
removed.

Signed-off-by: Joseph Sawaya <jsawaya@redhat.com>
src/pybind/mgr/rook/rook_cluster.py

index 89659cee473751a880e3ccf8b294b8e24b242f20..9fe2db3273377c0eda60bf0b3a7bc493c38aeb51 100644 (file)
@@ -509,6 +509,7 @@ class DefaultRemover():
 
     def remove_device_sets(self) -> str:
         self.to_remove: Dict[str, int] = {}
+        self.pvc_to_remove: List[str] = []
         for pod in self.pods.items:
             if (
                 hasattr(pod, 'metadata') 
@@ -520,6 +521,7 @@ class DefaultRemover():
                     self.to_remove[pod.metadata.labels['ceph.rook.io/DeviceSet']] = self.to_remove[pod.metadata.labels['ceph.rook.io/DeviceSet']] + 1
                 else:
                     self.to_remove[pod.metadata.labels['ceph.rook.io/DeviceSet']] = 1
+                self.pvc_to_remove.append(pod.metadata.labels['ceph.rook.io/pvc'])
         def _remove_osds(current_cluster, new_cluster):
             # type: (ccl.CephCluster, ccl.CephCluster) -> ccl.CephCluster
             assert new_cluster.spec.storage is not None and new_cluster.spec.storage.storageClassDeviceSets is not None
@@ -575,7 +577,7 @@ class DefaultRemover():
 
     def clean_up_prepare_jobs_and_pvc(self) -> None:
         for job in self.jobs.items:
-            if job.metadata.labels['app'] == 'rook-ceph-osd-prepare' and job.metadata.labels['ceph.rook.io/DeviceSet'] in self.to_remove:
+            if job.metadata.labels['app'] == 'rook-ceph-osd-prepare' and job.metadata.labels['ceph.rook.io/pvc'] in self.pvc_to_remove:
                 self.batchV1_api.delete_namespaced_job(name=job.metadata.name, namespace='rook-ceph', propagation_policy='Foreground')
                 self.coreV1_api.delete_namespaced_persistent_volume_claim(name=job.metadata.labels['ceph.rook.io/pvc'], namespace='rook-ceph', propagation_policy='Foreground')