Skip to content

Commit

Permalink
final
Browse files Browse the repository at this point in the history
  • Loading branch information
adrianriobo committed Nov 16, 2023
1 parent 0a3b0dc commit 135cbe9
Show file tree
Hide file tree
Showing 35 changed files with 790 additions and 1,390 deletions.
4 changes: 3 additions & 1 deletion cmd/cmd/aws/aws.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ func GetCmd() *cobra.Command {

c.AddCommand(
hosts.GetMacCmd(),
hosts.GetWindowsCmd())
hosts.GetWindowsCmd(),
hosts.GetRHELCmd(),
hosts.GetFedoraCmd())
return c
}
87 changes: 0 additions & 87 deletions cmd/cmd/aws/host/host.go

This file was deleted.

93 changes: 93 additions & 0 deletions cmd/cmd/aws/hosts/fedora.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package hosts

import (
params "github.com/adrianriobo/qenvs/cmd/cmd/constants"
qenvsContext "github.com/adrianriobo/qenvs/pkg/manager/context"
"github.com/adrianriobo/qenvs/pkg/provider/aws/action/fedora"
"github.com/adrianriobo/qenvs/pkg/util/logging"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
"github.com/spf13/viper"
)

const (
cmdFedora = "fedora"
cmdFedoraDesc = "create fedora dedicated host"

fedoraVersion string = "version"
fedoraVersionDesc string = "version for the Fedora Cloud OS"
fedoraVersionDefault string = "39"
)

func GetFedoraCmd() *cobra.Command {
c := &cobra.Command{
Use: cmdFedora,
Short: cmdFedoraDesc,
RunE: func(cmd *cobra.Command, args []string) error {
if err := viper.BindPFlags(cmd.Flags()); err != nil {
return err
}
return nil
},
}
c.AddCommand(getFedoraCreate(), getFedoraDestroy())
return c
}

func getFedoraCreate() *cobra.Command {
c := &cobra.Command{
Use: params.CreateCmdName,
Short: params.CreateCmdName,
RunE: func(cmd *cobra.Command, args []string) error {
if err := viper.BindPFlags(cmd.Flags()); err != nil {
return err
}

// Initialize context
qenvsContext.Init(
viper.GetString(params.ProjectName),
viper.GetString(params.BackedURL),
viper.GetString(params.ConnectionDetailsOutput),
viper.GetStringMapString(params.Tags))

// Run create
if err := fedora.Create(
&fedora.Request{
Prefix: "main",
Version: viper.GetString(rhelVersion),
Spot: viper.IsSet(spot),
Airgap: viper.IsSet(airgap)}); err != nil {
logging.Error(err)
}
return nil
},
}
flagSet := pflag.NewFlagSet(params.CreateCmdName, pflag.ExitOnError)
flagSet.StringP(params.ConnectionDetailsOutput, "", "", params.ConnectionDetailsOutputDesc)
flagSet.StringToStringP(params.Tags, "", nil, params.TagsDesc)
flagSet.StringP(fedoraVersion, "", fedoraVersionDefault, fedoraVersionDesc)
c.PersistentFlags().AddFlagSet(flagSet)
return c
}

func getFedoraDestroy() *cobra.Command {
c := &cobra.Command{
Use: params.DestroyCmdName,
Short: params.DestroyCmdName,
RunE: func(cmd *cobra.Command, args []string) error {
if err := viper.BindPFlags(cmd.Flags()); err != nil {
return err
}

qenvsContext.InitBase(
viper.GetString(params.ProjectName),
viper.GetString(params.BackedURL))

if err := fedora.Destroy(); err != nil {
logging.Error(err)
}
return nil
},
}
return c
}
115 changes: 115 additions & 0 deletions cmd/cmd/aws/hosts/rhel.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
package hosts

import (
params "github.com/adrianriobo/qenvs/cmd/cmd/constants"
qenvsContext "github.com/adrianriobo/qenvs/pkg/manager/context"
"github.com/adrianriobo/qenvs/pkg/provider/aws/action/rhel"
"github.com/adrianriobo/qenvs/pkg/util/logging"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
"github.com/spf13/viper"
)

const (
cmdRHEL = "rhel"
cmdRHELDesc = "create rhel dedicated host"

rhelVersion string = "version"
rhelVersionDesc string = "version for the RHEL OS"
rhelVersionDefault string = "9.3"
subsUsername string = "subs-username"
subsUsernameDesc string = "username to register the subscription"
subsUserpass string = "subs-userpass"
subsUserpassDesc string = "password to register the subscription"
profileSNC string = "snc"
profileSNCDesc string = "if this flag is set the RHEL will be setup with SNC profile. Setting up all requirements to run https://github.com/crc-org/snc"
)

func GetRHELCmd() *cobra.Command {
c := &cobra.Command{
Use: cmdRHEL,
Short: cmdRHELDesc,
RunE: func(cmd *cobra.Command, args []string) error {
if err := viper.BindPFlags(cmd.Flags()); err != nil {
return err
}
return nil
},
}
c.AddCommand(getRHELCreate(), getRHELDestroy())
return c
}

func getRHELCreate() *cobra.Command {
c := &cobra.Command{
Use: params.CreateCmdName,
Short: params.CreateCmdName,
RunE: func(cmd *cobra.Command, args []string) error {
if err := viper.BindPFlags(cmd.Flags()); err != nil {
return err
}

// Initialize context
qenvsContext.Init(
viper.GetString(params.ProjectName),
viper.GetString(params.BackedURL),
viper.GetString(params.ConnectionDetailsOutput),
viper.GetStringMapString(params.Tags))

// Run create
if err := rhel.Create(
&rhel.Request{
Prefix: "main",
Version: viper.GetString(rhelVersion),
SubsUsername: viper.GetString(subsUsername),
SubsUserpass: viper.GetString(subsUserpass),
ProfileSNC: viper.IsSet(profileSNC),
Spot: viper.IsSet(spot),
Airgap: viper.IsSet(airgap)}); err != nil {
logging.Error(err)
}
return nil
},
}
flagSet := pflag.NewFlagSet(params.CreateCmdName, pflag.ExitOnError)
flagSet.StringP(params.ConnectionDetailsOutput, "", "", params.ConnectionDetailsOutputDesc)
flagSet.StringToStringP(params.Tags, "", nil, params.TagsDesc)
flagSet.StringP(rhelVersion, "", rhelVersionDefault, rhelVersionDesc)
flagSet.StringP(subsUsername, "", "", amiUsernameDesc)
flagSet.StringP(subsUserpass, "", "", subsUserpassDesc)
flagSet.Bool(airgap, false, airgapDesc)
flagSet.Bool(spot, false, spotDesc)
flagSet.Bool(profileSNC, false, profileSNCDesc)
c.PersistentFlags().AddFlagSet(flagSet)
if err := c.MarkFlagRequired(subsUsername); err != nil {
logging.Error(err)
return nil
}
if err := c.MarkFlagRequired(subsUserpass); err != nil {
logging.Error(err)
return nil
}
return c
}

func getRHELDestroy() *cobra.Command {
c := &cobra.Command{
Use: params.DestroyCmdName,
Short: params.DestroyCmdName,
RunE: func(cmd *cobra.Command, args []string) error {
if err := viper.BindPFlags(cmd.Flags()); err != nil {
return err
}

qenvsContext.InitBase(
viper.GetString(params.ProjectName),
viper.GetString(params.BackedURL))

if err := rhel.Destroy(); err != nil {
logging.Error(err)
}
return nil
},
}
return c
}
7 changes: 6 additions & 1 deletion cmd/cmd/aws/hosts/windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ const (
amiOwner string = "ami-owner"
amiOwnerDesc string = "alias name for the owner of the custom AMI"
amiOwnerDefault string = "self"
amiLang string = "ami-lang"
amiLangDesc string = "language for the ami possible values (eng, non-eng). This param is used when no ami-name is set and the action uses the default custom ami"
amiLangDefault string = "eng"
)

func GetWindowsCmd() *cobra.Command {
Expand Down Expand Up @@ -58,11 +61,12 @@ func getWindowsCreate() *cobra.Command {

// Run create
if err := windows.Create(
&windows.WindowsRequest{
&windows.Request{
Prefix: "main",
AMIName: viper.GetString(amiName),
AMIUser: viper.GetString(amiUsername),
AMIOwner: viper.GetString(amiOwner),
AMILang: viper.GetString(amiLang),
Spot: viper.IsSet(spot),
Airgap: viper.IsSet(airgap)}); err != nil {
logging.Error(err)
Expand All @@ -76,6 +80,7 @@ func getWindowsCreate() *cobra.Command {
flagSet.StringP(amiName, "", amiNameDefault, amiNameDesc)
flagSet.StringP(amiUsername, "", amiUsernameDefault, amiUsernameDesc)
flagSet.StringP(amiOwner, "", amiOwnerDefault, amiOwnerDesc)
flagSet.StringP(amiLang, "", amiLangDefault, amiLangDesc)
flagSet.Bool(airgap, false, airgapDesc)
flagSet.Bool(spot, false, spotDesc)
c.PersistentFlags().AddFlagSet(flagSet)
Expand Down
18 changes: 18 additions & 0 deletions pkg/provider/aws/action/fedora/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package fedora

var (
stackName = "stackFedoraBaremetal"
awsFedoraDedicatedID = "afd"

diskSize int = 200

amiRegex = "Fedora-Cloud-Base-%s*"
amiOwner = "125523088429"
amiUserDefault = "fedora"

requiredInstanceTypes = []string{"c5.metal", "c5d.metal", "c5n.metal"}

outputHost = "afdHost"
outputUsername = "afdUsername"
outputUserPrivateKey = "afdPrivatekey"
)
Loading

0 comments on commit 135cbe9

Please sign in to comment.