okay: bool = True
for daemon_type, daemon_ids in daemon_map.items():
r = self.cephadm_services[daemon_type_to_service(
- daemon_type)].ok_to_stop(daemon_ids, force)
+ daemon_type)].ok_to_stop(daemon_ids, force=force)
if r.retval:
okay = False
# collect error notifications so user can see every daemon causing host
except MonCommandFailed as e:
logger.warning('Failed to set Dashboard config for %s: %s', service_name, e)
- def ok_to_stop(self, daemon_ids: List[str], force: bool = False) -> HandleCommandResult:
+ def ok_to_stop(self,
+ daemon_ids: List[str],
+ force: bool = False,
+ known: Optional[List[str]] = None) -> HandleCommandResult:
names = [f'{self.TYPE}.{d_id}' for d_id in daemon_ids]
out = f'It is presumed safe to stop {names}'
err = f'It is NOT safe to stop {names}'
num = len(mgr_map.get('standbys'))
return bool(num)
- def ok_to_stop(self, daemon_ids: List[str], force: bool = False) -> HandleCommandResult:
+ def ok_to_stop(self,
+ daemon_ids: List[str],
+ force: bool = False,
+ known: Optional[List[str]] = None) -> HandleCommandResult:
# ok to stop if there is more than 1 mgr and not trying to stop the active mgr
warn, warn_message = self._enough_daemons_to_stop(self.TYPE, daemon_ids, 'Mgr', 1, True)
raise OrchestratorError(err)
self.mgr.log.info('updated period')
- def ok_to_stop(self, daemon_ids: List[str], force: bool = False) -> HandleCommandResult:
+ def ok_to_stop(self,
+ daemon_ids: List[str],
+ force: bool = False,
+ known: Optional[List[str]] = None) -> HandleCommandResult:
# if load balancer (ha-rgw) is present block if only 1 daemon up otherwise ok
# if no load balancer, warn if > 1 daemon, block if only 1 daemon
def ha_rgw_present() -> bool:
return daemon_spec
- def ok_to_stop(self, daemon_ids: List[str], force: bool = False) -> HandleCommandResult:
+ def ok_to_stop(self,
+ daemon_ids: List[str],
+ force: bool = False,
+ known: Optional[List[str]] = None) -> HandleCommandResult:
# if only 1 rbd-mirror, alert user (this is not passable with --force)
warn, warn_message = self._enough_daemons_to_stop(
self.TYPE, daemon_ids, 'Rbdmirror', 1, True)
import errno
import json
import logging
-from typing import List, cast
+from typing import List, cast, Optional
from mgr_module import HandleCommandResult
from ceph.deployment.service_spec import IscsiServiceSpec
get_set_cmd_dicts=get_set_cmd_dicts
)
- def ok_to_stop(self, daemon_ids: List[str], force: bool = False) -> HandleCommandResult:
+ def ok_to_stop(self,
+ daemon_ids: List[str],
+ force: bool = False,
+ known: Optional[List[str]] = None) -> HandleCommandResult:
# if only 1 iscsi, alert user (this is not passable with --force)
warn, warn_message = self._enough_daemons_to_stop(self.TYPE, daemon_ids, 'Iscsi', 1, True)
if warn:
import errno
import logging
import os
-from typing import List, Any, Tuple, Dict, cast
+from typing import List, Any, Tuple, Dict, Optional, cast
from mgr_module import HandleCommandResult
service_url
)
- def ok_to_stop(self, daemon_ids: List[str], force: bool = False) -> HandleCommandResult:
+ def ok_to_stop(self,
+ daemon_ids: List[str],
+ force: bool = False,
+ known: Optional[List[str]] = None) -> HandleCommandResult:
warn, warn_message = self._enough_daemons_to_stop(self.TYPE, daemon_ids, 'Grafana', 1)
if warn and not force:
return HandleCommandResult(-errno.EBUSY, '', warn_message)
service_url
)
- def ok_to_stop(self, daemon_ids: List[str], force: bool = False) -> HandleCommandResult:
+ def ok_to_stop(self,
+ daemon_ids: List[str],
+ force: bool = False,
+ known: Optional[List[str]] = None) -> HandleCommandResult:
warn, warn_message = self._enough_daemons_to_stop(self.TYPE, daemon_ids, 'Alertmanager', 1)
if warn and not force:
return HandleCommandResult(-errno.EBUSY, '', warn_message)
service_url
)
- def ok_to_stop(self, daemon_ids: List[str], force: bool = False) -> HandleCommandResult:
+ def ok_to_stop(self,
+ daemon_ids: List[str],
+ force: bool = False,
+ known: Optional[List[str]] = None) -> HandleCommandResult:
warn, warn_message = self._enough_daemons_to_stop(self.TYPE, daemon_ids, 'Prometheus', 1)
if warn and not force:
return HandleCommandResult(-errno.EBUSY, '', warn_message)
assert self.TYPE == daemon_spec.daemon_type
return {}, []
- def ok_to_stop(self, daemon_ids: List[str], force: bool = False) -> HandleCommandResult:
+ def ok_to_stop(self,
+ daemon_ids: List[str],
+ force: bool = False,
+ known: Optional[List[str]] = None) -> HandleCommandResult:
# since node exporter runs on each host and cannot compromise data, no extra checks required
names = [f'{self.TYPE}.{d_id}' for d_id in daemon_ids]
out = f'It is presumed safe to stop {names}'
import errno
import logging
-from typing import Dict, Tuple, Any, List, cast
+from typing import Dict, Tuple, Any, List, cast, Optional
from mgr_module import HandleCommandResult
super().post_remove(daemon)
self.remove_rgw_keyring(daemon)
- def ok_to_stop(self, daemon_ids: List[str], force: bool = False) -> HandleCommandResult:
+ def ok_to_stop(self,
+ daemon_ids: List[str],
+ force: bool = False,
+ known: Optional[List[str]] = None) -> HandleCommandResult:
# if only 1 nfs, alert user (this is not passable with --force)
warn, warn_message = self._enough_daemons_to_stop(self.TYPE, daemon_ids, 'NFS', 1, True)
if warn:
return True
return False
- def _wait_for_ok_to_stop(self, s: DaemonDescription) -> bool:
+ def _wait_for_ok_to_stop(self, s: DaemonDescription,
+ known: Optional[List[str]] = None) -> bool:
# only wait a little bit; the service might go away for something
assert s.daemon_type is not None
assert s.daemon_id is not None