From: Patrick Seidensal Date: Fri, 28 Feb 2020 11:30:29 +0000 (+0100) Subject: mgr/cephadm: dump config to JSON only once when creating daemons X-Git-Tag: v15.1.1~85^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e468c99c34a804450b6ff4d0f3751268ba554efb;p=ceph.git mgr/cephadm: dump config to JSON only once when creating daemons Signed-off-by: Patrick Seidensal --- diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index 4dcc9c44ffb4..b4c4bda0895e 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -2026,17 +2026,15 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule): 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 @@ -2057,10 +2055,10 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule): 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 @@ -2080,7 +2078,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule): [ '--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 @@ -2218,7 +2216,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule): 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) @@ -2378,7 +2376,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule): 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 @@ -2440,7 +2438,7 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule): """.format(", ".join(alertmgr_targets)) # generate the prometheus configuration - j = json.dumps({ + return { 'files': { 'prometheus.yml': """# generated by cephadm global: @@ -2462,11 +2460,10 @@ scrape_configs: 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 @@ -2511,7 +2508,7 @@ datasources: 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] @@ -2536,7 +2533,7 @@ datasources: '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): @@ -2544,7 +2541,7 @@ datasources: 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. @@ -2570,12 +2567,12 @@ receivers: 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) @@ -2627,6 +2624,7 @@ receivers: @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):