summaryrefslogtreecommitdiff
path: root/xenserver
diff options
context:
space:
mode:
authorEthan Jackson <ethan@nicira.com>2012-03-02 17:18:35 -0800
committerEthan Jackson <ethan@nicira.com>2012-03-09 13:37:38 -0800
commit8084c0119cc9b6125697a316e03256d0d4555749 (patch)
tree8306c2c8e8cc4c71056c3b1517f87df862d66af8 /xenserver
parent330d7cf413bf30632fa5078ab6b562792c2a663b (diff)
downloadopenvswitch-8084c0119cc9b6125697a316e03256d0d4555749.tar.gz
ovs-xapi-sync: Add unixctl support.
With this patch, users can query a running ovs-xapi-sync's version or ask it to exit using ovs-appctl. Signed-off-by: Ethan Jackson <ethan@nicira.com>
Diffstat (limited to 'xenserver')
-rwxr-xr-xxenserver/usr_share_openvswitch_scripts_ovs-xapi-sync21
1 files changed, 21 insertions, 0 deletions
diff --git a/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync b/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync
index 585a89469..8f5885a98 100755
--- a/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync
+++ b/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync
@@ -35,10 +35,18 @@ from ovs.db import error
from ovs.db import types
import ovs.daemon
import ovs.db.idl
+import ovs.unixctl
vlog = ovs.vlog.Vlog("ovs-xapi-sync")
session = None
force_run = False
+exiting = False
+
+
+def unixctl_exit(conn, unused_argv, unused_aux):
+ global exiting
+ exiting = True
+ conn.reply(None)
# Set up a session to interact with XAPI.
@@ -248,6 +256,11 @@ def main():
ovs.daemon.daemonize()
+ ovs.unixctl.command_register("exit", "", 0, 0, unixctl_exit, None)
+ error, unixctl_server = ovs.unixctl.UnixctlServer.create(None)
+ if error:
+ ovs.util.ovs_fatal(error, "could not create unixctl server", vlog)
+
# This daemon is usually started before XAPI, but to complete our
# tasks, we need it. Wait here until it's up.
cookie_file = args.root_prefix + "/var/run/xapi_init_complete.cookie"
@@ -261,9 +274,14 @@ def main():
vm_ids = {} # Map from xs-vm-uuid to vm-id
seqno = idl.change_seqno # Sequence number when we last processed the db
while True:
+ unixctl_server.run()
+ if exiting:
+ break;
+
idl.run()
if not force_run and seqno == idl.change_seqno:
poller = ovs.poller.Poller()
+ unixctl_server.wait(poller)
idl.wait(poller)
poller.block()
continue
@@ -368,6 +386,9 @@ def main():
txn.commit_block()
+ unixctl_server.close()
+ idl.close()
+
if __name__ == '__main__':
try: