Skip to content

Commit 6ad3164

Browse files
adrianrioboclaude
andcommitted
feat(aws): Optional service endpoints
This commit was implemented based in spec to define optoinal vpc endpoints for AWS, take into consideration this is a breaking change as when endpoints were introduced they were created by default, now behavior is the other way around unless they are explicit in params they will no be created Co-authored-by: Claude <noreply@anthropic.com> Signed-off-by: Adrian Riobo <ariobolo@redhat.com>
1 parent c4cfbce commit 6ad3164

35 files changed

Lines changed: 308 additions & 100 deletions

cmd/mapt/cmd/aws/hosts/fedora.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package hosts
22

33
import (
4+
awsParams "github.com/redhat-developer/mapt/cmd/mapt/cmd/aws/params"
45
"github.com/redhat-developer/mapt/cmd/mapt/cmd/params"
56
maptContext "github.com/redhat-developer/mapt/pkg/manager/context"
67
"github.com/redhat-developer/mapt/pkg/provider/aws/action/fedora"
@@ -60,13 +61,14 @@ func getFedoraCreate() *cobra.Command {
6061
Tags: viper.GetStringMapString(params.Tags),
6162
},
6263
&fedora.FedoraArgs{
63-
Prefix: "main",
64-
Version: viper.GetString(fedoraVersion),
65-
Arch: viper.GetString(params.LinuxArch),
66-
ComputeRequest: params.ComputeRequestArgs(),
67-
Spot: params.SpotArgs(),
68-
Timeout: viper.GetString(params.Timeout),
69-
Airgap: viper.IsSet(airgap)})
64+
Prefix: "main",
65+
Version: viper.GetString(fedoraVersion),
66+
Arch: viper.GetString(params.LinuxArch),
67+
ComputeRequest: params.ComputeRequestArgs(),
68+
Spot: params.SpotArgs(),
69+
Timeout: viper.GetString(params.Timeout),
70+
Airgap: viper.IsSet(airgap),
71+
ServiceEndpoints: params.NetworkServiceEndpoints()})
7072
},
7173
}
7274
flagSet := pflag.NewFlagSet(params.CreateCmdName, pflag.ExitOnError)
@@ -78,6 +80,7 @@ func getFedoraCreate() *cobra.Command {
7880
flagSet.StringP(params.Timeout, "", "", params.TimeoutDesc)
7981
params.AddComputeRequestFlags(flagSet)
8082
params.AddSpotFlags(flagSet)
83+
params.AddNetworkFlags(flagSet, awsParams.ServiceEndpointsDesc)
8184
params.AddGHActionsFlags(flagSet)
8285
params.AddCirrusFlags(flagSet)
8386
params.AddGitLabRunnerFlags(flagSet)

cmd/mapt/cmd/aws/hosts/rhel.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package hosts
22

33
import (
4+
awsParams "github.com/redhat-developer/mapt/cmd/mapt/cmd/aws/params"
45
"github.com/redhat-developer/mapt/cmd/mapt/cmd/params"
56
maptContext "github.com/redhat-developer/mapt/pkg/manager/context"
67
"github.com/redhat-developer/mapt/pkg/provider/aws/action/rhel"
@@ -56,16 +57,17 @@ func getRHELCreate() *cobra.Command {
5657
Tags: viper.GetStringMapString(params.Tags),
5758
},
5859
&rhel.RHELArgs{
59-
Prefix: "main",
60-
Version: viper.GetString(params.RhelVersion),
61-
Arch: viper.GetString(params.LinuxArch),
62-
ComputeRequest: params.ComputeRequestArgs(),
63-
SubsUsername: viper.GetString(params.SubsUsername),
64-
SubsUserpass: viper.GetString(params.SubsUserpass),
65-
ProfileSNC: viper.IsSet(params.ProfileSNC),
66-
Spot: params.SpotArgs(),
67-
Timeout: viper.GetString(params.Timeout),
68-
Airgap: viper.IsSet(airgap),
60+
Prefix: "main",
61+
Version: viper.GetString(params.RhelVersion),
62+
Arch: viper.GetString(params.LinuxArch),
63+
ComputeRequest: params.ComputeRequestArgs(),
64+
SubsUsername: viper.GetString(params.SubsUsername),
65+
SubsUserpass: viper.GetString(params.SubsUserpass),
66+
ProfileSNC: viper.IsSet(params.ProfileSNC),
67+
Spot: params.SpotArgs(),
68+
Timeout: viper.GetString(params.Timeout),
69+
Airgap: viper.IsSet(airgap),
70+
ServiceEndpoints: params.NetworkServiceEndpoints(),
6971
})
7072
},
7173
}
@@ -81,6 +83,7 @@ func getRHELCreate() *cobra.Command {
8183
flagSet.Bool(params.ProfileSNC, false, params.ProfileSNCDesc)
8284
params.AddComputeRequestFlags(flagSet)
8385
params.AddSpotFlags(flagSet)
86+
params.AddNetworkFlags(flagSet, awsParams.ServiceEndpointsDesc)
8487
params.AddGHActionsFlags(flagSet)
8588
params.AddCirrusFlags(flagSet)
8689
params.AddGitLabRunnerFlags(flagSet)

cmd/mapt/cmd/aws/hosts/rhelai.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package hosts
22

33
import (
4+
awsParams "github.com/redhat-developer/mapt/cmd/mapt/cmd/aws/params"
45
"github.com/redhat-developer/mapt/cmd/mapt/cmd/params"
56
maptContext "github.com/redhat-developer/mapt/pkg/manager/context"
67
rhelai "github.com/redhat-developer/mapt/pkg/provider/aws/action/rhel-ai"
@@ -54,13 +55,14 @@ func getRHELAICreate() *cobra.Command {
5455
Tags: viper.GetStringMapString(params.Tags),
5556
},
5657
&apiRHELAI.RHELAIArgs{
57-
Prefix: "main",
58-
Version: viper.GetString(params.RhelAIVersion),
59-
Accelerator: viper.GetString(params.RhelAIAccelerator),
60-
CustomImage: viper.GetString(params.RhelAICustomImage),
61-
ComputeRequest: params.ComputeRequestArgs(),
62-
Spot: params.SpotArgs(),
63-
Timeout: viper.GetString(params.Timeout),
58+
Prefix: "main",
59+
Version: viper.GetString(params.RhelAIVersion),
60+
Accelerator: viper.GetString(params.RhelAIAccelerator),
61+
CustomImage: viper.GetString(params.RhelAICustomImage),
62+
ComputeRequest: params.ComputeRequestArgs(),
63+
Spot: params.SpotArgs(),
64+
Timeout: viper.GetString(params.Timeout),
65+
ServiceEndpoints: params.NetworkServiceEndpoints(),
6466
})
6567
},
6668
}
@@ -73,6 +75,7 @@ func getRHELAICreate() *cobra.Command {
7375
flagSet.StringP(params.Timeout, "", "", params.TimeoutDesc)
7476
params.AddComputeRequestFlags(flagSet)
7577
params.AddSpotFlags(flagSet)
78+
params.AddNetworkFlags(flagSet, awsParams.ServiceEndpointsDesc)
7679
c.PersistentFlags().AddFlagSet(flagSet)
7780
return c
7881
}

cmd/mapt/cmd/aws/hosts/windows.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package hosts
22

33
import (
4+
awsParams "github.com/redhat-developer/mapt/cmd/mapt/cmd/aws/params"
45
"github.com/redhat-developer/mapt/cmd/mapt/cmd/params"
56
maptContext "github.com/redhat-developer/mapt/pkg/manager/context"
67
"github.com/redhat-developer/mapt/pkg/provider/aws/action/windows"
@@ -69,15 +70,16 @@ func getWindowsCreate() *cobra.Command {
6970
Tags: viper.GetStringMapString(params.Tags),
7071
},
7172
&windows.WindowsServerArgs{
72-
Prefix: "main",
73-
AMIName: viper.GetString(amiName),
74-
AMIUser: viper.GetString(amiUsername),
75-
AMIOwner: viper.GetString(amiOwner),
76-
AMILang: viper.GetString(amiLang),
77-
AMIKeepCopy: viper.IsSet(amiKeepCopy),
78-
Spot: params.SpotArgs(),
79-
Airgap: viper.IsSet(airgap),
80-
Timeout: viper.GetString(params.Timeout),
73+
Prefix: "main",
74+
AMIName: viper.GetString(amiName),
75+
AMIUser: viper.GetString(amiUsername),
76+
AMIOwner: viper.GetString(amiOwner),
77+
AMILang: viper.GetString(amiLang),
78+
AMIKeepCopy: viper.IsSet(amiKeepCopy),
79+
Spot: params.SpotArgs(),
80+
Airgap: viper.IsSet(airgap),
81+
Timeout: viper.GetString(params.Timeout),
82+
ServiceEndpoints: params.NetworkServiceEndpoints(),
8183
})
8284
},
8385
}
@@ -95,6 +97,7 @@ func getWindowsCreate() *cobra.Command {
9597
params.AddGHActionsFlags(flagSet)
9698
params.AddCirrusFlags(flagSet)
9799
params.AddGitLabRunnerFlags(flagSet)
100+
params.AddNetworkFlags(flagSet, awsParams.ServiceEndpointsDesc)
98101
c.PersistentFlags().AddFlagSet(flagSet)
99102
return c
100103
}

cmd/mapt/cmd/aws/params/params.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,7 @@ const (
2020
MACFixedLocationDesc string = "if this flag is set the host will be created only on the region set by the AWS Env (AWS_DEFAULT_REGION)"
2121
MACDHID string = "dedicated-host-id"
2222
MACDHIDDesc string = "id for the dedicated host"
23+
24+
ServiceEndpointsDesc = "Comma-separated list of VPC endpoints to create. " +
25+
"Accepted values: s3, ecr, ssm. Empty = no endpoints."
2326
)

cmd/mapt/cmd/aws/services/eks.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package services
22

33
import (
4+
awsParams "github.com/redhat-developer/mapt/cmd/mapt/cmd/aws/params"
45
"github.com/redhat-developer/mapt/cmd/mapt/cmd/params"
56
maptContext "github.com/redhat-developer/mapt/pkg/manager/context"
67
awsEKS "github.com/redhat-developer/mapt/pkg/provider/aws/action/eks"
@@ -78,6 +79,7 @@ func getCreateEKS() *cobra.Command {
7879
Addons: viper.GetStringSlice(paramAddons),
7980
LoadBalancerController: viper.IsSet(paramLoadBalancerController),
8081
ExcludedZoneIDs: viper.GetStringSlice(excludedZoneIDs),
82+
ServiceEndpoints: params.NetworkServiceEndpoints(),
8183
})
8284
},
8385
}
@@ -94,6 +96,7 @@ func getCreateEKS() *cobra.Command {
9496
flagSet.StringP(params.LinuxArch, "", params.LinuxArchDefault, params.LinuxArchDesc)
9597
params.AddComputeRequestFlags(flagSet)
9698
params.AddSpotFlags(flagSet)
99+
params.AddNetworkFlags(flagSet, awsParams.ServiceEndpointsDesc)
97100
c.PersistentFlags().AddFlagSet(flagSet)
98101
return c
99102
}

cmd/mapt/cmd/aws/services/kind.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package services
33
import (
44
"fmt"
55

6+
awsParams "github.com/redhat-developer/mapt/cmd/mapt/cmd/aws/params"
67
"github.com/redhat-developer/mapt/cmd/mapt/cmd/params"
78
maptContext "github.com/redhat-developer/mapt/pkg/manager/context"
89
"github.com/redhat-developer/mapt/pkg/provider/aws/action/kind"
@@ -67,6 +68,7 @@ func createKind() *cobra.Command {
6768
Version: viper.GetString(params.KindK8SVersion),
6869
Arch: viper.GetString(params.LinuxArch),
6970
Timeout: viper.GetString(params.Timeout),
71+
ServiceEndpoints: params.NetworkServiceEndpoints(),
7072
ExtraPortMappings: extraPortMappings}); err != nil {
7173
return err
7274
}
@@ -82,6 +84,7 @@ func createKind() *cobra.Command {
8284
flagSet.StringToStringP(params.Tags, "", nil, params.TagsDesc)
8385
params.AddComputeRequestFlags(flagSet)
8486
params.AddSpotFlags(flagSet)
87+
params.AddNetworkFlags(flagSet, awsParams.ServiceEndpointsDesc)
8588
c.PersistentFlags().AddFlagSet(flagSet)
8689
return c
8790
}

cmd/mapt/cmd/aws/services/snc.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package services
22

33
import (
4+
awsParams "github.com/redhat-developer/mapt/cmd/mapt/cmd/aws/params"
45
params "github.com/redhat-developer/mapt/cmd/mapt/cmd/params"
56
maptContext "github.com/redhat-developer/mapt/pkg/manager/context"
67
openshiftsnc "github.com/redhat-developer/mapt/pkg/provider/aws/action/snc"
@@ -81,6 +82,7 @@ func createSNC() *cobra.Command {
8182
Arch: viper.GetString(params.LinuxArch),
8283
PullSecretFile: viper.GetString(pullSecretFile),
8384
Timeout: viper.GetString(params.Timeout),
85+
ServiceEndpoints: params.NetworkServiceEndpoints(),
8486
Profiles: profiles}); err != nil {
8587
return err
8688
}
@@ -98,6 +100,7 @@ func createSNC() *cobra.Command {
98100
flagSet.StringSliceP(sncProfile, "", []string{}, sncProfileDesc)
99101
params.AddComputeRequestFlags(flagSet)
100102
params.AddSpotFlags(flagSet)
103+
params.AddNetworkFlags(flagSet, awsParams.ServiceEndpointsDesc)
101104
c.PersistentFlags().AddFlagSet(flagSet)
102105
return c
103106
}

cmd/mapt/cmd/params/params.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,9 @@ const (
130130
KindExtraPortMappings = "extra-port-mappings"
131131
KindExtraPortMappingsDesc = "Additional port mappings for the Kind cluster. Value should be a JSON array of objects with containerPort, hostPort, and protocol properties. Example: '[{\"containerPort\": 8080, \"hostPort\": 8080, \"protocol\": \"TCP\"}]'"
132132

133+
// Network
134+
ServiceEndpoints = "service-endpoints"
135+
133136
// Spot
134137
spot = "spot"
135138
spotDesc = "if spot is set the spot prices across all regions will be checked and machine will be started on best spot option (price / eviction)"
@@ -143,6 +146,14 @@ const (
143146
spotExcludedHostedZonesDesc = "Comma-separated list of zone IDs to exclude from spot selection"
144147
)
145148

149+
func AddNetworkFlags(fs *pflag.FlagSet, desc string) {
150+
fs.StringSliceP(ServiceEndpoints, "", []string{}, desc)
151+
}
152+
153+
func NetworkServiceEndpoints() []string {
154+
return viper.GetStringSlice(ServiceEndpoints)
155+
}
156+
146157
func AddSpotFlags(fs *pflag.FlagSet) {
147158
fs.Bool(spot, false, spotDesc)
148159
fs.StringP(spotTolerance, "", spotToleranceDefault, spotToleranceDesc)

go.sum

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -553,17 +553,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T
553553
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
554554
gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
555555
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
556-
<<<<<<< HEAD
557-
google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171 h1:tu/dtnW1o3wfaxCOjSLn5IRX4YDcJrtlpzYkhHhGaC4=
558-
google.golang.org/genproto/googleapis/api v0.0.0-20260226221140-a57be14db171/go.mod h1:M5krXqk4GhBKvB596udGL3UyjL4I1+cTbK0orROM9ng=
559-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 h1:ggcbiqK8WWh6l1dnltU4BgWGIGo+EVYxCaAPih/zQXQ=
560-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
561-
=======
562556
google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 h1:41r6JMbpzBMen0R/4TZeeAmGXSJC7DftGINUodzTkPI=
563557
google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:EIQZ5bFCfRQDV4MhRle7+OgjNtZ6P1PiZBgAKuxXu/Y=
564558
google.golang.org/genproto/googleapis/rpc v0.0.0-20260319201613-d00831a3d3e7 h1:ndE4FoJqsIceKP2oYSnUZqhTdYufCYYkqwtFzfrhI7w=
565559
google.golang.org/genproto/googleapis/rpc v0.0.0-20260319201613-d00831a3d3e7/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
566-
>>>>>>> 00d223cf (fix(deps): update all dependencies)
567560
google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=
568561
google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=
569562
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=

0 commit comments

Comments
 (0)