@@ -38,7 +38,12 @@ import (
3838 "sigs.k8s.io/controller-runtime/pkg/metrics"
3939
4040 infrav1 "github.com/syself/cluster-api-provider-hetzner/api/v1beta1"
41+ "github.com/syself/cluster-api-provider-hetzner/pkg/services/baremetal/client/mocks"
42+ robotmock "github.com/syself/cluster-api-provider-hetzner/pkg/services/baremetal/client/mocks/robot"
43+ sshmock "github.com/syself/cluster-api-provider-hetzner/pkg/services/baremetal/client/mocks/ssh"
4144 hcloudclient "github.com/syself/cluster-api-provider-hetzner/pkg/services/hcloud/client"
45+ fakehcloudclient "github.com/syself/cluster-api-provider-hetzner/pkg/services/hcloud/client/fake"
46+ "github.com/syself/cluster-api-provider-hetzner/pkg/services/hcloud/mockedsshclient"
4247 "github.com/syself/cluster-api-provider-hetzner/test/helpers"
4348)
4449
@@ -63,6 +68,68 @@ func TestControllers(t *testing.T) {
6368 RunSpecs (t , "Controller Suite" )
6469}
6570
71+ type ControllerResetter struct {
72+ HetznerClusterReconciler * HetznerClusterReconciler
73+ HCloudMachineReconciler * HCloudMachineReconciler
74+ HCloudMachineTemplateReconciler * HCloudMachineTemplateReconciler
75+ HetznerBareMetalHostReconciler * HetznerBareMetalHostReconciler
76+ HetznerBareMetalMachineReconciler * HetznerBareMetalMachineReconciler
77+ HCloudRemediationReconciler * HCloudRemediationReconciler
78+ HetznerBareMetalRemediationReconciler * HetznerBareMetalRemediationReconciler
79+ }
80+
81+ func (r * ControllerResetter ) Reset (testEnv * helpers.TestEnvironment , t FullGinkgoTInterface ) {
82+ rescueSSHClient := & sshmock.Client {}
83+ rescueSSHClient .Test (t )
84+
85+ osSSHClientAfterInstallImage := & sshmock.Client {}
86+ osSSHClientAfterInstallImage .Test (t )
87+
88+ osSSHClientAfterCloudInit := & sshmock.Client {}
89+ osSSHClientAfterCloudInit .Test (t )
90+
91+ robotClient := & robotmock.Client {}
92+ robotClient .Test (t )
93+
94+ hcloudSSHClient := & sshmock.Client {}
95+ hcloudSSHClient .Test (t )
96+
97+ hcloudClientFactory := fakehcloudclient .NewHCloudClientFactory ()
98+
99+ robotClientFactory := mocks .NewRobotFactory (robotClient )
100+ baremetalSSHClientFactory := mocks .NewSSHFactory (rescueSSHClient ,
101+ osSSHClientAfterInstallImage , osSSHClientAfterCloudInit )
102+ {
103+ // Reset clients used by the test code
104+ testEnv .BaremetalSSHClientFactory = mocks .NewSSHFactory (rescueSSHClient ,
105+ osSSHClientAfterInstallImage , osSSHClientAfterCloudInit )
106+ testEnv .HCloudSSHClientFactory = mockedsshclient .NewSSHFactory (hcloudSSHClient )
107+ testEnv .RescueSSHClient = rescueSSHClient
108+ testEnv .OSSSHClientAfterInstallImage = osSSHClientAfterInstallImage
109+ testEnv .OSSSHClientAfterCloudInit = osSSHClientAfterCloudInit
110+ testEnv .RobotClientFactory = robotClientFactory
111+ testEnv .RobotClient = robotClient
112+ }
113+
114+ {
115+ // Reset clients used by Reconcile()
116+ r .HetznerClusterReconciler .HCloudClientFactory = hcloudClientFactory
117+
118+ r .HCloudMachineReconciler .HCloudClientFactory = hcloudClientFactory
119+ r .HCloudMachineReconciler .SSHClientFactory = baremetalSSHClientFactory
120+ r .HCloudMachineReconciler .HCloudClientFactory = hcloudClientFactory
121+
122+ r .HCloudMachineTemplateReconciler .HCloudClientFactory = hcloudClientFactory
123+ r .HetznerBareMetalHostReconciler .RobotClientFactory = robotClientFactory
124+ r .HetznerBareMetalHostReconciler .SSHClientFactory = baremetalSSHClientFactory
125+
126+ r .HCloudRemediationReconciler .HCloudClientFactory = hcloudClientFactory
127+
128+ r .HetznerBareMetalMachineReconciler .HCloudClientFactory = hcloudClientFactory
129+
130+ }
131+ }
132+
66133var _ = BeforeSuite (func () {
67134 utilruntime .Must (infrav1 .AddToScheme (scheme .Scheme ))
68135 utilruntime .Must (clusterv1 .AddToScheme (scheme .Scheme ))
@@ -71,52 +138,62 @@ var _ = BeforeSuite(func() {
71138 hcloudClient = testEnv .HCloudClientFactory .NewClient ("" )
72139 wg .Add (1 )
73140
74- Expect ((& HetznerClusterReconciler {
141+ resetter := ControllerResetter {}
142+
143+ hetznerClusterReconciler := & HetznerClusterReconciler {
75144 Client : testEnv .Manager .GetClient (),
76145 APIReader : testEnv .Manager .GetAPIReader (),
77146 RateLimitWaitTime : 5 * time .Minute ,
78- HCloudClientFactory : testEnv .HCloudClientFactory ,
79147 TargetClusterManagersWaitGroup : & wg ,
80- }).SetupWithManager (ctx , testEnv .Manager , controller.Options {})).To (Succeed ())
81-
82- Expect ((& HCloudMachineReconciler {
83- Client : testEnv .Manager .GetClient (),
84- APIReader : testEnv .Manager .GetAPIReader (),
85- HCloudClientFactory : testEnv .HCloudClientFactory ,
86- SSHClientFactory : testEnv .BaremetalSSHClientFactory ,
87- }).SetupWithManager (ctx , testEnv .Manager , controller.Options {})).To (Succeed ())
88-
89- Expect ((& HCloudMachineTemplateReconciler {
90- Client : testEnv .Manager .GetClient (),
91- APIReader : testEnv .Manager .GetAPIReader (),
92- HCloudClientFactory : testEnv .HCloudClientFactory ,
93- }).SetupWithManager (ctx , testEnv .Manager , controller.Options {})).To (Succeed ())
94-
95- Expect ((& HetznerBareMetalHostReconciler {
148+ }
149+ Expect (hetznerClusterReconciler .SetupWithManager (ctx , testEnv .Manager , controller.Options {})).To (Succeed ())
150+ resetter .HetznerClusterReconciler = hetznerClusterReconciler
151+
152+ hcloudMachineReconciler := & HCloudMachineReconciler {
153+ Client : testEnv .Manager .GetClient (),
154+ APIReader : testEnv .Manager .GetAPIReader (),
155+ }
156+ Expect (hcloudMachineReconciler .SetupWithManager (ctx , testEnv .Manager , controller.Options {})).To (Succeed ())
157+ resetter .HCloudMachineReconciler = hcloudMachineReconciler
158+
159+ hcloudMachineTemplateReconciler := & HCloudMachineTemplateReconciler {
160+ Client : testEnv .Manager .GetClient (),
161+ APIReader : testEnv .Manager .GetAPIReader (),
162+ }
163+ Expect (hcloudMachineTemplateReconciler .SetupWithManager (ctx , testEnv .Manager , controller.Options {})).To (Succeed ())
164+ resetter .HCloudMachineTemplateReconciler = hcloudMachineTemplateReconciler
165+
166+ hetznerBareMetalHostReconciler := & HetznerBareMetalHostReconciler {
96167 Client : testEnv .Manager .GetClient (),
97168 APIReader : testEnv .Manager .GetAPIReader (),
98- RobotClientFactory : testEnv .RobotClientFactory ,
99- SSHClientFactory : testEnv .BaremetalSSHClientFactory ,
100169 PreProvisionCommand : "dummy-pre-provision-command" ,
101170 SSHAfterInstallImage : true ,
102- }).SetupWithManager (ctx , testEnv .Manager , controller.Options {})).To (Succeed ())
103-
104- Expect ((& HetznerBareMetalMachineReconciler {
105- Client : testEnv .Manager .GetClient (),
106- APIReader : testEnv .Manager .GetAPIReader (),
107- HCloudClientFactory : testEnv .HCloudClientFactory ,
108- }).SetupWithManager (ctx , testEnv .Manager , controller.Options {})).To (Succeed ())
109-
110- Expect ((& HCloudRemediationReconciler {
111- Client : testEnv .Manager .GetClient (),
112- APIReader : testEnv .Manager .GetAPIReader (),
113- RateLimitWaitTime : 5 * time .Minute ,
114- HCloudClientFactory : testEnv .HCloudClientFactory ,
115- }).SetupWithManager (ctx , testEnv .Manager , controller.Options {})).To (Succeed ())
116-
117- Expect ((& HetznerBareMetalRemediationReconciler {
171+ }
172+ Expect (hetznerBareMetalHostReconciler .SetupWithManager (ctx , testEnv .Manager , controller.Options {})).To (Succeed ())
173+ resetter .HetznerBareMetalHostReconciler = hetznerBareMetalHostReconciler
174+
175+ hetznerBareMetalMachineReconciler := & HetznerBareMetalMachineReconciler {
176+ Client : testEnv .Manager .GetClient (),
177+ APIReader : testEnv .Manager .GetAPIReader (),
178+ }
179+ Expect (hetznerBareMetalMachineReconciler .SetupWithManager (ctx , testEnv .Manager , controller.Options {})).To (Succeed ())
180+ resetter .HetznerBareMetalMachineReconciler = hetznerBareMetalMachineReconciler
181+
182+ hcloudRemediationReconciler := & HCloudRemediationReconciler {
183+ Client : testEnv .Manager .GetClient (),
184+ APIReader : testEnv .Manager .GetAPIReader (),
185+ RateLimitWaitTime : 5 * time .Minute ,
186+ }
187+ Expect (hcloudRemediationReconciler .SetupWithManager (ctx , testEnv .Manager , controller.Options {})).To (Succeed ())
188+ resetter .HCloudRemediationReconciler = hcloudRemediationReconciler
189+
190+ hetznerBareMetalRemediationReconciler := & HetznerBareMetalRemediationReconciler {
118191 Client : testEnv .Manager .GetClient (),
119- }).SetupWithManager (ctx , testEnv .Manager , controller.Options {})).To (Succeed ())
192+ }
193+ Expect (hetznerBareMetalRemediationReconciler .SetupWithManager (ctx , testEnv .Manager , controller.Options {})).To (Succeed ())
194+ resetter .HetznerBareMetalRemediationReconciler = hetznerBareMetalRemediationReconciler
195+
196+ testEnv .Resetter = & resetter
120197
121198 go func () {
122199 defer GinkgoRecover ()
0 commit comments