]> git.apps.os.sepia.ceph.com Git - ceph-ci.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)
committerJoshua Schmid <jschmid@suse.de>
Wed, 27 May 2020 12:27:23 +0000 (14:27 +0200)
previews

Signed-off-by: Joshua Schmid <jschmid@suse.de>
src/pybind/mgr/cephadm/module.py
src/pybind/mgr/cephadm/services/osd.py
src/pybind/mgr/orchestrator/module.py

index 9db98b977b93d03a90a4ac9598278ba58b23bfa1..69fb02d8bed748d640a0a91791ebf7dc7eeedd0f 100644 (file)
@@ -1052,9 +1052,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 5434bc4d3c3fd0ddc8ff840c42dc7f2e980abbc9..8f22a3b0071414c36ab292d03a74ee7af20577b8 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):