]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: loop over all vips when trying to find ingress' interface 47611/head
authorLuis Domingues <domingues.luis@protonmail.ch>
Thu, 11 Aug 2022 10:01:23 +0000 (11:01 +0100)
committerAdam King <adking@redhat.com>
Tue, 6 Sep 2022 14:58:14 +0000 (10:58 -0400)
Signed-off-by: Luis Domingues <domingues.luis@protonmail.ch>
(cherry picked from commit 1b9a6a0f58a9a7550e8b93573b3191816da5f900)

src/pybind/mgr/cephadm/services/ingress.py

index 7c4a1e2095e603a012a0b099bcc9d98329040fb8..99fde1c43df203347ddb07cd1616f1c34a85f73c 100644 (file)
@@ -196,18 +196,23 @@ class IngressService(CephService):
         hosts = sorted(list(set([host] + [str(d.hostname) for d in daemons])))
 
         # interface
+        bare_ips = []
         if spec.virtual_ip:
-            bare_ip = str(spec.virtual_ip).split('/')[0]
+            bare_ips.append(str(spec.virtual_ip).split('/')[0])
         elif spec.virtual_ips_list:
-            bare_ip = str(spec.virtual_ips_list[0]).split('/')[0]
+            bare_ips = [str(vip).split('/')[0] for vip in spec.virtual_ips_list]
         interface = None
-        for subnet, ifaces in self.mgr.cache.networks.get(host, {}).items():
-            if ifaces and ipaddress.ip_address(bare_ip) in ipaddress.ip_network(subnet):
-                interface = list(ifaces.keys())[0]
-                logger.info(
-                    f'{bare_ip} is in {subnet} on {host} interface {interface}'
-                )
-                break
+        for bare_ip in bare_ips:
+            for subnet, ifaces in self.mgr.cache.networks.get(host, {}).items():
+                if ifaces and ipaddress.ip_address(bare_ip) in ipaddress.ip_network(subnet):
+                    interface = list(ifaces.keys())[0]
+                    logger.info(
+                        f'{bare_ip} is in {subnet} on {host} interface {interface}'
+                    )
+                    break
+            else:  # nobreak
+                continue
+            break
         # try to find interface by matching spec.virtual_interface_networks
         if not interface and spec.virtual_interface_networks:
             for subnet, ifaces in self.mgr.cache.networks.get(host, {}).items():