Skip to content

Commit 7901416

Browse files
authored
Merge pull request #423 from shiftstack/routerinterface-fixes
Router interface: reconcile interfaces for routers pending deletion
2 parents 86f0cac + 7f72669 commit 7901416

3 files changed

Lines changed: 12 additions & 14 deletions

File tree

internal/controllers/routerinterface/controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ func (c routerInterfaceReconcilerConstructor) SetupWithManager(ctx context.Conte
110110
}
111111
return ctrl.NewControllerManagedBy(mgr).
112112
For(&orcv1alpha1.Router{}, builder.WithPredicates(predicates.NewBecameAvailable(log, &orcv1alpha1.Router{}))).
113-
Named("router_interface").
113+
Named(controllerName).
114114
Watches(&orcv1alpha1.RouterInterface{},
115115
handler.EnqueueRequestsFromMapFunc(func(ctx context.Context, obj client.Object) []reconcile.Request {
116116
log := ctrl.LoggerFrom(ctx).WithValues("watch", "RouterInterface", "name", obj.GetName(), "namespace", obj.GetNamespace())

internal/controllers/routerinterface/reconcile.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ func (r *orcRouterInterfaceReconciler) Reconcile(ctx context.Context, req ctrl.R
5353
return ctrl.Result{}, err
5454
}
5555

56-
if !orcv1alpha1.IsAvailable(router) || router.Status.ID == nil {
56+
// We still want to reconcile router interface for routers that are scheduled for deletion
57+
// so that we can clear the finalizer
58+
if router.Status.ID == nil || (!orcv1alpha1.IsAvailable(router) && router.GetDeletionTimestamp().IsZero()) {
5759
log.V(logging.Verbose).Info("Not reconciling interfaces for not-Available router")
5860
return ctrl.Result{}, nil
5961
}

internal/controllers/routerinterface/tests/routerinterface-create-minimal/00-create-resource.yaml

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ spec:
1313
apiVersion: openstack.k-orc.cloud/v1alpha1
1414
kind: Subnet
1515
metadata:
16-
name: routerinterface-create-minimal
16+
name: routerinterface-create-minimal-external
1717
spec:
1818
cloudCredentialsRef:
1919
cloudName: openstack
@@ -27,50 +27,46 @@ spec:
2727
apiVersion: openstack.k-orc.cloud/v1alpha1
2828
kind: Router
2929
metadata:
30-
name: routerinterface-router-create-minimal
30+
name: routerinterface-create-minimal-external
3131
spec:
3232
cloudCredentialsRef:
3333
cloudName: openstack
3434
secretName: openstack-clouds
3535
managementPolicy: managed
3636
resource:
3737
description: Router from "routerinterface-create-minimal" test
38-
tags:
39-
- tag1
4038
---
4139
apiVersion: openstack.k-orc.cloud/v1alpha1
4240
kind: Router
4341
metadata:
44-
name: routerinterface-router-import
42+
name: routerinterface-create-minimal
4543
spec:
4644
cloudCredentialsRef:
4745
cloudName: openstack
4846
secretName: openstack-clouds
4947
managementPolicy: unmanaged
5048
import:
5149
filter:
52-
name: routerinterface-router-create-minimal
53-
description: Router from "routerinterface-create-minimal" test
50+
name: routerinterface-create-minimal-external
5451
---
5552
apiVersion: openstack.k-orc.cloud/v1alpha1
5653
kind: Subnet
5754
metadata:
58-
name: routerinterface-subnet-import
55+
name: routerinterface-create-minimal
5956
spec:
6057
cloudCredentialsRef:
6158
cloudName: openstack
6259
secretName: openstack-clouds
6360
managementPolicy: unmanaged
6461
import:
6562
filter:
66-
networkRef: routerinterface-create-minimal
67-
name: routerinterface-create-minimal
63+
name: routerinterface-create-minimal-external
6864
---
6965
apiVersion: openstack.k-orc.cloud/v1alpha1
7066
kind: RouterInterface
7167
metadata:
7268
name: routerinterface-create-minimal
7369
spec:
7470
type: Subnet
75-
routerRef: routerinterface-router-import
76-
subnetRef: routerinterface-subnet-import
71+
routerRef: routerinterface-create-minimal
72+
subnetRef: routerinterface-create-minimal

0 commit comments

Comments
 (0)