Skip to content

Commit d4125e1

Browse files
committed
Make bits of kctrl more configurable
Signed-off-by: Soumik Majumder <[email protected]>
1 parent 55d7a38 commit d4125e1

File tree

13 files changed

+55
-19
lines changed

13 files changed

+55
-19
lines changed

cli/pkg/kctrl/cmd/app/delete.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ func NewDeleteCmd(o *DeleteOptions, flagsFactory cmdcore.FlagsFactory) *cobra.Co
5757
AllowDisableWait: true,
5858
DefaultInterval: 1 * time.Second,
5959
DefaultTimeout: 5 * time.Minute,
60+
WaitByDefault: true,
6061
})
6162

6263
return cmd

cli/pkg/kctrl/cmd/app/kick.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ func NewKickCmd(o *KickOptions, flagsFactory cmdcore.FlagsFactory) *cobra.Comman
5050
AllowDisableWait: true,
5151
DefaultInterval: 1 * time.Second,
5252
DefaultTimeout: 5 * time.Minute,
53+
WaitByDefault: true,
5354
})
5455

5556
return cmd

cli/pkg/kctrl/cmd/core/config_factory.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ type ConfigFactoryImpl struct {
2929

3030
qps float32
3131
burst int
32+
33+
defaultKubeconfigOverridePath string
34+
defaultKubeconfigOverrideContext string
3235
}
3336

3437
var _ ConfigFactory = &ConfigFactoryImpl{}
@@ -49,6 +52,11 @@ func (f *ConfigFactoryImpl) ConfigureYAMLResolver(resolverFunc func() (string, e
4952
f.yamlResolverFunc = resolverFunc
5053
}
5154

55+
func (f *ConfigFactoryImpl) ConfigureKubeconfigOverrides(defaultKubeconfigOverridePath string, defaultKubeconfigOverrideContext string) {
56+
f.defaultKubeconfigOverridePath = defaultKubeconfigOverridePath
57+
f.defaultKubeconfigOverrideContext = defaultKubeconfigOverrideContext
58+
}
59+
5260
func (f *ConfigFactoryImpl) ConfigureClient(qps float32, burst int) {
5361
f.qps = qps
5462
f.burst = burst
@@ -123,6 +131,11 @@ func (f *ConfigFactoryImpl) clientConfig() (bool, clientcmd.ClientConfig, error)
123131
loadingRules := clientcmd.NewDefaultClientConfigLoadingRules()
124132
overrides := &clientcmd.ConfigOverrides{}
125133

134+
if len(path) == 0 && len(context) == 0 && f.defaultKubeconfigOverrideContext != "" && f.defaultKubeconfigOverridePath != "" {
135+
path = f.defaultKubeconfigOverridePath
136+
context = f.defaultKubeconfigOverrideContext
137+
}
138+
126139
if len(path) > 0 {
127140
loadingRules.ExplicitPath = path
128141
}

cli/pkg/kctrl/cmd/core/examples.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ type PackageCommandTreeOpts struct {
1414

1515
Color bool
1616
JSON bool
17+
18+
DefaultKubeconfigOverridePath string
19+
DefaultKubeconfigOverrideContext string
20+
21+
DefaultServiceAcccountName string
22+
WaitByDefault bool
23+
AllowSharedNamespaces bool
1724
}
1825

1926
type Example struct {

cli/pkg/kctrl/cmd/core/secure_namespace_flags.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ type SecureNamespaceFlags struct {
1818
AllowedSharedNamespaces bool
1919
}
2020

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

2525
func (s *SecureNamespaceFlags) CheckForDisallowedSharedNamespaces(namespace string) error {

cli/pkg/kctrl/cmd/core/wait_flags.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,14 @@ type WaitFlagsOpts struct {
1919
AllowDisableWait bool
2020
DefaultInterval time.Duration
2121
DefaultTimeout time.Duration
22+
WaitByDefault bool
2223
}
2324

2425
func (f *WaitFlags) Set(cmd *cobra.Command, flagsFactory FlagsFactory, opts *WaitFlagsOpts) {
25-
if opts.AllowDisableWait {
26-
cmd.Flags().BoolVar(&f.Enabled, "wait", true, "Wait for reconciliation to complete")
26+
if opts.AllowDisableWait || !opts.WaitByDefault {
27+
cmd.Flags().BoolVar(&f.Enabled, "wait", opts.WaitByDefault, "Wait for reconciliation to complete")
2728
}
28-
f.Enabled = true
29+
f.Enabled = opts.WaitByDefault
2930
cmd.Flags().DurationVar(&f.CheckInterval, "wait-check-interval", opts.DefaultInterval, "Amount of time to sleep between checks while waiting")
3031
cmd.Flags().DurationVar(&f.Timeout, "wait-timeout", opts.DefaultTimeout, "Maximum amount of time to wait in wait phase")
3132
}

cli/pkg/kctrl/cmd/kctrl.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ func NewKctrlCmd(o *KctrlOptions, flagsFactory cmdcore.FlagsFactory) *cobra.Comm
7676
cmdcore.RestOfCommandsHelpGroup,
7777
}))
7878

79-
pkgOpts := cmdcore.PackageCommandTreeOpts{BinaryName: "kctrl", PositionalArgs: false, Color: true, JSON: true}
79+
pkgOpts := cmdcore.PackageCommandTreeOpts{BinaryName: "kctrl", Color: true, JSON: true, WaitByDefault: true}
8080

8181
setGlobalFlags(o, cmd, flagsFactory, pkgOpts)
8282

@@ -227,6 +227,7 @@ func AttachGlobalFlags(o *KctrlOptions, cmd *cobra.Command, flagsFactory cmdcore
227227

228228
func AttachKctrlPackageCommandTree(cmd *cobra.Command, confUI *ui.ConfUI, opts cmdcore.PackageCommandTreeOpts) {
229229
configFactory := cmdcore.NewConfigFactoryImpl()
230+
configFactory.ConfigureKubeconfigOverrides(opts.DefaultKubeconfigOverridePath, opts.DefaultKubeconfigOverrideContext)
230231
depsFactory := cmdcore.NewDepsFactoryImpl(configFactory, confUI)
231232
options := NewKctrlOptions(confUI, configFactory, depsFactory)
232233
flagsFactory := cmdcore.NewFlagsFactory(configFactory, depsFactory)

cli/pkg/kctrl/cmd/package/installed/create_or_update.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func NewCreateCmd(o *CreateOrUpdateOptions, flagsFactory cmdcore.FlagsFactory) *
8888
cmdcore.PackageManagementCommandsHelpGroup.Key: cmdcore.PackageManagementCommandsHelpGroup.Value},
8989
}
9090
o.NamespaceFlags.SetWithPackageCommandTreeOpts(cmd, flagsFactory, o.pkgCmdTreeOpts)
91-
o.SecureNamespaceFlags.Set(cmd)
91+
o.SecureNamespaceFlags.Set(cmd, o.pkgCmdTreeOpts.AllowSharedNamespaces)
9292

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

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

@@ -134,7 +135,7 @@ func NewInstallCmd(o *CreateOrUpdateOptions, flagsFactory cmdcore.FlagsFactory)
134135
cmdcore.PackageManagementCommandsHelpGroup.Key: cmdcore.PackageManagementCommandsHelpGroup.Value},
135136
}
136137
o.NamespaceFlags.SetWithPackageCommandTreeOpts(cmd, flagsFactory, o.pkgCmdTreeOpts)
137-
o.SecureNamespaceFlags.Set(cmd)
138+
o.SecureNamespaceFlags.Set(cmd, o.pkgCmdTreeOpts.AllowSharedNamespaces)
138139

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

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

@@ -179,7 +181,7 @@ func NewUpdateCmd(o *CreateOrUpdateOptions, flagsFactory cmdcore.FlagsFactory) *
179181
cmdcore.PackageManagementCommandsHelpGroup.Key: cmdcore.PackageManagementCommandsHelpGroup.Value},
180182
}
181183
o.NamespaceFlags.SetWithPackageCommandTreeOpts(cmd, flagsFactory, o.pkgCmdTreeOpts)
182-
o.SecureNamespaceFlags.Set(cmd)
184+
o.SecureNamespaceFlags.Set(cmd, o.pkgCmdTreeOpts.AllowSharedNamespaces)
183185

184186
if !o.pkgCmdTreeOpts.PositionalArgs {
185187
cmd.Flags().StringVarP(&o.Name, "package-install", "i", "", "Set installed package name")
@@ -197,6 +199,7 @@ func NewUpdateCmd(o *CreateOrUpdateOptions, flagsFactory cmdcore.FlagsFactory) *
197199
AllowDisableWait: true,
198200
DefaultInterval: 1 * time.Second,
199201
DefaultTimeout: 30 * time.Minute,
202+
WaitByDefault: o.pkgCmdTreeOpts.WaitByDefault,
200203
})
201204
o.YttOverlayFlags.Set(cmd)
202205

@@ -1072,10 +1075,10 @@ func (o *CreateOrUpdateOptions) showVersions(client pkgclient.Interface) error {
10721075
}
10731076

10741077
func (o *CreateOrUpdateOptions) createOrUpdateYttOverlaySecrets(pkgi *kcpkgv1alpha1.PackageInstall, client kubernetes.Interface) (*corev1.Secret, error) {
1075-
o.statusUI.PrintMessage("Creating overlay secrets")
10761078
if len(o.YttOverlayFlags.yttOverlayFiles) == 0 {
10771079
return nil, nil
10781080
}
1081+
o.statusUI.PrintMessage("Creating overlay secrets")
10791082

10801083
if pkgi != nil {
10811084
for annotation := range pkgi.Annotations {

cli/pkg/kctrl/cmd/package/installed/delete.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ func NewDeleteCmd(o *DeleteOptions, flagsFactory cmdcore.FlagsFactory) *cobra.Co
7575
AllowDisableWait: false,
7676
DefaultInterval: 1 * time.Second,
7777
DefaultTimeout: 5 * time.Minute,
78+
WaitByDefault: o.pkgCmdTreeOpts.WaitByDefault,
7879
})
7980

8081
return cmd
@@ -136,11 +137,12 @@ func (o *DeleteOptions) Run(args []string) error {
136137
return err
137138
}
138139

139-
o.statusUI.PrintMessagef("Waiting for deletion of package install '%s' from namespace '%s'", o.Name, o.NamespaceFlags.Name)
140-
141-
err = o.waitForResourceDelete(kcClient)
142-
if err != nil {
143-
return err
140+
if o.WaitFlags.Enabled {
141+
o.statusUI.PrintMessagef("Waiting for deletion of package install '%s' from namespace '%s'", o.Name, o.NamespaceFlags.Name)
142+
err = o.waitForResourceDelete(kcClient)
143+
if err != nil {
144+
return err
145+
}
144146
}
145147

146148
return o.deleteInstallCreatedResources(pkgi, dynamicClient)

cli/pkg/kctrl/cmd/package/installed/pause_or_kick.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ func NewKickCmd(o *PauseOrKickOptions, flagsFactory cmdcore.FlagsFactory) *cobra
9696
AllowDisableWait: true,
9797
DefaultInterval: 2 * time.Second,
9898
DefaultTimeout: 5 * time.Minute,
99+
WaitByDefault: o.pkgCmdTreeOpts.WaitByDefault,
99100
})
100101

101102
return cmd

0 commit comments

Comments
 (0)