From 8b0b1a99eae1299225cc595a334935839af06908 Mon Sep 17 00:00:00 2001 From: Shachar Snapiri Date: Tue, 20 Feb 2018 17:34:43 +0200 Subject: [PATCH] Add indexed fields to df_model The fields that the indexes are translated into were not shown. Added the actual fields that the index names refer to. Also fixed an issue with jsonschema parser usage. Change-Id: I39340f4575d5508b90b92a814c6135c9aee6445e Partial-Bug: #1734146 --- dragonflow/cli/df_model.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/dragonflow/cli/df_model.py b/dragonflow/cli/df_model.py index ba4858c32..c0f12b207 100644 --- a/dragonflow/cli/df_model.py +++ b/dragonflow/cli/df_model.py @@ -159,12 +159,14 @@ class ModelsPrinter(object): pass @abc.abstractmethod - def handle_index(self, index_name): + def handle_index(self, index_name, index_fields): """Handler called once per index in a model. This should be used to print the specific index. :param index_name: the name of the index field :type index_name: string + :param index_fields: the fields this index uses + :type index_fields: string touple """ pass @@ -229,13 +231,15 @@ class PlaintextPrinter(ModelsPrinter): embedded=', Embedded' if is_embedded else '')) def indexes_start(self): + self._print('') self._print('Indexes') self._print('-------') - def handle_index(self, index_name): - self._print('{}'.format(index_name)) + def handle_index(self, index_name, index_fields): + self._print('{}: {}'.format(index_name, ', '.join(index_fields))) def events_start(self): + self._print('') self._print('Events') self._print('------') @@ -294,8 +298,8 @@ class UMLPrinter(ModelsPrinter): def indexes_start(self): self._print(' .. Indexes ..') - def handle_index(self, index_name): - self._print(' {}'.format(index_name)) + def handle_index(self, index_name, index_fields): + self._print(' {} : {}'.format(index_name, ', '.join(index_fields))) def events_start(self): self._print(' == Events ==') @@ -385,7 +389,7 @@ class OASPrinter(ModelsPrinter): if is_required: self._required.append(field_name) - def handle_index(self, index_name): + def handle_index(self, index_name, index_fields): pass def handle_event(self, event_name): @@ -404,7 +408,8 @@ class RstPrinter(ModelsPrinter): ['Field', 'Type', 'Restrictions', 'Required', 'Embedded', 'List']) # The empty column was added as a patch, as rst does not accept # single column tables - self._model_indexes_table = prettytable.PrettyTable(['Index', '']) + self._model_indexes_table = prettytable.PrettyTable(['Index', + 'Fields']) self._model_events_table = prettytable.PrettyTable(['Event', '']) self._set_rst_tables_style() self._model_printed = False @@ -452,8 +457,9 @@ class RstPrinter(ModelsPrinter): self._print(self._model_indexes_table) self._model_indexes_table.clear_rows() - def handle_index(self, index_name): - self._model_indexes_table.add_row([index_name, '']) + def handle_index(self, index_name, index_fields): + self._model_indexes_table.add_row([index_name, + ', '.join(index_fields)]) def events_end(self): self._print('') @@ -555,8 +561,8 @@ class DfModelsParser(object): model_indexes = df_model.get_indexes() if len(model_indexes) > 0: self._printer.indexes_start() - for key in model_indexes: - self._printer.handle_index(key) + for idx_key, idx_fields in six.iteritems(model_indexes): + self._printer.handle_index(idx_key, idx_fields) self._printer.indexes_end() def _process_events(self, df_model): @@ -633,7 +639,7 @@ def main(): with smart_open(args.outfile) as fh: if args.uml: printer = UMLPrinter(fh) - elif args.json: + elif args.jsonschema: printer = OASPrinter(fh) elif args.rst: printer = RstPrinter(fh)