Allow custom img resolver and flags for set image
Kubernetes-commit: 2f56584853355c0ab16e5ad2b0195d8dfcd7dc6b
This commit is contained in:
parent
e4426be777
commit
866baec66e
|
@ -51,7 +51,7 @@ type SetImageOptions struct {
|
|||
All bool
|
||||
Output string
|
||||
Local bool
|
||||
ResolveImage ImageResolver
|
||||
ResolveImage ImageResolverFunc
|
||||
fieldManager string
|
||||
|
||||
PrintObj printers.ResourcePrinterFunc
|
||||
|
@ -64,6 +64,14 @@ type SetImageOptions struct {
|
|||
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 (
|
||||
imageResources = i18n.T(`
|
||||
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.")
|
||||
cmdutil.AddDryRunFlag(cmd)
|
||||
cmdutil.AddFieldManagerFlagVar(cmd, &o.fieldManager, "kubectl-set")
|
||||
|
||||
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.Output = cmdutil.GetFlagString(cmd, "output")
|
||||
o.ResolveImage = resolveImageFunc
|
||||
o.ResolveImage = ImageResolver
|
||||
|
||||
cmdutil.PrintFlagsWithDryRunStrategy(o.PrintFlags, o.DryRunStrategy)
|
||||
printer, err := o.PrintFlags.ToPrinter()
|
||||
|
@ -326,11 +335,6 @@ func hasWildcardKey(containerImages map[string]string) bool {
|
|||
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
|
||||
func resolveImageFunc(in string) (string, error) {
|
||||
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