]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/orchestrator_cli: upgrade {start,pause,resume,stop}
authorSage Weil <sage@redhat.com>
Mon, 2 Dec 2019 22:02:46 +0000 (16:02 -0600)
committerSage Weil <sage@redhat.com>
Fri, 17 Jan 2020 18:22:02 +0000 (12:22 -0600)
Signed-off-by: Sage Weil <sage@redhat.com>
doc/mgr/orchestrator_modules.rst
src/pybind/mgr/orchestrator.py
src/pybind/mgr/orchestrator_cli/module.py

index faa1c675f29614647b36a028a773bd3aadebcf0b..52ca56d88199c0c14d0b654c2bab3ddcac4139c1 100644 (file)
@@ -314,7 +314,6 @@ Upgrades
 .. automethod:: Orchestrator.upgrade_available
 .. automethod:: Orchestrator.upgrade_start
 .. automethod:: Orchestrator.upgrade_status
-.. autoclass:: UpgradeSpec
 .. autoclass:: UpgradeStatusSpec
 
 Utility
index 58b460b4e0f8237057b00e2f68b4a27cd53331f7..a879087985973820aa6be5856447f4f2428ab61e 100644 (file)
@@ -1008,12 +1008,22 @@ class Orchestrator(object):
         # type: (Optional[str], Optional[str]) -> Completion
         raise NotImplementedError()
 
-    @_hide_in_features
-    def upgrade_start(self, upgrade_spec):
-        # type: (UpgradeSpec) -> Completion
+    def upgrade_start(self, image, version):
+        # type: (Optional[str], Optional[str]) -> Completion
+        raise NotImplementedError()
+
+    def upgrade_pause(self):
+        # type: () -> Completion
+        raise NotImplementedError()
+
+    def upgrade_resume(self):
+        # type: () -> Completion
+        raise NotImplementedError()
+
+    def upgrade_stop(self):
+        # type: () -> Completion
         raise NotImplementedError()
 
-    @_hide_in_features
     def upgrade_status(self):
         # type: () -> Completion
         """
@@ -1035,17 +1045,11 @@ class Orchestrator(object):
         raise NotImplementedError()
 
 
-class UpgradeSpec(object):
-    # Request to orchestrator to initiate an upgrade to a particular
-    # version of Ceph
-    def __init__(self):
-        self.target_version = None
-
-
 class UpgradeStatusSpec(object):
     # Orchestrator's report on what's going on with any ongoing upgrade
     def __init__(self):
         self.in_progress = False  # Is an upgrade underway?
+        self.target_image = None
         self.services_complete = []  # Which daemon types are fully updated?
         self.message = ""  # Freeform description
 
index 64391f428ba73f03190811d3dc3733a3da505d65..82b3f38ca9d2cfac4d9d6a0d5921e720612d9feb 100644 (file)
@@ -745,3 +745,57 @@ Usage:
         self._orchestrator_wait([completion])
         orchestrator.raise_if_exception(completion)
         return HandleCommandResult(stdout=completion.result_str())
+
+    @orchestrator._cli_write_command(
+        'upgrade status',
+        desc='Check service versions vs available and target containers')
+    def _upgrade_status(self):
+        completion = self.upgrade_status()
+        self._orchestrator_wait([completion])
+        orchestrator.raise_if_exception(completion)
+        r = {
+            'target_image': completion.result.target_image,
+            'in_progress': completion.result.in_progress,
+            'services_complete': completion.result.services_complete,
+            'message': completion.result.message,
+        }
+        out = json.dumps(r, indent=4)
+        return HandleCommandResult(stdout=out)
+
+    @orchestrator._cli_write_command(
+        'upgrade start',
+        'name=image,type=CephString,req=false '
+        'name=ceph_version,type=CephString,req=false',
+        desc='Initiate upgrade')
+    def _upgrade_start(self, image=None, ceph_version=None):
+        completion = self.upgrade_start(image, ceph_version)
+        self._orchestrator_wait([completion])
+        orchestrator.raise_if_exception(completion)
+        return HandleCommandResult(stdout=completion.result_str())
+
+    @orchestrator._cli_write_command(
+        'upgrade pause',
+        desc='Pause an in-progress upgrade')
+    def _upgrade_pause(self):
+        completion = self.upgrade_pause()
+        self._orchestrator_wait([completion])
+        orchestrator.raise_if_exception(completion)
+        return HandleCommandResult(stdout=completion.result_str())
+
+    @orchestrator._cli_write_command(
+        'upgrade resume',
+        desc='Resume paused upgrade')
+    def _upgrade_resume(self):
+        completion = self.upgrade_resume()
+        self._orchestrator_wait([completion])
+        orchestrator.raise_if_exception(completion)
+        return HandleCommandResult(stdout=completion.result_str())
+
+    @orchestrator._cli_write_command(
+        'upgrade stop',
+        desc='Stop an in-progress upgrade')
+    def _upgrade_stop(self):
+        completion = self.upgrade_stop()
+        self._orchestrator_wait([completion])
+        orchestrator.raise_if_exception(completion)
+        return HandleCommandResult(stdout=completion.result_str())