refactor builder in kubectl factory
This commit is contained in:
@@ -107,12 +107,12 @@ func (o *EditOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args []
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
mapper, typer, err := f.UnstructuredObject()
|
||||
mapper, _, err := f.UnstructuredObject()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
b := f.NewBuilder().Unstructured(f.UnstructuredClientForMapping, mapper, typer)
|
||||
b := f.NewUnstructuredBuilder()
|
||||
if o.EditMode == NormalEditMode || o.EditMode == ApplyEditMode {
|
||||
// when do normal edit or apply edit we need to always retrieve the latest resource from server
|
||||
b = b.ResourceTypeOrNameArgs(true, args...).Latest()
|
||||
@@ -132,7 +132,7 @@ func (o *EditOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args []
|
||||
|
||||
o.updatedResultGetter = func(data []byte) *resource.Result {
|
||||
// resource builder to read objects from edited data
|
||||
return resource.NewBuilder(mapper, f.CategoryExpander(), typer, resource.ClientMapperFunc(f.UnstructuredClientForMapping), unstructured.UnstructuredJSONScheme).
|
||||
return f.NewUnstructuredBuilder().
|
||||
Stream(bytes.NewReader(data), "edited-file").
|
||||
IncludeUninitialized(includeUninitialized).
|
||||
ContinueOnError().
|
||||
|
@@ -243,8 +243,10 @@ type BuilderFactory interface {
|
||||
PrinterForMapping(cmd *cobra.Command, isLocal bool, outputOpts *printers.OutputOptions, mapping *meta.RESTMapping, withNamespace bool) (printers.ResourcePrinter, error)
|
||||
// PrintObject prints an api object given command line flags to modify the output format
|
||||
PrintObject(cmd *cobra.Command, isLocal bool, mapper meta.RESTMapper, obj runtime.Object, out io.Writer) error
|
||||
// One stop shopping for a Builder
|
||||
// One stop shopping for a structured Builder
|
||||
NewBuilder() *resource.Builder
|
||||
// One stop shopping for a unstructured Builder
|
||||
NewUnstructuredBuilder() *resource.Builder
|
||||
// PluginLoader provides the implementation to be used to load cli plugins.
|
||||
PluginLoader() plugins.PluginLoader
|
||||
// PluginRunner provides the implementation to be used to run cli plugins.
|
||||
|
@@ -138,8 +138,7 @@ func (f *ring2Factory) PrintObject(cmd *cobra.Command, isLocal bool, mapper meta
|
||||
return printer.PrintObj(obj, out)
|
||||
}
|
||||
|
||||
// NewBuilder returns a new resource builder.
|
||||
// Receives a bool flag and avoids remote calls if set to false
|
||||
// NewBuilder returns a new resource builder for structured api objects.
|
||||
func (f *ring2Factory) NewBuilder() *resource.Builder {
|
||||
clientMapperFunc := resource.ClientMapperFunc(f.objectMappingFactory.ClientForMapping)
|
||||
|
||||
@@ -149,6 +148,18 @@ func (f *ring2Factory) NewBuilder() *resource.Builder {
|
||||
return resource.NewBuilder(mapper, categoryExpander, typer, clientMapperFunc, f.clientAccessFactory.Decoder(true))
|
||||
}
|
||||
|
||||
// NewUnstructuredBuilder returns a new resource builder for unstructured api objects.
|
||||
func (f *ring2Factory) NewUnstructuredBuilder() *resource.Builder {
|
||||
clientMapperFunc := resource.ClientMapperFunc(f.objectMappingFactory.UnstructuredClientForMapping)
|
||||
mapper, typer, err := f.objectMappingFactory.UnstructuredObject()
|
||||
if err != nil {
|
||||
CheckErr(err)
|
||||
}
|
||||
categoryExpander := f.objectMappingFactory.CategoryExpander()
|
||||
|
||||
return resource.NewBuilder(mapper, categoryExpander, typer, clientMapperFunc, unstructured.UnstructuredJSONScheme)
|
||||
}
|
||||
|
||||
// PluginLoader loads plugins from a path set by the KUBECTL_PLUGINS_PATH env var.
|
||||
// If this env var is not set, it defaults to
|
||||
// "~/.kube/plugins", plus
|
||||
|
Reference in New Issue
Block a user