]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/orchestrator: add rbd-mirror commands and hooks
authorSage Weil <sage@redhat.com>
Fri, 8 Nov 2019 16:12:27 +0000 (10:12 -0600)
committerSage Weil <sage@redhat.com>
Fri, 8 Nov 2019 17:25:32 +0000 (11:25 -0600)
This is somewhat different from the other services in that the name is
basically unused: we have a single pool of rbd-mirror daemons for the
whole cluster.

Signed-off-by: Sage Weil <sage@redhat.com>
src/pybind/mgr/orchestrator.py
src/pybind/mgr/orchestrator_cli/module.py

index 03923aefd6acd8e61210786777669eff9b52ed99..dc9e57f2fe9ed7a686b0b80279d99932469626fa 100644 (file)
@@ -496,6 +496,24 @@ class Orchestrator(object):
         """
         raise NotImplementedError()
 
+    def add_rbd_mirror(self, spec):
+        # type: (StatelessServiceSpec) -> WriteCompletion
+        """Create rbd-mirror cluster"""
+        raise NotImplementedError()
+
+    def remove_rbd_mirror(self):
+        # type: (str) -> WriteCompletion
+        """Remove rbd-mirror cluster"""
+        raise NotImplementedError()
+
+    def update_rbd_mirror(self, spec):
+        # type: (StatelessServiceSpec) -> WriteCompletion
+        """
+        Update / redeploy rbd-mirror cluster
+        Like for example changing the number of service instances.
+        """
+        raise NotImplementedError()
+
     def add_nfs(self, spec):
         # type: (NFSServiceSpec) -> WriteCompletion
         """Create a new MDS cluster"""
index 068fc2c0d3035c5c87b99d5d238e72919fcff6c8..cde3fde88e2ac820cf45a9276130bd993cd9a701 100644 (file)
@@ -354,6 +354,34 @@ Usage:
         orchestrator.raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
+    @_write_cli('orchestrator rbd-mirror add',
+                "name=num,type=CephInt,req=false "
+                "name=hosts,type=CephString,n=N,req=false",
+                'Create an rbd-mirror service')
+    def _rbd_mirror_add(self, num=None, hosts=None):
+        spec = orchestrator.StatelessServiceSpec(
+            None,
+            placement=orchestrator.PlacementSpec(nodes=hosts),
+            count=num or 1)
+        completion = self.add_rbd_mirror(spec)
+        self._orchestrator_wait([completion])
+        orchestrator.raise_if_exception(completion)
+        return HandleCommandResult(stdout=completion.result_str())
+
+    @_write_cli('orchestrator rbd-mirror update',
+                "name=num,type=CephInt,req=true "
+                "name=hosts,type=CephString,n=N,req=false",
+                'Update the number of rbd-mirror instances')
+    def _rbd_mirror_update(self, num, hosts=None):
+        spec = orchestrator.StatelessServiceSpec(
+            None,
+            placement=orchestrator.PlacementSpec(nodes=hosts),
+            count=num or 1)
+        completion = self.update_rbd_mirror(spec)
+        self._orchestrator_wait([completion])
+        orchestrator.raise_if_exception(completion)
+        return HandleCommandResult(stdout=completion.result_str())
+
     @_write_cli('orchestrator mds add',
                 "name=fs_name,type=CephString "
                 "name=num,type=CephInt,req=false "
@@ -444,6 +472,15 @@ Usage:
         orchestrator.raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
 
+    @_write_cli('orchestrator rbd-mirror rm',
+                "name=name,type=CephString,req=false",
+                'Remove rbd-mirror service or rbd-mirror service instance')
+    def _rbd_mirror_rm(self, name=None):
+        completion = self.remove_rbd_mirror(name)
+        self._orchestrator_wait([completion])
+        orchestrator.raise_if_exception(completion)
+        return HandleCommandResult(stdout=completion.result_str())
+
     @_write_cli('orchestrator mds rm',
                 "name=name,type=CephString",
                 'Remove an MDS service (mds id or fs_name)')