On Thu, Jul 14, 2016 at 7:26 PM, Daniele Di Proietto <diproiet...@ovn.org> wrote:
> Thanks Darrell, this looks good to me, but I'm not familiar with every > aspect of ovs-vtep. > > I'm mostly interested in this patch because it fixes an intermittent > failure of the testcase "ovn-controller-vtep - vtep-macs 1". > > Russell (since you commented on v1), does this look good to you? > > I'm not super familiar with ovs-vtep, either. This patch looks straight forward enough to me, though. Acked-by: Russell Bryant <russ...@ovn.org> > Thanks, > > Daniele > > 2016-07-14 14:59 GMT-07:00 Darrell Ball <dlu...@gmail.com>: > >> Presently, ovs-vtep expects the datapath tunnel key to be available >> in the VTEP DB at startup. This may not be the case which is also >> observed as interrmittent unit test failures. This patch allows >> for the tunnel key to later appear in the VTEP database. >> >> Signed-off-by: Darrell Ball <dlu...@gmail.com> >> --- >> >> v1->v2: Cleanup the existing code with broken error handling. >> >> vtep/ovs-vtep | 28 ++++++++++++++-------------- >> 1 file changed, 14 insertions(+), 14 deletions(-) >> >> diff --git a/vtep/ovs-vtep b/vtep/ovs-vtep >> index e52c66f..b32a82a 100644 >> --- a/vtep/ovs-vtep >> +++ b/vtep/ovs-vtep >> @@ -91,7 +91,6 @@ class Logical_Switch(object): >> self.local_macs = set() >> self.remote_macs = {} >> self.unknown_dsts = set() >> - self.tunnel_key = 0 >> self.setup_ls() >> self.replication_mode = "service_node" >> >> @@ -99,16 +98,6 @@ class Logical_Switch(object): >> vlog.info("destroying lswitch %s" % self.name) >> >> def setup_ls(self): >> - column = vtep_ctl("--columns=tunnel_key find logical_switch " >> - "name=%s" % self.name) >> - tunnel_key = column.partition(":")[2].strip() >> - if tunnel_key and isinstance(eval(tunnel_key), >> six.integer_types): >> - self.tunnel_key = tunnel_key >> - vlog.info("using tunnel key %s in %s" >> - % (self.tunnel_key, self.name)) >> - else: >> - self.tunnel_key = 0 >> - vlog.warn("invalid tunnel key for %s, using 0" % self.name) >> >> if ps_type: >> ovs_vsctl("--may-exist add-br %s -- set Bridge %s >> datapath_type=%s" >> @@ -175,7 +164,7 @@ class Logical_Switch(object): >> del self.ports[lbinding] >> self.update_flood() >> >> - def add_tunnel(self, tunnel): >> + def add_tunnel(self, tunnel, tunnel_key): >> global tun_id >> vlog.info("adding tunnel %s" % tunnel) >> encap, ip = tunnel.split("/") >> @@ -189,7 +178,7 @@ class Logical_Switch(object): >> >> ovs_vsctl("add-port %s %s -- set Interface %s type=vxlan " >> "options:key=%s options:remote_ip=%s" >> - % (self.short_name, tun_name, tun_name, >> self.tunnel_key, ip)) >> + % (self.short_name, tun_name, tun_name, tunnel_key, >> ip)) >> >> for i in range(10): >> port_no = ovs_vsctl("get Interface %s ofport" % tun_name) >> @@ -259,6 +248,17 @@ class Logical_Switch(object): >> tunnels = set() >> parse_ucast = True >> >> + column = vtep_ctl("--columns=tunnel_key find logical_switch " >> + "name=%s" % self.name) >> + tunnel_key = column.partition(":")[2].strip() >> + if tunnel_key and isinstance(eval(tunnel_key), >> six.integer_types): >> + vlog.info("update_remote_macs: using tunnel key %s in %s" >> + % (tunnel_key, self.name)) >> + else: >> + vlog.info("Invalid tunnel key %s in %s post VTEP DB requery" >> + % (tunnel_key, self.name)) >> + return >> + >> mac_list = vtep_ctl("list-remote-macs %s" % self.name >> ).splitlines() >> for line in mac_list: >> if (line.find("mcast-mac-remote") != -1): >> @@ -282,7 +282,7 @@ class Logical_Switch(object): >> old_tunnels = set(self.tunnels.keys()) >> >> for tunnel in tunnels.difference(old_tunnels): >> - self.add_tunnel(tunnel) >> + self.add_tunnel(tunnel, tunnel_key) >> >> for tunnel in old_tunnels.difference(tunnels): >> self.del_tunnel(tunnel) >> -- >> 1.9.1 >> >> _______________________________________________ >> dev mailing list >> dev@openvswitch.org >> http://openvswitch.org/mailman/listinfo/dev >> > > -- Russell Bryant _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev