From 63f6f34face236106fb032a2718fd2a3059a160d Mon Sep 17 00:00:00 2001
From: Jorge Sasiain <jorge@jorge.dev.gap.geant.org>
Date: Wed, 7 Jun 2023 08:29:57 +0000
Subject: [PATCH] NAT-152: fix ipv6 allocation by host ip address

---
 gso/services/_ipam.py |  2 +-
 gso/services/ipam.py  | 40 ++++++++++++++++++++++++----------------
 2 files changed, 25 insertions(+), 17 deletions(-)

diff --git a/gso/services/_ipam.py b/gso/services/_ipam.py
index 416951db..ec1dd1e8 100644
--- a/gso/services/_ipam.py
+++ b/gso/services/_ipam.py
@@ -480,7 +480,7 @@ def allocate_service_host(hostname=None,
             assert any(ipv6_addr in oss_ipv6_container
                        for oss_ipv6_container in oss_ipv6_containers)
         else:
-            assert any(ipv4_addr in oss_ipv6_network
+            assert any(ipv6_addr in oss_ipv6_network
                        for oss_ipv6_network in oss_ipv6_networks)
 
         host = _allocate_host(
diff --git a/gso/services/ipam.py b/gso/services/ipam.py
index 96c957d0..126249e9 100644
--- a/gso/services/ipam.py
+++ b/gso/services/ipam.py
@@ -70,40 +70,48 @@ if __name__ == '__main__':
     hostname_A = 'hA'
     hostname_B = 'hB'
 
-    # h1 LO (loopback)
+    # hA LO (loopback)
+    # loA_v4_host_address = ipaddress.ip_address('10.255.255.0')
+    # loA_v6_host_address = ipaddress.ip_address('dead:beef::0')
+    # loA_host_addresses = HostAddresses(v4=loA_v4_host_address,
+                                       # v6=loA_v6_host_address)
+    # new_service_host(hostname=hostname_A+"_LO",
+                     # host_addresses=loA_host_addresses,
+                     # cname_aliases=["alias1.hA", "alias2.hA"],
+                     # service_type='LO')
     new_service_host(hostname=hostname_A+"_LO",
                      cname_aliases=["alias1.hA", "alias2.hA"],
                      service_type='LO')
 
-    # h2 LO (loopback)
+    # hB LO (loopback)
     new_service_host(hostname=hostname_B+"_LO",
                      cname_aliases=["alias1.hB"],
                      service_type='LO')
 
-    # h1-h2 TRUNK
-    trunk12_network_extattrs = {
+    # hA-hB TRUNK
+    trunkAB_network_extattrs = {
         "vrf_name": {"value": "dummy_vrf"},
     }
-    trunk12_host_extattrs = {
+    trunkAB_host_extattrs = {
         "Site": {"value": "dummy_site"},
     }
-    trunk12_service_networks = new_service_networks(
+    trunkAB_service_networks = new_service_networks(
         service_type='TRUNK',
-        extattrs=trunk12_network_extattrs,
-        comment="Network for h1-h2 TRUNK"
+        extattrs=trunkAB_network_extattrs,
+        comment="Network for hA-hB TRUNK"
     )
 
-    trunk12_v4_host_address = trunk12_service_networks.v4.network_address
-    trunk12_v6_host_address = trunk12_service_networks.v6.network_address
-    trunk12_host_addresses = HostAddresses(v4=trunk12_v4_host_address,
-                                           v6=trunk12_v6_host_address)
+    trunkAB_v4_host_address = trunkAB_service_networks.v4.network_address
+    trunkAB_v6_host_address = trunkAB_service_networks.v6.network_address
+    trunkAB_host_addresses = HostAddresses(v4=trunkAB_v4_host_address,
+                                           v6=trunkAB_v6_host_address)
 
     new_service_host(hostname=hostname_A+"_TRUNK",
                      service_type='TRUNK',
-                     host_addresses=trunk12_host_addresses,
-                     extattrs=trunk12_host_extattrs)
+                     host_addresses=trunkAB_host_addresses,
+                     extattrs=trunkAB_host_extattrs)
 
     new_service_host(hostname=hostname_B+"_TRUNK",
                      service_type='TRUNK',
-                     service_networks=trunk12_service_networks,
-                     extattrs=trunk12_host_extattrs)
+                     service_networks=trunkAB_service_networks,
+                     extattrs=trunkAB_host_extattrs)
-- 
GitLab