Skip to content

Commit 2149009

Browse files
committed
feat: expand pool across full region to minimize capacity issues
Signed-off-by: Adrian Riobo <[email protected]>
1 parent bfdd647 commit 2149009

File tree

26 files changed

+592
-513
lines changed

26 files changed

+592
-513
lines changed

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

Lines changed: 12 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,12 @@ const (
3030
paramMaxSizeDesc = "max number of machines in the pool"
3131
paramMaxSizeDefault = 2
3232
// 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 = ""
33+
paramVPCID = "vpcid"
34+
paramVPCIDDesc = "VPC Id to setup mac machines"
35+
paramVPCIDDefault = ""
36+
paramSSHSGID = "ssh-sgid"
37+
paramSSHSGIDDesc = "Security group Id to securize ssh access to machines. SSH can only be used from instances with this SG."
38+
paramSSHSGIDDefault = ""
4539
// Request / Release
4640
paramTicket = "ticket"
4741
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"
@@ -164,10 +158,8 @@ func houseKeep() *cobra.Command {
164158
MaxSize: viper.GetInt(paramMaxSize),
165159
},
166160
Machine: &macpool.MachineRequestArgs{
167-
VPCID: viper.GetString(paramVPCID),
168-
AZID: viper.GetString(paramAZID),
169-
SubnetID: viper.GetString(paramSubnetID),
170-
SSHSGID: viper.GetString(paramSSHSGID)},
161+
VPCID: viper.GetString(paramVPCID),
162+
SSHSGID: viper.GetString(paramSSHSGID)},
171163
}); err != nil {
172164
logging.Error(err)
173165
}
@@ -184,8 +176,6 @@ func houseKeep() *cobra.Command {
184176
flagSet.StringP(awsParams.MACOSVersion, "", awsParams.MACOSVersion, awsParams.MACOSVersionDefault)
185177
flagSet.Bool(params.Serverless, false, params.ServerlessDesc)
186178
flagSet.StringP(paramVPCID, "", paramVPCIDDefault, paramVPCIDDesc)
187-
flagSet.StringP(paramAZID, "", paramAZIDDefault, paramAZIDDesc)
188-
flagSet.StringP(paramSubnetID, "", paramSubnetIDDefault, paramSubnetIDDesc)
189179
flagSet.StringP(paramSSHSGID, "", paramSSHSGIDDefault, paramSSHSGIDDesc)
190180
c.PersistentFlags().AddFlagSet(flagSet)
191181
return c
@@ -237,10 +227,8 @@ func request() *cobra.Command {
237227
Architecture: viper.GetString(awsParams.MACArch),
238228
OSVersion: viper.GetString(awsParams.MACOSVersion),
239229
Machine: &macpool.MachineRequestArgs{
240-
VPCID: viper.GetString(paramVPCID),
241-
AZID: viper.GetString(paramAZID),
242-
SubnetID: viper.GetString(paramSubnetID),
243-
SSHSGID: viper.GetString(paramSSHSGID),
230+
VPCID: viper.GetString(paramVPCID),
231+
SSHSGID: viper.GetString(paramSSHSGID),
244232
},
245233
Ticket: viper.GetString(paramTicket),
246234
Timeout: viper.GetString(params.Timeout),
@@ -258,8 +246,6 @@ func request() *cobra.Command {
258246
flagSet.StringP(awsParams.MACOSVersion, "", awsParams.MACOSVersion, awsParams.MACOSVersionDefault)
259247
flagSet.StringP(params.Timeout, "", "", params.TimeoutDesc)
260248
flagSet.StringP(paramVPCID, "", paramVPCIDDefault, paramVPCIDDesc)
261-
flagSet.StringP(paramAZID, "", paramAZIDDefault, paramAZIDDesc)
262-
flagSet.StringP(paramSubnetID, "", paramSubnetIDDefault, paramSubnetIDDesc)
263249
flagSet.StringP(paramSSHSGID, "", paramSSHSGIDDefault, paramSSHSGIDDesc)
264250
flagSet.StringP(paramTicket, "", paramTicketDefault, paramTicketDesc)
265251
flagSet.Bool(params.Serverless, false, params.ServerlessDesc)
@@ -287,10 +273,8 @@ func release() *cobra.Command {
287273
Remote: viper.IsSet(params.Remote),
288274
},
289275
&macpool.MachineRequestArgs{
290-
VPCID: viper.GetString(paramVPCID),
291-
AZID: viper.GetString(paramAZID),
292-
SubnetID: viper.GetString(paramSubnetID),
293-
SSHSGID: viper.GetString(paramSSHSGID),
276+
VPCID: viper.GetString(paramVPCID),
277+
SSHSGID: viper.GetString(paramSSHSGID),
294278
},
295279
viper.GetString(paramTicket)); err != nil {
296280
logging.Error(err)
@@ -300,8 +284,6 @@ func release() *cobra.Command {
300284
}
301285
flagSet := pflag.NewFlagSet(awsParams.MACReleaseCmd, pflag.ExitOnError)
302286
flagSet.StringP(paramVPCID, "", paramVPCIDDefault, paramVPCIDDesc)
303-
flagSet.StringP(paramAZID, "", paramAZIDDefault, paramAZIDDesc)
304-
flagSet.StringP(paramSubnetID, "", paramSubnetIDDefault, paramSubnetIDDesc)
305287
flagSet.StringP(paramSSHSGID, "", paramSSHSGIDDefault, paramSSHSGIDDesc)
306288
flagSet.StringP(paramTicket, "", paramTicketDefault, paramTicketDesc)
307289
flagSet.Bool(params.Serverless, false, params.ServerlessDesc)

pkg/provider/aws/action/kind/kind.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ func (r *kindRequest) deploy(ctx *pulumi.Context) error {
195195
c.GetHostIP(true))
196196
if len(*r.timeout) > 0 {
197197
if err = serverless.OneTimeDelayedTask(ctx,
198+
fmt.Sprintf("kind-destroy-%s", maptContext.RunID()),
198199
*r.allocationData.Region, *r.prefix,
199200
awsKindID,
200201
fmt.Sprintf("aws %s destroy --project-name %s --backed-url %s --serverless --force-destroy",

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,8 @@ func (r *HouseKeepRequestArgs) fillHostRequest() *macHost.PoolMacDedicatedHostRe
8989
Prefix: r.Pool.Prefix,
9090
Architecture: r.Pool.Architecture,
9191
// FixedLocation: r.FixedLocation,
92-
VPCID: &r.Machine.VPCID,
93-
AZID: &r.Machine.AZID,
94-
SubnetID: &r.Machine.SubnetID,
95-
SSHSGID: &r.Machine.SSHSGID,
92+
VPCID: &r.Machine.VPCID,
93+
SSHSGID: &r.Machine.SSHSGID,
9694
},
9795
PoolID: &macHost.PoolID{
9896
PoolName: r.Pool.Name,

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func Create(ctx *maptContext.ContextArgs, r *PoolRequestArgs) error {
4242
}
4343

4444
func Destroy(ctx *maptContext.ContextArgs) (err error) {
45-
logging.Debug("Run fedora destroy")
45+
logging.Debug("Run mac pool destroy")
4646
// Create mapt Context
4747
if err := maptContext.Init(ctx, aws.Provider()); err != nil {
4848
return err
@@ -97,10 +97,6 @@ func (r *PoolRequestArgs) deploy(ctx *pulumi.Context) error {
9797
MaxSize: r.MaxSize,
9898
})
9999
return err
100-
// if err != nil {
101-
// return err
102-
// }
103-
// return p.RunRemoteHouseKeep(&r.Name, &r.Architecture, &r.OSVersion, &r.OfferedCapacity, &r.MaxSize)
104100
}
105101

106102
func (r *PoolRequestArgs) results(stackResult auto.UpResult) error {

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

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,8 @@ func request(ctx *maptContext.ContextArgs, r *RequestMachineArgs) error {
4242
Version: *hi.OSVersion,
4343
Architecture: *hi.Arch,
4444
VPCID: &r.Machine.VPCID,
45-
// Availability zone is not needed cause it will be picked
46-
// from dedicated host
47-
// AvailabilityZone: &r.Machine.AZID,
48-
SubnetID: &r.Machine.SubnetID,
49-
SSHSGID: &r.Machine.SSHSGID,
50-
Timeout: r.Timeout,
45+
SSHSGID: &r.Machine.SSHSGID,
46+
Timeout: r.Timeout,
5147
}
5248

5349
// TODO here we would change based on the integration-mode requested
@@ -94,8 +90,8 @@ func (r *HouseKeepRequestArgs) fillMacRequest() *macMachine.Request {
9490
Architecture: r.Pool.Architecture,
9591
Version: r.Pool.OSVersion,
9692
// Network and Security
97-
VPCID: &r.Machine.VPCID,
98-
SubnetID: &r.Machine.SubnetID,
99-
SSHSGID: &r.Machine.SSHSGID,
93+
VPCID: &r.Machine.VPCID,
94+
// SubnetID: &r.Machine.SubnetID,
95+
SSHSGID: &r.Machine.SSHSGID,
10096
}
10197
}

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,11 @@ type PoolRequestArgs struct {
2828

2929
// Custom values to setup within machines in the cluster
3030
type MachineRequestArgs struct {
31-
VPCID string
32-
AZID string
33-
SubnetID string
34-
SSHSGID string
31+
VPCID string
32+
// This values now will be calculated
33+
// AZID string
34+
// SubnetID string
35+
SSHSGID string
3536
}
3637

3738
type HouseKeepRequestArgs struct {

pkg/provider/aws/action/openshift-snc/openshift-snc.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@ func (r *openshiftSNCRequest) deploy(ctx *pulumi.Context) error {
241241
c.GetHostIP(true))
242242
if len(*r.timeout) > 0 {
243243
if err = serverless.OneTimeDelayedTask(ctx,
244+
fmt.Sprintf("openshift-snc-destroy-%s", maptContext.RunID()),
244245
*r.allocationData.region, *r.prefix,
245246
awsOCPSNCID,
246247
fmt.Sprintf("aws %s destroy --project-name %s --backed-url %s --serverless",

pkg/provider/aws/aws.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,11 @@ import (
2626
"github.com/redhat-developer/mapt/pkg/util/maps"
2727
)
2828

29-
<<<<<<< HEAD
3029
const pulumiLocksPath = ".pulumi/locks"
3130

32-
type AWS struct{}
33-
=======
3431
type AWS struct {
3532
cp *pulumi.ProviderResource
3633
}
37-
>>>>>>> ac071298 (chore: aws mac pool allow orchestrate serverless stack, to allow several task specs)
3834

3935
func (a *AWS) Init(backedURL string) error {
4036
// Manage remote state requirements, if backedURL
@@ -53,6 +49,7 @@ func (a *AWS) Custom(ctx *pulumi.Context) (*pulumi.ProviderResource, error) {
5349
&awsConfig.ProviderArgs{
5450
SkipCredentialsValidation: pulumi.Bool(true),
5551
SkipRequestingAccountId: pulumi.Bool(true),
52+
MaxRetries: pulumi.Int(1),
5653
})
5754
if err != nil {
5855
return nil, err

pkg/provider/aws/data/azs.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ func GetRandomAvailabilityZone(region string, excludedAZs []string) (*string, er
2626
return azs[util.Random(len(azs)-1, 0)].ZoneName, nil
2727
}
2828

29-
func GetAvailabilityZones() []string {
30-
azs, err := describeAvailabilityZones("")
29+
func GetAvailabilityZones(regionName string) []string {
30+
azs, err := describeAvailabilityZones(regionName)
3131
if err != nil {
3232
logging.Error(err)
3333
return nil

pkg/provider/aws/data/network.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,3 +117,32 @@ func isPublic(client *ec2.Client, subnetID string) error {
117117
}
118118
return fmt.Errorf("no public subnet setup found")
119119
}
120+
121+
func GetSubnetID(region, vpcID, azID *string) (*string, error) {
122+
cfg, err := getConfig(*region)
123+
if err != nil {
124+
return nil, err
125+
}
126+
ec2Client := ec2.NewFromConfig(cfg)
127+
output, err := ec2Client.DescribeSubnets(
128+
context.TODO(),
129+
&ec2.DescribeSubnetsInput{
130+
Filters: []ec2types.Filter{
131+
{
132+
Name: aws.String("vpc-id"),
133+
Values: []string{*vpcID},
134+
},
135+
{
136+
Name: aws.String("availability-zone-id"),
137+
Values: []string{*azID},
138+
},
139+
},
140+
})
141+
if err != nil {
142+
return nil, err
143+
}
144+
if len(output.Subnets) != 1 {
145+
return nil, fmt.Errorf("expected one subnet, found %d", len(output.Subnets))
146+
}
147+
return output.Subnets[0].SubnetId, nil
148+
}

0 commit comments

Comments
 (0)