[asterisk-commits] wdoekes: testsuite/asterisk/trunk r3026 - /asterisk/trunk/lib/python/asterisk/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Jan 30 14:06:24 CST 2012


Author: wdoekes
Date: Mon Jan 30 14:06:21 2012
New Revision: 3026

URL: http://svnview.digium.com/svn/testsuite?view=rev&rev=3026
Log:
Clean up get_asterisk_version_from_binary just a little bit.

No functional change, apart from not calling the binary at all when
supplying a custom version. Couldn't help myself.

Modified:
    asterisk/trunk/lib/python/asterisk/version.py

Modified: asterisk/trunk/lib/python/asterisk/version.py
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/lib/python/asterisk/version.py?view=diff&rev=3026&r1=3025&r2=3026
==============================================================================
--- asterisk/trunk/lib/python/asterisk/version.py (original)
+++ asterisk/trunk/lib/python/asterisk/version.py Mon Jan 30 14:06:21 2012
@@ -25,8 +25,6 @@
 
     This class handles Asterisk version strings.
     """
-    ast_version = ''
-
     def __init__(self, version=None):
         """Construct an Asterisk Version parser.
 
@@ -34,12 +32,11 @@
         version -- The Asterisk version string to parse.
         """
         self.svn = False
-        self.__get_asterisk_version_from_binary()
 
         if version is not None:
             self.version_str = version
         else:
-            self.version_str = AsteriskVersion.ast_version
+            self.version_str = self.get_asterisk_version_from_binary()
 
         if self.version_str[:3] == "SVN":
             self.__parse_svn_version()
@@ -48,29 +45,6 @@
 
     def __str__(self):
         return self.version_str
-
-    @classmethod
-    def __get_asterisk_version_from_binary(cls):
-        """
-        Obtain the version from Asterisk and store in a class variable
-        """
-        if (AsteriskVersion.ast_version):
-            return
-        version = ""
-        ast_binary = utils.which("asterisk") or "/usr/sbin/asterisk"
-        cmd = [
-            ast_binary,
-            "-V",
-        ]
-
-        try:
-            process = subprocess.Popen(cmd, stdout=subprocess.PIPE,
-                    stderr=subprocess.STDOUT)
-            version = process.stdout.read()
-        except OSError as oe:
-            logger.error("OSError [%d]: %s" % (oe.errno, oe.strerror))
-            raise
-        AsteriskVersion.ast_version = version.replace("Asterisk ", "")
 
     def __int__(self):
         if self.svn is True:
@@ -140,8 +114,8 @@
         ret = int(parts[0])
         if len(parts) >= 2:
             versions = [
-                ['rc', 100],
-                ['beta', 10],
+                ["rc", 100],
+                ["beta", 10],
             ]
             for v, cost in versions:
                 match = re.search(
@@ -156,6 +130,30 @@
 
         return ret
 
+    @classmethod
+    def get_asterisk_version_from_binary(cls):
+        """
+        Obtain the version from Asterisk and return (a cached version of) it
+        """
+        if not hasattr(cls, "_asterisk_version_from_binary"):
+            version = ""
+            ast_binary = utils.which("asterisk") or "/usr/sbin/asterisk"
+            cmd = [
+                ast_binary,
+                "-V",
+            ]
+
+            try:
+                process = subprocess.Popen(cmd, stdout=subprocess.PIPE,
+                        stderr=subprocess.STDOUT)
+                version = process.stdout.read()
+            except OSError as oe:
+                logger.error("OSError [%d]: %s" % (oe.errno, oe.strerror))
+                raise
+
+            cls._asterisk_version_from_binary = version.replace("Asterisk ", "")
+        return cls._asterisk_version_from_binary
+
 
 class AsteriskVersionTests(unittest.TestCase):
     def test_version(self):




More information about the asterisk-commits mailing list