def filter_irrelevant_releases(releases): """ Filter releases that are not relevant to this IPU. Irrelevant releases are those that happened before the source version and after the target version. :param List[Tuple[int, int]] releases: A list containing all releases present in the PES events being processed. :returns: A list of releases relevant for the current IPU. """ match_list = [ '> {0}'.format(api.current_actor().configuration.version.source), '<= {0}'.format(api.current_actor().configuration.version.target) ] return [ r for r in releases if version.matches_version(match_list, '{}.{}'.format(*r)) ]
def check_os_version(supported_version): """ Check OS version and inhibit upgrade if not the same as supported ones """ if not isinstance(supported_version, dict): api.current_logger().warning('The supported version value is invalid.') raise StopActorExecution() release_id, version_id = version.current_version() if not version.matches_release(supported_version.keys(), release_id): reporting.create_report([ reporting.Title('Unsupported OS'), reporting.Summary('Only RHEL is supported by the upgrade process'), reporting.Severity(reporting.Severity.HIGH), reporting.Tags(COMMON_REPORT_TAGS), reporting.Flags([reporting.Flags.INHIBITOR]) ] + related) return if not isinstance(supported_version[release_id], list): raise StopActorExecutionError( 'Invalid versions', details={'details': 'OS versions are invalid, please provide a valid list.'}, ) if not version.matches_version(supported_version[release_id], version_id): reporting.create_report([ reporting.Title('Unsupported OS version'), reporting.Summary( 'The supported OS versions for the upgrade process: {}'.format( ', '.join(supported_version[release_id]) ) ), reporting.Severity(reporting.Severity.HIGH), reporting.Tags(COMMON_REPORT_TAGS), reporting.Flags([reporting.Flags.INHIBITOR]) ] + related)
def filter_releases_by_target(releases, target): match_list = ['<= {}.{}'.format(*target)] return [ r for r in releases if version.matches_version(match_list, '{}.{}'.format(*r)) ]
def test_matches_version_pass(): assert version.matches_version(['7.6', '7.7', '7.10'], '7.7') assert version.matches_version(['> 7.6', '< 7.10'], '7.7')
def test_matches_version_fail(): assert not version.matches_version(['> 7.6', '< 7.7'], '7.6') assert not version.matches_version(['> 7.6', '< 7.7'], '7.7') assert not version.matches_version(['> 7.6', '< 7.10'], '7.6') assert not version.matches_version(['> 7.6', '< 7.10'], '7.10') assert not version.matches_version(['7.6', '7.7', '7.10'], '7.8')
def test_matches_version_wrong_args(): with pytest.raises(TypeError): version.matches_version('>= 7.6', '7.7') with pytest.raises(TypeError): version.matches_version([7.6, 7.7], '7.7') with pytest.raises(TypeError): version.matches_version(['7.6', '7.7'], 7.7) with pytest.raises(ValueError): version.matches_version(['>= 7.6', '> 7.7'], 'x.y') with pytest.raises(ValueError): version.matches_version(['>= 7.6', '7.7'], '7.7') with pytest.raises(ValueError): version.matches_version(['>= 7.6', '& 7.7'], '7.7')