X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Frspecs%2Fversion_manager.py;h=4e60bacb6bdc9fb17487c2d0bd92f499d840f8dd;hb=a0ecdcce6c47700324b8cdb94951ab11392b4642;hp=3e7500ce6a1002329a00080eddc225c7bbc75c06;hpb=02a4a59a4a49183ec8c631cc03243b97f4602d50;p=sfa.git diff --git a/sfa/rspecs/version_manager.py b/sfa/rspecs/version_manager.py index 3e7500ce..4e60bacb 100644 --- a/sfa/rspecs/version_manager.py +++ b/sfa/rspecs/version_manager.py @@ -1,6 +1,6 @@ import os from sfa.util.faults import InvalidRSpec, UnsupportedRSpecVersion -from sfa.rspecs.baseversion import BaseVersion +from sfa.rspecs.version import RSpecVersion from sfa.util.sfalogging import logger class VersionManager: @@ -13,7 +13,7 @@ class VersionManager: versions_path = path + os.sep + 'versions' versions_module_path = 'sfa.rspecs.versions' valid_module = lambda x: os.path.isfile(os.sep.join([versions_path, x])) \ - and not x.endswith('.pyc') and x not in ['__init__.py'] + and x.endswith('.py') and x != '__init__.py' files = [f for f in os.listdir(versions_path) if valid_module(f)] for filename in files: basename = filename.split('.')[0] @@ -28,7 +28,7 @@ class VersionManager: retval = None for version in self.versions: if type is None or type.lower() == version.type.lower(): - if version_num is None or str(version_num) == version.version: + if version_num is None or str(float(version_num)) == str(float(version.version)): if content_type is None or content_type.lower() == version.content_type.lower() \ or version.content_type == '*': retval = version @@ -53,8 +53,10 @@ class VersionManager: if num_parts > 2: content_type = version_parts[2] retval = self._get_version(type, version_num, content_type) - elif isinstance(version, BaseVersion): + elif isinstance(version, RSpecVersion): retval = version + elif not version: + retval = self.versions[0] else: raise UnsupportedRSpecVersion("No such version: %s "% str(version)) @@ -69,11 +71,23 @@ class VersionManager: raise InvalidRSpec("Unkwnown RSpec schema: %s" % schema) return retval +def show_by_string(string): + try: + print v.get_version(string) + except Exception,e: + print e +def show_by_schema(string): + try: + print v.get_version_by_schema(string) + except Exception,e: + print e + if __name__ == '__main__': v = VersionManager() print v.versions - print v.get_version('sfa 1') - print v.get_version('protogeni 2') - print v.get_version('protogeni 2 advertisement') - print v.get_version_by_schema('http://www.protogeni.net/resources/rspec/2/ad.xsd') + show_by_string('sfa 1') + show_by_string('protogeni 2') + show_by_string('protogeni 2 advertisement') + show_by_schema('http://www.protogeni.net/resources/rspec/2/ad.xsd') + show_by_schema('http://sorch.netmode.ntua.gr/ws/RSpec/ad.xsd')