mirror of https://github.com/kubernetes/kops.git
Update EventBridge to aws-sdk-go-v2
This commit is contained in:
parent
263e93c2c5
commit
8191e78838
|
@ -17,39 +17,41 @@ limitations under the License.
|
|||
package mockeventbridge
|
||||
|
||||
import (
|
||||
"context"
|
||||
"sync"
|
||||
|
||||
"github.com/aws/aws-sdk-go/service/eventbridge"
|
||||
"github.com/aws/aws-sdk-go/service/eventbridge/eventbridgeiface"
|
||||
"github.com/aws/aws-sdk-go-v2/service/eventbridge"
|
||||
eventbridgetypes "github.com/aws/aws-sdk-go-v2/service/eventbridge/types"
|
||||
"k8s.io/kops/util/pkg/awsinterfaces"
|
||||
)
|
||||
|
||||
type MockEventBridge struct {
|
||||
eventbridgeiface.EventBridgeAPI
|
||||
awsinterfaces.EventBridgeAPI
|
||||
mutex sync.Mutex
|
||||
|
||||
Rules map[string]*eventbridge.Rule
|
||||
TagsByArn map[string][]*eventbridge.Tag
|
||||
TargetsByRule map[string][]*eventbridge.Target
|
||||
Rules map[string]*eventbridgetypes.Rule
|
||||
TagsByArn map[string][]eventbridgetypes.Tag
|
||||
TargetsByRule map[string][]eventbridgetypes.Target
|
||||
}
|
||||
|
||||
var _ eventbridgeiface.EventBridgeAPI = &MockEventBridge{}
|
||||
var _ awsinterfaces.EventBridgeAPI = &MockEventBridge{}
|
||||
|
||||
func (m *MockEventBridge) PutRule(input *eventbridge.PutRuleInput) (*eventbridge.PutRuleOutput, error) {
|
||||
func (m *MockEventBridge) PutRule(ctx context.Context, input *eventbridge.PutRuleInput, optFns ...func(*eventbridge.Options)) (*eventbridge.PutRuleOutput, error) {
|
||||
m.mutex.Lock()
|
||||
defer m.mutex.Unlock()
|
||||
|
||||
name := *input.Name
|
||||
arn := "arn:aws-test:events:us-east-1:012345678901:rule/" + name
|
||||
|
||||
rule := &eventbridge.Rule{
|
||||
rule := &eventbridgetypes.Rule{
|
||||
Arn: &arn,
|
||||
EventPattern: input.EventPattern,
|
||||
}
|
||||
if m.Rules == nil {
|
||||
m.Rules = make(map[string]*eventbridge.Rule)
|
||||
m.Rules = make(map[string]*eventbridgetypes.Rule)
|
||||
}
|
||||
if m.TagsByArn == nil {
|
||||
m.TagsByArn = make(map[string][]*eventbridge.Tag)
|
||||
m.TagsByArn = make(map[string][]eventbridgetypes.Tag)
|
||||
}
|
||||
m.Rules[name] = rule
|
||||
m.TagsByArn[arn] = input.Tags
|
||||
|
@ -60,7 +62,7 @@ func (m *MockEventBridge) PutRule(input *eventbridge.PutRuleInput) (*eventbridge
|
|||
return response, nil
|
||||
}
|
||||
|
||||
func (m *MockEventBridge) ListRules(input *eventbridge.ListRulesInput) (*eventbridge.ListRulesOutput, error) {
|
||||
func (m *MockEventBridge) ListRules(ctx context.Context, input *eventbridge.ListRulesInput, optFns ...func(*eventbridge.Options)) (*eventbridge.ListRulesOutput, error) {
|
||||
m.mutex.Lock()
|
||||
defer m.mutex.Unlock()
|
||||
|
||||
|
@ -70,15 +72,15 @@ func (m *MockEventBridge) ListRules(input *eventbridge.ListRulesInput) (*eventbr
|
|||
if rule == nil {
|
||||
return response, nil
|
||||
}
|
||||
response.Rules = []*eventbridge.Rule{rule}
|
||||
response.Rules = []eventbridgetypes.Rule{*rule}
|
||||
return response, nil
|
||||
}
|
||||
|
||||
func (m *MockEventBridge) DeleteRule(*eventbridge.DeleteRuleInput) (*eventbridge.DeleteRuleOutput, error) {
|
||||
func (m *MockEventBridge) DeleteRule(ctx context.Context, input *eventbridge.DeleteRuleInput, optFns ...func(*eventbridge.Options)) (*eventbridge.DeleteRuleOutput, error) {
|
||||
panic("Not implemented")
|
||||
}
|
||||
|
||||
func (m *MockEventBridge) ListTagsForResource(input *eventbridge.ListTagsForResourceInput) (*eventbridge.ListTagsForResourceOutput, error) {
|
||||
func (m *MockEventBridge) ListTagsForResource(ctx context.Context, input *eventbridge.ListTagsForResourceInput, optFns ...func(*eventbridge.Options)) (*eventbridge.ListTagsForResourceOutput, error) {
|
||||
m.mutex.Lock()
|
||||
defer m.mutex.Unlock()
|
||||
|
||||
|
@ -88,19 +90,19 @@ func (m *MockEventBridge) ListTagsForResource(input *eventbridge.ListTagsForReso
|
|||
return response, nil
|
||||
}
|
||||
|
||||
func (m *MockEventBridge) PutTargets(input *eventbridge.PutTargetsInput) (*eventbridge.PutTargetsOutput, error) {
|
||||
func (m *MockEventBridge) PutTargets(ctx context.Context, input *eventbridge.PutTargetsInput, optFns ...func(*eventbridge.Options)) (*eventbridge.PutTargetsOutput, error) {
|
||||
m.mutex.Lock()
|
||||
defer m.mutex.Unlock()
|
||||
|
||||
if m.TargetsByRule == nil {
|
||||
m.TargetsByRule = make(map[string][]*eventbridge.Target)
|
||||
m.TargetsByRule = make(map[string][]eventbridgetypes.Target)
|
||||
}
|
||||
m.TargetsByRule[*input.Rule] = input.Targets
|
||||
|
||||
return &eventbridge.PutTargetsOutput{}, nil
|
||||
}
|
||||
|
||||
func (m *MockEventBridge) ListTargetsByRule(input *eventbridge.ListTargetsByRuleInput) (*eventbridge.ListTargetsByRuleOutput, error) {
|
||||
func (m *MockEventBridge) ListTargetsByRule(ctx context.Context, input *eventbridge.ListTargetsByRuleInput, optFns ...func(*eventbridge.Options)) (*eventbridge.ListTargetsByRuleOutput, error) {
|
||||
m.mutex.Lock()
|
||||
defer m.mutex.Unlock()
|
||||
|
||||
|
@ -110,6 +112,6 @@ func (m *MockEventBridge) ListTargetsByRule(input *eventbridge.ListTargetsByRule
|
|||
return response, nil
|
||||
}
|
||||
|
||||
func (m *MockEventBridge) RemoveTargets(*eventbridge.RemoveTargetsInput) (*eventbridge.RemoveTargetsOutput, error) {
|
||||
func (m *MockEventBridge) RemoveTargets(ctx context.Context, input *eventbridge.RemoveTargetsInput, optFns ...func(*eventbridge.Options)) (*eventbridge.RemoveTargetsOutput, error) {
|
||||
panic("Not implemented")
|
||||
}
|
||||
|
|
|
@ -19,9 +19,9 @@ package awsmodel
|
|||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
"github.com/aws/aws-sdk-go-v2/aws/arn"
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/service/eventbridge"
|
||||
"github.com/aws/aws-sdk-go-v2/service/eventbridge"
|
||||
"k8s.io/kops/pkg/apis/kops"
|
||||
"k8s.io/kops/pkg/model"
|
||||
"k8s.io/kops/pkg/model/iam"
|
||||
|
@ -200,7 +200,7 @@ func (b *NodeTerminationHandlerBuilder) FindDeletions(c *fi.CloudupModelBuilderC
|
|||
request := &eventbridge.ListRulesInput{
|
||||
NamePrefix: ruleName,
|
||||
}
|
||||
response, err := eventBridge.ListRules(request)
|
||||
response, err := eventBridge.ListRules(c.Context(), request)
|
||||
if err != nil {
|
||||
return fmt.Errorf("listing EventBridge rules: %w", err)
|
||||
}
|
||||
|
@ -213,7 +213,7 @@ func (b *NodeTerminationHandlerBuilder) FindDeletions(c *fi.CloudupModelBuilderC
|
|||
|
||||
rule := response.Rules[0]
|
||||
|
||||
tagResponse, err := eventBridge.ListTagsForResource(&eventbridge.ListTagsForResourceInput{ResourceARN: rule.Arn})
|
||||
tagResponse, err := eventBridge.ListTagsForResource(c.Context(), &eventbridge.ListTagsForResourceInput{ResourceARN: rule.Arn})
|
||||
if err != nil {
|
||||
return fmt.Errorf("listing tags for EventBridge rule: %w", err)
|
||||
}
|
||||
|
|
|
@ -17,10 +17,11 @@ limitations under the License.
|
|||
package aws
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/service/eventbridge"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
"github.com/aws/aws-sdk-go-v2/service/eventbridge"
|
||||
"k8s.io/klog/v2"
|
||||
|
||||
"k8s.io/kops/pkg/resources"
|
||||
|
@ -44,22 +45,22 @@ func EventBridgeRuleDeleter(cloud fi.Cloud, r *resources.Resource) error {
|
|||
}
|
||||
|
||||
func DeleteEventBridgeRule(cloud fi.Cloud, ruleName string) error {
|
||||
|
||||
ctx := context.TODO()
|
||||
c := cloud.(awsup.AWSCloud)
|
||||
|
||||
targets, err := c.EventBridge().ListTargetsByRule(&eventbridge.ListTargetsByRuleInput{
|
||||
targets, err := c.EventBridge().ListTargetsByRule(ctx, &eventbridge.ListTargetsByRuleInput{
|
||||
Rule: aws.String(ruleName),
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("listing targets for EventBridge rule %q: %w", ruleName, err)
|
||||
}
|
||||
if len(targets.Targets) > 0 {
|
||||
var ids []*string
|
||||
var ids []string
|
||||
for _, target := range targets.Targets {
|
||||
ids = append(ids, target.Id)
|
||||
ids = append(ids, aws.ToString(target.Id))
|
||||
}
|
||||
klog.V(2).Infof("Removing EventBridge Targets for rule %q", ruleName)
|
||||
_, err = c.EventBridge().RemoveTargets(&eventbridge.RemoveTargetsInput{
|
||||
_, err = c.EventBridge().RemoveTargets(ctx, &eventbridge.RemoveTargetsInput{
|
||||
Ids: ids,
|
||||
Rule: aws.String(ruleName),
|
||||
})
|
||||
|
@ -72,7 +73,7 @@ func DeleteEventBridgeRule(cloud fi.Cloud, ruleName string) error {
|
|||
request := &eventbridge.DeleteRuleInput{
|
||||
Name: aws.String(ruleName),
|
||||
}
|
||||
_, err = c.EventBridge().DeleteRule(request)
|
||||
_, err = c.EventBridge().DeleteRule(ctx, request)
|
||||
if err != nil {
|
||||
return fmt.Errorf("deleting EventBridge rule %q: %w", ruleName, err)
|
||||
}
|
||||
|
@ -80,6 +81,7 @@ func DeleteEventBridgeRule(cloud fi.Cloud, ruleName string) error {
|
|||
}
|
||||
|
||||
func ListEventBridgeRules(cloud fi.Cloud, vpcID, clusterName string) ([]*resources.Resource, error) {
|
||||
ctx := context.TODO()
|
||||
c := cloud.(awsup.AWSCloud)
|
||||
|
||||
klog.V(2).Infof("Listing EventBridge rules")
|
||||
|
@ -91,7 +93,7 @@ func ListEventBridgeRules(cloud fi.Cloud, vpcID, clusterName string) ([]*resourc
|
|||
Limit: nil,
|
||||
NamePrefix: aws.String(clusterNamePrefix),
|
||||
}
|
||||
response, err := c.EventBridge().ListRules(request)
|
||||
response, err := c.EventBridge().ListRules(ctx, request)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error listing Eventbridge rules: %v", err)
|
||||
}
|
||||
|
|
|
@ -17,10 +17,12 @@ limitations under the License.
|
|||
package awstasks
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/service/eventbridge"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
"github.com/aws/aws-sdk-go-v2/service/eventbridge"
|
||||
eventbridgetypes "github.com/aws/aws-sdk-go-v2/service/eventbridge/types"
|
||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||
awsResources "k8s.io/kops/pkg/resources/aws"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
|
@ -57,7 +59,7 @@ func (eb *EventBridgeRule) Find(c *fi.CloudupContext) (*EventBridgeRule, error)
|
|||
request := &eventbridge.ListRulesInput{
|
||||
NamePrefix: eb.Name,
|
||||
}
|
||||
response, err := cloud.EventBridge().ListRules(request)
|
||||
response, err := cloud.EventBridge().ListRules(c.Context(), request)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error listing EventBridge rules: %v", err)
|
||||
}
|
||||
|
@ -70,7 +72,7 @@ func (eb *EventBridgeRule) Find(c *fi.CloudupContext) (*EventBridgeRule, error)
|
|||
|
||||
rule := response.Rules[0]
|
||||
|
||||
tagResponse, err := cloud.EventBridge().ListTagsForResource(&eventbridge.ListTagsForResourceInput{ResourceARN: rule.Arn})
|
||||
tagResponse, err := cloud.EventBridge().ListTagsForResource(c.Context(), &eventbridge.ListTagsForResourceInput{ResourceARN: rule.Arn})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error listing tags for EventBridge rule: %v", err)
|
||||
}
|
||||
|
@ -106,9 +108,9 @@ func (eb *EventBridgeRule) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *Event
|
|||
}
|
||||
|
||||
if a == nil {
|
||||
var tags []*eventbridge.Tag
|
||||
var tags []eventbridgetypes.Tag
|
||||
for k, v := range eb.Tags {
|
||||
tags = append(tags, &eventbridge.Tag{
|
||||
tags = append(tags, eventbridgetypes.Tag{
|
||||
Key: aws.String(k),
|
||||
Value: aws.String(v),
|
||||
})
|
||||
|
@ -120,7 +122,7 @@ func (eb *EventBridgeRule) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *Event
|
|||
Tags: tags,
|
||||
}
|
||||
|
||||
_, err := t.Cloud.EventBridge().PutRule(request)
|
||||
_, err := t.Cloud.EventBridge().PutRule(context.TODO(), request)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error creating EventBridge rule: %v", err)
|
||||
}
|
||||
|
|
|
@ -17,13 +17,15 @@ limitations under the License.
|
|||
package awstasks
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/terraformWriter"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/service/eventbridge"
|
||||
"github.com/aws/aws-sdk-go-v2/aws"
|
||||
"github.com/aws/aws-sdk-go-v2/service/eventbridge"
|
||||
eventbridgetypes "github.com/aws/aws-sdk-go-v2/service/eventbridge/types"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/awsup"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/terraform"
|
||||
|
@ -65,7 +67,7 @@ func (eb *EventBridgeTarget) Find(c *fi.CloudupContext) (*EventBridgeTarget, err
|
|||
Rule: eb.Rule.Name,
|
||||
}
|
||||
|
||||
response, err := cloud.EventBridge().ListTargetsByRule(request)
|
||||
response, err := cloud.EventBridge().ListTargetsByRule(c.Context(), request)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error listing EventBridge targets: %v", err)
|
||||
}
|
||||
|
@ -107,17 +109,17 @@ func (_ *EventBridgeTarget) CheckChanges(a, e, changes *EventBridgeTarget) error
|
|||
|
||||
func (eb *EventBridgeTarget) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *EventBridgeTarget) error {
|
||||
if a == nil {
|
||||
target := &eventbridge.Target{
|
||||
target := eventbridgetypes.Target{
|
||||
Arn: eb.SQSQueue.ARN,
|
||||
Id: aws.String("1"),
|
||||
}
|
||||
|
||||
request := &eventbridge.PutTargetsInput{
|
||||
Rule: eb.Rule.Name,
|
||||
Targets: []*eventbridge.Target{target},
|
||||
Targets: []eventbridgetypes.Target{target},
|
||||
}
|
||||
|
||||
_, err := t.Cloud.EventBridge().PutTargets(request)
|
||||
_, err := t.Cloud.EventBridge().PutTargets(context.TODO(), request)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error creating EventBridge target: %v", err)
|
||||
}
|
||||
|
|
|
@ -19,9 +19,9 @@ package awstasks
|
|||
import (
|
||||
"strings"
|
||||
|
||||
eventbridgetypes "github.com/aws/aws-sdk-go-v2/service/eventbridge/types"
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/service/ec2"
|
||||
"github.com/aws/aws-sdk-go/service/eventbridge"
|
||||
"github.com/aws/aws-sdk-go/service/iam"
|
||||
)
|
||||
|
||||
|
@ -67,7 +67,7 @@ func mapToIAMTags(tags map[string]string) []*iam.Tag {
|
|||
return m
|
||||
}
|
||||
|
||||
func mapEventBridgeTagsToMap(tags []*eventbridge.Tag) map[string]string {
|
||||
func mapEventBridgeTagsToMap(tags []eventbridgetypes.Tag) map[string]string {
|
||||
if tags == nil {
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -30,7 +30,6 @@ import (
|
|||
"github.com/aws/aws-sdk-go/service/elb/elbiface"
|
||||
"github.com/aws/aws-sdk-go/service/elbv2"
|
||||
"github.com/aws/aws-sdk-go/service/elbv2/elbv2iface"
|
||||
"github.com/aws/aws-sdk-go/service/eventbridge/eventbridgeiface"
|
||||
"github.com/aws/aws-sdk-go/service/iam/iamiface"
|
||||
"github.com/aws/aws-sdk-go/service/route53/route53iface"
|
||||
"github.com/aws/aws-sdk-go/service/sqs/sqsiface"
|
||||
|
@ -43,6 +42,7 @@ import (
|
|||
"k8s.io/kops/pkg/cloudinstances"
|
||||
"k8s.io/kops/pkg/resources/spotinst"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
"k8s.io/kops/util/pkg/awsinterfaces"
|
||||
)
|
||||
|
||||
type MockAWSCloud struct {
|
||||
|
@ -87,7 +87,7 @@ type MockCloud struct {
|
|||
MockELBV2 elbv2iface.ELBV2API
|
||||
MockSpotinst spotinst.Cloud
|
||||
MockSQS sqsiface.SQSAPI
|
||||
MockEventBridge eventbridgeiface.EventBridgeAPI
|
||||
MockEventBridge awsinterfaces.EventBridgeAPI
|
||||
MockSSM ssmiface.SSMAPI
|
||||
}
|
||||
|
||||
|
@ -295,7 +295,7 @@ func (c *MockAWSCloud) SQS() sqsiface.SQSAPI {
|
|||
return c.MockSQS
|
||||
}
|
||||
|
||||
func (c *MockAWSCloud) EventBridge() eventbridgeiface.EventBridgeAPI {
|
||||
func (c *MockAWSCloud) EventBridge() awsinterfaces.EventBridgeAPI {
|
||||
if c.MockEventBridge == nil {
|
||||
klog.Fatalf("MockEventBridgess not set")
|
||||
}
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
Copyright 2024 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package awsinterfaces
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/aws/aws-sdk-go-v2/service/eventbridge"
|
||||
)
|
||||
|
||||
type EventBridgeAPI interface {
|
||||
ListTargetsByRule(ctx context.Context, params *eventbridge.ListTargetsByRuleInput, optFns ...func(*eventbridge.Options)) (*eventbridge.ListTargetsByRuleOutput, error)
|
||||
PutTargets(ctx context.Context, params *eventbridge.PutTargetsInput, optFns ...func(*eventbridge.Options)) (*eventbridge.PutTargetsOutput, error)
|
||||
ListRules(ctx context.Context, params *eventbridge.ListRulesInput, optFns ...func(*eventbridge.Options)) (*eventbridge.ListRulesOutput, error)
|
||||
PutRule(ctx context.Context, params *eventbridge.PutRuleInput, optFns ...func(*eventbridge.Options)) (*eventbridge.PutRuleOutput, error)
|
||||
ListTagsForResource(ctx context.Context, params *eventbridge.ListTagsForResourceInput, optFns ...func(*eventbridge.Options)) (*eventbridge.ListTagsForResourceOutput, error)
|
||||
DeleteRule(ctx context.Context, params *eventbridge.DeleteRuleInput, optFns ...func(*eventbridge.Options)) (*eventbridge.DeleteRuleOutput, error)
|
||||
RemoveTargets(ctx context.Context, params *eventbridge.RemoveTargetsInput, optFns ...func(*eventbridge.Options)) (*eventbridge.RemoveTargetsOutput, error)
|
||||
}
|
Loading…
Reference in New Issue