mirror of https://github.com/linkerd/linkerd2.git
54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package k8s
|
|
|
|
import (
|
|
"strings"
|
|
|
|
spfake "github.com/linkerd/linkerd2/controller/gen/client/clientset/versioned/fake"
|
|
spscheme "github.com/linkerd/linkerd2/controller/gen/client/clientset/versioned/scheme"
|
|
"github.com/linkerd/linkerd2/pkg/k8s"
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
"k8s.io/client-go/kubernetes/fake"
|
|
"k8s.io/client-go/kubernetes/scheme"
|
|
)
|
|
|
|
func toRuntimeObject(config string) (runtime.Object, error) {
|
|
spscheme.AddToScheme(scheme.Scheme)
|
|
decode := scheme.Codecs.UniversalDeserializer().Decode
|
|
obj, _, err := decode([]byte(config), nil, nil)
|
|
return obj, err
|
|
}
|
|
|
|
// NewFakeAPI provides a mock Kubernetes API for testing.
|
|
func NewFakeAPI(namespace string, configs ...string) (*API, error) {
|
|
objs := []runtime.Object{}
|
|
spObjs := []runtime.Object{}
|
|
for _, config := range configs {
|
|
obj, err := toRuntimeObject(config)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if strings.ToLower(obj.GetObjectKind().GroupVersionKind().Kind) == k8s.ServiceProfile {
|
|
spObjs = append(spObjs, obj)
|
|
} else {
|
|
objs = append(objs, obj)
|
|
}
|
|
}
|
|
|
|
clientSet := fake.NewSimpleClientset(objs...)
|
|
spClientSet := spfake.NewSimpleClientset(spObjs...)
|
|
return NewAPI(
|
|
clientSet,
|
|
spClientSet,
|
|
namespace,
|
|
CM,
|
|
Deploy,
|
|
Endpoint,
|
|
Pod,
|
|
RC,
|
|
RS,
|
|
Svc,
|
|
SP,
|
|
MWC,
|
|
), nil
|
|
}
|