diff --git a/api/resmap/factory.go b/api/resmap/factory.go index b779bb67f..90ee58c37 100644 --- a/api/resmap/factory.go +++ b/api/resmap/factory.go @@ -40,6 +40,15 @@ func (rmF *Factory) FromResource(res *resource.Resource) ResMap { return m } +// FromResourceSlice returns a ResMap with a slice of resources. +func (rmF *Factory) FromResourceSlice(ress []*resource.Resource) ResMap { + m, err := newResMapFromResourceSlice(ress) + if err != nil { + panic(err) + } + return m +} + // FromFile returns a ResMap given a resource path. func (rmF *Factory) FromFile( loader ifc.Loader, path string) (ResMap, error) { diff --git a/api/resource/factory.go b/api/resource/factory.go index 67fc020a8..2064475ce 100644 --- a/api/resource/factory.go +++ b/api/resource/factory.go @@ -146,6 +146,22 @@ func (rf *Factory) SliceFromBytes(in []byte) ([]*Resource, error) { return result, nil } +// SliceFromBytesWithNames unmarshals bytes into a Resource slice with specified original +// name. +func (rf *Factory) SliceFromBytesWithNames(names []string, in []byte) ([]*Resource, error) { + result, err := rf.SliceFromBytes(in) + if err != nil { + return nil, err + } + if len(names) != len(result) { + return nil, fmt.Errorf("number of names doesn't match number of resources") + } + for i, res := range result { + res.originalName = names[i] + } + return result, nil +} + // MakeConfigMap makes an instance of Resource for ConfigMap func (rf *Factory) MakeConfigMap(kvLdr ifc.KvLoader, args *types.ConfigMapArgs) (*Resource, error) { u, err := rf.kf.MakeConfigMap(kvLdr, args)