@@ -20,7 +20,6 @@ import (
2020 "context"
2121 "errors"
2222 "fmt"
23- "os"
2423 "strings"
2524
2625 "github.com/digitalocean/godo"
@@ -130,9 +129,21 @@ func allLoadBalancerList(ctx context.Context, client *godo.Client) ([]godo.LoadB
130129func nodeAddresses (droplet * godo.Droplet ) ([]v1.NodeAddress , error ) {
131130 var addresses []v1.NodeAddress
132131 addresses = append (addresses , v1.NodeAddress {Type : v1 .NodeHostName , Address : droplet .Name })
133- ipFamilies := os .Getenv (doIPAddrFamiliesEnv )
134132
135- if strings .Contains (ipFamilies , "ipv4" ) || ipFamilies == "" {
133+ for _ , i := range strings .Split (ipFamilies , "," ) {
134+ addr , err := discoverAddress (droplet , i )
135+ if err != nil {
136+ return nil , fmt .Errorf ("could not get addresses for %s : %v" , i , err )
137+ }
138+ addresses = append (addresses , addr ... )
139+ }
140+
141+ return addresses , nil
142+ }
143+
144+ func discoverAddress (droplet * godo.Droplet , family string ) ([]v1.NodeAddress , error ) {
145+ var addresses []v1.NodeAddress
146+ if family == "ipv4" || family == "" {
136147 privateIP , err := droplet .PrivateIPv4 ()
137148 if err != nil || privateIP == "" {
138149 return nil , fmt .Errorf ("could not get private ip: %v" , err )
@@ -144,13 +155,15 @@ func nodeAddresses(droplet *godo.Droplet) ([]v1.NodeAddress, error) {
144155 return nil , fmt .Errorf ("could not get public ip: %v" , err )
145156 }
146157 addresses = append (addresses , v1.NodeAddress {Type : v1 .NodeExternalIP , Address : publicIP })
158+ return addresses , nil
147159 }
148- if strings . Contains ( ipFamilies , "ipv6" ) {
160+ if family == "ipv6" {
149161 publicIPv6 , err := droplet .PublicIPv6 ()
150162 if err != nil || publicIPv6 == "" {
151163 return nil , fmt .Errorf ("could not get public ipv6: %v" , err )
152164 }
153165 addresses = append (addresses , v1.NodeAddress {Type : v1 .NodeExternalIP , Address : publicIPv6 })
166+ return addresses , nil
154167 }
155168
156169 return addresses , nil
0 commit comments