]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: move fail_over from upgrade.py to MgrService
authorSebastian Wagner <sebastian.wagner@suse.com>
Wed, 19 Aug 2020 10:39:39 +0000 (12:39 +0200)
committerSebastian Wagner <sebastian.wagner@suse.com>
Fri, 28 Aug 2020 07:51:19 +0000 (09:51 +0200)
Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
src/pybind/mgr/cephadm/services/cephadmservice.py
src/pybind/mgr/cephadm/upgrade.py

index b8b8ea968a75bfbfc65e93c6242a41601d66c29e..304e4a10a00d2246e2ba263f2fb987129df26499 100644 (file)
@@ -362,6 +362,23 @@ class MgrService(CephadmService):
         # if no active mgr found, return empty Daemon Desc
         return DaemonDescription()
 
+    def fail_over(self):
+        mgr_map = self.mgr.get('mgr_map')
+        num = len(mgr_map.get('standbys'))
+        if not num:
+            raise OrchestratorError('Need standby mgr daemon', event_kind_subject=(
+                'daemon', 'mgr' + self.mgr.get_mgr_id()))
+
+        self.mgr.events.for_daemon('mgr' + self.mgr.get_mgr_id(),
+                                   'INFO', 'Failing over to other MGR')
+        logger.info('Failing over to other MGR')
+
+        # fail over
+        ret, out, err = self.mgr.check_mon_command({
+            'prefix': 'mgr fail',
+            'who': self.mgr.get_mgr_id(),
+        })
+
 
 class MdsService(CephadmService):
     TYPE = 'mds'
index f409e839bad5d352336c9f7fca0a9cb40f2540f5..89cc39038d809f48fcd0d3506831a99bb7d496b8 100644 (file)
@@ -317,12 +317,12 @@ class CephadmUpgrade:
                 return
 
             if need_upgrade_self:
-                mgr_map = self.mgr.get('mgr_map')
-                num = len(mgr_map.get('standbys'))
-                if not num:
+                try:
+                    self.mgr.mgr_service.fail_over()
+                except OrchestratorError as e:
                     self._fail_upgrade('UPGRADE_NO_STANDBY_MGR', {
                         'severity': 'warning',
-                        'summary': 'Upgrade: Need standby mgr daemon',
+                        'summary': f'Upgrade: {e}',
                         'count': 1,
                         'detail': [
                             'The upgrade process needs to upgrade the mgr, '
@@ -331,17 +331,7 @@ class CephadmUpgrade:
                     })
                     return
 
-                logger.info('Upgrade: there are %d other already-upgraded '
-                            'standby mgrs, failing over' % num)
-
-                self._update_upgrade_progress(done / len(daemons))
-
-                # fail over
-                ret, out, err = self.mgr.check_mon_command({
-                    'prefix': 'mgr fail',
-                    'who': self.mgr.get_mgr_id(),
-                })
-                return
+                return  # unreachable code, as fail_over never returns
             elif daemon_type == 'mgr':
                 if 'UPGRADE_NO_STANDBY_MGR' in self.mgr.health_checks:
                     del self.mgr.health_checks['UPGRADE_NO_STANDBY_MGR']