diff --git a/internal/workflows/eks.go b/internal/workflows/eks.go index 5026a0a..f42015e 100644 --- a/internal/workflows/eks.go +++ b/internal/workflows/eks.go @@ -4,7 +4,6 @@ import ( "fmt" "github.com/Amertz08/gitops-example/internal/activities" - "go.temporal.io/sdk/temporal" "go.temporal.io/sdk/workflow" ) @@ -63,8 +62,8 @@ func (i SpinDownEKSInput) validate() error { } func SpinUpEKSWorkflow(ctx workflow.Context, input SpinUpEKSInput) (err error) { - if valErr := input.validate(); valErr != nil { - return temporal.NewNonRetryableApplicationError(valErr.Error(), "InvalidInput", valErr) + if err = invalidInput(input); err != nil { + return } ctx = workflow.WithActivityOptions(ctx, activityOptions) @@ -129,8 +128,8 @@ func SpinUpEKSWorkflow(ctx workflow.Context, input SpinUpEKSInput) (err error) { } func SpinDownEKSWorkflow(ctx workflow.Context, input SpinDownEKSInput) error { - if err := input.validate(); err != nil { - return temporal.NewNonRetryableApplicationError(err.Error(), "InvalidInput", err) + if err := invalidInput(input); err != nil { + return err } ctx = workflow.WithActivityOptions(ctx, activityOptions) diff --git a/internal/workflows/iam.go b/internal/workflows/iam.go index bb89ae3..56153b7 100644 --- a/internal/workflows/iam.go +++ b/internal/workflows/iam.go @@ -4,7 +4,6 @@ import ( "fmt" "github.com/Amertz08/gitops-example/internal/activities" - "go.temporal.io/sdk/temporal" "go.temporal.io/sdk/workflow" ) @@ -57,8 +56,7 @@ func SpinUpIAMWorkflow( ctx workflow.Context, input SpinUpEKSIAMInput, ) (output SpinUpEKSIAMOutput, err error) { - if valErr := input.validate(); valErr != nil { - err = temporal.NewNonRetryableApplicationError(valErr.Error(), "InvalidInput", valErr) + if err = invalidInput(input); err != nil { return } @@ -141,8 +139,8 @@ func SpinUpIAMWorkflow( } func SpinDownIAMWorkflow(ctx workflow.Context, input SpinDownEKSIAMInput) error { - if err := input.validate(); err != nil { - return temporal.NewNonRetryableApplicationError(err.Error(), "InvalidInput", err) + if err := invalidInput(input); err != nil { + return err } ctx = workflow.WithActivityOptions(ctx, activityOptions) diff --git a/internal/workflows/infrastructure.go b/internal/workflows/infrastructure.go index 883a1eb..9cad35c 100644 --- a/internal/workflows/infrastructure.go +++ b/internal/workflows/infrastructure.go @@ -77,8 +77,8 @@ var activityOptions = workflow.ActivityOptions{ } func SpinUpWorkflow(ctx workflow.Context, input SpinUpInput) (err error) { - if valErr := input.validate(); valErr != nil { - return temporal.NewNonRetryableApplicationError(valErr.Error(), "InvalidInput", valErr) + if err = invalidInput(input); err != nil { + return } logger := workflow.GetLogger(ctx) @@ -164,8 +164,8 @@ func SpinUpWorkflow(ctx workflow.Context, input SpinUpInput) (err error) { } func SpinDownWorkflow(ctx workflow.Context, input SpinDownInput) error { - if err := input.validate(); err != nil { - return temporal.NewNonRetryableApplicationError(err.Error(), "InvalidInput", err) + if err := invalidInput(input); err != nil { + return err } logger := workflow.GetLogger(ctx) diff --git a/internal/workflows/validate.go b/internal/workflows/validate.go new file mode 100644 index 0000000..0d5cdef --- /dev/null +++ b/internal/workflows/validate.go @@ -0,0 +1,14 @@ +package workflows + +import "go.temporal.io/sdk/temporal" + +type validator interface { + validate() error +} + +func invalidInput(v validator) error { + if err := v.validate(); err != nil { + return temporal.NewNonRetryableApplicationError(err.Error(), "InvalidInput", err) + } + return nil +} diff --git a/internal/workflows/vpc.go b/internal/workflows/vpc.go index a906497..4bda340 100644 --- a/internal/workflows/vpc.go +++ b/internal/workflows/vpc.go @@ -1,6 +1,8 @@ package workflows import ( + "fmt" + "github.com/Amertz08/gitops-example/internal/activities" "go.temporal.io/sdk/workflow" ) @@ -13,6 +15,18 @@ type SpinUpNetworkInput struct { Team string } +func (i SpinUpNetworkInput) validate() error { + switch { + case i.Region == "": + return fmt.Errorf("Region is required") + case i.Environment == "": + return fmt.Errorf("Environment is required") + case i.Team == "": + return fmt.Errorf("Team is required") + } + return nil +} + type SpinUpNetworkOutput struct { VpcID string SubnetIDs []string @@ -23,10 +37,24 @@ type SpinDownNetworkInput struct { VpcID string } +func (i SpinDownNetworkInput) validate() error { + switch { + case i.Region == "": + return fmt.Errorf("Region is required") + case i.VpcID == "": + return fmt.Errorf("VpcID is required") + } + return nil +} + func SpinUpNetworkWorkflow( ctx workflow.Context, input SpinUpNetworkInput, ) (output SpinUpNetworkOutput, err error) { + if err = invalidInput(input); err != nil { + return + } + ctx = workflow.WithActivityOptions(ctx, activityOptions) aws := &activities.AWSActivities{} logger := workflow.GetLogger(ctx) @@ -125,6 +153,10 @@ func SpinUpNetworkWorkflow( } func SpinDownNetworkWorkflow(ctx workflow.Context, input SpinDownNetworkInput) error { + if err := invalidInput(input); err != nil { + return err + } + ctx = workflow.WithActivityOptions(ctx, activityOptions) aws := &activities.AWSActivities{} logger := workflow.GetLogger(ctx)