From 87810864f298ac1449a223348e25e6690fc347a1 Mon Sep 17 00:00:00 2001 From: Doug Hellmann Date: Fri, 23 Feb 2018 14:06:59 -0500 Subject: [PATCH] have list-deliverables look for valid values by querying the schema An earlier change in the series removed the static data being used for configuring the command line interface of list-deliverables. Replace that with something that reads the schema file instead so we only need to have the settings in one place. Change-Id: Ib40e3bdff2f127cf5041dfffb03d53c0d1a6f3a0 Signed-off-by: Doug Hellmann --- openstack_releases/cmds/list_deliverables.py | 7 +++-- openstack_releases/schema.py | 32 ++++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 openstack_releases/schema.py 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']