From 447488dbe1e0440401f01c55b2f31d499d945769 Mon Sep 17 00:00:00 2001 From: tithakka Date: Wed, 20 Sep 2023 15:28:25 -0400 Subject: [PATCH 1/3] Added default values for CIDRs and host prefix --- cmd/ocm/create/cluster/cmd.go | 33 +++++++++++++++++++++++++++++++++ pkg/arguments/interactive.go | 8 +++++--- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/cmd/ocm/create/cluster/cmd.go b/cmd/ocm/create/cluster/cmd.go index 1ac76183..52865500 100644 --- a/cmd/ocm/create/cluster/cmd.go +++ b/cmd/ocm/create/cluster/cmd.go @@ -371,6 +371,34 @@ func getFlavourOptions(connection *sdk.Connection) ([]arguments.Option, error) { return options, nil } +func GetDefaultClusterFlavors(connection *sdk.Connection, flavour string) (dMachinecidr *net.IPNet, dPodcidr *net.IPNet, + dServicecidr *net.IPNet, dhostPrefix int) { + flavourGetResponse, err := connection.ClustersMgmt().V1().Flavours().Flavour(flavour).Get().Send() + if err != nil { + flavourGetResponse, _ = connection.ClustersMgmt().V1().Flavours().Flavour("osd-4").Get().Send() + } + + network, ok := flavourGetResponse.Body().GetNetwork() + if !ok { + return nil, nil, nil, 0 + } + _, dMachinecidr, err = net.ParseCIDR(network.MachineCIDR()) + if err != nil { + dMachinecidr = nil + } + _, dPodcidr, err = net.ParseCIDR(network.PodCIDR()) + if err != nil { + dPodcidr = nil + } + _, dServicecidr, err = net.ParseCIDR(network.ServiceCIDR()) + if err != nil { + dServicecidr = nil + } + dhostPrefix, _ = network.GetHostPrefix() + + return dMachinecidr, dPodcidr, dServicecidr, dhostPrefix +} + func getVersionOptions(connection *sdk.Connection) ([]arguments.Option, error) { options, _, err := getVersionOptionsWithDefault(connection, "") return options, err @@ -595,6 +623,11 @@ func preRun(cmd *cobra.Command, argv []string) error { return err } + if args.interactive { + machineCIDR, serviceCIDR, podCIDR, hostPrefix := GetDefaultClusterFlavors(connection, args.flavour) + args.machineCIDR, args.serviceCIDR, args.podCIDR, args.hostPrefix = *machineCIDR, *serviceCIDR, *podCIDR, hostPrefix + } + err = promptNetwork(fs) if err != nil { return err diff --git a/pkg/arguments/interactive.go b/pkg/arguments/interactive.go index 198ca22d..555eb367 100644 --- a/pkg/arguments/interactive.go +++ b/pkg/arguments/interactive.go @@ -295,12 +295,14 @@ func PromptIPNet(fs *pflag.FlagSet, flagName string) error { if flag.Changed { return nil } - + // If the default value is nil, set the value as a default value + if flag.DefValue == "" { + flag.DefValue = flag.Value.String() + } prompt := &survey.Input{ Message: getQuestion(flag), Help: flag.Usage, - // TODO respect flag default, if set - // (awkward because https://github.com/golang/go/issues/39516). + Default: flag.DefValue, } var response string // Set() flag as side effect of validation => prompts again if invalid. From 672ca8bfec39ca96ae4c6d0910ff719afef9d23b Mon Sep 17 00:00:00 2001 From: tithakka Date: Thu, 21 Sep 2023 10:10:05 -0400 Subject: [PATCH 2/3] Fixed CIDR order and added back the comment --- cmd/ocm/create/cluster/cmd.go | 4 ++-- pkg/arguments/interactive.go | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/cmd/ocm/create/cluster/cmd.go b/cmd/ocm/create/cluster/cmd.go index 52865500..5250278d 100644 --- a/cmd/ocm/create/cluster/cmd.go +++ b/cmd/ocm/create/cluster/cmd.go @@ -624,8 +624,8 @@ func preRun(cmd *cobra.Command, argv []string) error { } if args.interactive { - machineCIDR, serviceCIDR, podCIDR, hostPrefix := GetDefaultClusterFlavors(connection, args.flavour) - args.machineCIDR, args.serviceCIDR, args.podCIDR, args.hostPrefix = *machineCIDR, *serviceCIDR, *podCIDR, hostPrefix + machineCIDR, podCIDR, serviceCIDR, hostPrefix := GetDefaultClusterFlavors(connection, args.flavour) + args.machineCIDR, args.podCIDR, args.serviceCIDR, args.hostPrefix = *machineCIDR, *podCIDR, *serviceCIDR, hostPrefix } err = promptNetwork(fs) diff --git a/pkg/arguments/interactive.go b/pkg/arguments/interactive.go index 555eb367..977d1ed3 100644 --- a/pkg/arguments/interactive.go +++ b/pkg/arguments/interactive.go @@ -302,6 +302,8 @@ func PromptIPNet(fs *pflag.FlagSet, flagName string) error { prompt := &survey.Input{ Message: getQuestion(flag), Help: flag.Usage, + // TODO respect flag default, if set + // (awkward because https://github.com/golang/go/issues/39516). Default: flag.DefValue, } var response string From fbff80f45b3e38cb564847b5e5433d9196fe0e12 Mon Sep 17 00:00:00 2001 From: tithakka Date: Fri, 22 Sep 2023 17:18:00 -0400 Subject: [PATCH 3/3] Fixed the comment statement --- pkg/arguments/interactive.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkg/arguments/interactive.go b/pkg/arguments/interactive.go index 977d1ed3..ace983ce 100644 --- a/pkg/arguments/interactive.go +++ b/pkg/arguments/interactive.go @@ -295,15 +295,14 @@ func PromptIPNet(fs *pflag.FlagSet, flagName string) error { if flag.Changed { return nil } - // If the default value is nil, set the value as a default value + // We set the default value here (if nil) so that shown on the console when the user does not provide any input + // (awkward because https://github.com/golang/go/issues/39516). if flag.DefValue == "" { flag.DefValue = flag.Value.String() } prompt := &survey.Input{ Message: getQuestion(flag), Help: flag.Usage, - // TODO respect flag default, if set - // (awkward because https://github.com/golang/go/issues/39516). Default: flag.DefValue, } var response string