Skip to content

Commit

Permalink
Make bits of kctrl more configurable
Browse files Browse the repository at this point in the history
Signed-off-by: Soumik Majumder <soumikm@vmware.com>
  • Loading branch information
100mik committed Dec 15, 2023
1 parent 59d4642 commit d984dcd
Show file tree
Hide file tree
Showing 9 changed files with 27 additions and 9 deletions.
6 changes: 6 additions & 0 deletions cli/pkg/kctrl/cmd/core/examples.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ type PackageCommandTreeOpts struct {

Color bool
JSON bool

DefaultKubeconfigOverridePath string
DefaultKubeconfigOverrideContext string
DefaultServiceAcccountName string
DisableWaitByDefault bool
AllowSharedNamespaces bool
}

type Example struct {
Expand Down
5 changes: 5 additions & 0 deletions cli/pkg/kctrl/cmd/core/kubeconfig_flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ func (f *KubeconfigFlags) Set(cmd *cobra.Command, flagsFactory FlagsFactory, opt
kubeconfigYamlEnvVariableKey := fmt.Sprintf("%s_KUBECONFIG_YAML", strings.ToUpper(opts.BinaryName))
f.YAML = NewKubeconfigYAMLFlag(kubeconfigYamlEnvVariableKey)
cmd.PersistentFlags().Var(f.YAML, "kubeconfig-yaml", fmt.Sprintf("Kubeconfig contents as YAML ($%s)", kubeconfigYamlEnvVariableKey))

if opts.DefaultKubeconfigOverrideContext != "" && opts.DefaultKubeconfigOverridePath != "" {
f.Path.value = opts.DefaultKubeconfigOverridePath
f.Context.value = opts.DefaultKubeconfigOverrideContext
}
}

type KubeconfigPathFlag struct {
Expand Down
2 changes: 1 addition & 1 deletion cli/pkg/kctrl/cmd/core/secure_namespace_flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ type SecureNamespaceFlags struct {
AllowedSharedNamespaces bool
}

func (s *SecureNamespaceFlags) Set(cmd *cobra.Command) {
func (s *SecureNamespaceFlags) Set(cmd *cobra.Command, defaultVal bool) {
cmd.Flags().BoolVar(&s.AllowedSharedNamespaces, "dangerous-allow-use-of-shared-namespace", false, "Allow use of shared namespaces")
}

Expand Down
1 change: 1 addition & 0 deletions cli/pkg/kctrl/cmd/core/wait_flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ type WaitFlagsOpts struct {
AllowDisableWait bool
DefaultInterval time.Duration
DefaultTimeout time.Duration
DisableByDefault bool
}

func (f *WaitFlags) Set(cmd *cobra.Command, flagsFactory FlagsFactory, opts *WaitFlagsOpts) {
Expand Down
3 changes: 2 additions & 1 deletion cli/pkg/kctrl/cmd/kctrl.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,8 @@ func NewKctrlCmd(o *KctrlOptions, flagsFactory cmdcore.FlagsFactory) *cobra.Comm
cmdcore.RestOfCommandsHelpGroup,
}))

pkgOpts := cmdcore.PackageCommandTreeOpts{BinaryName: "kctrl", PositionalArgs: false, Color: true, JSON: true}
pkgOpts := cmdcore.PackageCommandTreeOpts{BinaryName: "kctrl", PositionalArgs: false, Color: true, JSON: true,
AllowSharedNamespaces: false}

setGlobalFlags(o, cmd, flagsFactory, pkgOpts)

Expand Down
13 changes: 8 additions & 5 deletions cli/pkg/kctrl/cmd/package/installed/create_or_update.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ func NewCreateCmd(o *CreateOrUpdateOptions, flagsFactory cmdcore.FlagsFactory) *
cmdcore.PackageManagementCommandsHelpGroup.Key: cmdcore.PackageManagementCommandsHelpGroup.Value},
}
o.NamespaceFlags.SetWithPackageCommandTreeOpts(cmd, flagsFactory, o.pkgCmdTreeOpts)
o.SecureNamespaceFlags.Set(cmd)
o.SecureNamespaceFlags.Set(cmd, o.pkgCmdTreeOpts.AllowSharedNamespaces)

if !o.pkgCmdTreeOpts.PositionalArgs {
cmd.Flags().StringVarP(&o.Name, "package-install", "i", "", "Set installed package name (required)")
Expand All @@ -99,7 +99,7 @@ func NewCreateCmd(o *CreateOrUpdateOptions, flagsFactory cmdcore.FlagsFactory) *

cmd.Flags().StringVarP(&o.packageName, "package", "p", "", "Set package name (required)")
cmd.Flags().StringVarP(&o.version, "version", "v", "", "Set package version (required)")
cmd.Flags().StringVar(&o.serviceAccountName, "service-account-name", "", "Name of an existing service account used to install underlying package contents, optional")
cmd.Flags().StringVar(&o.serviceAccountName, "service-account-name", o.pkgCmdTreeOpts.DefaultServiceAcccountName, "Name of an existing service account used to install underlying package contents, optional")
cmd.Flags().StringVar(&o.valuesFile, "values-file", "", "The path to the configuration values file, optional")
cmd.Flags().BoolVar(&o.values, "values", true, "Add or keep values supplied to package install, optional")
cmd.Flags().BoolVar(&o.DryRun, "dry-run", false, "Print YAML for resources being applied to the cluster without applying them, optional")
Expand All @@ -108,6 +108,7 @@ func NewCreateCmd(o *CreateOrUpdateOptions, flagsFactory cmdcore.FlagsFactory) *
AllowDisableWait: true,
DefaultInterval: 1 * time.Second,
DefaultTimeout: 30 * time.Minute,
DisableByDefault: o.pkgCmdTreeOpts.DisableWaitByDefault,
})
o.YttOverlayFlags.Set(cmd)

Expand All @@ -134,7 +135,7 @@ func NewInstallCmd(o *CreateOrUpdateOptions, flagsFactory cmdcore.FlagsFactory)
cmdcore.PackageManagementCommandsHelpGroup.Key: cmdcore.PackageManagementCommandsHelpGroup.Value},
}
o.NamespaceFlags.SetWithPackageCommandTreeOpts(cmd, flagsFactory, o.pkgCmdTreeOpts)
o.SecureNamespaceFlags.Set(cmd)
o.SecureNamespaceFlags.Set(cmd, o.pkgCmdTreeOpts.AllowSharedNamespaces)

if !o.pkgCmdTreeOpts.PositionalArgs {
cmd.Flags().StringVarP(&o.Name, "package-install", "i", "", "Set installed package name (required)")
Expand All @@ -145,7 +146,7 @@ func NewInstallCmd(o *CreateOrUpdateOptions, flagsFactory cmdcore.FlagsFactory)

cmd.Flags().StringVarP(&o.packageName, "package", "p", "", "Set package name (required)")
cmd.Flags().StringVarP(&o.version, "version", "v", "", "Set package version (required)")
cmd.Flags().StringVar(&o.serviceAccountName, "service-account-name", "", "Name of an existing service account used to install underlying package contents, optional")
cmd.Flags().StringVar(&o.serviceAccountName, "service-account-name", o.pkgCmdTreeOpts.DefaultServiceAcccountName, "Name of an existing service account used to install underlying package contents, optional")
cmd.Flags().StringVar(&o.valuesFile, "values-file", "", "The path to the configuration values file, optional")
cmd.Flags().BoolVar(&o.values, "values", true, "Add or keep values supplied to package install, optional")
cmd.Flags().BoolVar(&o.DryRun, "dry-run", false, "Print YAML for resources being applied to the cluster without applying them, optional")
Expand All @@ -154,6 +155,7 @@ func NewInstallCmd(o *CreateOrUpdateOptions, flagsFactory cmdcore.FlagsFactory)
AllowDisableWait: true,
DefaultInterval: 1 * time.Second,
DefaultTimeout: 30 * time.Minute,
DisableByDefault: o.pkgCmdTreeOpts.DisableWaitByDefault,
})
o.YttOverlayFlags.Set(cmd)

Expand All @@ -179,7 +181,7 @@ func NewUpdateCmd(o *CreateOrUpdateOptions, flagsFactory cmdcore.FlagsFactory) *
cmdcore.PackageManagementCommandsHelpGroup.Key: cmdcore.PackageManagementCommandsHelpGroup.Value},
}
o.NamespaceFlags.SetWithPackageCommandTreeOpts(cmd, flagsFactory, o.pkgCmdTreeOpts)
o.SecureNamespaceFlags.Set(cmd)
o.SecureNamespaceFlags.Set(cmd, o.pkgCmdTreeOpts.AllowSharedNamespaces)

if !o.pkgCmdTreeOpts.PositionalArgs {
cmd.Flags().StringVarP(&o.Name, "package-install", "i", "", "Set installed package name")
Expand All @@ -197,6 +199,7 @@ func NewUpdateCmd(o *CreateOrUpdateOptions, flagsFactory cmdcore.FlagsFactory) *
AllowDisableWait: true,
DefaultInterval: 1 * time.Second,
DefaultTimeout: 30 * time.Minute,
DisableByDefault: o.pkgCmdTreeOpts.DisableWaitByDefault,
})
o.YttOverlayFlags.Set(cmd)

Expand Down
1 change: 1 addition & 0 deletions cli/pkg/kctrl/cmd/package/installed/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ func NewDeleteCmd(o *DeleteOptions, flagsFactory cmdcore.FlagsFactory) *cobra.Co
AllowDisableWait: false,
DefaultInterval: 1 * time.Second,
DefaultTimeout: 5 * time.Minute,
DisableByDefault: o.pkgCmdTreeOpts.DisableWaitByDefault,
})

return cmd
Expand Down
1 change: 1 addition & 0 deletions cli/pkg/kctrl/cmd/package/installed/pause_or_kick.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ func NewKickCmd(o *PauseOrKickOptions, flagsFactory cmdcore.FlagsFactory) *cobra
AllowDisableWait: true,
DefaultInterval: 2 * time.Second,
DefaultTimeout: 5 * time.Minute,
DisableByDefault: o.pkgCmdTreeOpts.DisableWaitByDefault,
})

return cmd
Expand Down
4 changes: 2 additions & 2 deletions cli/pkg/kctrl/cmd/package/repository/add_or_update.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ func NewAddCmd(o *AddOrUpdateOptions, flagsFactory cmdcore.FlagsFactory) *cobra.
}

o.NamespaceFlags.SetWithPackageCommandTreeOpts(cmd, flagsFactory, o.pkgCmdTreeOpts)
o.SecureNamespaceFlags.Set(cmd)
o.SecureNamespaceFlags.Set(cmd, o.pkgCmdTreeOpts.AllowSharedNamespaces)

if !o.pkgCmdTreeOpts.PositionalArgs {
cmd.Flags().StringVarP(&o.Name, "repository", "r", "", "Set package repository name (required)")
Expand Down Expand Up @@ -106,7 +106,7 @@ func NewUpdateCmd(o *AddOrUpdateOptions, flagsFactory cmdcore.FlagsFactory) *cob
}

o.NamespaceFlags.SetWithPackageCommandTreeOpts(cmd, flagsFactory, o.pkgCmdTreeOpts)
o.SecureNamespaceFlags.Set(cmd)
o.SecureNamespaceFlags.Set(cmd, o.pkgCmdTreeOpts.AllowSharedNamespaces)

if !o.pkgCmdTreeOpts.PositionalArgs {
cmd.Flags().StringVarP(&o.Name, "repository", "r", "", "Set package repository name (required)")
Expand Down

0 comments on commit d984dcd

Please sign in to comment.