From: Sage Weil Date: Thu, 12 Mar 2020 22:00:35 +0000 (-0400) Subject: mgr/rook: implement remove_daemons() X-Git-Tag: v15.1.1~8^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F33868%2Fhead;p=ceph.git mgr/rook: implement remove_daemons() Signed-off-by: Sage Weil --- diff --git a/src/pybind/mgr/rook/module.py b/src/pybind/mgr/rook/module.py index 0408fee7061d..eef36bf6773a 100644 --- a/src/pybind/mgr/rook/module.py +++ b/src/pybind/mgr/rook/module.py @@ -434,6 +434,13 @@ class RookOrchestrator(MgrModule, orchestrator.Orchestrator): mgr=self ) + def remove_daemons(self, names, force): + return write_completion( + lambda: self.rook_cluster.remove_pods(names), + "Removing daemons {}".format(','.join(names)), + mgr=self + ) + def create_osds(self, drive_groups): # type: (List[DriveGroupSpec]) -> RookCompletion """ Creates OSDs from a drive group specification. diff --git a/src/pybind/mgr/rook/rook_cluster.py b/src/pybind/mgr/rook/rook_cluster.py index e704d78fc022..59300a16e37a 100644 --- a/src/pybind/mgr/rook/rook_cluster.py +++ b/src/pybind/mgr/rook/rook_cluster.py @@ -30,7 +30,7 @@ except ImportError: try: from kubernetes.client.rest import ApiException - from kubernetes.client import V1ListMeta, CoreV1Api, V1Pod + from kubernetes.client import V1ListMeta, CoreV1Api, V1Pod, V1DeleteOptions from kubernetes import watch except ImportError: class ApiException(Exception): # type: ignore @@ -349,6 +349,23 @@ class RookCluster(object): return pods_summary + def remove_pods(self, names): + pods = [i for i in self.rook_pods.items] + num = 0 + for p in pods: + d = p.to_dict() + daemon_type = d['metadata']['labels']['app'].replace('rook-ceph-','') + daemon_id = d['metadata']['labels']['ceph_daemon_id'] + name = daemon_type + '.' + daemon_id + if name in names: + self.k8s.delete_namespaced_pod( + d['metadata']['name'], + self.rook_env.namespace, + body=V1DeleteOptions() + ) + num += 1 + return "Removed %d pods" % num + def get_node_names(self): return [i.metadata.name for i in self.nodes.items]