# setting force flag to retain old functionality.
r = self.mgr.cephadm_services[daemon_type_to_service(s.daemon_type)].ok_to_stop([
- s.daemon_id], force=True)
+ s.daemon_id], known=known, force=True)
if not r.retval:
logger.info(f'Upgrade: {r.stdout}')
):
return
+ to_upgrade = []
+ known_ok_to_stop: List[str] = []
for d in need_upgrade:
assert d.daemon_type is not None
assert d.daemon_id is not None
assert d.hostname is not None
+ if not d.container_image_id:
+ if d.container_image_name == target_image:
+ logger.debug(
+ 'daemon %s has unknown container_image_id but has correct image name' % (d.name()))
+ continue
+
+ if known_ok_to_stop:
+ if d.name() in known_ok_to_stop:
+ logger.info(f'Upgrade: {d.name()} is also safe to restart')
+ to_upgrade.append(d)
+ continue
+
+ if not self._wait_for_ok_to_stop(d, known_ok_to_stop):
+ return
+
+ to_upgrade.append(d)
+
+ # if we don't have a list of others to consider, stop now
+ if not known_ok_to_stop:
+ break
+
+ num = 1
+ for d in to_upgrade:
+ assert d.daemon_type is not None
+ assert d.daemon_id is not None
+ assert d.hostname is not None
+
+ self._update_upgrade_progress(done / len(daemons))
+
# make sure host has latest container image
out, errs, code = CephadmServe(self.mgr)._run_cephadm(
d.hostname, '', 'inspect-image', [],
self._save_upgrade_state()
return
- self._update_upgrade_progress(done / len(daemons))
-
- if not d.container_image_id:
- if d.container_image_name == target_image:
- logger.debug(
- 'daemon %s has unknown container_image_id but has correct image name' % (d.name()))
- continue
- if not self._wait_for_ok_to_stop(d):
- return
- logger.info('Upgrade: Updating %s.%s' %
- (d.daemon_type, d.daemon_id))
+ if len(to_upgrade) > 1:
+ logger.info('Upgrade: Updating %s.%s (%d/%d)' %
+ (d.daemon_type, d.daemon_id, num, len(to_upgrade)))
+ else:
+ logger.info('Upgrade: Updating %s.%s' %
+ (d.daemon_type, d.daemon_id))
try:
self.mgr._daemon_action(
d.daemon_type,
f'Upgrade daemon: {d.name()}: {e}'
],
})
+ return
+ num += 1
+ if to_upgrade:
return
# complete mon upgrade?