/
envtest.go
71 lines (60 loc) · 2.16 KB
/
envtest.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package test
import (
"errors"
"path"
goruntime "runtime"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/rest"
awsv1 "sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta2"
azurev1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1"
gcpv1 "sigs.k8s.io/cluster-api-provider-gcp/api/v1beta1"
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/envtest"
configv1 "github.com/openshift/api/config/v1"
clusteroperatorv1 "github.com/openshift/api/operator/v1"
)
func init() {
utilruntime.Must(configv1.Install(scheme.Scheme))
utilruntime.Must(clusteroperatorv1.Install(scheme.Scheme))
utilruntime.Must(apiextensionsv1.AddToScheme(scheme.Scheme))
utilruntime.Must(awsv1.AddToScheme(scheme.Scheme))
utilruntime.Must(azurev1.AddToScheme(scheme.Scheme))
utilruntime.Must(gcpv1.AddToScheme(scheme.Scheme))
utilruntime.Must(clusterv1.AddToScheme(scheme.Scheme))
}
func StartEnvTest(testEnv *envtest.Environment) (*rest.Config, client.Client, error) {
// Get the root of the current file to use in CRD paths.
_, filename, _, _ := goruntime.Caller(0) //nolint:dogsled
root := path.Join(path.Dir(filename), "..", "..", "..", "cluster-capi-operator")
testEnv.CRDs = []*apiextensionsv1.CustomResourceDefinition{
fakeCoreProviderCRD,
fakeInfrastructureProviderCRD,
fakeClusterCRD,
fakeAWSClusterCRD,
fakeAzureClusterCRD,
fakeGCPClusterCRD,
}
testEnv.CRDDirectoryPaths = []string{
path.Join(root, "vendor", "github.com", "openshift", "api", "config", "v1"),
path.Join(root, "vendor", "github.com", "openshift", "api", "operator", "v1"),
}
testEnv.ErrorIfCRDPathMissing = true
cfg, err := testEnv.Start()
if err != nil {
return nil, nil, err
}
if cfg == nil {
return nil, nil, errors.New("envtest.Environment.Start() returned nil config")
}
cl, err := client.New(cfg, client.Options{Scheme: scheme.Scheme})
if err != nil {
return nil, nil, err
}
return cfg, cl, nil
}
func StopEnvTest(testEnv *envtest.Environment) error {
return testEnv.Stop()
}