Skip to content

Commit aed0d71

Browse files
Azure CNI Windows dualstack support (#557)
* windows ipv6 changes * addressed compilation issues * return fix * type error * updated pipeline.yaml * removed -mod=vendor * updated pipeline yaml * fixed pipeline.yaml * fixed pipeline.yaml * updated function name as per comment
1 parent 933e5be commit aed0d71

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+1368
-515
lines changed

.pipelines/pipeline.yaml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,23 @@ stages:
8282
echo Build tag is $(EnvironmentalVariables.Tag)
8383
export GOOS=windows
8484
make all-binaries VERSION=$(EnvironmentalVariables.Tag)
85+
workingDirectory: "$(modulePath)"
86+
name: "BuildWindows"
87+
displayName: "Build Windows"
88+
89+
- script: |
8590
export GOOS=linux
8691
make all-binaries VERSION=$(EnvironmentalVariables.Tag)
92+
workingDirectory: "$(modulePath)"
93+
name: "BuildLinux"
94+
displayName: "Build Linux"
95+
96+
- script: |
97+
make all-binaries VERSION=$(EnvironmentalVariables.Tag)
8798
sudo make azure-npm-image VERSION=$(EnvironmentalVariables.Tag)
8899
workingDirectory: "$(modulePath)"
89-
name: "Build"
90-
displayName: "Build"
100+
name: "BuildNPMImage"
101+
displayName: "Build NPM Image"
91102
92103
- bash: |
93104
cd ./output

cni/ipam/ipam.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,11 +213,16 @@ func (plugin *ipamPlugin) Add(args *cniSkel.CmdArgs) error {
213213
return err
214214
}
215215

216+
version := "4"
217+
if ipAddress.IP.To4() == nil {
218+
version = "6"
219+
}
220+
216221
// Populate result.
217222
result = &cniTypesCurr.Result{
218223
IPs: []*cniTypesCurr.IPConfig{
219224
{
220-
Version: "4",
225+
Version: version,
221226
Address: *ipAddress,
222227
Gateway: apInfo.Gateway,
223228
},

cni/network/network.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"github.com/Azure/azure-container-networking/iptables"
2222
"github.com/Azure/azure-container-networking/log"
2323
"github.com/Azure/azure-container-networking/network"
24+
"github.com/Azure/azure-container-networking/network/policy"
2425
"github.com/Azure/azure-container-networking/platform"
2526
"github.com/Azure/azure-container-networking/telemetry"
2627
cniSkel "github.com/containernetworking/cni/pkg/skel"
@@ -471,7 +472,7 @@ func (plugin *netPlugin) Add(args *cniSkel.CmdArgs) error {
471472
*/
472473
epInfo, _ := plugin.nm.GetEndpointInfo(networkId, endpointId)
473474
if epInfo != nil {
474-
resultConsAdd, errConsAdd := handleConsecutiveAdd(args, endpointId, nwInfo, nwCfg)
475+
resultConsAdd, errConsAdd := handleConsecutiveAdd(args, endpointId, nwInfo, epInfo, nwCfg)
475476
if errConsAdd != nil {
476477
log.Printf("handleConsecutiveAdd failed with error %v", errConsAdd)
477478
result = resultConsAdd
@@ -537,7 +538,7 @@ func (plugin *netPlugin) Add(args *cniSkel.CmdArgs) error {
537538
}
538539

539540
// Create the network.
540-
nwInfo := network.NetworkInfo{
541+
nwInfo = network.NetworkInfo{
541542
Id: networkId,
542543
Mode: nwCfg.Mode,
543544
MasterIfName: masterIfName,
@@ -595,6 +596,18 @@ func (plugin *netPlugin) Add(args *cniSkel.CmdArgs) error {
595596
return err
596597
}
597598

599+
if nwCfg.IPV6Mode == network.IPV6Nat {
600+
var ipv6Policy policy.Policy
601+
602+
ipv6Policy, err = addIPV6EndpointPolicy(nwInfo)
603+
if err != nil {
604+
err = plugin.Errorf("Failed to set ipv6 endpoint policy: %v", err)
605+
return err
606+
}
607+
608+
policies = append(policies, ipv6Policy)
609+
}
610+
598611
epInfo = &network.EndpointInfo{
599612
Id: endpointId,
600613
ContainerID: args.ContainerID,

cni/network/network_linux.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const (
2525
)
2626

2727
// handleConsecutiveAdd is a dummy function for Linux platform.
28-
func handleConsecutiveAdd(args *cniSkel.CmdArgs, endpointId string, nwInfo network.NetworkInfo, nwCfg *cni.NetworkConfig) (*cniTypesCurr.Result, error) {
28+
func handleConsecutiveAdd(args *cniSkel.CmdArgs, endpointId string, nwInfo network.NetworkInfo, epInfo *network.EndpointInfo, nwCfg *cni.NetworkConfig) (*cniTypesCurr.Result, error) {
2929
return nil, nil
3030
}
3131

@@ -125,6 +125,10 @@ func getPoliciesFromRuntimeCfg(nwCfg *cni.NetworkConfig) []policy.Policy {
125125
return nil
126126
}
127127

128+
func addIPV6EndpointPolicy(nwInfo network.NetworkInfo) (policy.Policy, error) {
129+
return policy.Policy{}, nil
130+
}
131+
128132
func updateSubnetPrefix(cnsNetworkConfig *cns.GetNetworkContainerResponse, subnetPrefix *net.IPNet) error {
129133
return nil
130134
}

cni/network/network_windows.go

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ var (
3333
* We can delete this if statement once they fix it.
3434
* Issue link: https://github.com/kubernetes/kubernetes/issues/57253
3535
*/
36-
func handleConsecutiveAdd(args *cniSkel.CmdArgs, endpointId string, nwInfo network.NetworkInfo, nwCfg *cni.NetworkConfig) (*cniTypesCurr.Result, error) {
36+
func handleConsecutiveAdd(args *cniSkel.CmdArgs, endpointId string, nwInfo network.NetworkInfo, epInfo *network.EndpointInfo, nwCfg *cni.NetworkConfig) (*cniTypesCurr.Result, error) {
3737
// Return in case of HNSv2 as consecutive add call doesn't need to be handled
3838
if useHnsV2, err := network.UseHnsV2(args.Netns); useHnsV2 {
3939
return nil, err
@@ -73,9 +73,21 @@ func handleConsecutiveAdd(args *cniSkel.CmdArgs, endpointId string, nwInfo netwo
7373
},
7474
}
7575

76+
if nwCfg.IPV6Mode != "" && len(epInfo.IPAddresses) > 1 {
77+
ipv6Config := &cniTypesCurr.IPConfig{
78+
Version: "6",
79+
Address: epInfo.IPAddresses[1],
80+
}
81+
82+
if len(nwInfo.Subnets) > 1 {
83+
ipv6Config.Gateway = nwInfo.Subnets[1].Gateway
84+
}
85+
86+
result.IPs = append(result.IPs, ipv6Config)
87+
}
88+
7689
// Populate DNS servers.
7790
result.DNS.Nameservers = nwCfg.DNS.Nameservers
78-
7991
return result, nil
8092
}
8193

@@ -247,6 +259,31 @@ func getPoliciesFromRuntimeCfg(nwCfg *cni.NetworkConfig) []policy.Policy {
247259
return policies
248260
}
249261

262+
func addIPV6EndpointPolicy(nwInfo network.NetworkInfo) (policy.Policy, error) {
263+
var (
264+
eppolicy policy.Policy
265+
)
266+
267+
if len(nwInfo.Subnets) < 2 {
268+
return eppolicy, fmt.Errorf("network state doesn't have ipv6 subnet")
269+
}
270+
271+
// Everything should be snat'd except podcidr
272+
exceptionList := []string{nwInfo.Subnets[1].Prefix.String()}
273+
rawPolicy, _ := json.Marshal(&hcsshim.OutboundNatPolicy{
274+
Policy: hcsshim.Policy{Type: hcsshim.OutboundNat},
275+
Exceptions: exceptionList,
276+
})
277+
278+
eppolicy = policy.Policy{
279+
Type: policy.EndpointPolicy,
280+
Data: rawPolicy,
281+
}
282+
283+
log.Printf("[net] ipv6 outboundnat policy: %+v", eppolicy)
284+
return eppolicy, nil
285+
}
286+
250287
func getCustomDNS(nwCfg *cni.NetworkConfig) network.DNSInfo {
251288
var search string
252289
if len(nwCfg.RuntimeConfig.DNS.Searches) > 0 {

go.mod

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ require (
77
github.com/Masterminds/semver v1.5.0
88
github.com/Microsoft/ApplicationInsights-Go v0.4.2
99
github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5
10-
github.com/Microsoft/hcsshim v0.8.7-0.20191018141444-2a08d6fcd238
10+
github.com/Microsoft/hcsshim v0.8.10-0.20200506181021-222e9efadbe0
1111
github.com/containernetworking/cni v0.7.0-rc2
1212
github.com/docker/libnetwork v0.5.6
1313
github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9 // indirect
@@ -21,7 +21,6 @@ require (
2121
github.com/onsi/gomega v1.9.0
2222
github.com/petar/GoLLRB v0.0.0-20190514000832-33fb24c13b99 // indirect
2323
github.com/satori/go.uuid v1.2.0 // indirect
24-
github.com/sirupsen/logrus v1.4.2 // indirect
2524
go.opencensus.io v0.22.2 // indirect
2625
golang.org/x/net v0.0.0-20191112182307-2180aed22343 // indirect
2726
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e

go.sum

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,36 @@ github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 h1:ygIc8M6tr
1919
github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw=
2020
github.com/Microsoft/hcsshim v0.8.7-0.20191018141444-2a08d6fcd238 h1:eqM6/wxTNwIzc/vj/lyZuvGB+gtd0FUHQY3Ej1FkPyE=
2121
github.com/Microsoft/hcsshim v0.8.7-0.20191018141444-2a08d6fcd238/go.mod h1:1+AuASoTkbeMyoDy6WXp10FyWKaYrUallNFrzRdUYBY=
22+
github.com/Microsoft/hcsshim v0.8.10-0.20200504184332-72489c472437 h1:l/awl6xxAcR0U2D6gdzeDDx8GFciRVEIhVMVjYnDi2w=
23+
github.com/Microsoft/hcsshim v0.8.10-0.20200504184332-72489c472437/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8=
24+
github.com/Microsoft/hcsshim v0.8.10-0.20200506181021-222e9efadbe0 h1:crtz6U11CjYtIw+ArIOU2MAr4rwHbBJq+1gW/yWFwXc=
25+
github.com/Microsoft/hcsshim v0.8.10-0.20200506181021-222e9efadbe0/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8=
2226
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
2327
github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
2428
github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
2529
github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
2630
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
31+
github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f h1:tSNMc+rJDfmYntojat8lljbt1mgKNpTxUZJsSzJ9Y1s=
32+
github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko=
2733
github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw=
2834
github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA=
35+
github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA=
2936
github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y=
3037
github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI=
3138
github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0=
3239
github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o=
3340
github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc=
3441
github.com/containernetworking/cni v0.7.0-rc2 h1:2GGDhbwdWPY53iT7LXy+LBP76Ch2D/hnw1U2zVFfGbk=
3542
github.com/containernetworking/cni v0.7.0-rc2/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY=
43+
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
3644
github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3745
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3846
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
3947
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
4048
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
4149
github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
4250
github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA=
51+
github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
4352
github.com/docker/libnetwork v0.5.6 h1:hnGiypBsZR6PW1I8lqaBHh06U6LCJbI3IhOvfsZiymY=
4453
github.com/docker/libnetwork v0.5.6/go.mod h1:93m0aTqz6z+g32wla4l4WxTrdtvBRmVzYRkYvasA5Z8=
4554
github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
@@ -56,6 +65,7 @@ github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+
5665
github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg=
5766
github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc=
5867
github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I=
68+
github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
5969
github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU=
6070
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
6171
github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d h1:3PaI8p3seN09VjbTYC/QWlUZdZ1qS1zGjy7LH2Wt07I=
@@ -146,13 +156,16 @@ github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1
146156
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
147157
github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
148158
github.com/opencontainers/runtime-spec v0.0.0-20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
159+
github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
149160
github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs=
150161
github.com/petar/GoLLRB v0.0.0-20190514000832-33fb24c13b99/go.mod h1:HUpKUBZnpzkdx0kD/+Yfuft+uD3zHGtXF/XJB14TUr4=
151162
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
163+
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
152164
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
153165
github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
154166
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
155167
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
168+
github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
156169
github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
157170
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
158171
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
@@ -213,6 +226,7 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ
213226
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
214227
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
215228
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
229+
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
216230
golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
217231
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
218232
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -222,6 +236,7 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h
222236
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
223237
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
224238
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
239+
golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
225240
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
226241
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
227242
golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -244,6 +259,7 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm
244259
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
245260
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
246261
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
262+
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
247263
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc=
248264
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
249265
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
@@ -256,8 +272,10 @@ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoA
256272
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
257273
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
258274
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
275+
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
259276
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
260277
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
278+
google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
261279
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
262280
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
263281
gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
@@ -275,6 +293,7 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
275293
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
276294
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
277295
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
296+
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
278297
k8s.io/api v0.17.0 h1:H9d/lw+VkZKEVIUc8F3wgiQ+FUXTTr21M87jXLU7yqM=
279298
k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI=
280299
k8s.io/api v0.17.3 h1:XAm3PZp3wnEdzekNkcmj/9Y1zdmQYJ1I4GKSBBZ8aG0=

0 commit comments

Comments
 (0)