Skip to content

Commit

Permalink
bump libovsdb (#3731)
Browse files Browse the repository at this point in the history
Signed-off-by: zhangzujian <[email protected]>
  • Loading branch information
zhangzujian committed Feb 19, 2024
1 parent b98d6ce commit d265d78
Show file tree
Hide file tree
Showing 22 changed files with 614 additions and 574 deletions.
6 changes: 3 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ require (
github.com/emicklei/go-restful/v3 v3.11.2
github.com/evanphx/json-patch/v5 v5.9.0
github.com/go-logr/stdr v1.2.2
github.com/google/uuid v1.6.0
github.com/greenpau/ovsdb v1.0.3
github.com/k8snetworkplumbingwg/network-attachment-definition-client v1.4.0
github.com/k8snetworkplumbingwg/sriovnet v1.2.0
Expand All @@ -35,7 +36,6 @@ require (
github.com/stretchr/testify v1.8.4
github.com/vishvananda/netlink v1.2.1-beta.2
go.uber.org/mock v0.4.0
golang.org/x/exp v0.0.0-20240213143201-ec583247a57a
golang.org/x/mod v0.15.0
golang.org/x/sys v0.17.0
golang.org/x/time v0.5.0
Expand Down Expand Up @@ -136,7 +136,6 @@ require (
github.com/google/pprof v0.0.0-20231205033806-a5a03c77bf08 // indirect
github.com/google/s2a-go v0.1.7 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
github.com/google/uuid v1.5.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
github.com/gopherjs/gopherjs v1.17.2 // indirect
Expand Down Expand Up @@ -234,6 +233,7 @@ require (
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.26.0 // indirect
golang.org/x/crypto v0.19.0 // indirect
golang.org/x/exp v0.0.0-20240213143201-ec583247a57a // indirect
golang.org/x/net v0.21.0 // indirect
golang.org/x/oauth2 v0.17.0 // indirect
golang.org/x/sync v0.6.0 // indirect
Expand Down Expand Up @@ -288,7 +288,7 @@ replace (
github.com/greenpau/ovsdb => github.com/kubeovn/ovsdb v0.0.0-20221213053943-9372db56919f
github.com/mdlayher/arp => github.com/kubeovn/arp v0.0.0-20230101053045-8a0772d9c34c
github.com/openshift/client-go => github.com/openshift/client-go v0.0.1
github.com/ovn-org/libovsdb => github.com/kubeovn/libovsdb v0.0.0-20231209085152-808225c763d2
github.com/ovn-org/libovsdb => github.com/kubeovn/libovsdb v0.0.0-20240218023647-f0bc3ce57fcd
github.com/vishvananda/netlink => github.com/kubeovn/netlink v0.0.0-20231209083855-5aa6b7ec69db
k8s.io/api => k8s.io/api v0.28.7
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.28.7
Expand Down
8 changes: 4 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1277,8 +1277,8 @@ github.com/google/uuid v1.1.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg=
Expand Down Expand Up @@ -1502,8 +1502,8 @@ github.com/kubeovn/gonetworkmanager/v2 v2.0.0-20230905082151-e28c4d73a589 h1:y9e
github.com/kubeovn/gonetworkmanager/v2 v2.0.0-20230905082151-e28c4d73a589/go.mod h1:49upX+/hUyppWIqu58cumojyIwXdkA8k6reA/mQlKuI=
github.com/kubeovn/kubevirt-client-go v0.0.0-20230824060608-c0b4509b6928 h1:ASa4j2h2jUstenFf64HfASHJLXHCKDRWsE4/2ZrxypE=
github.com/kubeovn/kubevirt-client-go v0.0.0-20230824060608-c0b4509b6928/go.mod h1:Zi7yR8JrLttxQvCLhl2qgLRejwMMUXvP0JcYnCGCm1k=
github.com/kubeovn/libovsdb v0.0.0-20231209085152-808225c763d2 h1:QLulBZARt5l74SWxT+TSyFd2ERAfSZjnbVqP/+DkYSQ=
github.com/kubeovn/libovsdb v0.0.0-20231209085152-808225c763d2/go.mod h1:u3l/31rCmkSHkbDyOl6MDLrsezMm9zm1T10f1v64dhk=
github.com/kubeovn/libovsdb v0.0.0-20240218023647-f0bc3ce57fcd h1:GhgvSBFKEkVNgDq8IslC04NVuoznreZH/Imz/cr6bhs=
github.com/kubeovn/libovsdb v0.0.0-20240218023647-f0bc3ce57fcd/go.mod h1:pTnlGt1JZrncr6pJn/Fhnp3FFTMQRaTVxiSKBLVGa5s=
github.com/kubeovn/netlink v0.0.0-20231209083855-5aa6b7ec69db h1:ZAJlnKa9PmbtwPV4v7d3WceMGcP86ibk9k5PMMjoOkg=
github.com/kubeovn/netlink v0.0.0-20231209083855-5aa6b7ec69db/go.mod h1:0QQVM/KWyMo/++lyr/YrAF8n7iUvPViPFt8w4Ggb9yI=
github.com/kubeovn/ovsdb v0.0.0-20221213053943-9372db56919f h1:nm0ZlQesCje/A5D0LyWfaSUM8/0ro9PVpwd8hVbLBeM=
Expand Down
21 changes: 18 additions & 3 deletions pkg/ovs/ovn-nb-acl_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1420,7 +1420,13 @@ func (suite *OvnClientTestSuite) testGetACL() {
priority := "2000"
match := "ip4.dst == 100.64.0.0/16"

err := ovnClient.CreateBareACL(pgName, ovnnb.ACLDirectionToLport, priority, match, ovnnb.ACLActionAllowRelated)
err := ovnClient.CreatePortGroup(pgName, nil)
require.NoError(t, err)

acl, err := ovnClient.newACL(pgName, ovnnb.ACLDirectionToLport, priority, match, ovnnb.ACLActionAllowRelated)
require.NoError(t, err)

err = ovnClient.CreateAcls(pgName, portGroupKey, acl)
require.NoError(t, err)

t.Run("direction, priority and match are same", func(t *testing.T) {
Expand Down Expand Up @@ -1469,18 +1475,27 @@ func (suite *OvnClientTestSuite) testListAcls() {
pgName := "test-list-acl-pg"
basePort := 50000

err := ovnClient.CreatePortGroup(pgName, nil)
require.NoError(t, err)

matchPrefix := "outport == @ovn.sg.test_list_acl_pg && ip"
// create two to-lport acl
for i := 0; i < 2; i++ {
match := fmt.Sprintf("%s && tcp.dst == %d", matchPrefix, basePort+i)
err := ovnClient.CreateBareACL(pgName, ovnnb.ACLDirectionToLport, "9999", match, ovnnb.ACLActionAllowRelated)
acl, err := ovnClient.newACL(pgName, ovnnb.ACLDirectionToLport, "9999", match, ovnnb.ACLActionAllowRelated)
require.NoError(t, err)

err = ovnClient.CreateAcls(pgName, portGroupKey, acl)
require.NoError(t, err)
}

// create two from-lport acl
for i := 0; i < 3; i++ {
match := fmt.Sprintf("%s && tcp.dst == %d", matchPrefix, basePort+i)
err := ovnClient.CreateBareACL(pgName, ovnnb.ACLDirectionFromLport, "9999", match, ovnnb.ACLActionAllowRelated)
acl, err := ovnClient.newACL(pgName, ovnnb.ACLDirectionFromLport, "9999", match, ovnnb.ACLActionAllowRelated)
require.NoError(t, err)

err = ovnClient.CreateAcls(pgName, portGroupKey, acl)
require.NoError(t, err)
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/ovs/ovn-nb-bfd_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ func (suite *OvnClientTestSuite) testDeleteBFD() {
t.Parallel()

ovnClient := suite.ovnClient
lrpName := "test-list-bfd"
lrpName := "test-del-bfd"
dstIP1 := "192.168.124.4"
dstIP2 := "192.168.124.5"
minRx1, minTx1, detectMult1 := 101, 102, 19
Expand Down
36 changes: 23 additions & 13 deletions pkg/ovs/ovn-nb-gateway_chassis.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,22 +53,33 @@ func (c *OVNNbClient) DeleteGatewayChassises(lrpName string, chassises []string)
return nil
}

ops := make([]ovsdb.Operation, 0, len(chassises))
lrp, err := c.GetLogicalRouterPort(lrpName, false)
if err != nil {
klog.Error(err)
return err
}

ops := make([]ovsdb.Operation, 0, len(chassises)*2)
for _, chassisName := range chassises {
gwChassisName := lrpName + "-" + chassisName
op, err := c.DeleteGatewayChassisOp(gwChassisName)
uuid, delOps, err := c.DeleteGatewayChassisOp(gwChassisName)
if err != nil {
klog.Error(err)
return nil
}

// ignore non-existent object
if len(op) == 0 {
continue
mutateOps, err := c.Where(lrp).Mutate(lrp, model.Mutation{
Field: &lrp.GatewayChassis,
Value: []string{uuid},
Mutator: ovsdb.MutateOperationDelete,
})
if err != nil {
klog.Error(err)
return nil
}

ops = append(ops, op...)
ops = append(ops, mutateOps...)
ops = append(ops, delOps...)
}

if err := c.Transact("gateway-chassises-delete", ops); err != nil {
Expand Down Expand Up @@ -203,23 +214,22 @@ func (c *OVNNbClient) CreateGatewayChassisesOp(lrpName string, chassises []strin
}

// DeleteGatewayChassisOp create operation which delete gateway chassis
func (c *OVNNbClient) DeleteGatewayChassisOp(chassisName string) ([]ovsdb.Operation, error) {
func (c *OVNNbClient) DeleteGatewayChassisOp(chassisName string) (uuid string, ops []ovsdb.Operation, err error) {
gwChassis, err := c.GetGatewayChassis(chassisName, true)
if err != nil {
klog.Error(err)
return nil, err
return "", nil, err
}

// not found, skip
if gwChassis == nil {
return nil, nil
return "", nil, nil
}

op, err := c.Where(gwChassis).Delete()
if err != nil {
if ops, err = c.Where(gwChassis).Delete(); err != nil {
klog.Error(err)
return nil, err
return "", nil, err
}

return op, nil
return gwChassis.UUID, ops, nil
}
60 changes: 28 additions & 32 deletions pkg/ovs/ovn-nb-gateway_chassis_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,39 +4,37 @@ import (
"github.com/ovn-org/libovsdb/ovsdb"
"github.com/stretchr/testify/require"

ovsclient "github.com/kubeovn/kube-ovn/pkg/ovsdb/client"
"github.com/kubeovn/kube-ovn/pkg/ovsdb/ovnnb"
"github.com/kubeovn/kube-ovn/pkg/util"
)

func (suite *OvnClientTestSuite) testCreateGatewayChassises() {
t := suite.T()
t.Parallel()

ovnClient := suite.ovnClient
lrName := "test-create-gateway-chassises-lr"
lrpName := "test-create-gateway-chassises-lrp"
chassises := []string{"c7efec70-9519-4b03-8b67-057f2a95e5c7", "4a0891b6-fe81-4986-a367-aad0ea7ca9f3", "dcc2eda3-b3ea-4d53-afe0-7b6eaf7917ba"}

lrp := &ovnnb.LogicalRouterPort{
UUID: ovsclient.NamedUUID(),
Name: "test-create-gateway-chassises",
ExternalIDs: map[string]string{
"vendor": util.CniTypeName,
},
}
err := ovnClient.CreateLogicalRouter(lrName)
require.NoError(t, err)

err := createLogicalRouterPort(ovnClient, lrp)
err = ovnClient.CreateLogicalRouterPort(lrName, lrpName, "00:11:22:37:af:62", []string{"fd00::c0a8:1001/120"})
require.NoError(t, err)

err = ovnClient.CreateGatewayChassises(lrp.Name, chassises...)
err = ovnClient.CreateGatewayChassises(lrpName, chassises...)
require.NoError(t, err)

lrp, err = ovnClient.GetLogicalRouterPort(lrp.Name, false)
lrp, err := ovnClient.GetLogicalRouterPort(lrpName, false)
require.NoError(t, err)
require.NotNil(t, lrp)
require.Len(t, lrp.GatewayChassis, len(chassises))

for i, chassisName := range chassises {
gwChassisName := lrp.Name + "-" + chassisName
gwChassis, err := ovnClient.GetGatewayChassis(gwChassisName, false)
require.NoError(t, err)
require.NotNil(t, gwChassis)
require.Equal(t, gwChassisName, gwChassis.Name)
require.Equal(t, chassisName, gwChassis.ChassisName)
require.Equal(t, 100-i, gwChassis.Priority)
Expand All @@ -49,18 +47,14 @@ func (suite *OvnClientTestSuite) testDeleteGatewayChassises() {
t.Parallel()

ovnClient := suite.ovnClient
lrName := "test-gateway-chassis-del-lr"
lrpName := "test-gateway-chassis-del-lrp"
chassises := []string{"ea8368a0-28cd-4549-9da5-a7ea67262619", "b25ffb94-8b32-4c7e-b5b0-0f343bf6bdd8", "62265268-8af7-4b36-a550-ab5ad38375e3"}

lrp := &ovnnb.LogicalRouterPort{
UUID: ovsclient.NamedUUID(),
Name: lrpName,
ExternalIDs: map[string]string{
"vendor": util.CniTypeName,
},
}
err := ovnClient.CreateLogicalRouter(lrName)
require.NoError(t, err)

err := createLogicalRouterPort(ovnClient, lrp)
err = ovnClient.CreateLogicalRouterPort(lrName, lrpName, "00:11:22:37:af:62", []string{"fd00::c0a8:1001/120"})
require.NoError(t, err)

err = ovnClient.CreateGatewayChassises(lrpName, chassises...)
Expand All @@ -69,6 +63,11 @@ func (suite *OvnClientTestSuite) testDeleteGatewayChassises() {
err = ovnClient.DeleteGatewayChassises(lrpName, append(chassises, "73bbe5d4-2b9b-47d0-aba8-94e86941881a"))
require.NoError(t, err)

lrp, err := ovnClient.GetLogicalRouterPort(lrpName, false)
require.NoError(t, err)
require.NotNil(t, lrp)
require.Len(t, lrp.GatewayChassis, 0)

for _, chassisName := range chassises {
gwChassisName := lrpName + "-" + chassisName
_, err := ovnClient.GetGatewayChassis(gwChassisName, false)
Expand All @@ -81,19 +80,15 @@ func (suite *OvnClientTestSuite) testDeleteGatewayChassisOp() {
t.Parallel()

ovnClient := suite.ovnClient
lrName := "test-gateway-chassis-del-op-lr"
lrpName := "test-gateway-chassis-del-op-lrp"
chassis := "6c322ce8-02b7-42b3-925b-ae24020272a9"
gwChassisName := lrpName + "-" + chassis

lrp := &ovnnb.LogicalRouterPort{
UUID: ovsclient.NamedUUID(),
Name: lrpName,
ExternalIDs: map[string]string{
"vendor": util.CniTypeName,
},
}
err := ovnClient.CreateLogicalRouter(lrName)
require.NoError(t, err)

err := createLogicalRouterPort(ovnClient, lrp)
err = ovnClient.CreateLogicalRouterPort(lrName, lrpName, "00:11:22:37:af:62", []string{"fd00::c0a8:1001/120"})
require.NoError(t, err)

err = ovnClient.CreateGatewayChassises(lrpName, chassis)
Expand All @@ -102,18 +97,19 @@ func (suite *OvnClientTestSuite) testDeleteGatewayChassisOp() {
gwChassis, err := ovnClient.GetGatewayChassis(gwChassisName, false)
require.NoError(t, err)

ops, err := ovnClient.DeleteGatewayChassisOp(gwChassisName)
uuid, ops, err := ovnClient.DeleteGatewayChassisOp(gwChassisName)
require.NoError(t, err)
require.Equal(t, gwChassis.UUID, uuid)
require.Len(t, ops, 1)

require.Equal(t,
ovsdb.Operation{
Op: "delete",
Table: "Gateway_Chassis",
Op: ovsdb.OperationDelete,
Table: ovnnb.GatewayChassisTable,
Where: []ovsdb.Condition{
{
Column: "_uuid",
Function: "==",
Function: ovsdb.ConditionEqual,
Value: ovsdb.UUID{
GoUUID: gwChassis.UUID,
},
Expand Down
2 changes: 1 addition & 1 deletion pkg/ovs/ovn-nb-load_balancer.go
Original file line number Diff line number Diff line change
Expand Up @@ -558,7 +558,7 @@ func (c *OVNNbClient) LoadBalancerDeleteHealthCheck(lbName, uuid string) error {
if len(ops) == 0 {
return nil
}
if err = c.Transact("lb-del", ops); err != nil {
if err = c.Transact("lb-hc-del", ops); err != nil {
return fmt.Errorf("failed to delete health check %s from load balancers %s: %v", uuid, lbName, err)
}
}
Expand Down
Loading

0 comments on commit d265d78

Please sign in to comment.