def decorator(func): # TODO: This is not ideal, should change this to support # multiple versions required_version = required_versions[0] objectstorage_api_config = ObjectStorageComposite().config behaviors = ObjectStorageComposite().behaviors swift_version = objectstorage_api_config.version if not swift_version and objectstorage_api_config.use_swift_info: info = behaviors.get_swift_info() swift_version = info.get('swift', { 'version': None }).get('version', None) if not swift_version: return func if required_version.startswith('<'): required_version = required_version.lstrip('<') compare_func = lambda sv, tv: sv < tv extra_message = ' less than' elif required_version.startswith('>'): required_version = required_version.lstrip('>') compare_func = lambda sv, tv: sv > tv extra_message = ' greater than' else: required_version = required_version.lstrip('=') compare_func = lambda sv, tv: sv.startswith(tv) extra_message = '' if compare_func(swift_version, required_version): func setattr(func, '__unittest_skip__', True) setattr( func, '__unittest_skip_why__', 'swift running version {0}, requires version{1}: {2}'.format( swift_version, extra_message, required_version)) return func
def decorator(func): # TODO: This is not ideal, should change this to support # multiple versions required_version = required_versions[0] objectstorage_api_config = ObjectStorageComposite().config behaviors = ObjectStorageComposite().behaviors swift_version = objectstorage_api_config.version if not swift_version and objectstorage_api_config.use_swift_info: info = behaviors.get_swift_info() swift_version = info.get( 'swift', {'version': None}).get('version', None) if not swift_version: return func if required_version.startswith('<'): required_version = required_version.lstrip('<') compare_func = lambda sv, tv: sv < tv extra_message = ' less than' elif required_version.startswith('>'): required_version = required_version.lstrip('>') compare_func = lambda sv, tv: sv > tv extra_message = ' greater than' else: required_version = required_version.lstrip('=') compare_func = lambda sv, tv: sv.startswith(tv) extra_message = '' if compare_func(swift_version, required_version): func setattr(func, '__unittest_skip__', True) setattr( func, '__unittest_skip_why__', 'swift running version {0}, requires version{1}: {2}'.format( swift_version, extra_message, required_version)) return func