Skip to content

Commit bfdd647

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 ca9e9d1 commit bfdd647

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

+8542
-751
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ VERSION ?= 1.0.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 createMP() *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 createMP() *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: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,4 +174,3 @@ require (
174174
gopkg.in/warnings.v0 v0.1.2 // indirect
175175
lukechampine.com/frand v1.5.1 // indirect
176176
)
177-

pkg/manager/context/context.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,16 @@ type context struct {
6060
remote bool
6161
tags map[string]string
6262
tagsAsPulumiStringMap pulumi.StringMap
63+
// This will be set if we need specific customization on a specfici execution
64+
provider Provider
6365
}
6466

6567
// mapt context
6668
var mc *context
6769

6870
type Provider interface {
6971
Init(backedURL string) error
72+
Custom(ctx *pulumi.Context) (*pulumi.ProviderResource, error)
7073
}
7174

7275
func Init(ca *ContextArgs, provider Provider) error {
@@ -81,6 +84,7 @@ func Init(ca *ContextArgs, provider Provider) error {
8184
serverless: ca.Serverless,
8285
forceDestroy: ca.ForceDestroy,
8386
remote: ca.Remote,
87+
provider: provider,
8488
}
8589
addCommonTags()
8690
// Init provider
@@ -119,6 +123,18 @@ func IsForceDestroy() bool { return mc.forceDestroy }
119123

120124
func IsRemote() bool { return mc.remote }
121125

126+
func CommonOptions(ctx *pulumi.Context) (co []pulumi.ResourceOption) {
127+
// Check if provider requires customization
128+
cp, err := mc.provider.Custom(ctx)
129+
if cp != nil {
130+
co = append(co, pulumi.Provider(*cp))
131+
}
132+
if err != nil {
133+
logging.Errorf("Error registering custom provider %v", err)
134+
}
135+
return
136+
}
137+
122138
// It will create a runID
123139
// if context has been intialized it will set it as the runID for the context
124140
// otherwise it will return the value (one time value)

0 commit comments

Comments
 (0)