Skip to content

Commit

Permalink
chore: refactor mapt context
Browse files Browse the repository at this point in the history
previously init functions for context had bunch of parameters which were hard to set with default values, this commit includes a struct to hold all possible params, also the contxt initalization has been moved from cmds to actions improving the design of the solution, as cmd code should have no logic at all and act only as wrapper to invoke action

Signed-off-by: Adrian Riobo <[email protected]>
  • Loading branch information
adrianriobo committed Jan 21, 2025
1 parent a1e8f08 commit aa9ba7d
Show file tree
Hide file tree
Showing 27 changed files with 440 additions and 381 deletions.
62 changes: 31 additions & 31 deletions cmd/mapt/cmd/aws/hosts/fedora.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ func GetFedoraCmd() *cobra.Command {
return nil
},
}

flagSet := pflag.NewFlagSet(cmdFedora, pflag.ExitOnError)
params.AddCommonFlags(flagSet)
c.PersistentFlags().AddFlagSet(flagSet)

c.AddCommand(getFedoraCreate(), getFedoraDestroy())
return c
}
Expand All @@ -46,16 +51,6 @@ func getFedoraCreate() *cobra.Command {
return err
}

// Initialize context
maptContext.Init(
viper.GetString(params.ProjectName),
viper.GetString(params.BackedURL),
viper.GetString(params.ConnectionDetailsOutput),
viper.GetStringMapString(params.Tags),
viper.IsSet(params.Debug),
viper.GetUint(params.DebugLevel),
false)

// Initialize gh actions runner if needed
if viper.IsSet(params.InstallGHActionsRunner) {
err := ghactions.InitGHRunnerArgs(viper.GetString(params.GHActionsRunnerToken),
Expand All @@ -66,21 +61,29 @@ func getFedoraCreate() *cobra.Command {
logging.Fatal(err)
}
}
instanceRequest := &instancetypes.AwsInstanceRequest{
CPUs: viper.GetInt32(params.CPUs),
MemoryGib: viper.GetInt32(params.Memory),
Arch: util.If(viper.GetString(params.LinuxArch) == "arm64", instancetypes.Arm64, instancetypes.Amd64),
NestedVirt: viper.GetBool(params.ProfileSNC) || viper.GetBool(params.NestedVirt),
}

// Run create
if err := fedora.Create(
&maptContext.ContextArgs{
ProjectName: viper.GetString(params.ProjectName),
BackedURL: viper.GetString(params.BackedURL),
ResultsOutput: viper.GetString(params.ConnectionDetailsOutput),
Debug: viper.IsSet(params.Debug),
DebugLevel: viper.GetUint(params.DebugLevel),
Tags: viper.GetStringMapString(params.Tags),
},
&fedora.Request{
Prefix: "main",
Version: viper.GetString(fedoraVersion),
Arch: viper.GetString(params.LinuxArch),
VMType: viper.GetStringSlice(vmTypes),
InstanceRequest: instanceRequest,
Prefix: "main",
Version: viper.GetString(fedoraVersion),
Arch: viper.GetString(params.LinuxArch),
VMType: viper.GetStringSlice(vmTypes),
InstanceRequest: &instancetypes.AwsInstanceRequest{
CPUs: viper.GetInt32(params.CPUs),
MemoryGib: viper.GetInt32(params.Memory),
Arch: util.If(viper.GetString(params.LinuxArch) == "arm64",
instancetypes.Arm64, instancetypes.Amd64),
NestedVirt: viper.GetBool(params.ProfileSNC) || viper.GetBool(params.NestedVirt),
},
Spot: viper.IsSet(spot),
Timeout: viper.GetString(params.Timeout),
SetupGHActionsRunner: viper.IsSet(params.InstallGHActionsRunner),
Expand Down Expand Up @@ -114,16 +117,13 @@ func getFedoraDestroy() *cobra.Command {
return err
}

maptContext.InitBase(
viper.GetString(params.ProjectName),
viper.GetString(params.BackedURL),
viper.IsSet(params.Debug),
viper.GetUint(params.DebugLevel),
viper.IsSet(params.Serverless))

logging.Debug("Run fedora destroy")

if err := fedora.Destroy(); err != nil {
if err := fedora.Destroy(&maptContext.ContextArgs{
ProjectName: viper.GetString(params.ProjectName),
BackedURL: viper.GetString(params.BackedURL),
Debug: viper.IsSet(params.Debug),
DebugLevel: viper.GetUint(params.DebugLevel),
Serverless: viper.IsSet(params.Serverless),
}); err != nil {
logging.Error(err)
}
return nil
Expand Down
40 changes: 20 additions & 20 deletions cmd/mapt/cmd/aws/hosts/mac.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,6 @@ func getMacRequest() *cobra.Command {
return err
}

// Initialize context
maptContext.Init(
viper.GetString(params.ProjectName),
viper.GetString(params.BackedURL),
viper.GetString(params.ConnectionDetailsOutput),
viper.GetStringMapString(params.Tags),
viper.IsSet(params.Debug),
viper.GetUint(params.DebugLevel),
false)

// Initialize gh actions runner if needed
if viper.IsSet(params.InstallGHActionsRunner) {
err := ghactions.InitGHRunnerArgs(viper.GetString(params.GHActionsRunnerToken),
Expand All @@ -64,7 +54,15 @@ func getMacRequest() *cobra.Command {

// Run create
if err := mac.Request(
&mac.MacRequest{
&maptContext.ContextArgs{
ProjectName: viper.GetString(params.ProjectName),
BackedURL: viper.GetString(params.BackedURL),
ResultsOutput: viper.GetString(params.ConnectionDetailsOutput),
Debug: viper.IsSet(params.Debug),
DebugLevel: viper.GetUint(params.DebugLevel),
Tags: viper.GetStringMapString(params.Tags),
},
&mac.MacRequestArgs{
Prefix: "main",
Architecture: viper.GetString(awsParams.MACArch),
Version: viper.GetString(awsParams.MACOSVersion),
Expand All @@ -77,6 +75,7 @@ func getMacRequest() *cobra.Command {
},
}
flagSet := pflag.NewFlagSet(awsParams.MACRequestCmd, pflag.ExitOnError)
params.AddCommonFlags(flagSet)
flagSet.StringP(params.ConnectionDetailsOutput, "", "", params.ConnectionDetailsOutputDesc)
flagSet.StringToStringP(params.Tags, "", nil, params.TagsDesc)
flagSet.StringP(awsParams.MACArch, "", awsParams.MACArchDefault, awsParams.MACArchDesc)
Expand All @@ -100,17 +99,17 @@ func getMacRelease() *cobra.Command {

// Run create
if err := mac.Release(
"main",
viper.GetString(awsParams.MACDHID),
viper.IsSet(params.Debug),
viper.GetUint(params.DebugLevel)); err != nil {
&maptContext.ContextArgs{
Debug: viper.IsSet(params.Debug),
DebugLevel: viper.GetUint(params.DebugLevel),
},
viper.GetString(awsParams.MACDHID)); err != nil {
logging.Error(err)
}
return nil
},
}
flagSet := pflag.NewFlagSet(awsParams.MACReleaseCmd, pflag.ExitOnError)
flagSet.StringToStringP(params.Tags, "", nil, params.TagsDesc)
flagSet.StringP(awsParams.MACDHID, "", "", awsParams.MACDHIDDesc)
c.PersistentFlags().AddFlagSet(flagSet)
err := c.MarkPersistentFlagRequired(awsParams.MACDHID)
Expand All @@ -130,10 +129,11 @@ func getMacDestroy() *cobra.Command {
}

if err := mac.Destroy(
"main",
viper.GetString(awsParams.MACDHID),
viper.IsSet(params.Debug),
viper.GetUint(params.DebugLevel)); err != nil {
&maptContext.ContextArgs{
Debug: viper.IsSet(params.Debug),
DebugLevel: viper.GetUint(params.DebugLevel),
},
viper.GetString(awsParams.MACDHID)); err != nil {
logging.Error(err)
}
return nil
Expand Down
59 changes: 30 additions & 29 deletions cmd/mapt/cmd/aws/hosts/rhel.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ func GetRHELCmd() *cobra.Command {
return nil
},
}

flagSet := pflag.NewFlagSet(cmdRHEL, pflag.ExitOnError)
params.AddCommonFlags(flagSet)
c.PersistentFlags().AddFlagSet(flagSet)

c.AddCommand(getRHELCreate(), getRHELDestroy())
return c
}
Expand All @@ -42,16 +47,6 @@ func getRHELCreate() *cobra.Command {
return err
}

// Initialize context
maptContext.Init(
viper.GetString(params.ProjectName),
viper.GetString(params.BackedURL),
viper.GetString(params.ConnectionDetailsOutput),
viper.GetStringMapString(params.Tags),
viper.IsSet(params.Debug),
viper.GetUint(params.DebugLevel),
false)

// Initialize gh actions runner if needed
if viper.IsSet(params.InstallGHActionsRunner) {
err := ghactions.InitGHRunnerArgs(viper.GetString(params.GHActionsRunnerToken),
Expand All @@ -63,20 +58,27 @@ func getRHELCreate() *cobra.Command {
}
}

instanceRequest := &instancetypes.AwsInstanceRequest{
CPUs: viper.GetInt32(params.CPUs),
MemoryGib: viper.GetInt32(params.Memory),
Arch: util.If(viper.GetString(params.LinuxArch) == "arm64", instancetypes.Arm64, instancetypes.Amd64),
NestedVirt: viper.GetBool(params.ProfileSNC) || viper.GetBool(params.NestedVirt),
}

// Run create
if err := rhel.Create(
&maptContext.ContextArgs{
ProjectName: viper.GetString(params.ProjectName),
BackedURL: viper.GetString(params.BackedURL),
ResultsOutput: viper.GetString(params.ConnectionDetailsOutput),
Debug: viper.IsSet(params.Debug),
DebugLevel: viper.GetUint(params.DebugLevel),
Tags: viper.GetStringMapString(params.Tags),
},
&rhel.Request{
Prefix: "main",
Version: viper.GetString(params.RhelVersion),
Arch: viper.GetString(params.LinuxArch),
InstanceRequest: instanceRequest,
Prefix: "main",
Version: viper.GetString(params.RhelVersion),
Arch: viper.GetString(params.LinuxArch),
InstanceRequest: &instancetypes.AwsInstanceRequest{
CPUs: viper.GetInt32(params.CPUs),
MemoryGib: viper.GetInt32(params.Memory),
Arch: util.If(viper.GetString(params.LinuxArch) == "arm64",
instancetypes.Arm64, instancetypes.Amd64),
NestedVirt: viper.GetBool(params.ProfileSNC) || viper.GetBool(params.NestedVirt),
},
VMType: viper.GetStringSlice(vmTypes),
SubsUsername: viper.GetString(params.SubsUsername),
SubsUserpass: viper.GetString(params.SubsUserpass),
Expand Down Expand Up @@ -118,14 +120,13 @@ func getRHELDestroy() *cobra.Command {
return err
}

maptContext.InitBase(
viper.GetString(params.ProjectName),
viper.GetString(params.BackedURL),
viper.IsSet(params.Debug),
viper.GetUint(params.DebugLevel),
viper.IsSet(params.Serverless))

if err := rhel.Destroy(); err != nil {
if err := rhel.Destroy(&maptContext.ContextArgs{
ProjectName: viper.GetString(params.ProjectName),
BackedURL: viper.GetString(params.BackedURL),
Debug: viper.IsSet(params.Debug),
DebugLevel: viper.GetUint(params.DebugLevel),
Serverless: viper.IsSet(params.Serverless),
}); err != nil {
logging.Error(err)
}
return nil
Expand Down
36 changes: 18 additions & 18 deletions cmd/mapt/cmd/aws/hosts/windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ func GetWindowsCmd() *cobra.Command {
return nil
},
}
flagSet := pflag.NewFlagSet(cmdWindows, pflag.ExitOnError)
params.AddCommonFlags(flagSet)
c.PersistentFlags().AddFlagSet(flagSet)
c.AddCommand(getWindowsCreate(), getWindowsDestroy())
return c
}
Expand All @@ -55,16 +58,6 @@ func getWindowsCreate() *cobra.Command {
return err
}

// Initialize context
maptContext.Init(
viper.GetString(params.ProjectName),
viper.GetString(params.BackedURL),
viper.GetString(params.ConnectionDetailsOutput),
viper.GetStringMapString(params.Tags),
viper.IsSet(params.Debug),
viper.GetUint(params.DebugLevel),
false)

// Initialize gh actions runner if needed
if viper.IsSet(params.InstallGHActionsRunner) {
err := ghactions.InitGHRunnerArgs(viper.GetString(params.GHActionsRunnerToken),
Expand All @@ -78,6 +71,14 @@ func getWindowsCreate() *cobra.Command {

// Run create
if err := windows.Create(
&maptContext.ContextArgs{
ProjectName: viper.GetString(params.ProjectName),
BackedURL: viper.GetString(params.BackedURL),
ResultsOutput: viper.GetString(params.ConnectionDetailsOutput),
Debug: viper.IsSet(params.Debug),
DebugLevel: viper.GetUint(params.DebugLevel),
Tags: viper.GetStringMapString(params.Tags),
},
&windows.Request{
Prefix: "main",
AMIName: viper.GetString(amiName),
Expand Down Expand Up @@ -120,14 +121,13 @@ func getWindowsDestroy() *cobra.Command {
return err
}

maptContext.InitBase(
viper.GetString(params.ProjectName),
viper.GetString(params.BackedURL),
viper.IsSet(params.Debug),
viper.GetUint(params.DebugLevel),
viper.IsSet(params.Serverless))

if err := windows.Destroy(); err != nil {
if err := windows.Destroy(&maptContext.ContextArgs{
ProjectName: viper.GetString(params.ProjectName),
BackedURL: viper.GetString(params.BackedURL),
Debug: viper.IsSet(params.Debug),
DebugLevel: viper.GetUint(params.DebugLevel),
Serverless: viper.IsSet(params.Serverless),
}); err != nil {
logging.Error(err)
}
return nil
Expand Down
Loading

0 comments on commit aa9ba7d

Please sign in to comment.