mgr/rook: implement remove_daemons()

Signed-off-by: Sage Weil <sage@redhat.com>
This commit is contained in:
Sage Weil 2020-03-12 18:00:35 -04:00
parent 56cfeb68a4
commit bdbeeed680
2 changed files with 25 additions and 1 deletions

View File

@ -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.

View File

@ -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]