diff --git a/gso/oss-params-example.json b/gso/oss-params-example.json index 574af8c05efe283d3adcf8230458eeaa51ce85b6..d555365d3ded6e28f41879af1d89c85d984e2e36 100644 --- a/gso/oss-params-example.json +++ b/gso/oss-params-example.json @@ -14,17 +14,20 @@ "LO": { "V4": {"containers": [], "networks": ["1.1.0.0/28"], "mask": 0}, "V6": {"containers": [], "networks": ["dead:beef::/80"], "mask": 0}, - "domain_name": ".lo" + "domain_name": ".lo", + "dns_view": "default" }, "TRUNK": { "V4": {"containers": ["1.1.1.0/24"], "networks": [], "mask": 31}, "V6": {"containers": ["dead:beef::/64"], "networks": [], "mask": 126}, - "domain_name": ".trunk" + "domain_name": ".trunk", + "dns_view": "default }, "GEANT_IP": { "V4": {"containers": ["1.1.2.0/24"], "networks": [], "mask": 31}, "V6": {"containers": ["dead:beef::/64"], "networks": [], "mask": 126}, - "domain_name": ".geantip" + "domain_name": ".geantip", + "dns_view": "default } }, "PROVISIONING_PROXY": { diff --git a/gso/services/_ipam.py b/gso/services/_ipam.py index 8e753e0e35b23ba0752683992f2a583f2d93fc4b..416951db9cb3191068ca3efec0ab910eaa537ad8 100644 --- a/gso/services/_ipam.py +++ b/gso/services/_ipam.py @@ -240,6 +240,7 @@ def _allocate_host(hostname=None, addrs=None, networks=None, cname_aliases=None, + dns_view="default", extattrs={} ) -> Union[HostAddresses, str]: """ @@ -303,7 +304,7 @@ def _allocate_host(hostname=None, ], "name": hostname, "configure_for_dns": True, - "view": "default", + "view": dns_view, "extattrs": extattrs } @@ -324,7 +325,7 @@ def _allocate_host(hostname=None, cname_req_payload = { "name": "", "canonical": hostname, - "view": "default", + "view": dns_view, "extattrs": extattrs } @@ -380,11 +381,13 @@ def allocate_service_host(hostname=None, oss_ipv4_networks = getattr(ipam_params, service_type).V4.networks oss_ipv6_networks = getattr(ipam_params, service_type).V6.networks domain_name = getattr(ipam_params, service_type).domain_name + dns_view = getattr(ipam_params, service_type).dns_view assert (oss_ipv4_containers and oss_ipv6_containers) \ or (oss_ipv4_networks and oss_ipv6_networks), \ "This service is missing either containers or networks configuration." assert domain_name, "This service is missing domain_name configuration." + assert dns_view, "This service is missing dns_view configuration." if cname_aliases: cname_aliases = [alias + domain_name for alias in cname_aliases] @@ -419,6 +422,7 @@ def allocate_service_host(hostname=None, host = _allocate_host(hostname=hostname+domain_name, networks=network_tuple, cname_aliases=cname_aliases, + dns_view=dns_view, extattrs=extattrs) if "NETWORK_FULL" not in host: @@ -455,6 +459,7 @@ def allocate_service_host(hostname=None, hostname=hostname+domain_name, networks=(str(ipv4_network), str(ipv6_network)), cname_aliases=cname_aliases, + dns_view=dns_view, extattrs=extattrs ) assert "NETWORK_FULL" not in host @@ -482,6 +487,7 @@ def allocate_service_host(hostname=None, hostname=hostname+domain_name, addrs=(str(ipv4_addr), str(ipv6_addr)), cname_aliases=cname_aliases, + dns_view=dns_view, extattrs=extattrs ) assert "NETWORK_FULL" not in host diff --git a/gso/settings.py b/gso/settings.py index 7167785cb32245f51316809db517bd09bbc251d8..1244265dc9d5f23b1b083f1db81ddf4c5a655bac 100644 --- a/gso/settings.py +++ b/gso/settings.py @@ -32,6 +32,7 @@ class ServiceNetworkParams(BaseSettings): V4: V4NetworkParams V6: V6NetworkParams domain_name: str + dns_view: str class IPAMParams(BaseSettings):