From 6054692dcece7718c32999dc62d73dba0e751778 Mon Sep 17 00:00:00 2001 From: Anton Bronnikov Date: Fri, 6 Sep 2024 19:34:41 +0300 Subject: [PATCH] feat: allow multiple interfaces with aws --- aws/metadata.go | 173 +------------------ aws/network_interface.go | 218 ++++++++++++++++++++++++ aws/route_table.go | 27 ++- config/bridge.go | 3 + config/reconcile.go | 4 +- config/reconcile_bridge_activate.go | 70 +------- config/reconcile_bridge_activate_aws.go | 135 +++++++++++++++ go.mod | 50 +++--- go.sum | 131 ++++++-------- reconciler/bridge_activate.go | 16 +- 10 files changed, 477 insertions(+), 350 deletions(-) create mode 100644 aws/network_interface.go create mode 100644 config/reconcile_bridge_activate_aws.go diff --git a/aws/metadata.go b/aws/metadata.go index 3ee266f..575574d 100644 --- a/aws/metadata.go +++ b/aws/metadata.go @@ -4,17 +4,13 @@ import ( "context" "errors" "fmt" - "io" - "strings" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/feature/ec2/imds" - "github.com/flashbots/vpnham/utils" ) var ( - errFailedToDeriveRegion = errors.New("failed to derive aws region from the environment") - errFailedToDeriveEc2NetworkInterfaceId = errors.New("failed to derive aws ec2 instance's network interface id") + errFailedToDeriveRegion = errors.New("failed to derive aws region from the environment") ) func Region(ctx context.Context) (string, error) { @@ -36,170 +32,3 @@ func Region(ctx context.Context) (string, error) { return out.Region, nil } - -func NetworkInterfaceId(ctx context.Context, interfaceName string) (string, error) { - ipv4s, ipv6s, err := func() (map[string]struct{}, map[string]struct{}, error) { - _ipv4s, _ipv6s, err := utils.GetInterfaceIPs(interfaceName) - if err != nil { - return nil, nil, err - } - - ipv4s := make(map[string]struct{}, len(_ipv4s)) - ipv6s := make(map[string]struct{}, len(_ipv6s)) - - for _, ipv4 := range _ipv4s { - ipv4s[ipv4] = struct{}{} - } - - for _, ipv6 := range _ipv6s { - ipv6s[ipv6] = struct{}{} - } - - return ipv4s, ipv6s, nil - }() - if err != nil { - return "", fmt.Errorf("%w: %w", - errFailedToDeriveEc2NetworkInterfaceId, err, - ) - } - - macs, err := macAddresses(ctx) - if err != nil { - return "", fmt.Errorf("%w: %w", - errFailedToDeriveEc2NetworkInterfaceId, err, - ) - } - - errs := []error{} - for _, mac := range macs { - eni, err := macInterfaceID(ctx, mac) - if err != nil { - return "", fmt.Errorf("%w: %w", - errFailedToDeriveEc2NetworkInterfaceId, err, - ) - } - - if len(ipv4s) > 0 { - macIPv4s, err := macLocalIPv4s(ctx, mac) - if err != nil { - // there could be legit errors - // (e.g. when getting ipv4 addresses for ipv6-only interface) - errs = append(errs, err) - } else { - for _, ipv4 := range macIPv4s { - if _, exists := ipv4s[ipv4]; exists { - return eni, nil - } - } - } - } - - if len(ipv6s) > 0 { - macIPv6s, err := macIPv6s(ctx, mac) - if err != nil { - // there could be legit errors - // (e.g. when getting ipv6 addresses for ipv4-only interface) - errs = append(errs, err) - } else { - for _, ipv6 := range macIPv6s { - if _, exists := ipv6s[ipv6]; exists { - return eni, nil - } - } - } - } - } - - return "", fmt.Errorf("%w: %w", - errFailedToDeriveEc2NetworkInterfaceId, - fmt.Errorf("could not find matching ip: %w", errors.Join(errs...)), - ) -} - -func macAddresses(ctx context.Context) ([]string, error) { - cfg, err := config.LoadDefaultConfig(ctx) - if err != nil { - return nil, err - } - cli := imds.NewFromConfig(cfg) - - out, err := cli.GetMetadata(ctx, &imds.GetMetadataInput{ - Path: "network/interfaces/macs/", - }) - if err != nil { - return nil, err - } - - buf := &strings.Builder{} - if _, err := io.Copy(buf, out.Content); err != nil { - return nil, err - } - - return strings.Split(strings.TrimSpace(buf.String()), "\n"), nil -} - -func macInterfaceID(ctx context.Context, mac string) (string, error) { - cfg, err := config.LoadDefaultConfig(ctx) - if err != nil { - return "", err - } - cli := imds.NewFromConfig(cfg) - - out, err := cli.GetMetadata(ctx, &imds.GetMetadataInput{ - Path: "network/interfaces/macs/" + mac + "/interface-id", - }) - if err != nil { - return "", err - } - - buf := &strings.Builder{} - if _, err := io.Copy(buf, out.Content); err != nil { - return "", err - } - - return strings.TrimSpace(buf.String()), nil -} - -func macLocalIPv4s(ctx context.Context, mac string) ([]string, error) { - cfg, err := config.LoadDefaultConfig(ctx) - if err != nil { - return nil, err - } - cli := imds.NewFromConfig(cfg) - - out, err := cli.GetMetadata(ctx, &imds.GetMetadataInput{ - Path: "network/interfaces/macs/" + mac + "/local-ipv4s", - }) - if err != nil { - return nil, err - } - - buf := &strings.Builder{} - if _, err := io.Copy(buf, out.Content); err != nil { - return nil, err - } - - return strings.Split(strings.TrimSpace(buf.String()), "\n"), nil -} - -func macIPv6s(ctx context.Context, mac string) ([]string, error) { - cfg, err := config.LoadDefaultConfig(ctx) - if err != nil { - return nil, err - } - cli := imds.NewFromConfig(cfg) - - out, err := cli.GetMetadata(ctx, &imds.GetMetadataInput{ - Path: "network/interfaces/macs/" + mac + "/ipv6s", - }) - if err != nil { - return nil, err - } - - buf := &strings.Builder{} - if _, err := io.Copy(buf, out.Content); err != nil { - return nil, err - } - - return strings.Split(strings.TrimSpace(buf.String()), "\n"), nil -} diff --git a/aws/network_interface.go b/aws/network_interface.go new file mode 100644 index 0000000..699435d --- /dev/null +++ b/aws/network_interface.go @@ -0,0 +1,218 @@ +package aws + +import ( + "context" + "errors" + "fmt" + "io" + "strings" + + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/feature/ec2/imds" + "github.com/aws/aws-sdk-go-v2/service/ec2" + "github.com/flashbots/vpnham/utils" +) + +var ( + errFailedToDeriveEc2NetworkInterfaceId = errors.New("failed to derive aws ec2 instance's network interface id") + errFailedToDeriveVpcIdFromInterface = errors.New("failed to derive vpc id from network interface id") +) + +func (cli *Client) NetworkInterfaceId( + ctx context.Context, + localInterfaceName string, +) (string, error) { + ipv4s, ipv6s, err := func() (map[string]struct{}, map[string]struct{}, error) { + _ipv4s, _ipv6s, err := utils.GetInterfaceIPs(localInterfaceName) + if err != nil { + return nil, nil, err + } + + ipv4s := make(map[string]struct{}, len(_ipv4s)) + ipv6s := make(map[string]struct{}, len(_ipv6s)) + + for _, ipv4 := range _ipv4s { + ipv4s[ipv4] = struct{}{} + } + + for _, ipv6 := range _ipv6s { + ipv6s[ipv6] = struct{}{} + } + + return ipv4s, ipv6s, nil + }() + if err != nil { + return "", fmt.Errorf("%w: %w", + errFailedToDeriveEc2NetworkInterfaceId, err, + ) + } + + macs, err := macAddresses(ctx) + if err != nil { + return "", fmt.Errorf("%w: %w", + errFailedToDeriveEc2NetworkInterfaceId, err, + ) + } + + errs := []error{} + for _, mac := range macs { + eni, err := macInterfaceID(ctx, mac) + if err != nil { + return "", fmt.Errorf("%w: %w", + errFailedToDeriveEc2NetworkInterfaceId, err, + ) + } + + if len(ipv4s) > 0 { + macIPv4s, err := macLocalIPv4s(ctx, mac) + if err != nil { + // there could be legit errors + // (e.g. when getting ipv4 addresses for ipv6-only interface) + errs = append(errs, err) + } else { + for _, ipv4 := range macIPv4s { + if _, exists := ipv4s[ipv4]; exists { + return eni, nil + } + } + } + } + + if len(ipv6s) > 0 { + macIPv6s, err := macIPv6s(ctx, mac) + if err != nil { + // there could be legit errors + // (e.g. when getting ipv6 addresses for ipv4-only interface) + errs = append(errs, err) + } else { + for _, ipv6 := range macIPv6s { + if _, exists := ipv6s[ipv6]; exists { + return eni, nil + } + } + } + } + } + + return "", fmt.Errorf("%w: %w", + errFailedToDeriveEc2NetworkInterfaceId, + fmt.Errorf("could not find matching ip: %w", errors.Join(errs...)), + ) +} + +func (cli *Client) NetworkInterfaceVpcID( + ctx context.Context, + interfaceID string, +) (string, error) { + out, err := cli.ec2.DescribeNetworkInterfaces(ctx, &ec2.DescribeNetworkInterfacesInput{ + NetworkInterfaceIds: []string{interfaceID}, + }) + if err != nil { + return "", fmt.Errorf("%w: %w", + errFailedToDeriveVpcIdFromInterface, err, + ) + } + + if len(out.NetworkInterfaces) == 0 { + return "", fmt.Errorf("%w: interface not found: %s", + errFailedToDeriveVpcIdFromInterface, interfaceID, + ) + } + ifs := out.NetworkInterfaces[0] + + if ifs.VpcId == nil { + return "", fmt.Errorf("%w: interface has no vpc id: %s", + errFailedToDeriveVpcIdFromInterface, interfaceID, + ) + } + + return *ifs.VpcId, nil +} + +func macAddresses(ctx context.Context) ([]string, error) { + cfg, err := config.LoadDefaultConfig(ctx) + if err != nil { + return nil, err + } + cli := imds.NewFromConfig(cfg) + + out, err := cli.GetMetadata(ctx, &imds.GetMetadataInput{ + Path: "network/interfaces/macs/", + }) + if err != nil { + return nil, err + } + + buf := &strings.Builder{} + if _, err := io.Copy(buf, out.Content); err != nil { + return nil, err + } + + return strings.Split(strings.TrimSpace(buf.String()), "\n"), nil +} + +func macInterfaceID(ctx context.Context, mac string) (string, error) { + cfg, err := config.LoadDefaultConfig(ctx) + if err != nil { + return "", err + } + cli := imds.NewFromConfig(cfg) + + out, err := cli.GetMetadata(ctx, &imds.GetMetadataInput{ + Path: "network/interfaces/macs/" + mac + "/interface-id", + }) + if err != nil { + return "", err + } + + buf := &strings.Builder{} + if _, err := io.Copy(buf, out.Content); err != nil { + return "", err + } + + return strings.TrimSpace(buf.String()), nil +} + +func macLocalIPv4s(ctx context.Context, mac string) ([]string, error) { + cfg, err := config.LoadDefaultConfig(ctx) + if err != nil { + return nil, err + } + cli := imds.NewFromConfig(cfg) + + out, err := cli.GetMetadata(ctx, &imds.GetMetadataInput{ + Path: "network/interfaces/macs/" + mac + "/local-ipv4s", + }) + if err != nil { + return nil, err + } + + buf := &strings.Builder{} + if _, err := io.Copy(buf, out.Content); err != nil { + return nil, err + } + + return strings.Split(strings.TrimSpace(buf.String()), "\n"), nil +} + +func macIPv6s(ctx context.Context, mac string) ([]string, error) { + cfg, err := config.LoadDefaultConfig(ctx) + if err != nil { + return nil, err + } + cli := imds.NewFromConfig(cfg) + + out, err := cli.GetMetadata(ctx, &imds.GetMetadataInput{ + Path: "network/interfaces/macs/" + mac + "/ipv6s", + }) + if err != nil { + return nil, err + } + + buf := &strings.Builder{} + if _, err := io.Copy(buf, out.Content); err != nil { + return nil, err + } + + return strings.Split(strings.TrimSpace(buf.String()), "\n"), nil +} diff --git a/aws/route_table.go b/aws/route_table.go index 5b70bcb..7f06bef 100644 --- a/aws/route_table.go +++ b/aws/route_table.go @@ -2,6 +2,7 @@ package aws import ( "context" + "errors" "fmt" "github.com/aws/aws-sdk-go-v2/aws" @@ -11,7 +12,14 @@ import ( "go.uber.org/zap" ) -func (cli *Client) RouteTableExists(ctx context.Context, routeTable string) (bool, error) { +var ( + errFailedToDeriveVpcIdFromRouteTable = errors.New("failed to derive vpc id from route table id") +) + +func (cli *Client) RouteTableVpcID( + ctx context.Context, + routeTable string, +) (string, error) { l := logutils.LoggerFromContext(ctx) l.Debug("Describing AWS route table...", @@ -26,14 +34,25 @@ func (cli *Client) RouteTableExists(ctx context.Context, routeTable string) (boo zap.Error(err), zap.String("route_table", routeTable), ) - return false, err + return "", fmt.Errorf("%w: %w", + errFailedToDeriveVpcIdFromRouteTable, err, + ) } if len(out.RouteTables) == 0 { - return false, nil + return "", fmt.Errorf("%w: route table not found: %s", + errFailedToDeriveVpcIdFromRouteTable, routeTable, + ) + } + + rt := out.RouteTables[0] + if rt.VpcId == nil { + return "", fmt.Errorf("%w: route table has not vpc id: %s", + errFailedToDeriveVpcIdFromRouteTable, routeTable, + ) } - return true, nil + return *rt.VpcId, nil } func (cli *Client) FindRoute( diff --git a/config/bridge.go b/config/bridge.go index 3a25d06..b87576b 100644 --- a/config/bridge.go +++ b/config/bridge.go @@ -22,6 +22,8 @@ type Bridge struct { BridgeInterface string `yaml:"bridge_interface"` PeerCIDR types.CIDR `yaml:"peer_cidr"` + SecondaryInterfaces []string `yaml:"secondary_interfaces"` + StatusAddr types.Address `yaml:"status_addr"` PartnerURL string `yaml:"partner_url"` PartnerStatusTimeout time.Duration `yaml:"partner_status_timeout"` @@ -79,6 +81,7 @@ func (b *Bridge) PostLoad(ctx context.Context) error { b.Reconcile = &Reconcile{} } b.Reconcile.BridgeInterface = b.BridgeInterface + b.Reconcile.SecondaryInterfaces = b.SecondaryInterfaces if err := b.Reconcile.PostLoad(ctx); err != nil { return err diff --git a/config/reconcile.go b/config/reconcile.go index 904c994..e8e483f 100644 --- a/config/reconcile.go +++ b/config/reconcile.go @@ -6,7 +6,8 @@ import ( ) type Reconcile struct { - BridgeInterface string `yaml:"-"` + BridgeInterface string `yaml:"-"` + SecondaryInterfaces []string `yaml:"-"` ScriptsTimeout time.Duration `yaml:"scripts_timeout"` @@ -25,6 +26,7 @@ func (r *Reconcile) PostLoad(ctx context.Context) error { r.BridgeActivate = &ReconcileBridgeActivate{} } r.BridgeActivate.BridgeInterface = r.BridgeInterface + r.BridgeActivate.SecondaryInterfaces = r.SecondaryInterfaces if err := r.BridgeActivate.PostLoad(ctx); err != nil { return err diff --git a/config/reconcile_bridge_activate.go b/config/reconcile_bridge_activate.go index 174c945..aec929d 100644 --- a/config/reconcile_bridge_activate.go +++ b/config/reconcile_bridge_activate.go @@ -2,17 +2,13 @@ package config import ( "context" - "errors" - "fmt" - "time" - "github.com/flashbots/vpnham/aws" "github.com/flashbots/vpnham/types" - "github.com/flashbots/vpnham/utils" ) type ReconcileBridgeActivate struct { - BridgeInterface string `yaml:"-"` + BridgeInterface string `yaml:"-"` + SecondaryInterfaces []string `yaml:"-"` Reapply *ReconcileReapply `yaml:"reapply"` @@ -20,19 +16,6 @@ type ReconcileBridgeActivate struct { Script types.Script `yaml:"script"` } -type ReconcileBridgeActivateAWS struct { - NetworkInterfaceID string `yaml:"-"` - Region string `yaml:"-"` - - Timeout time.Duration `yaml:"timeout"` - - RouteTables []string `yaml:"route_tables"` -} - -var ( - errAWSRouteTableDoesNotExist = errors.New("aws route table does not exist") -) - func (r *ReconcileBridgeActivate) PostLoad(ctx context.Context) error { if r.Reapply == nil { r.Reapply = &ReconcileReapply{} @@ -43,32 +26,14 @@ func (r *ReconcileBridgeActivate) PostLoad(ctx context.Context) error { } if r.AWS != nil { - if r.AWS.Timeout == 0 { - r.AWS.Timeout = DefaultAWSTimeout - } + r.AWS.BridgeInterface = r.BridgeInterface + r.AWS.SecondaryInterfaces = r.SecondaryInterfaces - { // aws region - var reg string - err := utils.WithTimeout(ctx, r.AWS.Timeout, func(ctx context.Context) (err error) { - reg, err = aws.Region(ctx) - return err - }) - if err != nil { - return err - } - r.AWS.Region = reg + if err := r.AWS.PostLoad(ctx); err != nil { + return err } - - { // aws ec2 network interface id - var networkInterfaceID string - err := utils.WithTimeout(ctx, r.AWS.Timeout, func(ctx context.Context) (err error) { - networkInterfaceID, err = aws.NetworkInterfaceId(ctx, r.BridgeInterface) - return err - }) - if err != nil { - return err - } - r.AWS.NetworkInterfaceID = networkInterfaceID + if r.AWS.Timeout == 0 { + r.AWS.Timeout = DefaultAWSTimeout } } @@ -80,24 +45,5 @@ func (r *ReconcileBridgeActivate) Validate(ctx context.Context) error { return err } - if r.AWS != nil { - cli, err := aws.NewClient(ctx) - if err != nil { - return err - } - - for _, rt := range r.AWS.RouteTables { - exists, err := cli.RouteTableExists(ctx, rt) - if err != nil { - return err - } - if !exists { - return fmt.Errorf("%w: %s", - errAWSRouteTableDoesNotExist, rt, - ) - } - } - } - return nil } diff --git a/config/reconcile_bridge_activate_aws.go b/config/reconcile_bridge_activate_aws.go new file mode 100644 index 0000000..1a960e4 --- /dev/null +++ b/config/reconcile_bridge_activate_aws.go @@ -0,0 +1,135 @@ +package config + +import ( + "context" + "errors" + "fmt" + "time" + + awscli "github.com/flashbots/vpnham/aws" + "github.com/flashbots/vpnham/utils" +) + +type ReconcileBridgeActivateAWS struct { + BridgeInterface string `yaml:"-"` + Region string `yaml:"-"` + SecondaryInterfaces []string `yaml:"-"` + Vpcs map[string]*ReconcileBridgeActivateAWSVpc `yaml:"-"` + + Timeout time.Duration `yaml:"timeout"` + + RouteTables []string `yaml:"route_tables"` +} + +type ReconcileBridgeActivateAWSVpc struct { + ID string + LocalInterfaceID string + NetworkInterfaceID string + RouteTables []string +} + +var ( + errAWSDuplicateVpcForSecondaryInterface = errors.New("secondary interface belongs to a vpc that another interface is already attached") + errAWSRouteTableWithoutInterface = errors.New("route table has not interface attached to its vpc") +) + +func (r *ReconcileBridgeActivateAWS) PostLoad(ctx context.Context) error { + if r.Timeout == 0 { + r.Timeout = DefaultAWSTimeout + } + + { // aws region + var reg string + err := utils.WithTimeout(ctx, r.Timeout, func(ctx context.Context) (err error) { + reg, err = awscli.Region(ctx) + return err + }) + if err != nil { + return err + } + r.Region = reg + } + + aws, err := awscli.NewClient(ctx) + if err != nil { + return err + } + + { // aws ec2 network interface id + var networkInterfaceID, vpcID string + err := utils.WithTimeout(ctx, r.Timeout, func(ctx context.Context) (err error) { + networkInterfaceID, err = aws.NetworkInterfaceId(ctx, r.BridgeInterface) + return err + }) + if err != nil { + return err + } + err = utils.WithTimeout(ctx, r.Timeout, func(ctx context.Context) (err error) { + vpcID, err = aws.NetworkInterfaceVpcID(ctx, networkInterfaceID) + return err + }) + if err != nil { + return err + } + r.Vpcs = make(map[string]*ReconcileBridgeActivateAWSVpc, 1+len(r.SecondaryInterfaces)) + r.Vpcs[vpcID] = &ReconcileBridgeActivateAWSVpc{ + ID: vpcID, + LocalInterfaceID: r.BridgeInterface, + NetworkInterfaceID: networkInterfaceID, + RouteTables: make([]string, 0), + } + } + + { // aws ec2 secondary interface ids + for _, ifs := range r.SecondaryInterfaces { + var networkInterfaceID, vpcID string + err := utils.WithTimeout(ctx, r.Timeout, func(ctx context.Context) (err error) { + networkInterfaceID, err = aws.NetworkInterfaceId(ctx, ifs) + return err + }) + if err != nil { + return err + } + err = utils.WithTimeout(ctx, r.Timeout, func(ctx context.Context) (err error) { + vpcID, err = aws.NetworkInterfaceVpcID(ctx, networkInterfaceID) + return err + }) + if err != nil { + return err + } + if dupe, exists := r.Vpcs[vpcID]; exists { + return fmt.Errorf("%w: vpc %s, interface %s, duplicate %s", + errAWSDuplicateVpcForSecondaryInterface, vpcID, dupe.LocalInterfaceID, ifs, + ) + } + r.Vpcs[vpcID] = &ReconcileBridgeActivateAWSVpc{ + ID: vpcID, + LocalInterfaceID: ifs, + NetworkInterfaceID: networkInterfaceID, + RouteTables: make([]string, 0), + } + } + } + + { // route tables + for _, routeTable := range r.RouteTables { + var vpcID string + err := utils.WithTimeout(ctx, r.Timeout, func(ctx context.Context) (err error) { + vpcID, err = aws.RouteTableVpcID(ctx, routeTable) + return err + }) + if err != nil { + return err + } + vpc, exists := r.Vpcs[vpcID] + if !exists { + return fmt.Errorf("%w: %s", + errAWSRouteTableWithoutInterface, routeTable, + ) + } + vpc.RouteTables = append(vpc.RouteTables, routeTable) + } + } + + return nil +} diff --git a/go.mod b/go.mod index bae7f6f..c3a4174 100644 --- a/go.mod +++ b/go.mod @@ -3,51 +3,51 @@ module github.com/flashbots/vpnham go 1.22.0 require ( - github.com/aws/aws-sdk-go-v2 v1.30.3 - github.com/aws/aws-sdk-go-v2/config v1.27.27 - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 - github.com/aws/aws-sdk-go-v2/service/ec2 v1.171.0 + github.com/aws/aws-sdk-go-v2 v1.30.5 + github.com/aws/aws-sdk-go-v2/config v1.27.33 + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.13 + github.com/aws/aws-sdk-go-v2/service/ec2 v1.177.2 github.com/google/uuid v1.6.0 - github.com/prometheus/client_golang v1.19.1 + github.com/prometheus/client_golang v1.20.3 github.com/stretchr/testify v1.9.0 - github.com/urfave/cli/v2 v2.27.2 - go.opentelemetry.io/otel v1.28.0 - go.opentelemetry.io/otel/exporters/prometheus v0.50.0 - go.opentelemetry.io/otel/metric v1.28.0 - go.opentelemetry.io/otel/sdk v1.28.0 - go.opentelemetry.io/otel/sdk/metric v1.28.0 + github.com/urfave/cli/v2 v2.27.4 + go.opentelemetry.io/otel v1.29.0 + go.opentelemetry.io/otel/exporters/prometheus v0.51.0 + go.opentelemetry.io/otel/metric v1.29.0 + go.opentelemetry.io/otel/sdk v1.29.0 + go.opentelemetry.io/otel/sdk/metric v1.29.0 go.uber.org/zap v1.27.0 gopkg.in/yaml.v2 v2.4.0 ) require ( - github.com/aws/aws-sdk-go-v2/credentials v1.17.27 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 // indirect - github.com/aws/smithy-go v1.20.3 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.32 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.17 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.19 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.22.7 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.7 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.30.7 // indirect + github.com/aws/smithy-go v1.20.4 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/klauspost/compress v1.17.9 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/common v0.59.1 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect - go.opentelemetry.io/otel/trace v1.28.0 // indirect + go.opentelemetry.io/otel/trace v1.29.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/sys v0.22.0 // indirect + golang.org/x/sys v0.25.0 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index f809ebb..7e7580b 100644 --- a/go.sum +++ b/go.sum @@ -1,46 +1,37 @@ -github.com/aws/aws-sdk-go-v2 v1.30.3 h1:jUeBtG0Ih+ZIFH0F4UkmL9w3cSpaMv9tYYDbzILP8dY= -github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= -github.com/aws/aws-sdk-go-v2/config v1.27.26 h1:T1kAefbKuNum/AbShMsZEro6eRkeOT8YILfE9wyjAYQ= -github.com/aws/aws-sdk-go-v2/config v1.27.26/go.mod h1:ivWHkAWFrw/nxty5Fku7soTIVdqZaZ7dw+tc5iGW3GA= -github.com/aws/aws-sdk-go-v2/config v1.27.27 h1:HdqgGt1OAP0HkEDDShEl0oSYa9ZZBSOmKpdpsDMdO90= -github.com/aws/aws-sdk-go-v2/config v1.27.27/go.mod h1:MVYamCg76dFNINkZFu4n4RjDixhVr51HLj4ErWzrVwg= -github.com/aws/aws-sdk-go-v2/credentials v1.17.26 h1:tsm8g/nJxi8+/7XyJJcP2dLrnK/5rkFp6+i2nhmz5fk= -github.com/aws/aws-sdk-go-v2/credentials v1.17.26/go.mod h1:3vAM49zkIa3q8WT6o9Ve5Z0vdByDMwmdScO0zvThTgI= -github.com/aws/aws-sdk-go-v2/credentials v1.17.27 h1:2raNba6gr2IfA0eqqiP2XiQ0UVOpGPgDSi0I9iAP+UI= -github.com/aws/aws-sdk-go-v2/credentials v1.17.27/go.mod h1:gniiwbGahQByxan6YjQUMcW4Aov6bLC3m+evgcoN4r4= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 h1:KreluoV8FZDEtI6Co2xuNk/UqI9iwMrOx/87PBNIKqw= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11/go.mod h1:SeSUYBLsMYFoRvHE0Tjvn7kbxaUhl75CJi1sbfhMxkU= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 h1:SoNJ4RlFEQEbtDcCEt+QG56MY4fm4W8rYirAmq+/DdU= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15/go.mod h1:U9ke74k1n2bf+RIgoX1SXFed1HLs51OgUSs+Ph0KJP8= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 h1:C6WHdGnTDIYETAm5iErQUiVNsclNx9qbJVPIt03B6bI= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15/go.mod h1:ZQLZqhcu+JhSrA9/NXRm8SkDvsycE+JkV3WGY41e+IM= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.170.0 h1:zPwhEYn3Y83mnnr9QG+i6NTiAbVbcJe6RpCSJKHIQNE= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.170.0/go.mod h1:9KdiRVKTZyPRTlbX3i41FxTV+5OatZ7xOJCN4lleX7g= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.171.0 h1:r398oizT1O8AdQGpnxOMOIstEAAb3PPW5QZsL8w4Ujc= -github.com/aws/aws-sdk-go-v2/service/ec2 v1.171.0/go.mod h1:9KdiRVKTZyPRTlbX3i41FxTV+5OatZ7xOJCN4lleX7g= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 h1:dT3MqvGhSoaIhRseqw2I0yH81l7wiR2vjs57O51EAm8= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3/go.mod h1:GlAeCkHwugxdHaueRr4nhPuY+WW+gR8UjlcqzPr1SPI= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 h1:HGErhhrxZlQ044RiM+WdoZxp0p+EGM62y3L6pwA4olE= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17/go.mod h1:RkZEx4l0EHYDJpWppMJ3nD9wZJAa8/0lq9aVC+r2UII= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.3 h1:Fv1vD2L65Jnp5QRsdiM64JvUM4Xe+E0JyVsRQKv6IeA= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.3/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 h1:BXx0ZIxvrJdSgSvKTZ+yRBeSqqgPM89VPlulEcl37tM= -github.com/aws/aws-sdk-go-v2/service/sso v1.22.4/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 h1:yiwVzJW2ZxZTurVbYWA7QOrAaCYQR72t0wrSBfoesUE= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4/go.mod h1:0oxfLkpz3rQ/CHlx5hB7H69YUpFiI1tql6Q6Ne+1bCw= -github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 h1:ZsDKRLXGWHk8WdtyYMoGNO7bTudrvuKpDKgMVRlepGE= -github.com/aws/aws-sdk-go-v2/service/sts v1.30.3/go.mod h1:zwySh8fpFyXp9yOr/KVzxOl8SRqgf/IDw5aUt9UKFcQ= -github.com/aws/smithy-go v1.20.3 h1:ryHwveWzPV5BIof6fyDvor6V3iUL7nTfiTKXHiW05nE= -github.com/aws/smithy-go v1.20.3/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= +github.com/aws/aws-sdk-go-v2 v1.30.5 h1:mWSRTwQAb0aLE17dSzztCVJWI9+cRMgqebndjwDyK0g= +github.com/aws/aws-sdk-go-v2 v1.30.5/go.mod h1:CT+ZPWXbYrci8chcARI3OmI/qgd+f6WtuLOoaIA8PR0= +github.com/aws/aws-sdk-go-v2/config v1.27.33 h1:Nof9o/MsmH4oa0s2q9a0k7tMz5x/Yj5k06lDODWz3BU= +github.com/aws/aws-sdk-go-v2/config v1.27.33/go.mod h1:kEqdYzRb8dd8Sy2pOdEbExTTF5v7ozEXX0McgPE7xks= +github.com/aws/aws-sdk-go-v2/credentials v1.17.32 h1:7Cxhp/BnT2RcGy4VisJ9miUPecY+lyE9I8JvcZofn9I= +github.com/aws/aws-sdk-go-v2/credentials v1.17.32/go.mod h1:P5/QMF3/DCHbXGEGkdbilXHsyTBX5D3HSwcrSc9p20I= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.13 h1:pfQ2sqNpMVK6xz2RbqLEL0GH87JOwSxPV2rzm8Zsb74= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.13/go.mod h1:NG7RXPUlqfsCLLFfi0+IpKN4sCB9D9fw/qTaSB+xRoU= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.17 h1:pI7Bzt0BJtYA0N/JEC6B8fJ4RBrEMi1LBrkMdFYNSnQ= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.17/go.mod h1:Dh5zzJYMtxfIjYW+/evjQ8uj2OyR/ve2KROHGHlSFqE= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17 h1:Mqr/V5gvrhA2gvgnF42Zh5iMiQNcOYthFYwCyrnuWlc= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17/go.mod h1:aLJpZlCmjE+V+KtN1q1uyZkfnUWpQGpbsn89XPKyzfU= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.177.2 h1:QUUvxEs9q1DsYCaWaRrV8i7n82Adm34jrHb6OPjXPqc= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.177.2/go.mod h1:TFSALWR7Xs7+KyMM87ZAYxncKFBvzEt2rpK/BJCH2ps= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4 h1:KypMCbLPPHEmf9DgMGw51jMj77VfGPAN2Kv4cfhlfgI= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4/go.mod h1:Vz1JQXliGcQktFTN/LN6uGppAIRoLBR2bMvIMP0gOjc= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.19 h1:rfprUlsdzgl7ZL2KlXiUAoJnI/VxfHCvDFr2QDFj6u4= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.19/go.mod h1:SCWkEdRq8/7EK60NcvvQ6NXKuTcchAD4ROAsC37VEZE= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.7 h1:pIaGg+08llrP7Q5aiz9ICWbY8cqhTkyy+0SHvfzQpTc= +github.com/aws/aws-sdk-go-v2/service/sso v1.22.7/go.mod h1:eEygMHnTKH/3kNp9Jr1n3PdejuSNcgwLe1dWgQtO0VQ= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.7 h1:/Cfdu0XV3mONYKaOt1Gr0k1KvQzkzPyiKUdlWJqy+J4= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.7/go.mod h1:bCbAxKDqNvkHxRaIMnyVPXPo+OaPRwvmgzMxbz1VKSA= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.7 h1:NKTa1eqZYw8tiHSRGpP0VtTdub/8KNk8sDkNPFaOKDE= +github.com/aws/aws-sdk-go-v2/service/sts v1.30.7/go.mod h1:NXi1dIAGteSaRLqYgarlhP/Ij0cFT+qmCwiJqWh/U5o= +github.com/aws/smithy-go v1.20.4 h1:2HK1zBdPgRbjFOHlfeQZfpC4r72MOb9bZkiFwggKO+4= +github.com/aws/smithy-go v1.20.4/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -52,79 +43,61 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_golang v1.20.3 h1:oPksm4K8B+Vt35tUhw6GbSNSgVlVSBH0qELP/7u83l4= +github.com/prometheus/client_golang v1.20.3/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.54.0 h1:ZlZy0BgJhTwVZUn7dLOkwCZHUkrAqd3WYtcFCWnM1D8= -github.com/prometheus/common v0.54.0/go.mod h1:/TQgMJP5CuVYveyT7n/0Ix8yLNNXy9yRSkhnLTHPDIQ= -github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/common v0.59.1 h1:LXb1quJHWm1P6wq/U824uxYi4Sg0oGvNeUm1z5dJoX0= +github.com/prometheus/common v0.59.1/go.mod h1:GpWM7dewqmVYcd7SmRaiWVe9SSqjf0UrwnYnpEZNuT0= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/urfave/cli/v2 v2.27.2 h1:6e0H+AkS+zDckwPCUrZkKX38mRaau4nL2uipkJpbkcI= -github.com/urfave/cli/v2 v2.27.2/go.mod h1:g0+79LmHHATl7DAcHO99smiR/T7uGLw84w8Y42x+4eM= +github.com/urfave/cli/v2 v2.27.4 h1:o1owoI+02Eb+K107p27wEX9Bb8eqIoZCfLXloLUSWJ8= +github.com/urfave/cli/v2 v2.27.4/go.mod h1:m4QzxcD2qpra4z7WhzEGn74WZLViBnMpb1ToCAKdGRQ= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= -go.opentelemetry.io/otel v1.27.0 h1:9BZoF3yMK/O1AafMiQTVu0YDj5Ea4hPhxCs7sGva+cg= -go.opentelemetry.io/otel v1.27.0/go.mod h1:DMpAK8fzYRzs+bi3rS5REupisuqTheUlSZJ1WnZaPAQ= -go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= -go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= -go.opentelemetry.io/otel/exporters/prometheus v0.49.0 h1:Er5I1g/YhfYv9Affk9nJLfH/+qCCVVg1f2R9AbJfqDQ= -go.opentelemetry.io/otel/exporters/prometheus v0.49.0/go.mod h1:KfQ1wpjf3zsHjzP149P4LyAwWRupc6c7t1ZJ9eXpKQM= -go.opentelemetry.io/otel/exporters/prometheus v0.50.0 h1:2Ewsda6hejmbhGFyUvWZjUThC98Cf8Zy6g0zkIimOng= -go.opentelemetry.io/otel/exporters/prometheus v0.50.0/go.mod h1:pMm5PkUo5YwbLiuEf7t2xg4wbP0/eSJrMxIMxKosynY= -go.opentelemetry.io/otel/metric v1.27.0 h1:hvj3vdEKyeCi4YaYfNjv2NUje8FqKqUY8IlF0FxV/ik= -go.opentelemetry.io/otel/metric v1.27.0/go.mod h1:mVFgmRlhljgBiuk/MP/oKylr4hs85GZAylncepAX/ak= -go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= -go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= -go.opentelemetry.io/otel/sdk v1.27.0 h1:mlk+/Y1gLPLn84U4tI8d3GNJmGT/eXe3ZuOXN9kTWmI= -go.opentelemetry.io/otel/sdk v1.27.0/go.mod h1:Ha9vbLwJE6W86YstIywK2xFfPjbWlCuwPtMkKdz/Y4A= -go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= -go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= -go.opentelemetry.io/otel/sdk/metric v1.27.0 h1:5uGNOlpXi+Hbo/DRoI31BSb1v+OGcpv2NemcCrOL8gI= -go.opentelemetry.io/otel/sdk/metric v1.27.0/go.mod h1:we7jJVrYN2kh3mVBlswtPU22K0SA+769l93J6bsyvqw= -go.opentelemetry.io/otel/sdk/metric v1.28.0 h1:OkuaKgKrgAbYrrY0t92c+cC+2F6hsFNnCQArXCKlg08= -go.opentelemetry.io/otel/sdk/metric v1.28.0/go.mod h1:cWPjykihLAPvXKi4iZc1dpER3Jdq2Z0YLse3moQUCpg= -go.opentelemetry.io/otel/trace v1.27.0 h1:IqYb813p7cmbHk0a5y6pD5JPakbVfftRXABGt5/Rscw= -go.opentelemetry.io/otel/trace v1.27.0/go.mod h1:6RiD1hkAprV4/q+yd2ln1HG9GoPx39SuvvstaLBl+l4= -go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= -go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= +go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= +go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= +go.opentelemetry.io/otel/exporters/prometheus v0.51.0 h1:G7uexXb/K3T+T9fNLCCKncweEtNEBMTO+46hKX5EdKw= +go.opentelemetry.io/otel/exporters/prometheus v0.51.0/go.mod h1:v0mFe5Kk7woIh938mrZBJBmENYquyA0IICrlYm4Y0t4= +go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= +go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= +go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= +go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok= +go.opentelemetry.io/otel/sdk/metric v1.29.0 h1:K2CfmJohnRgvZ9UAj2/FhIf/okdWcNdBwe1m8xFXiSY= +go.opentelemetry.io/otel/sdk/metric v1.29.0/go.mod h1:6zZLdCl2fkauYoZIOn/soQIDSWFmNSRcICarHfuhNJQ= +go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= +go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/reconciler/bridge_activate.go b/reconciler/bridge_activate.go index 745a427..d5f19ce 100644 --- a/reconciler/bridge_activate.go +++ b/reconciler/bridge_activate.go @@ -44,13 +44,15 @@ func (r *Reconciler) bridgeActivateUpdateAWS( } aws := r.cfg.BridgeActivate.AWS - r.scheduleJob(job.UpdateAWSRouteTables( - "aws_update_route_tables", - aws.Timeout, - e.EvtBridgePeerCIDR().String(), - aws.NetworkInterfaceID, - aws.RouteTables, - )) + for _, vpc := range aws.Vpcs { + r.scheduleJob(job.UpdateAWSRouteTables( + "aws_update_route_tables", + aws.Timeout, + e.EvtBridgePeerCIDR().String(), + vpc.NetworkInterfaceID, + vpc.RouteTables, + )) + } } func (r *Reconciler) bridgeActivateRunScript(