Skip to content

Commit a0b9785

Browse files
committed
chore: aws mac pool allow orchestrate serverless stack, to allow several task specs
Signed-off-by: Adrian Riobo <[email protected]>
1 parent 427bf26 commit a0b9785

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+8534
-1089
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ VERSION ?= 0.9.0-dev
22
CONTAINER_MANAGER ?= podman
33

44
# Image URL to use all building/pushing image targets
5-
IMG ?= quay.io/redhat-developer/mapt:v${VERSION}
6-
TKN_IMG ?= quay.io/redhat-developer/mapt:v${VERSION}-tkn
5+
IMG ?= ghcr.io/redhat-developer/mapt:pr-421
6+
TKN_IMG ?= ghcr.io/redhat-developer/mapt:pr-421-tkn
77

88
# Integrations
99
# renovate: datasource=github-releases depName=cirruslabs/cirrus-cli

cmd/mapt/cmd/aws/services/mac-pool.go

Lines changed: 66 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const (
2020
cmdHousekeep = "house-keep"
2121
cmdHousekeepDesc = "house keeping for mac pool. Detroy old machines on over capacity and create new ones if capacity not meet"
2222

23+
// Pool params
2324
paramName = "name"
2425
paramNameDesc = "pool name it is a unique identifier for the pool. The name should be unique for the whole AWS account"
2526
paramOfferedCapacity = "offered-capacity"
@@ -28,6 +29,23 @@ const (
2829
paramMaxSize = "max-size"
2930
paramMaxSizeDesc = "max number of machines in the pool"
3031
paramMaxSizeDefault = 2
32+
// Machines in the pool params
33+
paramVPCID = "vpcid"
34+
paramVPCIDDesc = "VPC Id to setup mac machines"
35+
paramVPCIDDefault = ""
36+
paramAZID = "azid"
37+
paramAZIDDesc = "AZ Id to setup mac machines"
38+
paramAZIDDefault = ""
39+
paramSubnetID = "subnetid"
40+
paramSubnetIDDesc = "Subnet Id to setup mac machines"
41+
paramSubnetIDDefault = ""
42+
paramSSHSGID = "ssh-sgid"
43+
paramSSHSGIDDesc = "Security group Id to securize ssh access to machines. SSH can only be used from instances with this SG."
44+
paramSSHSGIDDefault = ""
45+
// Request / Release
46+
paramTicket = "ticket"
47+
paramTicketDesc = "this is a unique identifier to tag the dedicated host meanwhile it is being locked to identify the request which locked it. It will be used on release to identify the machine being released"
48+
paramTicketDefault = ""
3149
)
3250

3351
func GetMacPoolCmd() *cobra.Command {
@@ -67,14 +85,13 @@ func create() *cobra.Command {
6785
DebugLevel: viper.GetUint(params.DebugLevel),
6886
Tags: viper.GetStringMapString(params.Tags),
6987
},
70-
&macpool.MacPoolRequestArgs{
88+
&macpool.PoolRequestArgs{
7189
Prefix: "main",
72-
PoolName: viper.GetString(paramName),
90+
Name: viper.GetString(paramName),
7391
Architecture: viper.GetString(awsParams.MACArch),
7492
OSVersion: viper.GetString(awsParams.MACOSVersion),
7593
OfferedCapacity: viper.GetInt(paramOfferedCapacity),
76-
MaxSize: viper.GetInt(paramMaxSize),
77-
FixedLocation: viper.IsSet(awsParams.MACFixedLocation)}); err != nil {
94+
MaxSize: viper.GetInt(paramMaxSize)}); err != nil {
7895
logging.Error(err)
7996
}
8097
return nil
@@ -89,7 +106,6 @@ func create() *cobra.Command {
89106
flagSet.StringP(awsParams.MACArch, "", awsParams.MACArchDefault, awsParams.MACArchDesc)
90107
flagSet.StringP(awsParams.MACOSVersion, "", awsParams.MACOSVersionDefault, awsParams.MACOSVersionDesc)
91108
flagSet.StringToStringP(params.Tags, "", nil, params.TagsDesc)
92-
flagSet.Bool(awsParams.MACFixedLocation, false, awsParams.MACFixedLocationDesc)
93109
c.PersistentFlags().AddFlagSet(flagSet)
94110
return c
95111
}
@@ -138,28 +154,39 @@ func houseKeep() *cobra.Command {
138154
DebugLevel: viper.GetUint(params.DebugLevel),
139155
Tags: viper.GetStringMapString(params.Tags),
140156
},
141-
&macpool.MacPoolRequestArgs{
142-
Prefix: "main",
143-
PoolName: viper.GetString(paramName),
144-
Architecture: viper.GetString(awsParams.MACArch),
145-
OSVersion: viper.GetString(awsParams.MACOSVersion),
146-
OfferedCapacity: viper.GetInt(paramOfferedCapacity),
147-
MaxSize: viper.GetInt(paramMaxSize),
148-
FixedLocation: viper.IsSet(awsParams.MACFixedLocation)}); err != nil {
157+
&macpool.HouseKeepRequestArgs{
158+
Pool: &macpool.PoolRequestArgs{
159+
Prefix: "main",
160+
Name: viper.GetString(paramName),
161+
Architecture: viper.GetString(awsParams.MACArch),
162+
OSVersion: viper.GetString(awsParams.MACOSVersion),
163+
OfferedCapacity: viper.GetInt(paramOfferedCapacity),
164+
MaxSize: viper.GetInt(paramMaxSize),
165+
},
166+
Machine: &macpool.MachineRequestArgs{
167+
VPCID: viper.GetString(paramVPCID),
168+
AZID: viper.GetString(paramAZID),
169+
SubnetID: viper.GetString(paramSubnetID),
170+
SSHSGID: viper.GetString(paramSSHSGID)},
171+
}); err != nil {
149172
logging.Error(err)
150173
}
151174
return nil
152175
},
153176
}
154177
flagSet := pflag.NewFlagSet(params.CreateCmdName, pflag.ExitOnError)
178+
params.AddCommonFlags(flagSet)
155179
flagSet.StringToStringP(params.Tags, "", nil, params.TagsDesc)
156180
flagSet.StringP(paramName, "", "", paramNameDesc)
157181
flagSet.Int(paramOfferedCapacity, paramOfferedCapacityDefault, paramOfferedCapacityDesc)
158182
flagSet.Int(paramMaxSize, paramMaxSizeDefault, paramMaxSizeDesc)
159183
flagSet.StringP(awsParams.MACArch, "", awsParams.MACArchDefault, awsParams.MACArchDesc)
160184
flagSet.StringP(awsParams.MACOSVersion, "", awsParams.MACOSVersion, awsParams.MACOSVersionDefault)
161-
flagSet.Bool(awsParams.MACFixedLocation, false, awsParams.MACFixedLocationDesc)
162185
flagSet.Bool(params.Serverless, false, params.ServerlessDesc)
186+
flagSet.StringP(paramVPCID, "", paramVPCIDDefault, paramVPCIDDesc)
187+
flagSet.StringP(paramAZID, "", paramAZIDDefault, paramAZIDDesc)
188+
flagSet.StringP(paramSubnetID, "", paramSubnetIDDefault, paramSubnetIDDesc)
189+
flagSet.StringP(paramSSHSGID, "", paramSSHSGIDDefault, paramSSHSGIDDesc)
163190
c.PersistentFlags().AddFlagSet(flagSet)
164191
return c
165192
}
@@ -209,7 +236,14 @@ func request() *cobra.Command {
209236
PoolName: viper.GetString(paramName),
210237
Architecture: viper.GetString(awsParams.MACArch),
211238
OSVersion: viper.GetString(awsParams.MACOSVersion),
212-
Timeout: viper.GetString(params.Timeout),
239+
Machine: &macpool.MachineRequestArgs{
240+
VPCID: viper.GetString(paramVPCID),
241+
AZID: viper.GetString(paramAZID),
242+
SubnetID: viper.GetString(paramSubnetID),
243+
SSHSGID: viper.GetString(paramSSHSGID),
244+
},
245+
Ticket: viper.GetString(paramTicket),
246+
Timeout: viper.GetString(params.Timeout),
213247
}); err != nil {
214248
logging.Error(err)
215249
}
@@ -223,6 +257,11 @@ func request() *cobra.Command {
223257
flagSet.StringP(awsParams.MACArch, "", awsParams.MACArchDefault, awsParams.MACArchDesc)
224258
flagSet.StringP(awsParams.MACOSVersion, "", awsParams.MACOSVersion, awsParams.MACOSVersionDefault)
225259
flagSet.StringP(params.Timeout, "", "", params.TimeoutDesc)
260+
flagSet.StringP(paramVPCID, "", paramVPCIDDefault, paramVPCIDDesc)
261+
flagSet.StringP(paramAZID, "", paramAZIDDefault, paramAZIDDesc)
262+
flagSet.StringP(paramSubnetID, "", paramSubnetIDDefault, paramSubnetIDDesc)
263+
flagSet.StringP(paramSSHSGID, "", paramSSHSGIDDefault, paramSSHSGIDDesc)
264+
flagSet.StringP(paramTicket, "", paramTicketDefault, paramTicketDesc)
226265
flagSet.Bool(params.Serverless, false, params.ServerlessDesc)
227266
flagSet.Bool(params.Remote, false, params.RemoteDesc)
228267
flagSet.AddFlagSet(params.GetGHActionsFlagset())
@@ -247,20 +286,26 @@ func release() *cobra.Command {
247286
Serverless: viper.IsSet(params.Serverless),
248287
Remote: viper.IsSet(params.Remote),
249288
},
250-
viper.GetString(awsParams.MACDHID)); err != nil {
289+
&macpool.MachineRequestArgs{
290+
VPCID: viper.GetString(paramVPCID),
291+
AZID: viper.GetString(paramAZID),
292+
SubnetID: viper.GetString(paramSubnetID),
293+
SSHSGID: viper.GetString(paramSSHSGID),
294+
},
295+
viper.GetString(paramTicket)); err != nil {
251296
logging.Error(err)
252297
}
253298
return nil
254299
},
255300
}
256301
flagSet := pflag.NewFlagSet(awsParams.MACReleaseCmd, pflag.ExitOnError)
257-
flagSet.StringP(awsParams.MACDHID, "", "", awsParams.MACDHIDDesc)
302+
flagSet.StringP(paramVPCID, "", paramVPCIDDefault, paramVPCIDDesc)
303+
flagSet.StringP(paramAZID, "", paramAZIDDefault, paramAZIDDesc)
304+
flagSet.StringP(paramSubnetID, "", paramSubnetIDDefault, paramSubnetIDDesc)
305+
flagSet.StringP(paramSSHSGID, "", paramSSHSGIDDefault, paramSSHSGIDDesc)
306+
flagSet.StringP(paramTicket, "", paramTicketDefault, paramTicketDesc)
258307
flagSet.Bool(params.Serverless, false, params.ServerlessDesc)
259308
flagSet.Bool(params.Remote, false, params.RemoteDesc)
260309
c.PersistentFlags().AddFlagSet(flagSet)
261-
err := c.MarkPersistentFlagRequired(awsParams.MACDHID)
262-
if err != nil {
263-
logging.Error(err)
264-
}
265310
return c
266311
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module github.com/redhat-developer/mapt
22

33
go 1.23.1
44

5-
toolchain go1.24.2
5+
toolchain go1.23.7
66

77
require (
88
github.com/coocood/freecache v1.2.4

pkg/manager/context/context.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,16 @@ type context struct {
5757
remote bool
5858
tags map[string]string
5959
tagsAsPulumiStringMap pulumi.StringMap
60+
// This will be set if we need specific customization on a specfici execution
61+
provider Provider
6062
}
6163

6264
// mapt context
6365
var mc *context
6466

6567
type Provider interface {
6668
Init(backedURL string) error
69+
Custom(ctx *pulumi.Context) (*pulumi.ProviderResource, error)
6770
}
6871

6972
func Init(ca *ContextArgs, provider Provider) error {
@@ -77,6 +80,7 @@ func Init(ca *ContextArgs, provider Provider) error {
7780
tags: ca.Tags,
7881
serverless: ca.Serverless,
7982
remote: ca.Remote,
83+
provider: provider,
8084
}
8185
addCommonTags()
8286
// Init provider
@@ -113,6 +117,18 @@ func IsServerless() bool { return mc.serverless }
113117

114118
func IsRemote() bool { return mc.remote }
115119

120+
func CommonOptions(ctx *pulumi.Context) (co []pulumi.ResourceOption) {
121+
// Check if provider requires customization
122+
cp, err := mc.provider.Custom(ctx)
123+
if cp != nil {
124+
co = append(co, pulumi.Provider(*cp))
125+
}
126+
if err != nil {
127+
logging.Errorf("Error registering custom provider %v", err)
128+
}
129+
return
130+
}
131+
116132
// It will create a runID
117133
// if context has been intialized it will set it as the runID for the context
118134
// otherwise it will return the value (one time value)

0 commit comments

Comments
 (0)