@@ -163,8 +163,8 @@ func (r *MetalStackFirewallDeploymentReconciler) Reconcile(ctx context.Context,
163163// SetupWithManager sets up the controller with the Manager.
164164func (r * MetalStackFirewallDeploymentReconciler ) SetupWithManager (mgr ctrl.Manager ) error {
165165 err := mgr .GetCache ().IndexField (context .TODO (), & v1alpha1.MetalStackFirewallDeployment {}, "spec.firewallTemplateRef.name" , func (obj client.Object ) []string {
166- fwdeploy := obj .(* v1alpha1.MetalStackFirewallDeployment )
167- if fwdeploy . Spec . FirewallTemplateRef == nil {
166+ fwdeploy , ok := obj .(* v1alpha1.MetalStackFirewallDeployment )
167+ if ! ok {
168168 return nil
169169 }
170170 return []string {fwdeploy .Spec .FirewallTemplateRef .Name }
@@ -357,27 +357,7 @@ func (r *firewallDeploymentReconciler) ensureFirewallDeployment() error {
357357 }
358358 )
359359
360- fwFindResp , err := r .metalClient .Firewall ().FindFirewalls (firewall .NewFindFirewallsParamsWithContext (r .ctx ).WithBody (& models.V1FirewallFindRequest {
361- PartitionID : r .firewallTemplate .Spec .Partition ,
362- Sizeid : r .firewallTemplate .Spec .Size ,
363- AllocationImageID : r .firewallTemplate .Spec .Image ,
364- Tags : tags ,
365- }), nil )
366- if err != nil {
367- return fmt .Errorf ("error finding firewall deployments: %w" , err )
368- }
369-
370- if len (fwFindResp .Payload ) > 1 {
371- fwids := make ([]string , 0 , len (fwFindResp .Payload ))
372- for _ , fw := range fwFindResp .Payload {
373- if fw .ID != nil {
374- fwids = append (fwids , * fw .ID )
375- }
376- }
377- r .log .Info ("multiple firewalls found, manual intervention needed due to manual roll" , "firewalls" , fwids )
378- }
379-
380- if len (fwFindResp .Payload ) == 1 {
360+ if r .firewallDeployment .Spec .ManagedResourceRef != nil {
381361 return nil
382362 }
383363
@@ -395,6 +375,10 @@ func (r *firewallDeploymentReconciler) ensureFirewallDeployment() error {
395375 networks = append (networks , network )
396376 }
397377
378+ if r .firewallTemplate .Spec .InitialRuleSet == nil {
379+ return fmt .Errorf ("firewall template %s/%s has no initial rule set defined and will not allow any traffic" , r .firewallTemplate .Namespace , r .firewallTemplate .Name )
380+ }
381+
398382 egressRules := make ([]* models.V1FirewallEgressRule , 0 , len (r .firewallTemplate .Spec .InitialRuleSet .Egress ))
399383 for _ , er := range r .firewallTemplate .Spec .InitialRuleSet .Egress {
400384 egressRules = append (egressRules , & models.V1FirewallEgressRule {
@@ -418,7 +402,7 @@ func (r *firewallDeploymentReconciler) ensureFirewallDeployment() error {
418402 fwresp , err := r .metalClient .Firewall ().AllocateFirewall (firewall .NewAllocateFirewallParamsWithContext (r .ctx ).WithBody (& models.V1FirewallCreateRequest {
419403 Hostname : name ,
420404 Name : name ,
421- Description : fmt .Sprintf ("firewall for cluster %s" , r .infraCluster .GetName ()),
405+ Description : fmt .Sprintf ("firewall for cluster %s" , r .cluster .GetName ()),
422406 Partitionid : ptr .To (r .infraCluster .Spec .Partition ),
423407 Projectid : & r .infraCluster .Spec .ProjectID ,
424408 Tags : tags ,
0 commit comments