Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ovn: update patch for skipping ct #3879

Merged
merged 1 commit into from
Mar 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading