]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: fix host matching when multiple hosts match for in osd
authorJoshua Schmid <jschmid@suse.de>
Wed, 27 May 2020 09:10:30 +0000 (11:10 +0200)
committerSebastian Wagner <sebastian.wagner@suse.com>
Tue, 2 Jun 2020 12:58:27 +0000 (14:58 +0200)
previews

Signed-off-by: Joshua Schmid <jschmid@suse.de>
(cherry picked from commit fc3b4d13ea73c6f89409c24e165397f23f84cbad)

src/pybind/mgr/cephadm/module.py
src/pybind/mgr/cephadm/services/osd.py
src/pybind/mgr/orchestrator/module.py

index 49cf52a728d50130e54fa12309e520a396dcda47..ca60c2f67c035ed0ea1a668ee4849399dc5489c9 100644 (file)
@@ -1086,9 +1086,8 @@ you may want to run:
         self.cache.loading_osdspec_preview.add(search_host)
         previews = []
         # query OSDSpecs for host <search host> and generate/get the preview
-        for preview in self.osd_service.get_previews(search_host):
-            # There can be multiple previews for one host due to multiple OSDSpecs.
-            previews.append(preview)
+        # There can be multiple previews for one host due to multiple OSDSpecs.
+        previews.extend(self.osd_service.get_previews(search_host))
         self.log.debug(f"Loading OSDSpec previews to HostCache")
         self.cache.osdspec_previews[search_host] = previews
         # Unset global 'pending' flag for host
index a48f8bcd031c799f22bd1028d19dfcd1f951633b..b37f7c586b75f06610de3a1bd1fd8fada3967379 100644 (file)
@@ -134,9 +134,9 @@ class OSDService(CephadmService):
     def get_previews(self, host) -> List[Dict[str, Any]]:
         # Find OSDSpecs that match host.
         osdspecs = self.mgr.resolve_osdspecs_for_host(host)
-        return self.generate_previews(osdspecs)
+        return self.generate_previews(osdspecs, host)
 
-    def generate_previews(self, osdspecs: List[DriveGroupSpec]) -> List[Dict[str, Any]]:
+    def generate_previews(self, osdspecs: List[DriveGroupSpec], for_host: str) -> List[Dict[str, Any]]:
         """
 
         The return should look like this:
@@ -166,6 +166,8 @@ class OSDService(CephadmService):
 
             # prepare driveselection
             for host, ds in self.prepare_drivegroup(osdspec):
+                if host != for_host:
+                    continue
 
                 # driveselection for host
                 cmd = self.driveselection_to_ceph_volume(osdspec,
index 6a076429cd54beb3df95ff53fd20bb25db75b3ae..faf1cdf04e1d60fd64c02f6730088c1cac5cd1de 100644 (file)
@@ -564,7 +564,7 @@ Examples:
                             table.add_row((dg_name, host, block_data, db_path, wal_path))
                 ret = table.get_string()
                 if not ret:
-                    ret = "Couldn't draw any conclusion.. This is likely a bug and should be reported"
+                    ret = "No preview available"
                 return ret
 
         if preview and (unmanaged is not None):