Skip to content

Commit

Permalink
ovn: update patch for skipping ct (#3879)
Browse files Browse the repository at this point in the history
Signed-off-by: zhangzujian <zhangzujian.7@gmail.com>
  • Loading branch information
zhangzujian committed Mar 27, 2024
1 parent 74fafdb commit b911689
Show file tree
Hide file tree
Showing 7 changed files with 48 additions and 23 deletions.
2 changes: 1 addition & 1 deletion dist/images/Dockerfile.base
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ RUN cd /usr/src/ && git clone -b branch-22.12 --depth=1 https://github.com/ovn-o
# fix lr-lb dnat with multiple distributed gateway ports
curl -s https://github.com/kubeovn/ovn/commit/80f37c2debbf9f5230403691f791d11cc2b2e277.patch | git apply && \
# lflow: do not send direct traffic between lports to conntrack
curl -s https://github.com/kubeovn/ovn/commit/6f1af045845deeabf06fdc7c90073e0a6874ab2f.patch | git apply && \
curl -s https://github.com/kubeovn/ovn/commit/54cbe0d1ba2051e640dd3e53498f373362547691.patch | git apply && \
# northd: add nb option version_compatibility
curl -s https://github.com/kubeovn/ovn/commit/174561abd707239f134501c4320cbf9b29af0305.patch | git apply

Expand Down
16 changes: 8 additions & 8 deletions mocks/pkg/ovs/interface.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pkg/controller/subnet.go
Original file line number Diff line number Diff line change
Expand Up @@ -1873,7 +1873,7 @@ func (c *Controller) reconcileVlan(subnet *kubeovnv1.Subnet) error {
}

localnetPort := ovs.GetLocalnetName(subnet.Name)
if err := c.OVNNbClient.CreateLocalnetLogicalSwitchPort(subnet.Name, localnetPort, vlan.Spec.Provider, vlan.Spec.ID); err != nil {
if err := c.OVNNbClient.CreateLocalnetLogicalSwitchPort(subnet.Name, localnetPort, vlan.Spec.Provider, subnet.Spec.CIDRBlock, vlan.Spec.ID); err != nil {
klog.Errorf("create localnet port for subnet %s: %v", subnet.Name, err)
return err
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/ovs/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ type LogicalSwitch interface {
type LogicalSwitchPort interface {
CreateLogicalSwitchPort(lsName, lspName, ip, mac, podName, namespace string, portSecurity bool, securityGroups, vips string, enableDHCP bool, dhcpOptions *DHCPOptionsUUIDs, vpc string) error
CreateBareLogicalSwitchPort(lsName, lspName, ip, mac string) error
CreateLocalnetLogicalSwitchPort(lsName, lspName, provider string, vlanID int) error
CreateLocalnetLogicalSwitchPort(lsName, lspName, provider, cidrBlock string, vlanID int) error
CreateVirtualLogicalSwitchPorts(lsName string, ips ...string) error
// create virtual type logical switch port for allowed-address-pair
CreateVirtualLogicalSwitchPort(lspName, lsName, ip string) error
Expand Down
29 changes: 24 additions & 5 deletions pkg/ovs/ovn-nb-logical_switch_port.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package ovs
import (
"context"
"fmt"
"reflect"
"slices"
"strconv"
"strings"
Expand Down Expand Up @@ -117,27 +118,45 @@ func (c *OVNNbClient) CreateLogicalSwitchPort(lsName, lspName, ip, mac, podName,
}

// CreateLocalnetLogicalSwitchPort create localnet type logical switch port
func (c *OVNNbClient) CreateLocalnetLogicalSwitchPort(lsName, lspName, provider string, vlanID int) error {
exist, err := c.LogicalSwitchPortExists(lspName)
func (c *OVNNbClient) CreateLocalnetLogicalSwitchPort(lsName, lspName, provider, cidrBlock string, vlanID int) error {
lsp, err := c.GetLogicalSwitchPort(lspName, true)
if err != nil {
klog.Error(err)
return err
}

// ignore
if exist {
ipv4CIDR, ipv6CIDR := util.SplitStringIP(cidrBlock)
externalIDs := make(map[string]string)
if ipv4CIDR != "" {
externalIDs["ipv4_network"] = ipv4CIDR
}
if ipv6CIDR != "" {
externalIDs["ipv6_network"] = ipv6CIDR
}

if lsp != nil {
externalIDs[logicalSwitchKey] = lsName
externalIDs["vendor"] = util.CniTypeName
if !reflect.DeepEqual(lsp.ExternalIDs, externalIDs) {
lsp.ExternalIDs = externalIDs
if err = c.UpdateLogicalSwitchPort(lsp, &lsp.ExternalIDs); err != nil {
return fmt.Errorf("failed to update external-ids of logical switch port %s: %v", lspName, err)
}
}

return nil
}

/* create logical switch port */
lsp := &ovnnb.LogicalSwitchPort{
lsp = &ovnnb.LogicalSwitchPort{
UUID: ovsclient.NamedUUID(),
Name: lspName,
Type: "localnet",
Addresses: []string{"unknown"},
Options: map[string]string{
"network_name": provider,
},
ExternalIDs: externalIDs,
}

if vlanID > 0 && vlanID < 4096 {
Expand Down
18 changes: 12 additions & 6 deletions pkg/ovs/ovn-nb-logical_switch_port_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ func (suite *OvnClientTestSuite) testCreateLocalnetLogicalSwitchPort() {
require.NoError(t, err)

t.Run("create localnet logical switch port with vlan id", func(t *testing.T) {
err = ovnClient.CreateLocalnetLogicalSwitchPort(lsName, lspName, provider, 200)
err = ovnClient.CreateLocalnetLogicalSwitchPort(lsName, lspName, provider, "192.168.0.0/24,fd00::/120", 200)
require.NoError(t, err)

lsp, err := ovnClient.GetLogicalSwitchPort(lspName, false)
Expand All @@ -221,13 +221,15 @@ func (suite *OvnClientTestSuite) testCreateLocalnetLogicalSwitchPort() {
require.Equal(t, map[string]string{
"network_name": provider,
}, lsp.Options)

require.Equal(t, "192.168.0.0/24", lsp.ExternalIDs["ipv4_network"])
require.Equal(t, "fd00::/120", lsp.ExternalIDs["ipv6_network"])
require.NotNil(t, lsp.Tag)
require.Equal(t, 200, *lsp.Tag)
})

t.Run("create localnet logical switch port without vlan id", func(t *testing.T) {
lspName := "test-create-localnet-port-lsp-no-vlan-id"
err = ovnClient.CreateLocalnetLogicalSwitchPort(lsName, lspName, provider, 0)
err = ovnClient.CreateLocalnetLogicalSwitchPort(lsName, lspName, provider, "192.168.1.0/24,fd01::/120", 0)
require.NoError(t, err)

lsp, err := ovnClient.GetLogicalSwitchPort(lspName, false)
Expand All @@ -238,11 +240,13 @@ func (suite *OvnClientTestSuite) testCreateLocalnetLogicalSwitchPort() {
require.Equal(t, map[string]string{
"network_name": provider,
}, lsp.Options)
require.Empty(t, lsp.Tag)
require.Equal(t, "192.168.1.0/24", lsp.ExternalIDs["ipv4_network"])
require.Equal(t, "fd01::/120", lsp.ExternalIDs["ipv6_network"])
require.Nil(t, lsp.Tag)
})

t.Run("should no err when create logical switch port repeatedly", func(t *testing.T) {
err = ovnClient.CreateLocalnetLogicalSwitchPort(lsName, lspName, "external", 0)
err = ovnClient.CreateLocalnetLogicalSwitchPort(lsName, lspName, "external", "192.168.2.0/24,fd02::/120", 0)
require.NoError(t, err)
})
}
Expand Down Expand Up @@ -914,7 +918,7 @@ func (suite *OvnClientTestSuite) testSetLogicalSwitchPortVlanTag() {
err := ovnClient.CreateBareLogicalSwitch(lsName)
require.NoError(t, err)

err = ovnClient.CreateLocalnetLogicalSwitchPort(lsName, lspName, "provider", vlanID)
err = ovnClient.CreateLocalnetLogicalSwitchPort(lsName, lspName, "provider", "192.168.3.0/24,fd03::/120", vlanID)
require.NoError(t, err)

lsp, err := ovnClient.GetLogicalSwitchPort(lspName, false)
Expand All @@ -924,6 +928,8 @@ func (suite *OvnClientTestSuite) testSetLogicalSwitchPortVlanTag() {
require.Equal(t, vlanID, *lsp.Tag)
require.NotEmpty(t, lsp.ExternalIDs)
require.Equal(t, util.CniTypeName, lsp.ExternalIDs["vendor"])
require.Equal(t, "192.168.3.0/24", lsp.ExternalIDs["ipv4_network"])
require.Equal(t, "fd03::/120", lsp.ExternalIDs["ipv6_network"])

t.Run("clear logical switch port vlan id", func(t *testing.T) {
err = ovnClient.SetLogicalSwitchPortVlanTag(lspName, 0)
Expand Down
2 changes: 1 addition & 1 deletion pkg/ovs/ovn-nb.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ func (c *OVNNbClient) CreateGatewayLogicalSwitch(lsName, lrName, provider, ip, m
return fmt.Errorf("create logical switch %s: %v", lsName, err)
}

if err := c.CreateLocalnetLogicalSwitchPort(lsName, localnetLspName, provider, vlanID); err != nil {
if err := c.CreateLocalnetLogicalSwitchPort(lsName, localnetLspName, provider, "", vlanID); err != nil {
return fmt.Errorf("create localnet logical switch port %s: %v", localnetLspName, err)
}

Expand Down

0 comments on commit b911689

Please sign in to comment.