@@ -28,6 +28,7 @@ import (
28
28
"strings"
29
29
"time"
30
30
31
+ "github.com/aws/aws-sdk-go-v2/aws"
31
32
"github.com/aws/aws-sdk-go-v2/credentials/stscreds"
32
33
"github.com/aws/aws-sdk-go-v2/feature/ec2/imds"
33
34
"github.com/aws/aws-sdk-go-v2/service/ec2"
@@ -37,8 +38,6 @@ import (
37
38
elbv2 "github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2"
38
39
elbv2types "github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2/types"
39
40
"github.com/aws/aws-sdk-go-v2/service/kms"
40
- "github.com/aws/aws-sdk-go/aws"
41
- "github.com/aws/aws-sdk-go/aws/awserr"
42
41
"github.com/aws/smithy-go"
43
42
"gopkg.in/gcfg.v1"
44
43
@@ -730,7 +729,7 @@ func extractIPv4NodeAddresses(instance *ec2types.Instance) ([]v1.NodeAddress, er
730
729
return true
731
730
}
732
731
733
- return aws .Int32Value (instance .NetworkInterfaces [i ].Attachment .DeviceIndex ) < aws .Int32Value (instance .NetworkInterfaces [j ].Attachment .DeviceIndex )
732
+ return aws .ToInt32 (instance .NetworkInterfaces [i ].Attachment .DeviceIndex ) < aws .ToInt32 (instance .NetworkInterfaces [j ].Attachment .DeviceIndex )
734
733
})
735
734
736
735
// handle internal network interfaces
@@ -741,33 +740,33 @@ func extractIPv4NodeAddresses(instance *ec2types.Instance) ([]v1.NodeAddress, er
741
740
}
742
741
743
742
for _ , internalIP := range networkInterface .PrivateIpAddresses {
744
- if ipAddress := aws .StringValue (internalIP .PrivateIpAddress ); ipAddress != "" {
743
+ if ipAddress := aws .ToString (internalIP .PrivateIpAddress ); ipAddress != "" {
745
744
ip := netutils .ParseIPSloppy (ipAddress )
746
745
if ip == nil {
747
- return nil , fmt .Errorf ("EC2 instance had invalid private address: %s (%q)" , aws .StringValue (instance .InstanceId ), ipAddress )
746
+ return nil , fmt .Errorf ("EC2 instance had invalid private address: %s (%q)" , aws .ToString (instance .InstanceId ), ipAddress )
748
747
}
749
748
addresses = append (addresses , v1.NodeAddress {Type : v1 .NodeInternalIP , Address : ip .String ()})
750
749
}
751
750
}
752
751
}
753
752
754
753
// TODO: Other IP addresses (multiple ips)?
755
- publicIPAddress := aws .StringValue (instance .PublicIpAddress )
754
+ publicIPAddress := aws .ToString (instance .PublicIpAddress )
756
755
if publicIPAddress != "" {
757
756
ip := netutils .ParseIPSloppy (publicIPAddress )
758
757
if ip == nil {
759
- return nil , fmt .Errorf ("EC2 instance had invalid public address: %s (%s)" , aws .StringValue (instance .InstanceId ), publicIPAddress )
758
+ return nil , fmt .Errorf ("EC2 instance had invalid public address: %s (%s)" , aws .ToString (instance .InstanceId ), publicIPAddress )
760
759
}
761
760
addresses = append (addresses , v1.NodeAddress {Type : v1 .NodeExternalIP , Address : ip .String ()})
762
761
}
763
762
764
- privateDNSName := aws .StringValue (instance .PrivateDnsName )
763
+ privateDNSName := aws .ToString (instance .PrivateDnsName )
765
764
if privateDNSName != "" {
766
765
addresses = append (addresses , v1.NodeAddress {Type : v1 .NodeInternalDNS , Address : privateDNSName })
767
766
addresses = append (addresses , v1.NodeAddress {Type : v1 .NodeHostName , Address : privateDNSName })
768
767
}
769
768
770
- publicDNSName := aws .StringValue (instance .PublicDnsName )
769
+ publicDNSName := aws .ToString (instance .PublicDnsName )
771
770
if publicDNSName != "" {
772
771
addresses = append (addresses , v1.NodeAddress {Type : v1 .NodeExternalDNS , Address : publicDNSName })
773
772
}
@@ -794,10 +793,10 @@ func extractIPv6NodeAddresses(instance *ec2types.Instance) ([]v1.NodeAddress, er
794
793
}
795
794
796
795
// return only the "first" address for each ENI
797
- internalIPv6 := aws .StringValue (networkInterface .Ipv6Addresses [0 ].Ipv6Address )
796
+ internalIPv6 := aws .ToString (networkInterface .Ipv6Addresses [0 ].Ipv6Address )
798
797
ip := net .ParseIP (internalIPv6 )
799
798
if ip == nil {
800
- return nil , fmt .Errorf ("EC2 instance had invalid IPv6 address: %s (%q)" , aws .StringValue (instance .InstanceId ), internalIPv6 )
799
+ return nil , fmt .Errorf ("EC2 instance had invalid IPv6 address: %s (%q)" , aws .ToString (instance .InstanceId ), internalIPv6 )
801
800
}
802
801
addresses = append (addresses , v1.NodeAddress {Type : v1 .NodeInternalIP , Address : ip .String ()})
803
802
}
@@ -943,7 +942,7 @@ func (c *Cloud) InstanceID(ctx context.Context, nodeName types.NodeName) (string
943
942
}
944
943
return "" , fmt .Errorf ("getInstanceByNodeName failed for %q with %q" , nodeName , err )
945
944
}
946
- return "/" + aws .StringValue (inst .Placement .AvailabilityZone ) + "/" + aws .StringValue (inst .InstanceId ), nil
945
+ return "/" + aws .ToString (inst .Placement .AvailabilityZone ) + "/" + aws .ToString (inst .InstanceId ), nil
947
946
}
948
947
949
948
// InstanceTypeByProviderID returns the cloudprovider instance type of the node with the specified unique providerID
@@ -1518,13 +1517,13 @@ func (c *Cloud) ensureSecurityGroup(ctx context.Context, name string, descriptio
1518
1517
klog .Warningf ("Found multiple security groups with name: %q" , name )
1519
1518
}
1520
1519
err := c .tagging .readRepairClusterTags (ctx ,
1521
- c .ec2 , aws .StringValue (securityGroups [0 ].GroupId ),
1520
+ c .ec2 , aws .ToString (securityGroups [0 ].GroupId ),
1522
1521
ResourceLifecycleOwned , nil , securityGroups [0 ].Tags )
1523
1522
if err != nil {
1524
1523
return "" , err
1525
1524
}
1526
1525
1527
- return aws .StringValue (securityGroups [0 ].GroupId ), nil
1526
+ return aws .ToString (securityGroups [0 ].GroupId ), nil
1528
1527
}
1529
1528
1530
1529
createRequest := & ec2.CreateSecurityGroupInput {}
@@ -1550,9 +1549,9 @@ func (c *Cloud) ensureSecurityGroup(ctx context.Context, name string, descriptio
1550
1549
createResponse , err := c .ec2 .CreateSecurityGroup (ctx , createRequest )
1551
1550
if err != nil {
1552
1551
ignore := false
1553
- switch err := err .( type ) {
1554
- case awserr. Error :
1555
- if err . Code () == "InvalidGroup.Duplicate" && attempt < MaxReadThenCreateRetries {
1552
+ var ae smithy. APIError
1553
+ if errors . As ( err , & ae ) {
1554
+ if ae . ErrorCode () == "InvalidGroup.Duplicate" && attempt < MaxReadThenCreateRetries {
1556
1555
klog .V (2 ).Infof ("Got InvalidGroup.Duplicate while creating security group (race?); will retry" )
1557
1556
ignore = true
1558
1557
}
@@ -1563,7 +1562,7 @@ func (c *Cloud) ensureSecurityGroup(ctx context.Context, name string, descriptio
1563
1562
}
1564
1563
time .Sleep (1 * time .Second )
1565
1564
} else {
1566
- groupID = aws .StringValue (createResponse .GroupId )
1565
+ groupID = aws .ToString (createResponse .GroupId )
1567
1566
break
1568
1567
}
1569
1568
}
@@ -1577,8 +1576,8 @@ func (c *Cloud) ensureSecurityGroup(ctx context.Context, name string, descriptio
1577
1576
// Finds the value for a given tag.
1578
1577
func findTag (tags []ec2types.Tag , key string ) (string , bool ) {
1579
1578
for _ , tag := range tags {
1580
- if aws .StringValue (tag .Key ) == key {
1581
- return aws .StringValue (tag .Value ), true
1579
+ if aws .ToString (tag .Key ) == key {
1580
+ return aws .ToString (tag .Value ), true
1582
1581
}
1583
1582
}
1584
1583
return "" , false
@@ -1643,8 +1642,8 @@ func (c *Cloud) findELBSubnets(ctx context.Context, internalELB bool) ([]string,
1643
1642
1644
1643
subnetsByAZ := make (map [string ]ec2types.Subnet )
1645
1644
for _ , subnet := range subnets {
1646
- az := aws .StringValue (subnet .AvailabilityZone )
1647
- id := aws .StringValue (subnet .SubnetId )
1645
+ az := aws .ToString (subnet .AvailabilityZone )
1646
+ id := aws .ToString (subnet .SubnetId )
1648
1647
if az == "" || id == "" {
1649
1648
klog .Warningf ("Ignoring subnet with empty az/id: %v" , subnet )
1650
1649
continue
@@ -1725,7 +1724,7 @@ func (c *Cloud) findELBSubnets(ctx context.Context, internalELB bool) ([]string,
1725
1724
// does not support NLB/CLB for the moment, only ALB.
1726
1725
continue
1727
1726
}
1728
- subnetIDs = append (subnetIDs , aws .StringValue (subnetsByAZ [zone ].SubnetId ))
1727
+ subnetIDs = append (subnetIDs , aws .ToString (subnetsByAZ [zone ].SubnetId ))
1729
1728
}
1730
1729
1731
1730
return subnetIDs , nil
@@ -1810,7 +1809,7 @@ func (c *Cloud) resolveSubnetNameOrIDs(ctx context.Context, subnetNameOrIDs []st
1810
1809
}
1811
1810
var subnets []string
1812
1811
for _ , subnet := range resolvedSubnets {
1813
- subnets = append (subnets , aws .StringValue (subnet .SubnetId ))
1812
+ subnets = append (subnets , aws .ToString (subnet .SubnetId ))
1814
1813
}
1815
1814
return subnets , nil
1816
1815
}
@@ -1819,7 +1818,7 @@ func isSubnetPublic(rt []ec2types.RouteTable, subnetID string) (bool, error) {
1819
1818
var subnetTable * ec2types.RouteTable
1820
1819
for _ , table := range rt {
1821
1820
for _ , assoc := range table .Associations {
1822
- if aws .StringValue (assoc .SubnetId ) == subnetID {
1821
+ if aws .ToString (assoc .SubnetId ) == subnetID {
1823
1822
subnetTable = & table
1824
1823
break
1825
1824
}
@@ -1831,9 +1830,9 @@ func isSubnetPublic(rt []ec2types.RouteTable, subnetID string) (bool, error) {
1831
1830
// associated with the VPC's main routing table.
1832
1831
for _ , table := range rt {
1833
1832
for _ , assoc := range table .Associations {
1834
- if aws .BoolValue (assoc .Main ) == true {
1833
+ if aws .ToBool (assoc .Main ) == true {
1835
1834
klog .V (4 ).Infof ("Assuming implicit use of main routing table %s for %s" ,
1836
- aws .StringValue (table .RouteTableId ), subnetID )
1835
+ aws .ToString (table .RouteTableId ), subnetID )
1837
1836
subnetTable = & table
1838
1837
break
1839
1838
}
@@ -1852,7 +1851,7 @@ func isSubnetPublic(rt []ec2types.RouteTable, subnetID string) (bool, error) {
1852
1851
// from the default in-subnet route which is called "local"
1853
1852
// or other virtual gateway (starting with vgv)
1854
1853
// or vpc peering connections (starting with pcx).
1855
- if strings .HasPrefix (aws .StringValue (route .GatewayId ), "igw" ) {
1854
+ if strings .HasPrefix (aws .ToString (route .GatewayId ), "igw" ) {
1856
1855
return true , nil
1857
1856
}
1858
1857
}
@@ -2028,7 +2027,7 @@ func (c *Cloud) getSubnetCidrs(ctx context.Context, subnetIDs []string) ([]strin
2028
2027
2029
2028
cidrs := make ([]string , 0 , len (subnets ))
2030
2029
for _ , subnet := range subnets {
2031
- cidrs = append (cidrs , aws .StringValue (subnet .CidrBlock ))
2030
+ cidrs = append (cidrs , aws .ToString (subnet .CidrBlock ))
2032
2031
}
2033
2032
return cidrs , nil
2034
2033
}
@@ -2552,13 +2551,13 @@ func (c *Cloud) EnsureLoadBalancer(ctx context.Context, clusterName string, apiS
2552
2551
return nil , err
2553
2552
}
2554
2553
2555
- err = c .ensureLoadBalancerInstances (ctx , aws .StringValue (loadBalancer .LoadBalancerName ), loadBalancer .Instances , instances )
2554
+ err = c .ensureLoadBalancerInstances (ctx , aws .ToString (loadBalancer .LoadBalancerName ), loadBalancer .Instances , instances )
2556
2555
if err != nil {
2557
2556
klog .Warningf ("Error registering instances with the load balancer: %q" , err )
2558
2557
return nil , err
2559
2558
}
2560
2559
2561
- klog .V (1 ).Infof ("Loadbalancer %s (%v) has DNS name %s" , loadBalancerName , serviceName , aws .StringValue (loadBalancer .DNSName ))
2560
+ klog .V (1 ).Infof ("Loadbalancer %s (%v) has DNS name %s" , loadBalancerName , serviceName , aws .ToString (loadBalancer .DNSName ))
2562
2561
2563
2562
// TODO: Wait for creation?
2564
2563
@@ -2606,9 +2605,9 @@ func (c *Cloud) GetLoadBalancerName(ctx context.Context, clusterName string, ser
2606
2605
func toStatus (lb * elbtypes.LoadBalancerDescription ) * v1.LoadBalancerStatus {
2607
2606
status := & v1.LoadBalancerStatus {}
2608
2607
2609
- if aws .StringValue (lb .DNSName ) != "" {
2608
+ if aws .ToString (lb .DNSName ) != "" {
2610
2609
var ingress v1.LoadBalancerIngress
2611
- ingress .Hostname = aws .StringValue (lb .DNSName )
2610
+ ingress .Hostname = aws .ToString (lb .DNSName )
2612
2611
status .Ingress = []v1.LoadBalancerIngress {ingress }
2613
2612
}
2614
2613
@@ -2623,10 +2622,10 @@ func v2toStatus(lb *elbv2types.LoadBalancer) *v1.LoadBalancerStatus {
2623
2622
}
2624
2623
2625
2624
// We check for Active or Provisioning, the only successful statuses
2626
- if aws .StringValue (lb .DNSName ) != "" && (lb .State .Code == elbv2types .LoadBalancerStateEnumActive ||
2625
+ if aws .ToString (lb .DNSName ) != "" && (lb .State .Code == elbv2types .LoadBalancerStateEnumActive ||
2627
2626
lb .State .Code == elbv2types .LoadBalancerStateEnumProvisioning ) {
2628
2627
var ingress v1.LoadBalancerIngress
2629
- ingress .Hostname = aws .StringValue (lb .DNSName )
2628
+ ingress .Hostname = aws .ToString (lb .DNSName )
2630
2629
status .Ingress = []v1.LoadBalancerIngress {ingress }
2631
2630
}
2632
2631
@@ -2638,12 +2637,12 @@ func v2toStatus(lb *elbv2types.LoadBalancer) *v1.LoadBalancerStatus {
2638
2637
// However, if there are multiple security groups, we will choose the one tagged with our cluster filter.
2639
2638
// Otherwise we will return an error.
2640
2639
func findSecurityGroupForInstance (instance * ec2types.Instance , taggedSecurityGroups map [string ]* ec2types.SecurityGroup ) (* ec2types.GroupIdentifier , error ) {
2641
- instanceID := aws .StringValue (instance .InstanceId )
2640
+ instanceID := aws .ToString (instance .InstanceId )
2642
2641
2643
2642
var tagged []ec2types.GroupIdentifier
2644
2643
var untagged []ec2types.GroupIdentifier
2645
2644
for _ , group := range instance .SecurityGroups {
2646
- groupID := aws .StringValue (group .GroupId )
2645
+ groupID := aws .ToString (group .GroupId )
2647
2646
if groupID == "" {
2648
2647
klog .Warningf ("Ignoring security group without id for instance %q: %v" , instanceID , group )
2649
2648
continue
@@ -2695,7 +2694,7 @@ func (c *Cloud) getTaggedSecurityGroups(ctx context.Context) (map[string]*ec2typ
2695
2694
continue
2696
2695
}
2697
2696
2698
- id := aws .StringValue (group .GroupId )
2697
+ id := aws .ToString (group .GroupId )
2699
2698
if id == "" {
2700
2699
klog .Warningf ("Ignoring group without id: %v" , group )
2701
2700
continue
@@ -2715,7 +2714,7 @@ func (c *Cloud) updateInstanceSecurityGroupsForLoadBalancer(ctx context.Context,
2715
2714
// Determine the load balancer security group id
2716
2715
lbSecurityGroupIDs := lb .SecurityGroups
2717
2716
if len (lbSecurityGroupIDs ) == 0 {
2718
- return fmt .Errorf ("could not determine security group for load balancer: %s" , aws .StringValue (lb .LoadBalancerName ))
2717
+ return fmt .Errorf ("could not determine security group for load balancer: %s" , aws .ToString (lb .LoadBalancerName ))
2719
2718
}
2720
2719
2721
2720
taggedSecurityGroups , err := c .getTaggedSecurityGroups (ctx )
@@ -2765,10 +2764,10 @@ func (c *Cloud) updateInstanceSecurityGroupsForLoadBalancer(ctx context.Context,
2765
2764
}
2766
2765
2767
2766
if securityGroup == nil {
2768
- klog .Warning ("Ignoring instance without security group: " , aws .StringValue (instance .InstanceId ))
2767
+ klog .Warning ("Ignoring instance without security group: " , aws .ToString (instance .InstanceId ))
2769
2768
continue
2770
2769
}
2771
- id := aws .StringValue (securityGroup .GroupId )
2770
+ id := aws .ToString (securityGroup .GroupId )
2772
2771
if id == "" {
2773
2772
klog .Warningf ("found security group without id: %v" , securityGroup )
2774
2773
continue
@@ -2779,7 +2778,7 @@ func (c *Cloud) updateInstanceSecurityGroupsForLoadBalancer(ctx context.Context,
2779
2778
2780
2779
// Compare to actual groups
2781
2780
for actualGroup , hasClusterTag := range actualGroups {
2782
- actualGroupID := aws .StringValue (actualGroup .GroupId )
2781
+ actualGroupID := aws .ToString (actualGroup .GroupId )
2783
2782
if actualGroupID == "" {
2784
2783
klog .Warning ("Ignoring group without ID: " , actualGroup )
2785
2784
continue
@@ -2934,7 +2933,7 @@ func (c *Cloud) EnsureLoadBalancerDeleted(ctx context.Context, clusterName strin
2934
2933
}
2935
2934
2936
2935
for _ , sg := range response {
2937
- sgID := aws .StringValue (sg .GroupId )
2936
+ sgID := aws .ToString (sg .GroupId )
2938
2937
2939
2938
if sgID == c .cfg .Global .ElbSecurityGroup {
2940
2939
//We don't want to delete a security group that was defined in the Cloud Configuration.
@@ -2966,7 +2965,7 @@ func (c *Cloud) EnsureLoadBalancerDeleted(ctx context.Context, clusterName strin
2966
2965
// Determine the load balancer security group id
2967
2966
lbSecurityGroupIDs := lb .SecurityGroups
2968
2967
if len (lbSecurityGroupIDs ) == 0 {
2969
- return fmt .Errorf ("could not determine security group for load balancer: %s" , aws .StringValue (lb .LoadBalancerName ))
2968
+ return fmt .Errorf ("could not determine security group for load balancer: %s" , aws .ToString (lb .LoadBalancerName ))
2970
2969
}
2971
2970
c .sortELBSecurityGroupList (lbSecurityGroupIDs , service .Annotations , taggedLBSecurityGroups )
2972
2971
loadBalancerSecurityGroupID := lbSecurityGroupIDs [0 ]
@@ -3086,7 +3085,7 @@ func (c *Cloud) UpdateLoadBalancer(ctx context.Context, clusterName string, serv
3086
3085
}
3087
3086
}
3088
3087
3089
- err = c .ensureLoadBalancerInstances (ctx , aws .StringValue (lb .LoadBalancerName ), lb .Instances , instances )
3088
+ err = c .ensureLoadBalancerInstances (ctx , aws .ToString (lb .LoadBalancerName ), lb .Instances , instances )
3090
3089
if err != nil {
3091
3090
klog .Warningf ("Error registering/deregistering instances with the load balancer: %q" , err )
3092
3091
return err
@@ -3133,7 +3132,7 @@ func (c *Cloud) getInstancesByIDs(ctx context.Context, instanceIDs []string) (ma
3133
3132
}
3134
3133
3135
3134
for _ , instance := range instances {
3136
- instanceID := aws .StringValue (instance .InstanceId )
3135
+ instanceID := aws .ToString (instance .InstanceId )
3137
3136
if instanceID == "" {
3138
3137
continue
3139
3138
}
@@ -3235,7 +3234,7 @@ func mapNodeNameToPrivateDNSName(nodeName types.NodeName) string {
3235
3234
// Deprecated: use instanceIDToNodeName instead. See
3236
3235
// mapNodeNameToPrivateDNSName for details.
3237
3236
func mapInstanceToNodeName (i * ec2types.Instance ) types.NodeName {
3238
- return types .NodeName (aws .StringValue (i .PrivateDnsName ))
3237
+ return types .NodeName (aws .ToString (i .PrivateDnsName ))
3239
3238
}
3240
3239
3241
3240
var aliveFilter = []string {
0 commit comments