From: Joshua Schmid Date: Tue, 12 May 2020 08:24:25 +0000 (+0200) Subject: mgr/rook: placementspec->host matching adaption X-Git-Tag: v16.1.0~2165^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d488de90ad7fbcf4ea838d8ca33511fdae7823d8;p=ceph.git mgr/rook: placementspec->host matching adaption Signed-off-by: Joshua Schmid --- diff --git a/src/pybind/mgr/rook/module.py b/src/pybind/mgr/rook/module.py index 3459f2ce621..44228731ba0 100644 --- a/src/pybind/mgr/rook/module.py +++ b/src/pybind/mgr/rook/module.py @@ -478,7 +478,7 @@ class RookOrchestrator(MgrModule, orchestrator.Orchestrator): ) def create_osds(self, drive_group): - # type: (DriveGroupSpec) -> RookCompletion + # type: (DriveGroupSpec) -> orchestrator.Completion """ Creates OSDs from a drive group specification. $: ceph orch osd create -i @@ -492,10 +492,9 @@ class RookOrchestrator(MgrModule, orchestrator.Orchestrator): if drive_group.data_directories: targets += drive_group.data_directories - def execute(all_hosts_): - # type: (List[orchestrator.HostSpec]) -> orchestrator.Completion - all_hosts = [h.hostname for h in all_hosts_] - matching_hosts = drive_group.placement.pattern_matches_hosts(all_hosts) + def execute(): + # type: () -> orchestrator.Completion + matching_hosts = drive_group.placement.filter_matching_hosts(self.get_hosts) assert len(matching_hosts) == 1 @@ -514,13 +513,12 @@ class RookOrchestrator(MgrModule, orchestrator.Orchestrator): matching_hosts, targets), mgr=self, - on_complete=lambda _:self.rook_cluster.add_osds(drive_group, all_hosts), - calc_percent=lambda: has_osds(all_hosts) + on_complete=lambda _:self.rook_cluster.add_osds(drive_group, matching_hosts), + calc_percent=lambda: has_osds(matching_hosts) ) @deferred_read - def has_osds(all_hosts): - matching_hosts = drive_group.placement.pattern_matches_hosts(all_hosts) + def has_osds(matching_hosts): # Find OSD pods on this host pod_osd_ids = set() @@ -551,7 +549,7 @@ class RookOrchestrator(MgrModule, orchestrator.Orchestrator): return found is not None - c = self.get_hosts().then(execute) + c = execute() return c def blink_device_light(self, ident_fault: str, on: bool, locs: List[orchestrator.DeviceLightLoc]) -> RookCompletion: diff --git a/src/pybind/mgr/rook/rook_cluster.py b/src/pybind/mgr/rook/rook_cluster.py index cd4b5899003..05c533ae857 100644 --- a/src/pybind/mgr/rook/rook_cluster.py +++ b/src/pybind/mgr/rook/rook_cluster.py @@ -521,7 +521,7 @@ class RookCluster(object): return new return self._patch(cnfs.CephNFS, 'cephnfses',svc_id, _update_nfs_count) - def add_osds(self, drive_group, all_hosts): + def add_osds(self, drive_group, matching_hosts): # type: (DriveGroupSpec, List[str]) -> str """ Rook currently (0.8) can only do single-drive OSDs, so we @@ -543,7 +543,7 @@ class RookCluster(object): new_cluster.spec.storage.nodes = ccl.NodesList() current_nodes = getattr(current_cluster.spec.storage, 'nodes', ccl.NodesList()) - matching_host = drive_group.placement.pattern_matches_hosts(all_hosts)[0] + matching_host = matching_hosts[0] if matching_host not in [n.name for n in current_nodes]: pd = ccl.NodesItem(