]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: dump config to JSON only once when creating daemons
authorPatrick Seidensal <pseidensal@suse.com>
Fri, 28 Feb 2020 11:30:29 +0000 (12:30 +0100)
committerPatrick Seidensal <pseidensal@suse.com>
Thu, 5 Mar 2020 12:19:16 +0000 (13:19 +0100)
Signed-off-by: Patrick Seidensal <pseidensal@suse.com>
src/pybind/mgr/cephadm/module.py

index 4dcc9c44ffb4336433377fd97adb11cae8461e5e..b4c4bda0895e8472c8cd7be804a12dad75af90b5 100644 (file)
@@ -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):