From 0285e1bb69729589dac89873c8523ff188ef63be Mon Sep 17 00:00:00 2001 From: ryanflynn9299 Date: Fri, 18 Sep 2026 18:31:22 -0400 Subject: [PATCH] temporary commit --- plugin/service/host/plugin.go | 55 +++++++++++++++++++----------- plugin/service/host/plugin_test.go | 24 ++++++------- 2 files changed, 47 insertions(+), 32 deletions(-) diff --git a/plugin/service/host/plugin.go b/plugin/service/host/plugin.go index 23d1653..bf7249a 100644 --- a/plugin/service/host/plugin.go +++ b/plugin/service/host/plugin.go @@ -102,8 +102,12 @@ func (p *HostPlugin) OnCreateCatalog(ctx context.Context, req *pb.OnCreateCatalo if catalogAttributes.DualStack { opts = append(opts, WithDualStack(catalogAttributes.DualStack)) } - if st := dryRunValidation(ctx, catalogState, opts); st != nil { - return nil, st.Err() + input, err := buildDescribeInstancesInput(&SetAttributes{}, true) + if err != nil { + return nil, errors.BadRequestStatusf("error building DescribeInstances input: %s", err) + } + if _, err := checkHosts(ctx, catalogState, input, opts, nil); err != nil { + return nil, err } persistedProto, err := catalogState.toProto() @@ -186,12 +190,18 @@ func (p *HostPlugin) OnUpdateCatalog(ctx context.Context, req *pb.OnUpdateCatalo if err != nil { return nil, errors.BadRequestStatusf("error loading persisted state: %s", err) } + + // perform dry run to ensure we can interact with AWS as expected. opts := []ec2Option{} if newCatalogAttributes.DualStack { opts = append(opts, WithDualStack(newCatalogAttributes.DualStack)) } - if st := dryRunValidation(ctx, newCatalogState, opts); st != nil { - return nil, st.Err() + input, err := buildDescribeInstancesInput(&SetAttributes{}, true) + if err != nil { + return nil, errors.BadRequestStatusf("error building DescribeInstances input: %s", err) + } + if _, err := checkHosts(ctx, newCatalogState, input, opts, nil); err != nil { + return nil, err } // Replace the existing credential state. @@ -236,8 +246,12 @@ func (p *HostPlugin) OnUpdateCatalog(ctx context.Context, req *pb.OnUpdateCatalo if newCatalogAttributes.DualStack { opts = append(opts, WithDualStack(newCatalogAttributes.DualStack)) } - if st := dryRunValidation(ctx, catalogState, opts); st != nil { - return nil, st.Err() + input, err := buildDescribeInstancesInput(&SetAttributes{}, true) + if err != nil { + return nil, errors.BadRequestStatusf("error building DescribeInstances input: %s", err) + } + if _, err := checkHosts(ctx, catalogState, input, opts, nil); err != nil { + return nil, err } persistedProto, err := catalogState.toProto() @@ -381,18 +395,19 @@ func (p *HostPlugin) OnCreateSet(ctx context.Context, req *pb.OnCreateSetRequest return nil, err } - describeInstanceFilters, err := buildFilters(setAttrs) - if err != nil { - return nil, errors.BadRequestStatusf("error building set filters: %s", err) - } - + // perform dry run to ensure we can interact with AWS as expected. opts := []ec2Option{} if catalogAttributes.DualStack { opts = append(opts, WithDualStack(catalogAttributes.DualStack)) } - if st := dryRunValidation(ctx, catalogState, opts, describeInstanceFilters...); st != nil { - return nil, st.Err() + input, err := buildDescribeInstancesInput(setAttrs, true) + if err != nil { + return nil, errors.BadRequestStatusf("error building DescribeInstances input: %s", err) } + if _, err := checkHosts(ctx, catalogState, input, opts, nil); err != nil { + return nil, err + } + return &pb.OnCreateSetResponse{}, nil } @@ -446,17 +461,17 @@ func (p *HostPlugin) OnUpdateSet(ctx context.Context, req *pb.OnUpdateSetRequest return nil, err } - describeInstanceFilters, err := buildFilters(setAttrs) - if err != nil { - return nil, errors.BadRequestStatusf("error building set filters: %s", err) - } - + // perform dry run to ensure we can interact with AWS as expected. opts := []ec2Option{} if catalogAttributes.DualStack { opts = append(opts, WithDualStack(catalogAttributes.DualStack)) } - if st := dryRunValidation(ctx, catalogState, opts, describeInstanceFilters...); st != nil { - return nil, st.Err() + input, err := buildDescribeInstancesInput(setAttrs, true) + if err != nil { + return nil, errors.BadRequestStatusf("error building DescribeInstances input: %s", err) + } + if _, err := checkHosts(ctx, catalogState, input, opts, nil); err != nil { + return nil, err } return &pb.OnUpdateSetResponse{}, nil diff --git a/plugin/service/host/plugin_test.go b/plugin/service/host/plugin_test.go index d5be626..2bf23d8 100644 --- a/plugin/service/host/plugin_test.go +++ b/plugin/service/host/plugin_test.go @@ -742,8 +742,8 @@ func TestPluginOnCreateCatalogErr(t *testing.T) { testMockEC2WithDescribeInstancesError(errors.New(testDescribeInstancesError)), )), }, - expectedErrContains: "aws describe instances failed: DescribeInstances error", - expectedErrCode: codes.FailedPrecondition, + expectedErrContains: testDescribeInstancesError, + expectedErrCode: codes.Unknown, }, } @@ -994,8 +994,8 @@ func TestPluginOnUpdateCatalogErr(t *testing.T) { testMockEC2WithDescribeInstancesError(errors.New(testDescribeInstancesError)), )), }, - expectedErrContains: "aws describe instances failed: DescribeInstances error", - expectedErrCode: codes.FailedPrecondition, + expectedErrContains: testDescribeInstancesError, + expectedErrCode: codes.Unknown, }, { name: "new incoming dynamic credential update dry run error", @@ -1036,8 +1036,8 @@ func TestPluginOnUpdateCatalogErr(t *testing.T) { testMockEC2WithDescribeInstancesError(errors.New(testDescribeInstancesError)), )), }, - expectedErrContains: "aws describe instances failed: DescribeInstances error", - expectedErrCode: codes.FailedPrecondition, + expectedErrContains: testDescribeInstancesError, + expectedErrCode: codes.Unknown, }, { name: "replace creds error", @@ -1211,8 +1211,8 @@ func TestPluginOnUpdateCatalogErr(t *testing.T) { testMockEC2WithDescribeInstancesError(fmt.Errorf("oops there was an error")), )), }, - expectedErrContains: "aws describe instances failed: oops there was an error", - expectedErrCode: codes.FailedPrecondition, + expectedErrContains: "oops there was an error", + expectedErrCode: codes.Unknown, }, } @@ -1565,8 +1565,8 @@ func TestPluginOnCreateSetErr(t *testing.T) { testMockEC2WithDescribeInstancesError(errors.New(testDescribeInstancesError)), )), }, - expectedErrContains: fmt.Sprintf("aws describe instances failed: %s", testDescribeInstancesError), - expectedErrCode: codes.FailedPrecondition, + expectedErrContains: testDescribeInstancesError, + expectedErrCode: codes.Unknown, }, } @@ -1828,8 +1828,8 @@ func TestPluginOnUpdateSetErr(t *testing.T) { testMockEC2WithDescribeInstancesError(errors.New(testDescribeInstancesError)), )), }, - expectedErrContains: fmt.Sprintf("aws describe instances failed: %s", testDescribeInstancesError), - expectedErrCode: codes.FailedPrecondition, + expectedErrContains: testDescribeInstancesError, + expectedErrCode: codes.Unknown, }, }