Skip to content

Commit d4a7041

Browse files
Maya Rosecrancemrosecrance
authored andcommitted
Resolve ip matches on aliases
- If an alias file looks like {"zookeeper-ip":["10.244.0.3], "zookeeper-dns":["f821a07e-82ad-48a8-ba5a-a8391230cb54.zookeeper.default.zookeeper.bosh"]} both aliases should be returned if they match. - at the moment link('mylink').instances[0].address will default to ip so this makes the feature a bit more usable. [#175435620](https://www.pivotaltracker.com/story/show/175435620)
1 parent dbf8b94 commit d4a7041

File tree

4 files changed

+19
-7
lines changed

4 files changed

+19
-7
lines changed

src/bosh-dns/dns/server/aliases/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func (c Config) Resolutions(maybeAlias string) []string {
128128
return nil
129129
}
130130

131-
func (c Config) DomainResolutions(domain string) []string {
131+
func (c Config) AliasResolutions(domain string) []string {
132132
var exactMatchAliases []string
133133
for alias, domains := range c.aliases {
134134
for _, aliasDomain := range domains {

src/bosh-dns/dns/server/aliases/config_test.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,13 +176,21 @@ var _ = Describe("Config", func() {
176176
})
177177
})
178178

179-
Describe("DomainResolutions", func() {
179+
Describe("AliasResolutions", func() {
180180
It("resolves a FQDNs to the aliases that match", func() {
181181
c := MustNewConfigFromMap(map[string][]string{
182182
"something.alias": {"domain"},
183183
})
184184

185-
Expect(c.DomainResolutions("domain.")).To(Equal([]string{"something.alias."}))
185+
Expect(c.AliasResolutions("domain.")).To(Equal([]string{"something.alias."}))
186+
})
187+
188+
It("resolves an ip to aliases that match", func() {
189+
c := MustNewConfigFromMap(map[string][]string{
190+
"something.alias": {"1.1.1.1"},
191+
})
192+
193+
Expect(c.AliasResolutions("1.1.1.1")).To(Equal([]string{"something.alias."}))
186194
})
187195

188196
It("does not resolve underscored or wildcard domains", func() {
@@ -192,7 +200,7 @@ var _ = Describe("Config", func() {
192200
"_.alias-underscore": {"_.domain"},
193201
})
194202

195-
Expect(c.DomainResolutions("1.domain.")).To(Equal([]string{}))
203+
Expect(c.AliasResolutions("1.domain.")).To(BeEmpty())
196204
})
197205

198206
})

src/bosh-dns/dns/server/records/record_set.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,12 +245,15 @@ func (r *RecordSet) GetFQDNs(ip string) []string {
245245
defer r.recordsMutex.RUnlock()
246246

247247
uniqueFqnds := make(map[string]bool)
248+
for _, alias := range r.mergedAliasList.AliasResolutions(ip) {
249+
uniqueFqnds[alias] = true
250+
}
248251

249252
for _, host := range r.hosts {
250253
if host.IP == ip {
251254
domain := dns.Fqdn(host.FQDN)
252255
uniqueFqnds[domain] = true
253-
for _, alias := range r.mergedAliasList.DomainResolutions(domain) {
256+
for _, alias := range r.mergedAliasList.AliasResolutions(domain) {
254257
uniqueFqnds[alias] = true
255258
}
256259

src/bosh-dns/dns/server/records/record_set_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,7 @@ var _ = Describe("RecordSet", func() {
342342
BeforeEach(func() {
343343
aliasList = mustNewConfigFromMap(map[string][]string{
344344
"alias1": {"instance0.my-group.my-network.my-deployment.withadot"},
345+
"alias2": {"123.123.123.124"},
345346
})
346347
})
347348

@@ -368,8 +369,8 @@ var _ = Describe("RecordSet", func() {
368369
recordSet, err = records.NewRecordSet(fileReader, aliasList, fakeHealthWatcher, uint(5), shutdownChan, fakeLogger, fakeFiltererFactory, fakeAliasQueryEncoder)
369370
Expect(err).ToNot(HaveOccurred())
370371

371-
Expect(recordSet.GetFQDNs("123.123.123.123")).To(Equal([]string{"instance0.my-group.my-network.my-deployment.withadot.", "alias1.", "0.my-group.my-network.my-deployment.withadot."}))
372-
Expect(recordSet.GetFQDNs("123.123.123.124")).To(Equal([]string{"instance1.my-group.my-network.my-deployment.nodot.", "1.my-group.my-network.my-deployment.nodot."}))
372+
Expect(recordSet.GetFQDNs("123.123.123.123")).To(ConsistOf("alias1.", "instance0.my-group.my-network.my-deployment.withadot.", "0.my-group.my-network.my-deployment.withadot."))
373+
Expect(recordSet.GetFQDNs("123.123.123.124")).To(ConsistOf("instance1.my-group.my-network.my-deployment.nodot.", "1.my-group.my-network.my-deployment.nodot.", "alias2."))
373374
Expect(recordSet.GetFQDNs("123.123.123.125")).To(Equal([]string{"instance2.my-group.my-network.my-deployment.domain.", "2.my-group.my-network.my-deployment.domain."}))
374375
Expect(recordSet.GetFQDNs("127.0.0.1")).To(BeEmpty())
375376
})

0 commit comments

Comments
 (0)