@@ -245,6 +245,28 @@ func (r *LinodeClusterReconciler) performPreflightChecks(ctx context.Context, lo
245245}
246246
247247func (r * LinodeClusterReconciler ) reconcilePreflightLinodeFirewallCheck (ctx context.Context , logger logr.Logger , clusterScope * scope.ClusterScope ) (ctrl.Result , error ) {
248+ // If NodeBalancerFirewallID is directly specified, check if it exists
249+ if clusterScope .LinodeCluster .Spec .Network .NodeBalancerFirewallID != nil {
250+ firewallID := * clusterScope .LinodeCluster .Spec .Network .NodeBalancerFirewallID
251+ _ , err := clusterScope .LinodeClient .GetFirewall (ctx , firewallID )
252+ if err != nil {
253+ logger .Error (err , "Failed to get NodeBalancer firewall with provided ID" , "firewallID" , firewallID )
254+ conditions .Set (clusterScope .LinodeCluster , metav1.Condition {
255+ Type : ConditionPreflightLinodeNBFirewallReady ,
256+ Status : metav1 .ConditionFalse ,
257+ Reason : util .CreateError ,
258+ Message : err .Error (),
259+ })
260+ return ctrl.Result {RequeueAfter : reconciler .DefaultClusterControllerReconcileDelay }, nil
261+ }
262+ conditions .Set (clusterScope .LinodeCluster , metav1.Condition {
263+ Type : ConditionPreflightLinodeNBFirewallReady ,
264+ Status : metav1 .ConditionTrue ,
265+ Reason : "LinodeFirewallReady" , // We have to set the reason to not fail object patching
266+ })
267+ return ctrl.Result {}, nil
268+ }
269+
248270 name := clusterScope .LinodeCluster .Spec .NodeBalancerFirewallRef .Name
249271 namespace := clusterScope .LinodeCluster .Spec .NodeBalancerFirewallRef .Namespace
250272 if namespace == "" {
0 commit comments