diff --git a/openstack_releases/cmds/list_deliverables.py b/openstack_releases/cmds/list_deliverables.py index 72b66feb4d..ee72423d41 100644 --- a/openstack_releases/cmds/list_deliverables.py +++ b/openstack_releases/cmds/list_deliverables.py @@ -17,12 +17,14 @@ import csv import operator import openstack_releases -from openstack_releases.cmds import validate from openstack_releases import defaults from openstack_releases import deliverable +from openstack_releases import schema def main(): + deliverable_schema = schema.Schema() + parser = argparse.ArgumentParser() output_mode = parser.add_mutually_exclusive_group() output_mode.add_argument( @@ -72,6 +74,7 @@ def main(): '--model', help=('the release model, such as "cycle-with-milestones"' ' or "independent"'), + choices=sorted(deliverable_schema.release_models + ['independent']), ) model.add_argument( '--cycle-based', @@ -83,7 +86,7 @@ def main(): '--type', default=[], action='append', - choices=list(sorted(validate._VALID_TYPES)), + choices=sorted(deliverable_schema.release_types), help='deliverable type, such as "library" or "service"', ) parser.add_argument( diff --git a/openstack_releases/schema.py b/openstack_releases/schema.py new file mode 100644 index 0000000000..dfb3de713f --- /dev/null +++ b/openstack_releases/schema.py @@ -0,0 +1,32 @@ +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import pkgutil + +from openstack_releases import yamlutils + + +class Schema(object): + + def __init__(self): + self._raw = pkgutil.get_data('openstack_releases', 'schema.yaml') + self._data = yamlutils.loads(self._raw.decode('utf-8')) + + @property + def release_types(self): + return self._data['properties']['type']['enum'] + + @property + def release_models(self): + return self._data['properties']['release-model']['enum']