4
4
"context"
5
5
"encoding/json"
6
6
"fmt"
7
+ "strconv"
7
8
8
9
k8serrors "k8s.io/apimachinery/pkg/api/errors"
9
10
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -14,6 +15,7 @@ import (
14
15
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
15
16
16
17
kubeovnv1 "github.com/kubeovn/kube-ovn/pkg/apis/kubeovn/v1"
18
+ "github.com/kubeovn/kube-ovn/pkg/ovsdb/ovnnb"
17
19
"github.com/kubeovn/kube-ovn/pkg/util"
18
20
)
19
21
@@ -251,8 +253,9 @@ func (c *Controller) handleAddOvnFip(key string) error {
251
253
return err
252
254
}
253
255
// ovn add fip
254
- if err = c .ovnLegacyClient .AddFipRule (vpcName , cachedEip .Status .V4Ip ,
255
- internalV4Ip , mac , cachedFip .Spec .IpName ); err != nil {
256
+ if err = c .ovnClient .AddNat (vpcName , ovnnb .NATTypeDNATAndSNAT , cachedEip .Status .V4Ip ,
257
+ internalV4Ip , mac , cachedFip .Spec .IpName ,
258
+ map [string ]string {"staleless" : strconv .FormatBool (c .ExternalGatewayType == kubeovnv1 .GWDistributedType )}); err != nil {
256
259
klog .Errorf ("failed to create v4 fip, %v" , err )
257
260
return err
258
261
}
@@ -327,8 +330,9 @@ func (c *Controller) handleUpdateOvnFip(key string) error {
327
330
return err
328
331
}
329
332
vpcName := subnet .Spec .Vpc
330
- if err = c .ovnLegacyClient .AddFipRule (vpcName , cachedEip .Status .V4Ip ,
331
- internalV4Ip , mac , cachedFip .Spec .IpName ); err != nil {
333
+ if err = c .ovnClient .AddNat (vpcName , ovnnb .NATTypeDNATAndSNAT , cachedEip .Status .V4Ip ,
334
+ internalV4Ip , mac , cachedFip .Spec .IpName ,
335
+ map [string ]string {"staleless" : strconv .FormatBool (c .ExternalGatewayType == kubeovnv1 .GWDistributedType )}); err != nil {
332
336
klog .Errorf ("failed to create v4 fip, %v" , err )
333
337
return err
334
338
}
@@ -347,13 +351,14 @@ func (c *Controller) handleUpdateOvnFip(key string) error {
347
351
// fip change eip
348
352
if c .ovnFipChangeEip (fip , cachedEip ) {
349
353
klog .V (3 ).Infof ("fip change ip, old ip '%s', new ip %s" , fip .Status .V4Ip , cachedEip .Status .V4Ip )
350
- if err = c .ovnLegacyClient . DeleteFipRule (vpcName , fip .Status .V4Ip , internalV4Ip ); err != nil {
354
+ if err = c .ovnClient . DeleteNat (vpcName , ovnnb . NATTypeDNATAndSNAT , fip .Status .V4Ip , internalV4Ip ); err != nil {
351
355
klog .Errorf ("failed to create fip, %v" , err )
352
356
return err
353
357
}
354
358
// ovn add fip
355
- if err = c .ovnLegacyClient .AddFipRule (vpcName , cachedEip .Status .V4Ip ,
356
- internalV4Ip , mac , cachedFip .Spec .IpName ); err != nil {
359
+ if err = c .ovnClient .AddNat (vpcName , ovnnb .NATTypeDNATAndSNAT , cachedEip .Status .V4Ip ,
360
+ internalV4Ip , mac , cachedFip .Spec .IpName ,
361
+ map [string ]string {"staleless" : strconv .FormatBool (c .ExternalGatewayType == kubeovnv1 .GWDistributedType )}); err != nil {
357
362
klog .Errorf ("failed to create fip, %v" , err )
358
363
return err
359
364
}
@@ -395,7 +400,7 @@ func (c *Controller) handleDelOvnFip(key string) error {
395
400
}
396
401
// ovn delete fip
397
402
if cachedFip .Status .Vpc != "" && cachedFip .Status .V4Eip != "" && cachedFip .Status .V4Ip != "" {
398
- if err = c .ovnLegacyClient . DeleteFipRule (cachedFip .Status .Vpc , cachedFip .Status .V4Eip , cachedFip .Status .V4Ip ); err != nil {
403
+ if err = c .ovnClient . DeleteNat (cachedFip .Status .Vpc , ovnnb . NATTypeDNATAndSNAT , cachedFip .Status .V4Eip , cachedFip .Status .V4Ip ); err != nil {
399
404
klog .Errorf ("failed to delete fip, %v" , err )
400
405
return err
401
406
}
0 commit comments