Skip to content

Commit d4d4cb5

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

File tree

26 files changed

+586
-501
lines changed

26 files changed

+586
-501
lines changed

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

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -164,10 +164,8 @@ func houseKeep() *cobra.Command {
164164
MaxSize: viper.GetInt(paramMaxSize),
165165
},
166166
Machine: &macpool.MachineRequestArgs{
167-
VPCID: viper.GetString(paramVPCID),
168-
AZID: viper.GetString(paramAZID),
169-
SubnetID: viper.GetString(paramSubnetID),
170-
SSHSGID: viper.GetString(paramSSHSGID)},
167+
VPCID: viper.GetString(paramVPCID),
168+
SSHSGID: viper.GetString(paramSSHSGID)},
171169
}); err != nil {
172170
logging.Error(err)
173171
}
@@ -184,8 +182,6 @@ func houseKeep() *cobra.Command {
184182
flagSet.StringP(awsParams.MACOSVersion, "", awsParams.MACOSVersion, awsParams.MACOSVersionDefault)
185183
flagSet.Bool(params.Serverless, false, params.ServerlessDesc)
186184
flagSet.StringP(paramVPCID, "", paramVPCIDDefault, paramVPCIDDesc)
187-
flagSet.StringP(paramAZID, "", paramAZIDDefault, paramAZIDDesc)
188-
flagSet.StringP(paramSubnetID, "", paramSubnetIDDefault, paramSubnetIDDesc)
189185
flagSet.StringP(paramSSHSGID, "", paramSSHSGIDDefault, paramSSHSGIDDesc)
190186
c.PersistentFlags().AddFlagSet(flagSet)
191187
return c
@@ -237,10 +233,8 @@ func request() *cobra.Command {
237233
Architecture: viper.GetString(awsParams.MACArch),
238234
OSVersion: viper.GetString(awsParams.MACOSVersion),
239235
Machine: &macpool.MachineRequestArgs{
240-
VPCID: viper.GetString(paramVPCID),
241-
AZID: viper.GetString(paramAZID),
242-
SubnetID: viper.GetString(paramSubnetID),
243-
SSHSGID: viper.GetString(paramSSHSGID),
236+
VPCID: viper.GetString(paramVPCID),
237+
SSHSGID: viper.GetString(paramSSHSGID),
244238
},
245239
Ticket: viper.GetString(paramTicket),
246240
Timeout: viper.GetString(params.Timeout),
@@ -258,8 +252,6 @@ func request() *cobra.Command {
258252
flagSet.StringP(awsParams.MACOSVersion, "", awsParams.MACOSVersion, awsParams.MACOSVersionDefault)
259253
flagSet.StringP(params.Timeout, "", "", params.TimeoutDesc)
260254
flagSet.StringP(paramVPCID, "", paramVPCIDDefault, paramVPCIDDesc)
261-
flagSet.StringP(paramAZID, "", paramAZIDDefault, paramAZIDDesc)
262-
flagSet.StringP(paramSubnetID, "", paramSubnetIDDefault, paramSubnetIDDesc)
263255
flagSet.StringP(paramSSHSGID, "", paramSSHSGIDDefault, paramSSHSGIDDesc)
264256
flagSet.StringP(paramTicket, "", paramTicketDefault, paramTicketDesc)
265257
flagSet.Bool(params.Serverless, false, params.ServerlessDesc)
@@ -287,10 +279,8 @@ func release() *cobra.Command {
287279
Remote: viper.IsSet(params.Remote),
288280
},
289281
&macpool.MachineRequestArgs{
290-
VPCID: viper.GetString(paramVPCID),
291-
AZID: viper.GetString(paramAZID),
292-
SubnetID: viper.GetString(paramSubnetID),
293-
SSHSGID: viper.GetString(paramSSHSGID),
282+
VPCID: viper.GetString(paramVPCID),
283+
SSHSGID: viper.GetString(paramSSHSGID),
294284
},
295285
viper.GetString(paramTicket)); err != nil {
296286
logging.Error(err)
@@ -300,8 +290,6 @@ func release() *cobra.Command {
300290
}
301291
flagSet := pflag.NewFlagSet(awsParams.MACReleaseCmd, pflag.ExitOnError)
302292
flagSet.StringP(paramVPCID, "", paramVPCIDDefault, paramVPCIDDesc)
303-
flagSet.StringP(paramAZID, "", paramAZIDDefault, paramAZIDDesc)
304-
flagSet.StringP(paramSubnetID, "", paramSubnetIDDefault, paramSubnetIDDesc)
305293
flagSet.StringP(paramSSHSGID, "", paramSSHSGIDDefault, paramSSHSGIDDesc)
306294
flagSet.StringP(paramTicket, "", paramTicketDefault, paramTicketDesc)
307295
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)