mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-07 11:13:48 +00:00
Merge pull request #19337 from danielschonfeld/optimize-list-routes
Auto commit by PR queue bot
This commit is contained in:
commit
e0e305c6be
@ -2093,22 +2093,48 @@ func (s *AWSCloud) UpdateTCPLoadBalancer(name, region string, hosts []string) er
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Returns the instance with the specified ID
|
// Returns the instance with the specified ID
|
||||||
func (a *AWSCloud) getInstanceById(instanceID string) (*ec2.Instance, error) {
|
// This function is currently unused, but seems very likely to be needed again
|
||||||
request := &ec2.DescribeInstancesInput{
|
func (a *AWSCloud) getInstanceByID(instanceID string) (*ec2.Instance, error) {
|
||||||
InstanceIds: []*string{&instanceID},
|
instances, err := a.getInstancesByIDs([]*string{&instanceID})
|
||||||
}
|
|
||||||
|
|
||||||
instances, err := a.ec2.DescribeInstances(request)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(instances) == 0 {
|
if len(instances) == 0 {
|
||||||
return nil, fmt.Errorf("no instances found for instance: %s", instanceID)
|
return nil, fmt.Errorf("no instances found for instance: %s", instanceID)
|
||||||
}
|
}
|
||||||
if len(instances) > 1 {
|
if len(instances) > 1 {
|
||||||
return nil, fmt.Errorf("multiple instances found for instance: %s", instanceID)
|
return nil, fmt.Errorf("multiple instances found for instance: %s", instanceID)
|
||||||
}
|
}
|
||||||
return instances[0], nil
|
|
||||||
|
return instances[instanceID], nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AWSCloud) getInstancesByIDs(instanceIDs []*string) (map[string]*ec2.Instance, error) {
|
||||||
|
instancesByID := make(map[string]*ec2.Instance)
|
||||||
|
if len(instanceIDs) == 0 {
|
||||||
|
return instancesByID, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
request := &ec2.DescribeInstancesInput{
|
||||||
|
InstanceIds: instanceIDs,
|
||||||
|
}
|
||||||
|
|
||||||
|
instances, err := a.ec2.DescribeInstances(request)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, instance := range instances {
|
||||||
|
instanceID := orEmpty(instance.InstanceId)
|
||||||
|
if instanceID == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
instancesByID[instanceID] = instance
|
||||||
|
}
|
||||||
|
|
||||||
|
return instancesByID, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Make efficient
|
// TODO: Make efficient
|
||||||
|
@ -56,6 +56,23 @@ func (s *AWSCloud) ListRoutes(clusterName string) ([]*cloudprovider.Route, error
|
|||||||
}
|
}
|
||||||
|
|
||||||
var routes []*cloudprovider.Route
|
var routes []*cloudprovider.Route
|
||||||
|
var instanceIDs []*string
|
||||||
|
|
||||||
|
for _, r := range table.Routes {
|
||||||
|
instanceID := orEmpty(r.InstanceId)
|
||||||
|
|
||||||
|
if instanceID == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
instanceIDs = append(instanceIDs, &instanceID)
|
||||||
|
}
|
||||||
|
|
||||||
|
instances, err := s.getInstancesByIDs(instanceIDs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
for _, r := range table.Routes {
|
for _, r := range table.Routes {
|
||||||
instanceID := orEmpty(r.InstanceId)
|
instanceID := orEmpty(r.InstanceId)
|
||||||
destinationCIDR := orEmpty(r.DestinationCidrBlock)
|
destinationCIDR := orEmpty(r.DestinationCidrBlock)
|
||||||
@ -64,9 +81,10 @@ func (s *AWSCloud) ListRoutes(clusterName string) ([]*cloudprovider.Route, error
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
instance, err := s.getInstanceById(instanceID)
|
instance, found := instances[instanceID]
|
||||||
if err != nil {
|
if !found {
|
||||||
return nil, err
|
glog.Warningf("unable to find instance ID %s in the list of instances being routed to", instanceID)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
instanceName := orEmpty(instance.PrivateDnsName)
|
instanceName := orEmpty(instance.PrivateDnsName)
|
||||||
routeName := clusterName + "-" + destinationCIDR
|
routeName := clusterName + "-" + destinationCIDR
|
||||||
|
Loading…
Reference in New Issue
Block a user