generated from kyma-project/template-repository
/
env.go
129 lines (108 loc) · 3.18 KB
/
env.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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package testinfra
import (
"context"
"fmt"
awsmock "github.com/kyma-project/cloud-manager/pkg/kcp/provider/aws/mock"
gcpmock "github.com/kyma-project/cloud-manager/pkg/kcp/provider/gcp/mock"
skrruntime "github.com/kyma-project/cloud-manager/pkg/skr/runtime"
"github.com/kyma-project/cloud-manager/pkg/skr/runtime/looper"
skrmanager "github.com/kyma-project/cloud-manager/pkg/skr/runtime/manager"
"github.com/onsi/ginkgo/v2"
"github.com/onsi/gomega"
"k8s.io/apimachinery/pkg/types"
"k8s.io/klog/v2"
"sigs.k8s.io/controller-runtime/pkg/manager"
"time"
)
var _ InfraEnv = &infraEnv{}
type infraEnv struct {
i Infra
kcpManager manager.Manager
registry skrruntime.SkrRegistry
activeSkrCollection skrruntime.ActiveSkrCollection
awsMock awsmock.Server
gcpMock gcpmock.Server
skrKymaRef klog.ObjectRef
skrManager skrmanager.SkrManager
runner skrruntime.SkrRunner
ctx context.Context
cancel context.CancelFunc
}
func (ie *infraEnv) KcpManager() manager.Manager {
return ie.kcpManager
}
func (ie *infraEnv) Registry() skrruntime.SkrRegistry {
return ie.registry
}
func (ie *infraEnv) ActiveSkrCollection() skrruntime.ActiveSkrCollection {
return ie.activeSkrCollection
}
func (ie *infraEnv) AwsMock() awsmock.Server {
return ie.awsMock
}
func (ie *infraEnv) GcpMock() gcpmock.Server {
return ie.gcpMock
}
func (ie *infraEnv) SkrKymaRef() klog.ObjectRef {
return ie.skrKymaRef
}
func (ie *infraEnv) SkrRunner() skrruntime.SkrRunner {
return ie.runner
}
func (ie *infraEnv) StartKcpControllers(ctx context.Context) {
ginkgo.By("Starting controllers")
if ctx == nil {
ctx = context.Background()
}
ie.ctx, ie.cancel = context.WithCancel(ctx)
go func() {
defer ginkgo.GinkgoRecover()
err := ie.kcpManager.Start(ie.ctx)
gomega.Expect(err).NotTo(gomega.HaveOccurred(), "failed to run kcp manager")
}()
time.Sleep(time.Second)
}
func (ie *infraEnv) StartSkrControllers(ctx context.Context) {
ie.kcpManager.GetLogger().Info("TestInfra: StartSkrControllers")
var err error
ie.skrManager, err = skrmanager.New(ie.i.SKR().Cfg(), ie.i.SKR().Scheme(), ie.skrKymaRef, ie.kcpManager.GetLogger())
if err != nil {
panic(fmt.Errorf("error creating SKR manager: %w", err))
}
ie.runner = skrruntime.NewRunner(ie.registry, newKcpClusterWrap(ie.kcpManager))
ie.ctx, ie.cancel = context.WithCancel(ctx)
go func() {
defer ginkgo.GinkgoRecover()
err = ie.runner.Run(ie.ctx, ie.skrManager, looper.WithTimeout(10*time.Minute))
if err != nil {
ie.skrManager.GetLogger().Error(err, "Error running SKR Runner")
}
}()
time.Sleep(time.Second)
}
func (ie *infraEnv) Ctx() context.Context {
if ie.ctx == nil {
return context.Background()
}
return ie.ctx
}
func (ie *infraEnv) stopControllers() {
if ie.cancel != nil {
ginkgo.By("Stopping controllers")
ie.cancel()
}
}
// =========================================
var _ ClusterEnv = &clusterEnv{}
type clusterEnv struct {
namespace string
}
func (ce *clusterEnv) Namespace() string {
return ce.namespace
}
func (ce *clusterEnv) ObjKey(name string) types.NamespacedName {
return types.NamespacedName{
Namespace: ce.namespace,
Name: name,
}
}