start_time = datetime.datetime.utcnow()
deps = [] # type: List[str]
- j = None # type: Optional[str]
+ cephadm_config = {} # type: Dict[str, Any]
if daemon_type == 'prometheus':
- j, deps = self._generate_prometheus_config()
+ cephadm_config, deps = self._generate_prometheus_config()
extra_args.extend(['--config-json', '-'])
- elif daemon_type == 'node-exporter':
- j = None
elif daemon_type == 'grafana':
- j, deps = self._generate_grafana_config()
+ cephadm_config, deps = self._generate_grafana_config()
extra_args.extend(['--config-json', '-'])
elif daemon_type == 'alertmanager':
- j, deps = self._generate_alertmanager_config()
+ cephadm_config, deps = self._generate_alertmanager_config()
extra_args.extend(['--config-json', '-'])
else:
# keyring
if extra_config:
config += extra_config
- j = json.dumps({
+ cephadm_config = {
'config': config,
'keyring': keyring,
- })
+ }
extra_args.extend(['--config-and-keyring', '-'])
# osd deployments needs an --osd-uuid arg
[
'--name', name,
] + extra_args,
- stdin=j)
+ stdin=json.dumps(cephadm_config))
if not code and host in self.cache.daemons:
# prime cached service state with what we (should have)
# just created
if config_func:
config_func(spec)
- args = [] # type: ignore
+ args = [] # type: List[tuple]
for host, network, name in hosts:
daemon_id = self.get_unique_name(daemon_type, host, daemons,
spec.service_id, name)
return self._apply(spec)
def _generate_prometheus_config(self):
- # type: () -> Tuple[str, List[str]]
+ # type: () -> Tuple[Dict[str, Any], List[str]]
deps = [] # type: List[str]
# scrape mgrs
""".format(", ".join(alertmgr_targets))
# generate the prometheus configuration
- j = json.dumps({
+ return {
'files': {
'prometheus.yml': """# generated by cephadm
global:
alertmgr_configs=str(alertmgr_configs)
),
},
- })
- return j, sorted(deps)
+ }, sorted(deps)
def _generate_grafana_config(self):
- # type: () -> Tuple[str, List[str]]
+ # type: () -> Tuple[Dict[str, Any], List[str]]
deps = [] # type: List[str]
def generate_grafana_ds_config(hosts: List[str]) -> str:
config = '''# generated by cephadm
prom_services.append(dd.hostname)
deps.append(dd.name())
cert, pkey = create_self_signed_cert('Ceph', 'cephadm')
- config_file = json.dumps({
+ config_file = {
'files': {
"grafana.ini": """# generated by cephadm
[users]
'certs/cert_file': '# generated by cephadm\n%s' % cert,
'certs/cert_key': '# generated by cephadm\n%s' % pkey,
}
- })
+ }
return config_file, sorted(deps)
def _get_dashboard_url(self):
return self.get('mgr_map').get('services', {}).get('dashboard', '')
def _generate_alertmanager_config(self):
- # type: () -> Tuple[str, List[str]]
+ # type: () -> Tuple[Dict[str, Any], List[str]]
deps = [] # type: List[str]
yml = """# generated by cephadm
# See https://prometheus.io/docs/alerting/configuration/ for documentation.
hi = self.inventory.get(dd.hostname, None)
addr = hi.get('addr', dd.hostname) if hi else ""
peers.append(addr.split(':')[0] + ':' + port)
- return json.dumps({
+ return {
"files": {
"alertmanager.yml": yml
},
"peers": peers
- }), sorted(deps)
+ }, sorted(deps)
def add_prometheus(self, spec):
return self._add_daemon('prometheus', spec, self._create_prometheus)
@async_map_completion
def _create_grafana(self, daemon_id, host):
+ # type: (str, str) -> str
return self._create_daemon('grafana', daemon_id, host)
def add_alertmanager(self, spec):