extra_args = []
name = '%s.%s' % (daemon_type, daemon_id)
- # keyring
- if not keyring:
- if daemon_type == 'mon':
- ename = 'mon.'
- else:
- ename = '%s.%s' % (daemon_type, daemon_id)
- ret, keyring, err = self.mon_command({
- 'prefix': 'auth get',
- 'entity': ename,
- })
+ if daemon_type == 'prometheus':
+ j = self._generate_prometheus_config()
+ extra_args.extend(['--config-json', '-'])
+ else:
+ # keyring
+ if not keyring:
+ if daemon_type == 'mon':
+ ename = 'mon.'
+ else:
+ ename = '%s.%s' % (daemon_type, daemon_id)
+ ret, keyring, err = self.mon_command({
+ 'prefix': 'auth get',
+ 'entity': ename,
+ })
- # generate config
- ret, config, err = self.mon_command({
- "prefix": "config generate-minimal-conf",
- })
- if extra_config:
- config += extra_config
-
- if daemon_type != 'crash':
- # crash_keyring
- ret, crash_keyring, err = self.mon_command({
- 'prefix': 'auth get-or-create',
- 'entity': 'client.crash.%s' % host,
- 'caps': ['mon', 'profile crash',
- 'mgr', 'profile crash'],
+ # generate config
+ ret, config, err = self.mon_command({
+ "prefix": "config generate-minimal-conf",
})
- else:
- crash_keyring = None
+ if extra_config:
+ config += extra_config
+
+ if daemon_type != 'crash':
+ # crash_keyring
+ ret, crash_keyring, err = self.mon_command({
+ 'prefix': 'auth get-or-create',
+ 'entity': 'client.crash.%s' % host,
+ 'caps': ['mon', 'profile crash',
+ 'mgr', 'profile crash'],
+ })
+ else:
+ crash_keyring = None
- j = json.dumps({
- 'config': config,
- 'keyring': keyring,
- 'crash_keyring': crash_keyring,
- })
+ j = json.dumps({
+ 'config': config,
+ 'keyring': keyring,
+ 'crash_keyring': crash_keyring,
+ })
+ extra_args.extend(['--config-and-keyrings', '-'])
- # osd deployments needs an --osd-uuid arg
- if daemon_type == 'osd':
- if not osd_uuid_map:
- osd_uuid_map = self.get_osd_uuid_map()
- osd_uuid = osd_uuid_map.get(daemon_id, None)
- if not osd_uuid:
- raise OrchestratorError('osd.%d not in osdmap' % daemon_id)
- extra_args.extend(['--osd-fsid', osd_uuid])
+ # osd deployments needs an --osd-uuid arg
+ if daemon_type == 'osd':
+ if not osd_uuid_map:
+ osd_uuid_map = self.get_osd_uuid_map()
+ osd_uuid = osd_uuid_map.get(daemon_id, None)
+ if not osd_uuid:
+ raise OrchestratorError('osd.%d not in osdmap' % daemon_id)
+ extra_args.extend(['--osd-fsid', osd_uuid])
if reconfig:
extra_args.append('--reconfig')
host, name, 'deploy',
[
'--name', name,
- '--config-and-keyrings', '-',
] + extra_args,
stdin=j)
self.log.debug('create_daemon code %s out %s' % (code, out))
spec = NodeAssignment(spec=spec, get_hosts_func=self._get_hosts, service_type='rbd-mirror').load()
return self._update_service('rbd-mirror', self.add_rbd_mirror, spec)
+ def _generate_prometheus_config(self):
+ mgr_map = self.get('mgr_map')
+ mgr_scrape_list = []
+ # *** FIXME *** we should scrape all mgrs here ***
+ t = mgr_map.get('services', {}).get('prometheus', None)
+ if t:
+ t = t.split('/')[2]
+ mgr_scrape_list = [t]
+ j = json.dumps({
+ 'prometheus.yml': """# generated by cephadm
+global:
+ scrape_interval: 5s
+ evaluation_interval: 10s
+rule_files:
+ - /etc/prometheus/alerting/*
+scrape_configs:
+ - job_name: 'ceph'
+ static_configs:
+ - targets: {mgr_scrape_list}
+""".format(
+ mgr_scrape_list=str(mgr_scrape_list)
+ )
+ })
+ return j
+
def _get_container_image_id(self, image_name):
# pick a random host...
host = None