@@ -93,59 +93,20 @@ func (r *AgentClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request
93
93
return ctrl.Result {}, err
94
94
}
95
95
96
- aciCreated , err : = r .ensureAgentClusterInstall (ctx , log , clusterDeployment )
96
+ err = r .ensureAgentClusterInstall (ctx , log , clusterDeployment , agentCluster )
97
97
if err != nil {
98
98
return ctrl.Result {}, err
99
99
}
100
- if aciCreated {
101
- // If we just created the ACI, requeue with a fresh copy of the ClusterDeployment
102
- return ctrl.Result {Requeue : true }, nil
103
- }
104
100
105
101
if ! agentCluster .Spec .ControlPlaneEndpoint .IsValid () {
106
102
log .Info ("Waiting for agentCluster controlPlaneEndpoint" )
107
103
return ctrl.Result {RequeueAfter : agentClusterDependenciesWaitTime }, nil
108
104
}
109
- err = r .updateAgentClusterInstall (ctx , log , agentCluster , clusterDeployment )
110
- if err != nil {
111
- return ctrl.Result {}, err
112
- }
113
105
114
106
// If the agentCluster has references a ClusterDeployment, sync from its status
115
107
return r .updateClusterStatus (ctx , log , agentCluster )
116
108
}
117
109
118
- func (r * AgentClusterReconciler ) updateAgentClusterInstall (ctx context.Context , log logrus.FieldLogger , agentCluster * capiproviderv1alpha1.AgentCluster , clusterDeployment * hivev1.ClusterDeployment ) error {
119
- agentClusterInstall := & hiveext.AgentClusterInstall {}
120
- err := r .Get (ctx , types.NamespacedName {Namespace : agentCluster .Status .ClusterDeploymentRef .Namespace , Name : clusterDeployment .Spec .ClusterInstallRef .Name }, agentClusterInstall )
121
- if err != nil {
122
- log .WithError (err ).Error ("Failed to get AgentClusterInstall" )
123
- return err
124
- }
125
-
126
- if agentClusterInstall .Spec .IgnitionEndpoint == nil && agentCluster .Spec .IgnitionEndpoint != nil {
127
- log .Info ("Updating ignition endpoint" )
128
- url := agentCluster .Spec .IgnitionEndpoint .Url
129
- agentClusterInstall .Spec .IgnitionEndpoint = & hiveext.IgnitionEndpoint {
130
- // Currently assume something like https://1.2.3.4:555/ignition, otherwise this will fail
131
- // TODO: Replace with something more robust
132
- Url : url [0 :strings .LastIndex (url , "/" )],
133
- }
134
- if agentCluster .Spec .IgnitionEndpoint .CaCertificateReference != nil {
135
- agentClusterInstall .Spec .IgnitionEndpoint .CaCertificateReference = & hiveext.CaCertificateReference {
136
- Namespace : agentCluster .Spec .IgnitionEndpoint .CaCertificateReference .Namespace ,
137
- Name : agentCluster .Spec .IgnitionEndpoint .CaCertificateReference .Name ,
138
- }
139
- }
140
- if err = r .Client .Update (ctx , agentClusterInstall ); err != nil {
141
- log .WithError (err ).Error ("Failed to update agentClusterInstall" )
142
- return err
143
- }
144
- }
145
-
146
- return nil
147
- }
148
-
149
110
func getNestedStringObject (log logrus.FieldLogger , obj * unstructured.Unstructured , baseFieldName string , fields ... string ) (string , bool , error ) {
150
111
value , ok , err := unstructured .NestedString (obj .UnstructuredContent (), fields ... )
151
112
if err != nil {
@@ -285,26 +246,26 @@ func (r *AgentClusterReconciler) createClusterDeployment(ctx context.Context, lo
285
246
return ctrl.Result {}, nil
286
247
}
287
248
288
- func (r * AgentClusterReconciler ) ensureAgentClusterInstall (ctx context.Context , log logrus.FieldLogger , clusterDeployment * hivev1.ClusterDeployment ) ( bool , error ) {
249
+ func (r * AgentClusterReconciler ) ensureAgentClusterInstall (ctx context.Context , log logrus.FieldLogger , clusterDeployment * hivev1.ClusterDeployment , agentCluster * capiproviderv1alpha1. AgentCluster ) error {
289
250
log .Info ("Setting AgentClusterInstall" )
290
251
agentClusterInstall := & hiveext.AgentClusterInstall {}
291
252
if err := r .Get (ctx , types.NamespacedName {Namespace : clusterDeployment .Namespace , Name : clusterDeployment .Name }, agentClusterInstall ); err != nil {
292
253
if apierrors .IsNotFound (err ) {
293
- err = r .createAgentClusterInstall (ctx , log , clusterDeployment )
254
+ err = r .createAgentClusterInstall (ctx , log , clusterDeployment , agentCluster )
294
255
if err != nil {
295
256
log .WithError (err ).Error ("failed to create AgentClusterInstall" )
296
- return false , err
257
+ return err
297
258
}
298
- return true , nil
259
+ return nil
299
260
} else {
300
- log .WithError (err ).Error ("Failed to get AgentClusterInstall" )
301
- return false , err
261
+ log .WithError (err ).Error ("failed to get AgentClusterInstall" )
262
+ return err
302
263
}
303
264
}
304
- return false , nil
265
+ return nil
305
266
}
306
267
307
- func (r * AgentClusterReconciler ) createAgentClusterInstall (ctx context.Context , log logrus.FieldLogger , clusterDeployment * hivev1.ClusterDeployment ) error {
268
+ func (r * AgentClusterReconciler ) createAgentClusterInstall (ctx context.Context , log logrus.FieldLogger , clusterDeployment * hivev1.ClusterDeployment , agentCluster * capiproviderv1alpha1. AgentCluster ) error {
308
269
log .Infof ("Creating AgentClusterInstall for clusterDeployment: %s %s" , clusterDeployment .Namespace , clusterDeployment .Name )
309
270
agentClusterInstall := & hiveext.AgentClusterInstall {
310
271
ObjectMeta : metav1.ObjectMeta {
@@ -318,6 +279,23 @@ func (r *AgentClusterReconciler) createAgentClusterInstall(ctx context.Context,
318
279
},
319
280
},
320
281
}
282
+
283
+ // IgnitionEndpoint can only be set at AgentClusterInstall create time
284
+ if agentCluster .Spec .IgnitionEndpoint != nil {
285
+ url := agentCluster .Spec .IgnitionEndpoint .Url
286
+ agentClusterInstall .Spec .IgnitionEndpoint = & hiveext.IgnitionEndpoint {
287
+ // Currently assume something like https://1.2.3.4:555/ignition, otherwise this will fail
288
+ // TODO: Replace with something more robust
289
+ Url : url [0 :strings .LastIndex (url , "/" )],
290
+ }
291
+ if agentCluster .Spec .IgnitionEndpoint .CaCertificateReference != nil {
292
+ agentClusterInstall .Spec .IgnitionEndpoint .CaCertificateReference = & hiveext.CaCertificateReference {
293
+ Namespace : agentCluster .Spec .IgnitionEndpoint .CaCertificateReference .Namespace ,
294
+ Name : agentCluster .Spec .IgnitionEndpoint .CaCertificateReference .Name ,
295
+ }
296
+ }
297
+ }
298
+
321
299
return r .Client .Create (ctx , agentClusterInstall )
322
300
}
323
301
0 commit comments