Skip to content

Commit 4a152ed

Browse files
committed
acs, api: consume eni private hostname model changes
1 parent 88f892a commit 4a152ed

File tree

6 files changed

+32
-16
lines changed

6 files changed

+32
-16
lines changed

agent/acs/model/api/api-2.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,8 @@
206206
"ipv4Addresses":{"shape":"IPv4AddressList"},
207207
"ipv6Addresses":{"shape":"IPv6AddressList"},
208208
"domainName":{"shape":"StringList"},
209-
"domainNameServers":{"shape":"StringList"}
209+
"domainNameServers":{"shape":"StringList"},
210+
"privateDnsName":{"shape":"String"}
210211
}
211212
},
212213
"ElasticNetworkInterfaceList":{

agent/acs/model/ecsacs/api.go

+2
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,8 @@ type ElasticNetworkInterface struct {
217217
Ipv6Addresses []*IPv6AddressAssignment `locationName:"ipv6Addresses" type:"list"`
218218

219219
MacAddress *string `locationName:"macAddress" type:"string"`
220+
221+
PrivateDnsName *string `locationName:"privateDnsName" type:"string"`
220222
}
221223

222224
// String returns the string representation

agent/api/eni.go

+11-10
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ type ENI struct {
3838
// DomainNameSearchList specifies the search list for the domain
3939
// name lookup, for the eni
4040
DomainNameSearchList []string `json:",omitempty"`
41+
42+
// PrivateDnsName is the dns name assigned by the vpc to this eni
43+
PrivateDnsName string `json:",omitempty"`
4144
}
4245

4346
// GetIPV4Addresses returns a list of ipv4 addresses allocated to the ENI
@@ -62,10 +65,7 @@ func (eni *ENI) GetIPV6Addresses() []string {
6265

6366
// GetHostname returns the hostname assigned to the ENI
6467
func (eni *ENI) GetHostname() string {
65-
// WIP
66-
// pending acs model change to include hostname
67-
// return eni.Hostname
68-
return "ip.region.compute.internal"
68+
return eni.PrivateDnsName
6969
}
7070

7171
// String returns a human readable version of the ENI object
@@ -79,8 +79,8 @@ func (eni *ENI) String() string {
7979
ipv6Addresses = append(ipv6Addresses, addr.Address)
8080
}
8181
return fmt.Sprintf(
82-
"eni id:%s, mac: %s, ipv4addresses: [%s], ipv6addresses: [%s], dns: [%s], dns search: [%s]",
83-
eni.ID, eni.MacAddress, strings.Join(ipv4Addresses, ","), strings.Join(ipv6Addresses, ","),
82+
"eni id:%s, mac: %s, hostname: %s, ipv4addresses: [%s], ipv6addresses: [%s], dns: [%s], dns search: [%s]",
83+
eni.ID, eni.MacAddress, eni.PrivateDnsName, strings.Join(ipv4Addresses, ","), strings.Join(ipv6Addresses, ","),
8484
strings.Join(eni.DomainNameServers, ","), strings.Join(eni.DomainNameSearchList, ","))
8585
}
8686

@@ -124,10 +124,11 @@ func ENIFromACS(acsenis []*ecsacs.ElasticNetworkInterface) (*ENI, error) {
124124
}
125125

126126
eni := &ENI{
127-
ID: aws.StringValue(acsenis[0].Ec2Id),
128-
IPV4Addresses: ipv4,
129-
IPV6Addresses: ipv6,
130-
MacAddress: aws.StringValue(acsenis[0].MacAddress),
127+
ID: aws.StringValue(acsenis[0].Ec2Id),
128+
IPV4Addresses: ipv4,
129+
IPV6Addresses: ipv6,
130+
MacAddress: aws.StringValue(acsenis[0].MacAddress),
131+
PrivateDnsName: aws.StringValue(acsenis[0].PrivateDnsName),
131132
}
132133
for _, nameserverIP := range acsenis[0].DomainNameServers {
133134
eni.DomainNameServers = append(eni.DomainNameServers, aws.StringValue(nameserverIP))

agent/api/eni_test.go

+2
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ func TestENIFromACS(t *testing.T) {
4646
MacAddress: aws.String("mac"),
4747
DomainNameServers: []*string{aws.String(defaultDNS), aws.String(customDNS)},
4848
DomainName: []*string{aws.String(customSearchDomain)},
49+
PrivateDnsName: aws.String("ip.region.compute.internal"),
4950
},
5051
}
5152

@@ -66,6 +67,7 @@ func TestENIFromACS(t *testing.T) {
6667
assert.Equal(t, customDNS, eni.DomainNameServers[1])
6768
assert.Len(t, eni.DomainNameSearchList, 1)
6869
assert.Equal(t, customSearchDomain, eni.DomainNameSearchList[0])
70+
assert.Equal(t, aws.StringValue(acsenis[0].PrivateDnsName), eni.PrivateDnsName)
6971
}
7072

7173
// TestValidateENIFromACS tests the validation of enis from acs

agent/api/task.go

+2-4
Original file line numberDiff line numberDiff line change
@@ -474,8 +474,7 @@ func (task *Task) dockerConfig(container *Container, apiVersion dockerclient.Doc
474474
}
475475

476476
if container.Type == ContainerCNIPause {
477-
// WIP
478-
// hostname to pause container's docker config
477+
// apply hostname to pause container's docker config
479478
return task.applyENIHostname(config), nil
480479
}
481480

@@ -632,7 +631,6 @@ func (task *Task) dockerHostConfig(container *Container, dockerContainerMap map[
632631
// Override 'awsvpc' parameters if needed
633632
if container.Type == ContainerCNIPause {
634633

635-
// WIP
636634
// apply ExtraHosts to HostConfig for pause container
637635
if hosts := task.generateENIExtraHosts(); hosts != nil {
638636
hostConfig.ExtraHosts = append(hostConfig.ExtraHosts, hosts...)
@@ -741,7 +739,7 @@ func (task *Task) generateENIExtraHosts() []string {
741739

742740
extraHosts := []string{}
743741

744-
for _, ip := range eni.GetIPV6Addresses() {
742+
for _, ip := range eni.GetIPV4Addresses() {
745743
host := fmt.Sprintf("%s:%s", hostname, ip)
746744
extraHosts = append(extraHosts, host)
747745
}

agent/api/task_test.go

+13-1
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,19 @@ func TestDockerHostConfigPauseContainer(t *testing.T) {
282282
assert.Equal(t, []string{"169.254.169.253"}, config.DNS)
283283
assert.Equal(t, []string{"us-west-2.compute.internal"}, config.DNSSearch)
284284

285-
// Verify ExtraHosts are added for eni IPs
285+
// Verify eni ExtraHosts added to HostConfig for "pause" container
286+
ipaddr := &ENIIPV4Address{Primary: true, Address: "10.0.1.1"}
287+
testTask.ENI.IPV4Addresses = []*ENIIPV4Address{ipaddr}
288+
testTask.ENI.PrivateDnsName = "eni.ip.region.compute.internal"
289+
290+
config, err = testTask.DockerHostConfig(testTask.Containers[2], dockerMap(testTask), defaultDockerClientAPIVersion)
291+
assert.Nil(t, err)
292+
assert.Equal(t, []string{"eni.ip.region.compute.internal:10.0.1.1"}, config.ExtraHosts)
293+
294+
// Verify eni Hostname is added to DockerConfig for "pause" container
295+
dockerconfig, dockerConfigErr := testTask.DockerConfig(testTask.Containers[2], defaultDockerClientAPIVersion)
296+
assert.Nil(t, dockerConfigErr)
297+
assert.Equal(t, "eni.ip.region.compute.internal", dockerconfig.Hostname)
286298

287299
}
288300

0 commit comments

Comments
 (0)