On Mon, Jan 13, 2014 at 10:26 AM, Klaus Aehlig <[email protected]> wrote:
> This will be needed, e.g., for post-upgrade task, as they > have to decide whether a feature was not yet present at > the version started from. > > Signed-off-by: Klaus Aehlig <[email protected]> > --- > lib/utils/version.py | 29 > +++++++++++++++++++++++++++++ > test/py/ganeti.utils.version_unittest.py | 10 ++++++++++ > 2 files changed, 39 insertions(+) > > diff --git a/lib/utils/version.py b/lib/utils/version.py > index 9ae4838..1046d8e 100644 > --- a/lib/utils/version.py > +++ b/lib/utils/version.py > @@ -152,3 +152,32 @@ def IsCorrectConfigVersion(targetversion, > configversion): > """ > return (configversion[0] == targetversion[0] and > configversion[1] == targetversion[1]) > + > + > +def IsBefore(version, major, minor, revision): > + """Decide if a given version is strictly before a given version. > + > + @param version: (major, minor, revision) or None, with None being > + before all versions > + @type version: (int, int, int) or None > + @param major: major version > + @type major: int > + @param minor: minor version > + @type minor: int > + @param revision: revision > + @type revision: int > + > Looking at the rest of the version.py file, the versions are seldom specified as separate input parameters. Is just one simplified call in the next patch worth breaking this convention? It may be, if many calls are to follow - your call. > + """ > + if version is None: > + return True > + > + if version[0] < major: > + return True > + > + if version[0] == major and version[1] < minor: > + return True > + > + if version[0] == major and version[1] == minor and version[2] < > revision: > + return True > + > + return False > Either way, a simpler way of writing this is: return version < (major, minor, revision) or return version_one < version_two > diff --git a/test/py/ganeti.utils.version_unittest.py b/test/py/ > ganeti.utils.version_unittest.py > index 06b878f..99fc488 100755 > --- a/test/py/ganeti.utils.version_unittest.py > +++ b/test/py/ganeti.utils.version_unittest.py > @@ -72,5 +72,15 @@ class IsCorrectConfigVersionTest(unittest.TestCase): > self.assertFalse(version.IsCorrectConfigVersion((3,10,0), > (2,10,0))) > > > +class IsBeforeTest(unittest.TestCase): > + def testIsBefore(self): > + self.assertTrue(version.IsBefore(None, 2, 10, 0)) > + self.assertFalse(version.IsBefore((2, 10, 0), 2, 10, 0)) > + self.assertTrue(version.IsBefore((2, 10, 0), 2, 10, 1)) > + self.assertFalse(version.IsBefore((2, 10, 1), 2, 10, 0)) > + self.assertTrue(version.IsBefore((2, 10, 1), 2, 11, 0)) > + self.assertFalse(version.IsBefore((2, 11, 0), 2, 10, 3)) > + > + > if __name__ == "__main__": > testutils.GanetiTestProgram() > -- > 1.8.5.1 > >
