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

Reply via email to