Skip to content

Commit 5214e6f

Browse files
committed
chore: make aws serverless stack trigger event optional
previously the serverless stack create task definition for the serverless fargate task and the event bridge triggering event, from now on we want to decouple this logic allowing to create any of them independently Signed-off-by: Adrian Riobo <ariobolo@redhat.com>
1 parent fb7bb31 commit 5214e6f

4 files changed

Lines changed: 80 additions & 52 deletions

File tree

pkg/provider/aws/action/mac-pool/mac-pool.go

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -154,21 +154,40 @@ func (r *MacPoolRequestArgs) addMachinesToPool(n int) error {
154154
// Run serverless operation for house keeping
155155
func (r *MacPoolRequestArgs) scheduleHouseKeeper() error {
156156
return serverless.Create(
157-
getHouseKeepingCommand(
158-
r.PoolName,
159-
r.Architecture,
160-
r.OSVersion,
161-
r.OfferedCapacity,
162-
r.MaxSize,
163-
r.FixedLocation),
164-
serverless.Repeat,
165-
houseKeepingInterval,
166-
fmt.Sprintf("%s-%s-%s",
167-
r.PoolName,
168-
r.Architecture,
169-
r.OSVersion))
157+
&serverless.ServerlessArgs{
158+
Command: getHouseKeepingCommand(
159+
r.PoolName,
160+
r.Architecture,
161+
r.OSVersion,
162+
r.OfferedCapacity,
163+
r.MaxSize,
164+
r.FixedLocation),
165+
ScheduleType: &serverless.Repeat,
166+
Schedulexpression: houseKeepingInterval,
167+
LogGroupName: fmt.Sprintf("%s-%s-%s",
168+
r.PoolName,
169+
r.Architecture,
170+
r.OSVersion)})
170171
}
171172

173+
// // Run serverless operation request
174+
// func (r *MacPoolRequestArgs) requester() error {
175+
// return serverless.Create(
176+
// getHouseKeepingCommand(
177+
// r.PoolName,
178+
// r.Architecture,
179+
// r.OSVersion,
180+
// r.OfferedCapacity,
181+
// r.MaxSize,
182+
// r.FixedLocation),
183+
// serverless.Repeat,
184+
// houseKeepingInterval,
185+
// fmt.Sprintf("%s-%s-%s",
186+
// r.PoolName,
187+
// r.Architecture,
188+
// r.OSVersion))
189+
// }
190+
172191
func getHouseKeepingCommand(poolName, arch, osVersion string,
173192
offeredCapacity, maxSize int,
174193
fixedLocation bool) string {

pkg/provider/aws/modules/serverless/serverless.go

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func OneTimeDelayedTask(ctx *pulumi.Context,
3939
r := &serverlessRequestArgs{
4040
region: region,
4141
command: cmd,
42-
scheduleType: OneTime,
42+
scheduleType: &OneTime,
4343
scheduleExpression: se,
4444
prefix: prefix,
4545
componentID: componentID,
@@ -114,40 +114,42 @@ func (a *serverlessRequestArgs) deploy(ctx *pulumi.Context) error {
114114
if err != nil {
115115
return err
116116
}
117-
subnetID, err := data.GetRandomPublicSubnet(a.region)
118-
if err != nil {
119-
return err
120-
}
121-
se := scheduleExpressionByType(a.scheduleType, a.scheduleExpression)
122-
_, err = scheduler.NewSchedule(ctx,
123-
resourcesUtil.GetResourceName(a.prefix, a.componentID, "fgs"),
124-
&scheduler.ScheduleArgs{
125-
FlexibleTimeWindow: scheduler.ScheduleFlexibleTimeWindowArgs{
126-
Mode: scheduler.ScheduleFlexibleTimeWindowModeFlexible,
127-
MaximumWindowInMinutes: pulumi.Float64(1),
128-
},
129-
Target: scheduler.ScheduleTargetArgs{
130-
EcsParameters: scheduler.ScheduleEcsParametersArgs{
131-
TaskDefinitionArn: td.TaskDefinition.Arn(),
132-
LaunchType: scheduler.ScheduleLaunchTypeFargate,
133-
NetworkConfiguration: scheduler.ScheduleNetworkConfigurationArgs{
134-
// https://github.com/aws/aws-cdk/issues/13348#issuecomment-1539336376
135-
AwsvpcConfiguration: scheduler.ScheduleAwsVpcConfigurationArgs{
136-
AssignPublicIp: scheduler.ScheduleAssignPublicIpEnabled,
137-
Subnets: pulumi.StringArray{
138-
pulumi.String(*subnetID),
117+
if len(a.scheduleExpression) > 0 {
118+
subnetID, err := data.GetRandomPublicSubnet(a.region)
119+
if err != nil {
120+
return err
121+
}
122+
se := scheduleExpressionByType(a.scheduleType, a.scheduleExpression)
123+
_, err = scheduler.NewSchedule(ctx,
124+
resourcesUtil.GetResourceName(a.prefix, a.componentID, "fgs"),
125+
&scheduler.ScheduleArgs{
126+
FlexibleTimeWindow: scheduler.ScheduleFlexibleTimeWindowArgs{
127+
Mode: scheduler.ScheduleFlexibleTimeWindowModeFlexible,
128+
MaximumWindowInMinutes: pulumi.Float64(1),
129+
},
130+
Target: scheduler.ScheduleTargetArgs{
131+
EcsParameters: scheduler.ScheduleEcsParametersArgs{
132+
TaskDefinitionArn: td.TaskDefinition.Arn(),
133+
LaunchType: scheduler.ScheduleLaunchTypeFargate,
134+
NetworkConfiguration: scheduler.ScheduleNetworkConfigurationArgs{
135+
// https://github.com/aws/aws-cdk/issues/13348#issuecomment-1539336376
136+
AwsvpcConfiguration: scheduler.ScheduleAwsVpcConfigurationArgs{
137+
AssignPublicIp: scheduler.ScheduleAssignPublicIpEnabled,
138+
Subnets: pulumi.StringArray{
139+
pulumi.String(*subnetID),
140+
},
139141
},
140142
},
141143
},
144+
Arn: clusterArn,
145+
RoleArn: sRoleArn,
142146
},
143-
Arn: clusterArn,
144-
RoleArn: sRoleArn,
145-
},
146-
ScheduleExpression: pulumi.String(*se),
147-
ScheduleExpressionTimezone: pulumi.String(data.RegionTimezones[a.region]),
148-
})
149-
if err != nil {
150-
return err
147+
ScheduleExpression: pulumi.String(*se),
148+
ScheduleExpressionTimezone: pulumi.String(data.RegionTimezones[a.region]),
149+
})
150+
if err != nil {
151+
return err
152+
}
151153
}
152154
return nil
153155
}
@@ -358,8 +360,8 @@ func generateOneTimeScheduleExpression(region, delay string) (string, error) {
358360
return se, nil
359361
}
360362

361-
func scheduleExpressionByType(st scheduleType, se string) *string {
362-
switch st {
363+
func scheduleExpressionByType(st *scheduleType, se string) *string {
364+
switch *st {
363365
case Repeat:
364366
e := fmt.Sprintf("rate(%s)", se)
365367
return &e

pkg/provider/aws/modules/serverless/stack.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,18 @@ import (
1212
// function to create a mapt servless cmd which will be executed repeatedly
1313
// interval should match expected expression
1414
// https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-scheduled-rule-pattern.html
15-
func Create(command string, scheduleType scheduleType, schedulexpression, logGroupName string) error {
15+
func Create(args *ServerlessArgs) error {
1616
// Initially manage it by setup, may we need to customize the region
1717
//
1818
// THis was initially created for mac, if no FixedLocation we may
1919
// on a situation where region differs from resources managed..is this working??
2020
region := os.Getenv("AWS_DEFAULT_REGION")
2121
r := &serverlessRequestArgs{
2222
region: region,
23-
command: command,
24-
scheduleType: scheduleType,
25-
scheduleExpression: schedulexpression,
26-
logGroupName: logGroupName,
23+
command: args.Command,
24+
scheduleType: args.ScheduleType,
25+
scheduleExpression: args.Schedulexpression,
26+
logGroupName: args.LogGroupName,
2727
// Being isolated stack these values
2828
// do not care
2929
prefix: "mapt",

pkg/provider/aws/modules/serverless/types.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,19 @@ const (
2222
LimitMemory = "2048"
2323
)
2424

25+
type ServerlessArgs struct {
26+
Command string
27+
ScheduleType *scheduleType
28+
Schedulexpression string
29+
LogGroupName string
30+
}
31+
2532
type serverlessRequestArgs struct {
2633
// need this to find the right ECS cluster to run this serverless
2734
region string
2835
// command and scheduling to be used for it
2936
command string
30-
scheduleType scheduleType
37+
scheduleType *scheduleType
3138
scheduleExpression string
3239

3340
// optional if we want to set the name for the log group were logs are sent

0 commit comments

Comments
 (0)