Merge "atomically setup ovs ports"
This commit is contained in:
commit
22a311bd8d
@ -247,29 +247,25 @@ class OVSBridge(BaseOVS):
|
|||||||
def add_tunnel_port(self, port_name, remote_ip, local_ip,
|
def add_tunnel_port(self, port_name, remote_ip, local_ip,
|
||||||
tunnel_type=constants.TYPE_GRE,
|
tunnel_type=constants.TYPE_GRE,
|
||||||
vxlan_udp_port=constants.VXLAN_UDP_PORT):
|
vxlan_udp_port=constants.VXLAN_UDP_PORT):
|
||||||
self.run_vsctl(["--", "--may-exist", "add-port", self.br_name,
|
vsctl_command = ["--", "--may-exist", "add-port", self.br_name,
|
||||||
port_name])
|
port_name]
|
||||||
self.set_db_attribute("Interface", port_name, "type", tunnel_type)
|
vsctl_command.extend(["--", "set", "Interface", port_name,
|
||||||
|
"type=%s" % tunnel_type])
|
||||||
if tunnel_type == constants.TYPE_VXLAN:
|
if tunnel_type == constants.TYPE_VXLAN:
|
||||||
# Only set the VXLAN UDP port if it's not the default
|
# Only set the VXLAN UDP port if it's not the default
|
||||||
if vxlan_udp_port != constants.VXLAN_UDP_PORT:
|
if vxlan_udp_port != constants.VXLAN_UDP_PORT:
|
||||||
self.set_db_attribute("Interface", port_name,
|
vsctl_command.append("options:dst_port=%s" % vxlan_udp_port)
|
||||||
"options:dst_port",
|
vsctl_command.extend(["options:remote_ip=%s" % remote_ip,
|
||||||
vxlan_udp_port)
|
"options:local_ip=%s" % local_ip,
|
||||||
self.set_db_attribute("Interface", port_name, "options:remote_ip",
|
"options:in_key=flow",
|
||||||
remote_ip)
|
"options:out_key=flow"])
|
||||||
self.set_db_attribute("Interface", port_name, "options:local_ip",
|
self.run_vsctl(vsctl_command)
|
||||||
local_ip)
|
|
||||||
self.set_db_attribute("Interface", port_name, "options:in_key", "flow")
|
|
||||||
self.set_db_attribute("Interface", port_name, "options:out_key",
|
|
||||||
"flow")
|
|
||||||
return self.get_port_ofport(port_name)
|
return self.get_port_ofport(port_name)
|
||||||
|
|
||||||
def add_patch_port(self, local_name, remote_name):
|
def add_patch_port(self, local_name, remote_name):
|
||||||
self.run_vsctl(["add-port", self.br_name, local_name])
|
self.run_vsctl(["add-port", self.br_name, local_name,
|
||||||
self.set_db_attribute("Interface", local_name, "type", "patch")
|
"--", "set", "Interface", local_name,
|
||||||
self.set_db_attribute("Interface", local_name, "options:peer",
|
"type=patch", "options:peer=%s" % remote_name])
|
||||||
remote_name)
|
|
||||||
return self.get_port_ofport(local_name)
|
return self.get_port_ofport(local_name)
|
||||||
|
|
||||||
def db_get_map(self, table, record, column):
|
def db_get_map(self, table, record, column):
|
||||||
|
@ -293,31 +293,16 @@ class OVS_Lib_Test(base.BaseTestCase):
|
|||||||
local_ip = "1.1.1.1"
|
local_ip = "1.1.1.1"
|
||||||
remote_ip = "9.9.9.9"
|
remote_ip = "9.9.9.9"
|
||||||
ofport = "6"
|
ofport = "6"
|
||||||
|
command = ["ovs-vsctl", self.TO, '--', "--may-exist", "add-port",
|
||||||
|
self.BR_NAME, pname]
|
||||||
|
command.extend(["--", "set", "Interface", pname])
|
||||||
|
command.extend(["type=gre", "options:remote_ip=" + remote_ip,
|
||||||
|
"options:local_ip=" + local_ip,
|
||||||
|
"options:in_key=flow",
|
||||||
|
"options:out_key=flow"])
|
||||||
# Each element is a tuple of (expected mock call, return_value)
|
# Each element is a tuple of (expected mock call, return_value)
|
||||||
expected_calls_and_values = [
|
expected_calls_and_values = [
|
||||||
(mock.call(["ovs-vsctl", self.TO, '--', "--may-exist", "add-port",
|
(mock.call(command, root_helper=self.root_helper), None),
|
||||||
self.BR_NAME, pname], root_helper=self.root_helper),
|
|
||||||
None),
|
|
||||||
(mock.call(["ovs-vsctl", self.TO, "set", "Interface",
|
|
||||||
pname, "type=gre"], root_helper=self.root_helper),
|
|
||||||
None),
|
|
||||||
(mock.call(["ovs-vsctl", self.TO, "set", "Interface",
|
|
||||||
pname, "options:remote_ip=" + remote_ip],
|
|
||||||
root_helper=self.root_helper),
|
|
||||||
None),
|
|
||||||
(mock.call(["ovs-vsctl", self.TO, "set", "Interface",
|
|
||||||
pname, "options:local_ip=" + local_ip],
|
|
||||||
root_helper=self.root_helper),
|
|
||||||
None),
|
|
||||||
(mock.call(["ovs-vsctl", self.TO, "set", "Interface",
|
|
||||||
pname, "options:in_key=flow"],
|
|
||||||
root_helper=self.root_helper),
|
|
||||||
None),
|
|
||||||
(mock.call(["ovs-vsctl", self.TO, "set", "Interface",
|
|
||||||
pname, "options:out_key=flow"],
|
|
||||||
root_helper=self.root_helper),
|
|
||||||
None),
|
|
||||||
(mock.call(["ovs-vsctl", self.TO, "get",
|
(mock.call(["ovs-vsctl", self.TO, "get",
|
||||||
"Interface", pname, "ofport"],
|
"Interface", pname, "ofport"],
|
||||||
root_helper=self.root_helper),
|
root_helper=self.root_helper),
|
||||||
@ -337,16 +322,11 @@ class OVS_Lib_Test(base.BaseTestCase):
|
|||||||
ofport = "6"
|
ofport = "6"
|
||||||
|
|
||||||
# Each element is a tuple of (expected mock call, return_value)
|
# Each element is a tuple of (expected mock call, return_value)
|
||||||
|
command = ["ovs-vsctl", self.TO, "add-port", self.BR_NAME, pname]
|
||||||
|
command.extend(["--", "set", "Interface", pname])
|
||||||
|
command.extend(["type=patch", "options:peer=" + peer])
|
||||||
expected_calls_and_values = [
|
expected_calls_and_values = [
|
||||||
(mock.call(["ovs-vsctl", self.TO, "add-port",
|
(mock.call(command, root_helper=self.root_helper),
|
||||||
self.BR_NAME, pname], root_helper=self.root_helper),
|
|
||||||
None),
|
|
||||||
(mock.call(["ovs-vsctl", self.TO, "set", "Interface",
|
|
||||||
pname, "type=patch"], root_helper=self.root_helper),
|
|
||||||
None),
|
|
||||||
(mock.call(["ovs-vsctl", self.TO, "set",
|
|
||||||
"Interface", pname, "options:peer=" + peer],
|
|
||||||
root_helper=self.root_helper),
|
|
||||||
None),
|
None),
|
||||||
(mock.call(["ovs-vsctl", self.TO, "get",
|
(mock.call(["ovs-vsctl", self.TO, "get",
|
||||||
"Interface", pname, "ofport"],
|
"Interface", pname, "ofport"],
|
||||||
|
Loading…
Reference in New Issue
Block a user