@@ -21,6 +21,7 @@ import (
21
21
"k8s.io/apimachinery/pkg/types"
22
22
"k8s.io/client-go/tools/cache"
23
23
"k8s.io/klog/v2"
24
+ "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
24
25
25
26
kubeovnv1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1"
26
27
"github.com/kubeovn/kube-ovn/pkg/ovsdb/ovnnb"
@@ -156,6 +157,7 @@ func (c *Controller) handleUpdateVpcStatus(key string) error {
156
157
157
158
vpc .Status .DefaultLogicalSwitch = defaultSubnet
158
159
vpc .Status .Subnets = subnets
160
+
159
161
if ! vpc .Spec .BFDPort .IsEnabled () && ! vpc .Status .BFDPort .IsEmpty () {
160
162
vpc .Status .BFDPort .Clear ()
161
163
}
@@ -170,6 +172,12 @@ func (c *Controller) handleUpdateVpcStatus(key string) error {
170
172
klog .Error (err )
171
173
return err
172
174
}
175
+
176
+ if len (vpc .Status .Subnets ) == 0 {
177
+ klog .Infof ("vpc %s has no subnets, add to queue" , vpc .Name )
178
+ c .addOrUpdateVpcQueue .Add (vpc .Name )
179
+ }
180
+
173
181
if change {
174
182
for _ , ns := range vpc .Spec .Namespaces {
175
183
c .addNamespaceQueue .Add (ns )
@@ -262,6 +270,7 @@ func (c *Controller) handleAddOrUpdateVpc(key string) error {
262
270
klog .Errorf ("failed to format vpc %s: %v" , key , err )
263
271
return err
264
272
}
273
+
265
274
if err = c .createVpcRouter (key ); err != nil {
266
275
klog .Errorf ("failed to create vpc router for vpc %s: %v" , key , err )
267
276
return err
@@ -1094,6 +1103,16 @@ func (c *Controller) formatVpc(vpc *kubeovnv1.Vpc) (*kubeovnv1.Vpc, error) {
1094
1103
}
1095
1104
}
1096
1105
1106
+ if vpc .DeletionTimestamp .IsZero () && ! slices .Contains (vpc .GetFinalizers (), util .KubeOVNControllerFinalizer ) {
1107
+ controllerutil .AddFinalizer (vpc , util .KubeOVNControllerFinalizer )
1108
+ changed = true
1109
+ }
1110
+
1111
+ if ! vpc .DeletionTimestamp .IsZero () && len (vpc .Status .Subnets ) == 0 {
1112
+ controllerutil .RemoveFinalizer (vpc , util .KubeOVNControllerFinalizer )
1113
+ changed = true
1114
+ }
1115
+
1097
1116
if changed {
1098
1117
newVpc , err := c .config .KubeOvnClient .KubeovnV1 ().Vpcs ().Update (context .Background (), vpc , metav1.UpdateOptions {})
1099
1118
if err != nil {
0 commit comments