diff --git a/openstack_releases/cmds/list_changes.py b/openstack_releases/cmds/list_changes.py index bcfe9258be..9d451c55b6 100644 --- a/openstack_releases/cmds/list_changes.py +++ b/openstack_releases/cmds/list_changes.py @@ -150,14 +150,9 @@ def main(): deliverable_info = yaml.load(f.read()) # By default assume the project does not use milestones. - uses_milestones = False header('Release model') - if 'release-model' in deliverable_info: - model = deliverable_info['release-model'] - uses_milestones = (model == 'cycle-with-milestones') - print(model) - else: - print('no release model specified') + print(deliverable_info.get('release-model', + 'no release model specified')) header('Team details') if 'team' in deliverable_info: @@ -199,15 +194,6 @@ def main(): # assume the releases are in order and take the last one new_release = deliverable_info['releases'][-1] - # Warn if the new release looks like a milestone release but - # the project does not use milestones. - if not uses_milestones: - for pre_indicator in ['a', 'b', 'rc']: - if pre_indicator in str(new_release['version']): - print(('WARNING: %s looks like a pre-release ' - 'but %s does not use milestones') % - (new_release['version'], deliverable_name)) - # build a map between version numbers and the release details by_version = { str(r['version']): r diff --git a/openstack_releases/cmds/validate.py b/openstack_releases/cmds/validate.py index db66826f71..f6373dc128 100644 --- a/openstack_releases/cmds/validate.py +++ b/openstack_releases/cmds/validate.py @@ -47,6 +47,10 @@ _VALID_MODELS = set([ 'cycle-trailing', 'independent', ]) +_USES_PREVER = set([ + 'cycle-with-milestones', + 'cycle-trailing', +]) _VALID_TYPES = set([ 'horizon-plugin', 'library', @@ -303,7 +307,8 @@ def main(): for e in versionutils.validate_version( release['version'], - release_type=release_type): + release_type=release_type, + pre_ok=(release_model in _USES_PREVER)): msg = ('could not validate version %r ' 'for %s: %s' % (release['version'], filename, e)) diff --git a/openstack_releases/versionutils.py b/openstack_releases/versionutils.py index 954dd0ad66..f2723361fa 100644 --- a/openstack_releases/versionutils.py +++ b/openstack_releases/versionutils.py @@ -36,12 +36,18 @@ _VALIDATORS = {'std': (pbr.version.SemanticVersion.from_pip_string, _VALIDATORS['fuel'] = _VALIDATORS['std'] -def validate_version(versionstr, release_type='std'): +def validate_version(versionstr, release_type='std', pre_ok=True): """Given a version string, yield error messages if it is "bad" Apply our SemVer rules to version strings and report all issues. """ + if not pre_ok: + for pre_indicator in ['a', 'b', 'rc']: + if pre_indicator in versionstr: + yield('Version %s looks like a pre-release and the release ' + 'model does not allow for it' % versionstr) + if release_type not in _VALIDATORS: yield 'Release Type %r not valid using \'std\' instead' % release_type release_type = 'std'