unixctl.py: Allow callers to manually set unixctl version.
authorEthan Jackson <ethan@nicira.com>
Sat, 31 Mar 2012 06:11:05 +0000 (23:11 -0700)
committerEthan Jackson <ethan@nicira.com>
Sat, 31 Mar 2012 08:12:44 +0000 (01:12 -0700)
Some clients of unixctl.py may want to use a different version than
the one supplied in ovs.version.VERSION.  This patch supports an
optional manual override of this value.

Feature #10383.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
python/ovs/unixctl.py

index 452afa5cddd3a8cdcf11154d480a8b59119cf576..396d1be4b64c649a52c52fec52dd65608a821232 100644 (file)
@@ -55,10 +55,9 @@ def _unixctl_help(conn, unused_argv, unused_aux):
     conn.reply(reply)
 
 
-def _unixctl_version(conn, unused_argv, unused_aux):
+def _unixctl_version(conn, unused_argv, version):
     assert isinstance(conn, UnixctlConnection)
-    version = "%s (Open vSwitch) %s" % (ovs.util.PROGRAM_NAME,
-                                        ovs.version.VERSION)
+    version = "%s (Open vSwitch) %s" % (ovs.util.PROGRAM_NAME, version)
     conn.reply(version)
 
 
@@ -240,7 +239,12 @@ class UnixctlServer(object):
         self._listener = None
 
     @staticmethod
-    def create(path):
+    def create(path, version=None):
+        """Creates a new UnixctlServer which listens on a unixctl socket
+        created at 'path'.  If 'path' is None, the default path is chosen.
+        'version' contains the version of the server as reported by the unixctl
+        version command.  If None, ovs.version.VERSION is used."""
+
         assert path is None or isinstance(path, strtypes)
 
         if path is not None:
@@ -249,6 +253,9 @@ class UnixctlServer(object):
             path = "punix:%s/%s.%d.ctl" % (ovs.dirs.RUNDIR,
                                            ovs.util.PROGRAM_NAME, os.getpid())
 
+        if version is None:
+            version = ovs.version.VERSION
+
         error, listener = ovs.stream.PassiveStream.open(path)
         if error:
             ovs.util.ovs_error(error, "could not initialize control socket %s"
@@ -256,7 +263,7 @@ class UnixctlServer(object):
             return error, None
 
         command_register("help", "", 0, 0, _unixctl_help, None)
-        command_register("version", "", 0, 0, _unixctl_version, None)
+        command_register("version", "", 0, 0, _unixctl_version, version)
 
         return 0, UnixctlServer(listener)