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 28, 2024
1 parent 9b183d2 commit 94041b1
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 23 deletions.
2 changes: 1 addition & 1 deletion dist/images/Dockerfile.base
Expand Up @@ -44,7 +44,7 @@ RUN cd /usr/src/ && git clone -b branch-22.12 --depth=1 https://github.com/ovn-o
# ovn-controller: do not send GARP on localnet for Kube-OVN ports
curl -s https://github.com/kubeovn/ovn/commit/8af8751cdb55f582c675db921f2526b06fd3d8c0.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
17 changes: 8 additions & 9 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
Expand Up @@ -1885,7 +1885,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
Expand Up @@ -60,7 +60,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
SetLogicalSwitchPortSecurity(portSecurity bool, lspName, mac, ips, vips string) error
SetLogicalSwitchPortVirtualParents(lsName, parents string, ips ...string) error
Expand Down
29 changes: 24 additions & 5 deletions pkg/ovs/ovn-nb-logical_switch_port.go
Expand Up @@ -3,6 +3,7 @@ package ovs
import (
"context"
"fmt"
"reflect"
"strconv"
"strings"

Expand Down Expand Up @@ -116,27 +117,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
14 changes: 9 additions & 5 deletions pkg/ovs/ovn-nb-logical_switch_port_test.go
Expand Up @@ -215,7 +215,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 @@ -226,13 +226,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 @@ -243,11 +245,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
2 changes: 1 addition & 1 deletion pkg/ovs/ovn-nb.go
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 94041b1

Please sign in to comment.