Skip to content

Commit 46bd18b

Browse files
committed
Fall back to host DNS domain for container default
1 parent f4f2400 commit 46bd18b

2 files changed

Lines changed: 38 additions & 3 deletions

File tree

Sources/Services/ContainerAPIService/Client/Utility.swift

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,11 @@ public struct Utility {
223223
if management.dnsDisabled {
224224
config.dns = nil
225225
} else {
226-
config.dns = dnsConfiguration(from: management.dns, defaults: containerSystemConfig.container.dns)
226+
config.dns = dnsConfiguration(
227+
from: management.dns,
228+
defaults: containerSystemConfig.container.dns,
229+
hostDomainFallback: containerSystemConfig.dns.domain
230+
)
227231
}
228232

229233
config.rosetta = management.rosetta || (Platform.current.architecture == "arm64" && requestedPlatform.architecture == "amd64")
@@ -326,13 +330,14 @@ public struct Utility {
326330

327331
public static func dnsConfiguration(
328332
from flags: Flags.DNS,
329-
defaults: ContainerDNSConfig
333+
defaults: ContainerDNSConfig,
334+
hostDomainFallback: String? = nil
330335
) -> ContainerConfiguration.DNSConfiguration {
331336
let nameservers =
332337
flags.nameservers.isEmpty
333338
? defaults.nameservers
334339
: flags.nameservers
335-
let domain = flags.domain ?? defaults.domain
340+
let domain = flags.domain ?? defaults.domain ?? hostDomainFallback
336341
let searchDomains =
337342
flags.searchDomains.isEmpty
338343
? defaults.searchDomains

Tests/ContainerAPIClientTests/UtilityTests.swift

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,36 @@ struct UtilityTests {
161161
#expect(result.options == ["ndots:2"])
162162
}
163163

164+
@Test
165+
func testDNSConfigurationDomainFallsBackToHostDomain() {
166+
let defaults = ContainerDNSConfig()
167+
let flags = Flags.DNS(
168+
domain: nil,
169+
nameservers: [],
170+
options: [],
171+
searchDomains: []
172+
)
173+
174+
let result = Utility.dnsConfiguration(from: flags, defaults: defaults, hostDomainFallback: "host.local")
175+
176+
#expect(result.domain == "host.local")
177+
}
178+
179+
@Test
180+
func testDNSConfigurationContainerDomainWinsOverHostDomain() {
181+
let defaults = ContainerDNSConfig(domain: "container.local")
182+
let flags = Flags.DNS(
183+
domain: nil,
184+
nameservers: [],
185+
options: [],
186+
searchDomains: []
187+
)
188+
189+
let result = Utility.dnsConfiguration(from: flags, defaults: defaults, hostDomainFallback: "host.local")
190+
191+
#expect(result.domain == "container.local")
192+
}
193+
164194
@Test
165195
func testPublishPortParser() throws {
166196
let ports = try Parser.publishPorts([

0 commit comments

Comments
 (0)