The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/7726
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) === - OVS command wrapper function naming consistency and efficiency. - Import ordering. - Doc typo.
From 20f252e907a7efec64a87fd4276c7860c2d0be4c Mon Sep 17 00:00:00 2001 From: Thomas Parrott <thomas.parr...@canonical.com> Date: Tue, 4 Aug 2020 12:26:06 +0100 Subject: [PATCH 1/6] doc/networks: Fixes typo in bridge docs Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com> --- doc/networks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/networks.md b/doc/networks.md index 23d4ea2770..e33e7b5ab4 100644 --- a/doc/networks.md +++ b/doc/networks.md @@ -68,7 +68,7 @@ bridge.hwaddr | string | - | - bridge.mode | string | - | standard | Bridge operation mode ("standard" or "fan") bridge.mtu | integer | - | 1500 | Bridge MTU (default varies if tunnel or fan setup) dns.domain | string | - | lxd | Domain to advertise to DHCP clients and use for DNS resolution -dns.search | string | - | - | Full comma eparate domain search list, defaulting to dns.domain +dns.search | string | - | - | Full comma separated domain search list, defaulting to dns.domain dns.mode | string | - | managed | DNS registration mode ("none" for no DNS record, "managed" for LXD generated static records or "dynamic" for client generated records) fan.overlay\_subnet | string | fan mode | 240.0.0.0/8 | Subnet to use as the overlay for the FAN (CIDR notation) fan.type | string | fan mode | vxlan | The tunneling type for the FAN ("vxlan" or "ipip") From 3263e271e165959f2fc359664d0c9308cc563128 Mon Sep 17 00:00:00 2001 From: Thomas Parrott <thomas.parr...@canonical.com> Date: Tue, 4 Aug 2020 16:11:15 +0100 Subject: [PATCH 2/6] lxd/cluster/config: Fix import ordering of external package Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com> --- lxd/cluster/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lxd/cluster/config.go b/lxd/cluster/config.go index 479f28836e..05e7969e14 100644 --- a/lxd/cluster/config.go +++ b/lxd/cluster/config.go @@ -10,11 +10,11 @@ import ( "time" "github.com/kballard/go-shellquote" + "github.com/pkg/errors" "golang.org/x/crypto/scrypt" "github.com/lxc/lxd/lxd/config" "github.com/lxc/lxd/lxd/db" - "github.com/pkg/errors" ) // Config holds cluster-wide configuration values. From 7a9c38d637434badaee4b986afbbeecc4e876f4c Mon Sep 17 00:00:00 2001 From: Thomas Parrott <thomas.parr...@canonical.com> Date: Wed, 5 Aug 2020 15:53:13 +0100 Subject: [PATCH 3/6] lxd/network/openvswitch: Name functions consistently using ObjectAction format - Also add mayExist argument. - Use more efficient detection of missing objects. Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com> --- lxd/network/openvswitch/ovs.go | 50 ++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/lxd/network/openvswitch/ovs.go b/lxd/network/openvswitch/ovs.go index cd385045b8..306629dad1 100644 --- a/lxd/network/openvswitch/ovs.go +++ b/lxd/network/openvswitch/ovs.go @@ -45,8 +45,16 @@ func (o *OVS) BridgeExists(bridgeName string) (bool, error) { } // BridgeAdd adds an OVS bridge. -func (o *OVS) BridgeAdd(bridgeName string) error { - _, err := shared.RunCommand("ovs-vsctl", "add-br", bridgeName) +func (o *OVS) BridgeAdd(bridgeName string, mayExist bool) error { + args := []string{} + + if mayExist { + args = append(args, "--may-exist") + } + + args = append(args, "add-br", bridgeName) + + _, err := shared.RunCommand("ovs-vsctl", args...) if err != nil { return err } @@ -64,36 +72,36 @@ func (o *OVS) BridgeDelete(bridgeName string) error { return nil } -// BridgeAddPort adds a port to the bridge (if already attached does nothing). -func (o *OVS) BridgeAddPort(bridgeName string, portName string) error { - // Check if interface is already connected to a bridge, if not, connect it to the specified bridge. - _, err := shared.RunCommand("ovs-vsctl", "port-to-br", portName) +// BridgePortAdd adds a port to the bridge (if already attached does nothing). +func (o *OVS) BridgePortAdd(bridgeName string, portName string, mayExist bool) error { + args := []string{} + + if mayExist { + args = append(args, "--may-exist") + } + + args = append(args, "add-port", bridgeName, portName) + + _, err := shared.RunCommand("ovs-vsctl", args...) if err != nil { - _, err := shared.RunCommand("ovs-vsctl", "add-port", bridgeName, portName) - if err != nil { - return err - } + return err } return nil } -// BridgeDeletePort deletes a port from the bridge (if already deteached does nothing). -func (o *OVS) BridgeDeletePort(bridgeName string, portName string) error { - // Check if interface is connected to a bridge, if so, then remove it from the bridge. - _, err := shared.RunCommand("ovs-vsctl", "port-to-br", portName) - if err == nil { - _, err := shared.RunCommand("ovs-vsctl", "del-port", bridgeName, portName) - if err != nil { - return err - } +// BridgePortDelete deletes a port from the bridge (if already detached does nothing). +func (o *OVS) BridgePortDelete(bridgeName string, portName string) error { + _, err := shared.RunCommand("ovs-vsctl", "--if-exists", "del-port", bridgeName, portName) + if err != nil { + return err } return nil } -// PortSet sets port options. -func (o *OVS) PortSet(portName string, options ...string) error { +// BridgePortSet sets port options. +func (o *OVS) BridgePortSet(portName string, options ...string) error { _, err := shared.RunCommand("ovs-vsctl", append([]string{"set", "port", portName}, options...)...) if err != nil { return err From 4aef987962f04cad9429743f19c5a0bd2ce36a73 Mon Sep 17 00:00:00 2001 From: Thomas Parrott <thomas.parr...@canonical.com> Date: Wed, 5 Aug 2020 15:54:57 +0100 Subject: [PATCH 4/6] lxd/network/driver/bridge: OVS function naming usage Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com> --- lxd/network/driver_bridge.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lxd/network/driver_bridge.go b/lxd/network/driver_bridge.go index d705c4b3d4..82943e95f7 100644 --- a/lxd/network/driver_bridge.go +++ b/lxd/network/driver_bridge.go @@ -436,7 +436,7 @@ func (n *bridge) setup(oldConfig map[string]string) error { return fmt.Errorf("Open vSwitch isn't installed on this system") } - err := ovs.BridgeAdd(n.name) + err := ovs.BridgeAdd(n.name, false) if err != nil { return err } From 7697eec7df583467ad1112b37cf577254e2544b6 Mon Sep 17 00:00:00 2001 From: Thomas Parrott <thomas.parr...@canonical.com> Date: Wed, 5 Aug 2020 15:55:17 +0100 Subject: [PATCH 5/6] lxd/network/network/utils: OVS function naming usage Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com> --- lxd/network/network_utils.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lxd/network/network_utils.go b/lxd/network/network_utils.go index 65693a2345..cd221009f6 100644 --- a/lxd/network/network_utils.go +++ b/lxd/network/network_utils.go @@ -133,7 +133,7 @@ func AttachInterface(bridgeName string, devName string) error { } } else { ovs := openvswitch.NewOVS() - err := ovs.BridgeAddPort(bridgeName, devName) + err := ovs.BridgePortAdd(bridgeName, devName, true) if err != nil { return err } @@ -151,7 +151,7 @@ func DetachInterface(bridgeName string, devName string) error { } } else { ovs := openvswitch.NewOVS() - err := ovs.BridgeDeletePort(bridgeName, devName) + err := ovs.BridgePortDelete(bridgeName, devName) if err != nil { return err } From 596e8ad5a3dd75378cfb9ec76ad461eb4a06bcfe Mon Sep 17 00:00:00 2001 From: Thomas Parrott <thomas.parr...@canonical.com> Date: Wed, 5 Aug 2020 15:54:38 +0100 Subject: [PATCH 6/6] lxd/device/nic/bridged: OVS function naming usage Signed-off-by: Thomas Parrott <thomas.parr...@canonical.com> --- lxd/device/nic_bridged.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lxd/device/nic_bridged.go b/lxd/device/nic_bridged.go index 2124c1202f..b30ba66d91 100644 --- a/lxd/device/nic_bridged.go +++ b/lxd/device/nic_bridged.go @@ -1045,7 +1045,7 @@ func (d *nicBridged) setupOVSBridgePortVLANs(hostName string) error { // Order is important here, as vlan_mode is set to "access", assuming that vlan.tagged is not used. // If vlan.tagged is specified, then we expect it to also change the vlan_mode as needed. if d.config["vlan"] != "none" { - err := ovs.PortSet(hostName, "vlan_mode=access", fmt.Sprintf("tag=%s", d.config["vlan"])) + err := ovs.BridgePortSet(hostName, "vlan_mode=access", fmt.Sprintf("tag=%s", d.config["vlan"])) if err != nil { return err } @@ -1071,7 +1071,7 @@ func (d *nicBridged) setupOVSBridgePortVLANs(hostName string) error { // Also set the vlan_mode as needed from above. // Must come after the PortSet command used for setting "vlan" mode above so that the correct // vlan_mode is retained. - err := ovs.PortSet(hostName, fmt.Sprintf("vlan_mode=%s", vlanMode), fmt.Sprintf("trunks=%s", strings.Join(vlanIDs, ","))) + err := ovs.BridgePortSet(hostName, fmt.Sprintf("vlan_mode=%s", vlanMode), fmt.Sprintf("trunks=%s", strings.Join(vlanIDs, ","))) if err != nil { return err }
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel