Package omero :: Package install :: Module versions
[hide private]
[frames] | no frames]

Source Code for Module omero.install.versions

  1  #!/usr/bin/env python 
  2  # -*- coding: utf-8 -*- 
  3  # 
  4  # $Id$ 
  5  # 
  6  # Copyright 2009 Glencoe Software, Inc. All rights reserved. 
  7  # Use is subject to license terms supplied in LICENSE.txt 
  8  # 
  9  # Version comparison functionality 
 10   
 11  import re 
 12  import logging 
 13   
 14  # Regex copied from http://hudson.openmicroscopy.org.uk/job/OMERO/javadoc/constant-values.html#ome.api.IConfig.VERSION_REGEX 
 15  REGEX = re.compile("^.*?[-]?(\\d+[.]\\d+([.]\\d+)?)[-]?.*?$") 
 16  LOG = logging.getLogger("omero.version") 
 17   
18 -def needs_upgrade(client_version, server_version, verbose = False):
19 """ 20 Tests whether the client version is behind the server version. 21 For example: 22 23 import omero 24 from omero_version import omero_version as client_version 25 26 client = omero.client() 27 session = client.createSession() 28 config = session.getConfigService() 29 server_version = config.getVersion() 30 31 upgrade = needs_upgrade(client_version, server_version) 32 if upgrade: 33 # Inform client 34 35 Alternatively, from the command-line: 36 ./versions.py --quiet 4.1.0 4.2.0-DEV || echo upgrade 37 38 """ 39 try: 40 client_cleaned = REGEX.match(client_version).group(1) 41 client_split = client_cleaned.split(".") 42 43 server_cleaned = REGEX.match(server_version).group(1) 44 server_split = server_cleaned.split(".") 45 46 rv = (client_split < server_split) 47 if verbose: 48 LOG.info("Client=%20s (%-5s) v. Server=%20s (%-5s) Upgrade? %s", \ 49 client_version, ".".join(client_split), \ 50 server_version, ".".join(server_split), rv) 51 return rv 52 53 except: 54 LOG.warn("Bad versions: client=%s server=%s", client_version, server_version, exc_info = 1) 55 return True
56 57 if __name__ == "__main__": 58 59 import sys 60 args = list(sys.argv[1:]) 61 62 if "--quiet" in args: 63 args.remove("--quiet") 64 logging.basicConfig(level=logging.WARN) 65 else: 66 logging.basicConfig(level=logging.DEBUG) 67 68 if "--test" in args: 69 print "="*10, "Test", "="*72 70 needs_upgrade("4.0", "4.1.1", True) 71 needs_upgrade("4.1", "4.1.1", True) 72 needs_upgrade("4.1.0", "4.1.1", True) 73 needs_upgrade("4.1.0", "4.1.1-Dev", True) 74 needs_upgrade("4.1.0-Dev", "4.1.1", True) 75 needs_upgrade("4.1.1", "4.1.1", True) 76 needs_upgrade("Beta-4.1", "4.1.1", True) 77 needs_upgrade("Beta-4.1.0", "4.1.1", True) 78 needs_upgrade("Beta-4.1.1", "4.1.1", True) 79 needs_upgrade("4.1.1", "Beta-4.1.1", True) 80 needs_upgrade("Beta-4.1.0", "Beta-4.1.1", True) 81 needs_upgrade("4.1.1-Foo", "4.1.1", True) 82 needs_upgrade("4.1.1-Foo", "4.1.1-Dev", True) 83 needs_upgrade("4.1.1-Foo", "4.1.2-Dev", True) 84 needs_upgrade("4.1.1-Foo", "4.2.0-Dev", True) 85 needs_upgrade("4.1.1-Foo", "4.2", True) 86 needs_upgrade("4.1.1-Foo", "5.0", True) 87 needs_upgrade("v.4.1.1-Foo", "5.0", True) 88 # Additions post git-describe 89 needs_upgrade("v.4.1.1-Foo", "5.0", True) 90 needs_upgrade("v4.1.1-Foo", "5.0", True) 91 needs_upgrade("Beta-v4.1.1-Foo", "5.0", True) 92 needs_upgrade("A1-4.1.1-Foo", "5.0", True) 93 needs_upgrade("A1-v4.1.1-Foo", "5.0", True) 94 else: 95 try: 96 rv = int(needs_upgrade(args[0], args[1], True)) 97 except: 98 rv = 2 99 print """ %s [--quiet] client_version server_version 100 or: %s [--quiet] --test 101 """ % (sys.argv[0], sys.argv[0]) 102 sys.exit(rv) 103