import argparse
import re
+import shlex
import subprocess
import sys
import time
vlog = ovs.vlog.Vlog("ovs-vtep")
exiting = False
+ps_name = ""
Tunnel_Ip = ""
Lswitches = {}
Bindings = {}
return output
def ovs_vsctl(args):
- return call_prog("ovs-vsctl", args.split())
+ return call_prog("ovs-vsctl", shlex.split(args))
def ovs_ofctl(args):
- return call_prog("ovs-ofctl", args.split())
+ return call_prog("ovs-ofctl", shlex.split(args))
def vtep_ctl(args):
- return call_prog("vtep-ctl", args.split())
+ return call_prog("vtep-ctl", shlex.split(args))
def unixctl_exit(conn, unused_argv, unused_aux):
self.update_remote_macs()
self.update_stats()
-def add_binding(ps_name, binding, ls):
+def add_binding(binding, ls):
vlog.info("adding binding %s" % binding)
vlan, pp_name = binding.split("-", 1)
ls.add_lbinding(lbinding)
Bindings[binding] = ls.name
-def del_binding(ps_name, binding, ls):
+def del_binding(binding, ls):
vlog.info("removing binding %s" % binding)
vlan, pp_name = binding.split("-")
del Bindings[binding]
-def handle_physical(ps_name):
+def handle_physical():
# Gather physical ports except the patch ports we created
ovs_ports = ovs_vsctl("list-ports %s" % ps_name).split()
ovs_port_set = set([port for port in ovs_ports if port[-2:] != "-p"])
if Bindings[binding] == ls_name:
continue
else:
- del_binding(ps_name, binding, Lswitches[Bindings[binding]])
+ del_binding(binding, Lswitches[Bindings[binding]])
- add_binding(ps_name, binding, ls)
+ add_binding(binding, ls)
dead_bindings = set(Bindings.keys()).difference(new_bindings)
ls_name = Bindings[binding]
ls = Lswitches[ls_name]
- del_binding(ps_name, binding, ls)
+ del_binding(binding, ls)
if not len(ls.ports):
ovs_vsctl("del-br %s" % Lswitches[ls_name].short_name)
+ vtep_ctl("clear-local-macs %s" % Lswitches[ls_name].name)
del Lswitches[ls_name]
-def setup(ps_name):
+def setup():
br_list = ovs_vsctl("list-br").split()
if (ps_name not in br_list):
ovs.util.ovs_fatal(0, "couldn't find OVS bridge %s" % ps_name, vlog)
if args.root_prefix:
root_prefix = args.root_prefix
+ global ps_name
ps_name = args.ps_name
ovs.daemon.daemonize()
if error:
ovs.util.ovs_fatal(error, "could not create unixctl server", vlog)
- setup(ps_name)
+ setup()
while True:
unixctl.run()
if exiting:
break
- handle_physical(ps_name)
+ handle_physical()
for ls_name, ls in Lswitches.items():
ls.run()