mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-09-19 22:44:21 +00:00
+37
-2
@@ -19,13 +19,15 @@ package test
|
||||
import (
|
||||
"github.com/pkg/errors"
|
||||
"k8s.io/apimachinery/pkg/api/meta"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
)
|
||||
|
||||
type FakeMapper struct {
|
||||
meta.RESTMapper
|
||||
AutoReturnResource bool
|
||||
Resources map[schema.GroupVersionResource]schema.GroupVersionResource
|
||||
AutoReturnResource bool
|
||||
Resources map[schema.GroupVersionResource]schema.GroupVersionResource
|
||||
KindToPluralResource map[schema.GroupVersionKind]schema.GroupVersionResource
|
||||
}
|
||||
|
||||
func (m *FakeMapper) ResourceFor(input schema.GroupVersionResource) (schema.GroupVersionResource, error) {
|
||||
@@ -56,3 +58,36 @@ func (m *FakeMapper) ResourceFor(input schema.GroupVersionResource) (schema.Grou
|
||||
|
||||
return schema.GroupVersionResource{}, errors.Errorf("invalid resource %q", input.String())
|
||||
}
|
||||
|
||||
func (m *FakeMapper) RESTMapping(gk schema.GroupKind, versions ...string) (*meta.RESTMapping, error) {
|
||||
potentialGVK := make([]schema.GroupVersionKind, 0)
|
||||
// Pick an appropriate version
|
||||
for _, version := range versions {
|
||||
if len(version) == 0 || version == runtime.APIVersionInternal {
|
||||
continue
|
||||
}
|
||||
currGVK := gk.WithVersion(version)
|
||||
if _, ok := m.KindToPluralResource[currGVK]; ok {
|
||||
potentialGVK = append(potentialGVK, currGVK)
|
||||
break
|
||||
}
|
||||
}
|
||||
if len(potentialGVK) == 0 {
|
||||
return nil, &meta.NoKindMatchError{GroupKind: gk, SearchedVersions: versions}
|
||||
}
|
||||
|
||||
for _, gvk := range potentialGVK {
|
||||
//Ensure we have a REST mapping
|
||||
res, ok := m.KindToPluralResource[gvk]
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
return &meta.RESTMapping{
|
||||
Resource: res,
|
||||
GroupVersionKind: gvk,
|
||||
Scope: meta.RESTScopeNamespace,
|
||||
}, nil
|
||||
}
|
||||
return nil, &meta.NoResourceMatchError{PartialResource: schema.GroupVersionResource{Group: gk.Group, Resource: gk.Kind}}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user