Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions cmd/mapt/cmd/aws/hosts/fedora.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ func getFedoraCreate() *cobra.Command {
Prefix: "main",
Version: viper.GetString(fedoraVersion),
Arch: viper.GetString(params.LinuxArch),
AMIID: viper.GetString(params.AMIIDName),
ComputeRequest: params.ComputeRequestArgs(),
Spot: params.SpotArgs(),
Timeout: viper.GetString(params.Timeout),
Expand All @@ -76,6 +77,7 @@ func getFedoraCreate() *cobra.Command {
flagSet.StringToStringP(params.Tags, "", nil, params.TagsDesc)
flagSet.StringP(fedoraVersion, "", fedoraVersionDefault, fedoraVersionDesc)
flagSet.StringP(params.LinuxArch, "", params.LinuxArchDefault, params.LinuxArchDesc)
flagSet.StringP(params.AMIIDName, "", "", params.AMIIDDesc)
flagSet.Bool(airgap, false, airgapDesc)
flagSet.StringP(params.Timeout, "", "", params.TimeoutDesc)
params.AddComputeRequestFlags(flagSet)
Expand Down
2 changes: 2 additions & 0 deletions cmd/mapt/cmd/aws/hosts/rhel.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ func getRHELCreate() *cobra.Command {
Prefix: "main",
Version: viper.GetString(params.RhelVersion),
Arch: viper.GetString(params.LinuxArch),
AMIID: viper.GetString(params.AMIIDName),
ComputeRequest: params.ComputeRequestArgs(),
SubsUsername: viper.GetString(params.SubsUsername),
SubsUserpass: viper.GetString(params.SubsUserpass),
Expand All @@ -76,6 +77,7 @@ func getRHELCreate() *cobra.Command {
flagSet.StringToStringP(params.Tags, "", nil, params.TagsDesc)
flagSet.StringP(params.RhelVersion, "", params.RhelVersionDefault, params.RhelVersionDesc)
flagSet.StringP(params.LinuxArch, "", params.LinuxArchDefault, params.LinuxArchDesc)
flagSet.StringP(params.AMIIDName, "", "", params.AMIIDDesc)
flagSet.StringP(params.SubsUsername, "", "", params.SubsUsernameDesc)
flagSet.StringP(params.SubsUserpass, "", "", params.SubsUserpassDesc)
flagSet.Bool(airgap, false, airgapDesc)
Expand Down
2 changes: 2 additions & 0 deletions cmd/mapt/cmd/aws/hosts/rhelai.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ func getRHELAICreate() *cobra.Command {
Version: viper.GetString(params.RhelAIVersion),
Accelerator: viper.GetString(params.RhelAIAccelerator),
CustomImage: viper.GetString(params.RhelAICustomImage),
AMIID: viper.GetString(params.AMIIDName),
ComputeRequest: params.ComputeRequestArgs(),
Spot: params.SpotArgs(),
Timeout: viper.GetString(params.Timeout),
Expand All @@ -83,6 +84,7 @@ func getRHELAICreate() *cobra.Command {
flagSet.StringP(params.RhelAIVersion, "", params.RhelAIVersionDefault, params.RhelAIVersionDesc)
flagSet.StringP(params.RhelAIAccelerator, "", params.RhelAIAccelearatorDefault, params.RhelAIAccelearatorDesc)
flagSet.StringP(params.RhelAICustomImage, "", "", params.RhelAICustomImageDesc)
flagSet.StringP(params.AMIIDName, "", "", params.AMIIDDesc)
flagSet.StringP(params.RhelAIModel, "", "", params.RhelAIModelDesc)
flagSet.StringP(params.RhelAIHFToken, "", "", params.RhelAIHFTokenDesc)
flagSet.StringP(params.RhelAIAPIKey, "", "", params.RhelAIAPIKeyDesc)
Expand Down
2 changes: 2 additions & 0 deletions cmd/mapt/cmd/aws/hosts/windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ func getWindowsCreate() *cobra.Command {
AMIOwner: viper.GetString(amiOwner),
AMILang: viper.GetString(amiLang),
AMIKeepCopy: viper.IsSet(amiKeepCopy),
AMIID: viper.GetString(params.AMIIDName),
ComputeRequest: params.ComputeRequestArgs(),
Spot: params.SpotArgs(),
Airgap: viper.IsSet(airgap),
Expand All @@ -91,6 +92,7 @@ func getWindowsCreate() *cobra.Command {
flagSet.StringP(amiUsername, "", amiUsernameDefault, amiUsernameDesc)
flagSet.StringP(amiOwner, "", amiOwnerDefault, amiOwnerDesc)
flagSet.StringP(amiLang, "", amiLangDefault, amiLangDesc)
flagSet.StringP(params.AMIIDName, "", "", params.AMIIDDesc)
flagSet.Bool(airgap, false, airgapDesc)
flagSet.StringP(params.Timeout, "", "", params.TimeoutDesc)
flagSet.Bool(amiKeepCopy, false, amiKeepCopyDesc)
Expand Down
19 changes: 14 additions & 5 deletions pkg/provider/aws/action/fedora/fedora.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ type FedoraArgs struct {
Prefix string
Version string
Arch string
AMIID string
ComputeRequest *cr.ComputeRequestArgs
Spot *spotTypes.SpotArgs
Airgap bool
Expand All @@ -49,6 +50,7 @@ type fedoraRequest struct {
prefix *string
version *string
arch *string
amiID *string
spot bool
timeout *string
serviceEndpoints []string
Expand Down Expand Up @@ -87,6 +89,7 @@ func Create(mCtxArgs *mc.ContextArgs, args *FedoraArgs) (err error) {
prefix: &prefix,
version: &args.Version,
arch: &args.Arch,
amiID: &args.AMIID,
timeout: &args.Timeout,
serviceEndpoints: args.ServiceEndpoints,
airgap: &args.Airgap,
Expand Down Expand Up @@ -184,11 +187,17 @@ func (r *fedoraRequest) deploy(ctx *pulumi.Context) error {
return err
}
// Get AMI
ami, err := amiSVC.GetAMIByName(ctx,
fmt.Sprintf(amiRegex[*r.arch], *r.version),
[]string{amiOwner},
map[string]string{
"architecture": *r.arch})
var ami *ec2.LookupAmiResult
var err error
if len(*r.amiID) > 0 {
ami, err = amiSVC.GetAMIByID(ctx, *r.amiID)
} else {
ami, err = amiSVC.GetAMIByName(ctx,
fmt.Sprintf(amiRegex[*r.arch], *r.version),
[]string{amiOwner},
map[string]string{
"architecture": *r.arch})
}
if err != nil {
return err
}
Expand Down
24 changes: 17 additions & 7 deletions pkg/provider/aws/action/rhel-ai/rhelai.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ type rhelAIRequest struct {
prefix *string
amiName *string
arch *string
amiID *string
spot bool
timeout *string
serviceEndpoints []string
Expand Down Expand Up @@ -79,6 +80,7 @@ func Create(mCtxArgs *mc.ContextArgs, args *apiRHELAI.RHELAIArgs) (err error) {
prefix: &prefix,
amiName: &amiName,
arch: &args.Arch,
amiID: &args.AMIID,
timeout: &args.Timeout,
serviceEndpoints: args.ServiceEndpoints,
diskSize: args.ComputeRequest.DiskSize,
Expand All @@ -101,8 +103,10 @@ func Create(mCtxArgs *mc.ContextArgs, args *apiRHELAI.RHELAIArgs) (err error) {
if err != nil {
return err
}
if err = checkAMIExists(mCtx.Context(), &amiName, r.allocationData.Region, &amiArch); err != nil {
return err
if len(args.AMIID) == 0 {
if err = checkAMIExists(mCtx.Context(), &amiName, r.allocationData.Region, &amiArch); err != nil {
return err
}
}
return r.createMachine()
}
Expand Down Expand Up @@ -211,11 +215,17 @@ func (r *rhelAIRequest) deploy(ctx *pulumi.Context) error {
return err
}
// Get AMI
ami, err := amiSVC.GetAMIByName(ctx,
*r.amiName,
[]string{amiOwner},
map[string]string{
"architecture": amiArch})
var ami *ec2.LookupAmiResult
var err error
if len(*r.amiID) > 0 {
ami, err = amiSVC.GetAMIByID(ctx, *r.amiID)
} else {
ami, err = amiSVC.GetAMIByName(ctx,
*r.amiName,
[]string{amiOwner},
map[string]string{
"architecture": amiArch})
}
if err != nil {
return err
}
Expand Down
19 changes: 14 additions & 5 deletions pkg/provider/aws/action/rhel/rhel.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ type RHELArgs struct {
Prefix string
Version string
Arch string
AMIID string
ComputeRequest *cr.ComputeRequestArgs
SubsUsername string
SubsUserpass string
Expand All @@ -51,6 +52,7 @@ type rhelRequest struct {
prefix *string
version *string
arch *string
amiID *string
spot bool
subsUsername *string
subsUserpass *string
Expand Down Expand Up @@ -92,6 +94,7 @@ func Create(mCtxArgs *mc.ContextArgs, args *RHELArgs) (err error) {
prefix: &prefix,
version: &args.Version,
arch: &args.Arch,
amiID: &args.AMIID,
timeout: &args.Timeout,
subsUsername: &args.SubsUsername,
subsUserpass: &args.SubsUserpass,
Expand Down Expand Up @@ -188,11 +191,17 @@ func (r *rhelRequest) deploy(ctx *pulumi.Context) error {
return err
}
// Get AMI
ami, err := amiSVC.GetAMIByName(ctx,
fmt.Sprintf(amiRegex, *r.version, *r.arch),
nil,
map[string]string{
"architecture": *r.arch})
var ami *ec2.LookupAmiResult
var err error
if len(*r.amiID) > 0 {
ami, err = amiSVC.GetAMIByID(ctx, *r.amiID)
} else {
ami, err = amiSVC.GetAMIByName(ctx,
fmt.Sprintf(amiRegex, *r.version, *r.arch),
nil,
map[string]string{
"architecture": *r.arch})
}
if err != nil {
return err
}
Expand Down
63 changes: 36 additions & 27 deletions pkg/provider/aws/action/windows/windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ type WindowsServerArgs struct {
AMIOwner string
AMILang string
AMIKeepCopy bool
AMIID string
// Machine params
ComputeRequest *cr.ComputeRequestArgs
Spot *spotTypes.SpotArgs
Expand All @@ -63,6 +64,7 @@ type windowsServerRequest struct {
amiOwner *string
amiLang *string
amiKeepCopy *bool
amiID *string

spot bool
timeout *string
Expand Down Expand Up @@ -113,6 +115,7 @@ func Create(mCtxArgs *mc.ContextArgs, args *WindowsServerArgs) (err error) {
amiOwner: &args.AMIOwner,
amiKeepCopy: &args.AMIKeepCopy,
amiLang: &args.AMILang,
amiID: &args.AMIID,
timeout: &args.Timeout,
serviceEndpoints: args.ServiceEndpoints,
airgap: &args.Airgap,
Expand All @@ -133,30 +136,32 @@ func Create(mCtxArgs *mc.ContextArgs, args *WindowsServerArgs) (err error) {
if err != nil {
return err
}
isAMIOffered, _, err := data.IsAMIOffered(
mCtx.Context(),
data.ImageRequest{
Name: r.amiName,
Region: r.allocationData.Region})
if err != nil {
return err
}
// If it is not offered need to create a copy on the target region
if !isAMIOffered {
acr := amiCopy.CopyAMIRequest{
MCtx: mCtx,
Prefix: *r.prefix,
ID: awsWindowsDedicatedID,
AMISourceName: r.amiName,
AMISourceArch: nil,
AMITargetRegion: r.allocationData.Region,
AMIKeepCopy: *r.amiKeepCopy,
FastLaunch: amiFastLaunch,
MaxParallel: int32(amiFastLaunchMaxParallel),
}
if err := acr.Create(); err != nil {
if len(*r.amiID) == 0 {
isAMIOffered, _, err := data.IsAMIOffered(
mCtx.Context(),
data.ImageRequest{
Name: r.amiName,
Region: r.allocationData.Region})
if err != nil {
return err
}
// If it is not offered need to create a copy on the target region
if !isAMIOffered {
acr := amiCopy.CopyAMIRequest{
MCtx: mCtx,
Prefix: *r.prefix,
ID: awsWindowsDedicatedID,
AMISourceName: r.amiName,
AMISourceArch: nil,
AMITargetRegion: r.allocationData.Region,
AMIKeepCopy: *r.amiKeepCopy,
FastLaunch: amiFastLaunch,
MaxParallel: int32(amiFastLaunchMaxParallel),
}
if err := acr.Create(); err != nil {
return err
}
}
}
// if not only host the mac machine will be created
if !*r.airgap {
Expand Down Expand Up @@ -240,11 +245,15 @@ func (r *windowsServerRequest) deploy(ctx *pulumi.Context) error {
return err
}
// Get AMI ref
// ami, err := amiSVC.GetAMIByName(ctx, r.AMIName, r.AMIOwner, nil)
ami, err := amiSVC.GetAMIByName(ctx,
fmt.Sprintf("%s*", *r.amiName),
[]string{*r.amiOwner}, nil)

var ami *ec2.LookupAmiResult
var err error
if len(*r.amiID) > 0 {
ami, err = amiSVC.GetAMIByID(ctx, *r.amiID)
} else {
ami, err = amiSVC.GetAMIByName(ctx,
fmt.Sprintf("%s*", *r.amiName),
[]string{*r.amiOwner}, nil)
}
if err != nil {
return err
}
Expand Down
13 changes: 11 additions & 2 deletions pkg/provider/aws/services/ec2/ami/ami.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,17 @@ const (
redhatOwnerID string = "309956199498"
)

// Looks for the AMI ID on the current Region based on name
// it only allows images from AWS and self
func GetAMIByID(ctx *pulumi.Context, amiID string) (*ec2.LookupAmiResult, error) {
return ec2.LookupAmi(ctx, &ec2.LookupAmiArgs{
Filters: []ec2.GetAmiFilter{
{
Name: "image-id",
Values: []string{amiID},
},
},
})
}

func GetAMIByName(ctx *pulumi.Context,
imageName string, owner []string, filters map[string]string) (*ec2.LookupAmiResult, error) {
mostRecent := true
Expand Down
1 change: 1 addition & 0 deletions pkg/target/host/rhelai/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ type RHELAIArgs struct {
CustomImage string
Marketplace bool
Arch string
AMIID string
ComputeRequest *cr.ComputeRequestArgs
Spot *spotTypes.SpotArgs
ServiceEndpoints []string
Expand Down