mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
Allow custom img resolver and flags for set image
This commit is contained in:
parent
eb43b41cfd
commit
2f56584853
@ -51,7 +51,7 @@ type SetImageOptions struct {
|
|||||||
All bool
|
All bool
|
||||||
Output string
|
Output string
|
||||||
Local bool
|
Local bool
|
||||||
ResolveImage ImageResolver
|
ResolveImage ImageResolverFunc
|
||||||
fieldManager string
|
fieldManager string
|
||||||
|
|
||||||
PrintObj printers.ResourcePrinterFunc
|
PrintObj printers.ResourcePrinterFunc
|
||||||
@ -64,6 +64,14 @@ type SetImageOptions struct {
|
|||||||
genericclioptions.IOStreams
|
genericclioptions.IOStreams
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ImageResolver is a func that receives an image name, and
|
||||||
|
// resolves it to an appropriate / compatible image name.
|
||||||
|
// Adds flexibility for future image resolving methods.
|
||||||
|
type ImageResolverFunc func(in string) (string, error)
|
||||||
|
|
||||||
|
// ImageResolver to use.
|
||||||
|
var ImageResolver = resolveImageFunc
|
||||||
|
|
||||||
var (
|
var (
|
||||||
imageResources = i18n.T(`
|
imageResources = i18n.T(`
|
||||||
pod (po), replicationcontroller (rc), deployment (deploy), daemonset (ds), statefulset (sts), cronjob (cj), replicaset (rs)`)
|
pod (po), replicationcontroller (rc), deployment (deploy), daemonset (ds), statefulset (sts), cronjob (cj), replicaset (rs)`)
|
||||||
@ -127,6 +135,7 @@ func NewCmdImage(f cmdutil.Factory, streams genericclioptions.IOStreams) *cobra.
|
|||||||
cmd.Flags().BoolVar(&o.Local, "local", o.Local, "If true, set image will NOT contact api-server but run locally.")
|
cmd.Flags().BoolVar(&o.Local, "local", o.Local, "If true, set image will NOT contact api-server but run locally.")
|
||||||
cmdutil.AddDryRunFlag(cmd)
|
cmdutil.AddDryRunFlag(cmd)
|
||||||
cmdutil.AddFieldManagerFlagVar(cmd, &o.fieldManager, "kubectl-set")
|
cmdutil.AddFieldManagerFlagVar(cmd, &o.fieldManager, "kubectl-set")
|
||||||
|
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,7 +160,7 @@ func (o *SetImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
|
|||||||
}
|
}
|
||||||
o.DryRunVerifier = resource.NewDryRunVerifier(dynamicClient, f.OpenAPIGetter())
|
o.DryRunVerifier = resource.NewDryRunVerifier(dynamicClient, f.OpenAPIGetter())
|
||||||
o.Output = cmdutil.GetFlagString(cmd, "output")
|
o.Output = cmdutil.GetFlagString(cmd, "output")
|
||||||
o.ResolveImage = resolveImageFunc
|
o.ResolveImage = ImageResolver
|
||||||
|
|
||||||
cmdutil.PrintFlagsWithDryRunStrategy(o.PrintFlags, o.DryRunStrategy)
|
cmdutil.PrintFlagsWithDryRunStrategy(o.PrintFlags, o.DryRunStrategy)
|
||||||
printer, err := o.PrintFlags.ToPrinter()
|
printer, err := o.PrintFlags.ToPrinter()
|
||||||
@ -326,11 +335,6 @@ func hasWildcardKey(containerImages map[string]string) bool {
|
|||||||
return ok
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
// ImageResolver is a func that receives an image name, and
|
|
||||||
// resolves it to an appropriate / compatible image name.
|
|
||||||
// Adds flexibility for future image resolving methods.
|
|
||||||
type ImageResolver func(in string) (string, error)
|
|
||||||
|
|
||||||
// implements ImageResolver
|
// implements ImageResolver
|
||||||
func resolveImageFunc(in string) (string, error) {
|
func resolveImageFunc(in string) (string, error) {
|
||||||
return in, nil
|
return in, nil
|
||||||
|
@ -778,3 +778,18 @@ func TestSetImageRemoteWithSpecificContainers(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSetImageResolver(t *testing.T) {
|
||||||
|
f := func(in string) (string, error) {
|
||||||
|
return "custom", nil
|
||||||
|
}
|
||||||
|
|
||||||
|
ImageResolver = f
|
||||||
|
|
||||||
|
out, err := ImageResolver("my-image")
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("unexpected error from ImageResolver: %v", err)
|
||||||
|
} else if out != "custom" {
|
||||||
|
t.Errorf("expected: %s, found: %s", "custom", out)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user