From 733f9becce5933a4abc9e1bbcb0e04b6b27f4260 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Wed, 7 May 2025 14:53:28 +0900 Subject: [PATCH] osc: Use FormattableColumn for formatter ... because usage of legacy format function was deprecated 8 years ago and was recently removed from osc-lib[1]. [1] 0e7dada02b825b2f97ac3eb68544bdd438a3a099 Change-Id: I6f04160cb79fbe081ece8d3893d1108919c241b0 --- octaviaclient/osc/v2/amphora.py | 6 +++--- octaviaclient/osc/v2/availabilityzone.py | 6 +++--- octaviaclient/osc/v2/flavor.py | 6 +++--- octaviaclient/osc/v2/health_monitor.py | 10 ++++----- octaviaclient/osc/v2/l7policy.py | 10 ++++----- octaviaclient/osc/v2/l7rule.py | 4 ++-- octaviaclient/osc/v2/listener.py | 26 ++++++++++++------------ octaviaclient/osc/v2/load_balancer.py | 16 +++++++-------- octaviaclient/osc/v2/member.py | 4 ++-- octaviaclient/osc/v2/pool.py | 26 ++++++++++++------------ octaviaclient/osc/v2/quota.py | 2 +- octaviaclient/osc/v2/utils.py | 16 +++++++++++++++ 12 files changed, 74 insertions(+), 58 deletions(-) diff --git a/octaviaclient/osc/v2/amphora.py b/octaviaclient/osc/v2/amphora.py index deffdd1..543eea6 100644 --- a/octaviaclient/osc/v2/amphora.py +++ b/octaviaclient/osc/v2/amphora.py @@ -87,7 +87,7 @@ class ListAmphora(lister.Lister): data = self.app.client_manager.load_balancer.amphora_list(**attrs) formatters = { - 'amphorae': v2_utils.format_list, + 'amphorae': v2_utils.ListColumn, } return ( @@ -121,8 +121,8 @@ class ShowAmphora(command.ShowOne): rows = const.AMPHORA_ROWS formatters = { - 'loadbalancers': v2_utils.format_list, - 'amphorae': v2_utils.format_list, + 'loadbalancers': v2_utils.ListColumn, + 'amphorae': v2_utils.ListColumn, } return (rows, utils.get_dict_properties(data, rows, diff --git a/octaviaclient/osc/v2/availabilityzone.py b/octaviaclient/osc/v2/availabilityzone.py index c453300..294883f 100644 --- a/octaviaclient/osc/v2/availabilityzone.py +++ b/octaviaclient/osc/v2/availabilityzone.py @@ -72,7 +72,7 @@ class CreateAvailabilityzone(command.ShowOne): data = self.app.client_manager.load_balancer.availabilityzone_create( json=body) - formatters = {'availability_zone_profiles': v2_utils.format_list} + formatters = {'availability_zone_profiles': v2_utils.ListColumn} return (rows, (utils.get_dict_properties( @@ -140,7 +140,7 @@ class ListAvailabilityzone(lister.Lister): parsed_args) data = self.app.client_manager.load_balancer.availabilityzone_list( **attrs) - formatters = {'availabilityzoneprofiles': v2_utils.format_list} + formatters = {'availabilityzoneprofiles': v2_utils.ListColumn} return (columns, (utils.get_dict_properties(s, columns, formatters=formatters) for s in data['availability_zones'])) @@ -169,7 +169,7 @@ class ShowAvailabilityzone(command.ShowOne): data = self.app.client_manager.load_balancer.availabilityzone_show( availabilityzone_name=availabilityzone_name ) - formatters = {'availabilityzoneprofiles': v2_utils.format_list} + formatters = {'availabilityzoneprofiles': v2_utils.ListColumn} return (rows, (utils.get_dict_properties( data, rows, formatters=formatters))) diff --git a/octaviaclient/osc/v2/flavor.py b/octaviaclient/osc/v2/flavor.py index 050b401..7096fff 100644 --- a/octaviaclient/osc/v2/flavor.py +++ b/octaviaclient/osc/v2/flavor.py @@ -74,7 +74,7 @@ class CreateFlavor(command.ShowOne): data = self.app.client_manager.load_balancer.flavor_create( json=body) - formatters = {'flavorprofiles': v2_utils.format_list} + formatters = {'flavorprofiles': v2_utils.ListColumn} return (rows, (utils.get_dict_properties( @@ -142,7 +142,7 @@ class ListFlavor(lister.Lister): parsed_args) data = self.app.client_manager.load_balancer.flavor_list( **attrs) - formatters = {'flavorprofiles': v2_utils.format_list} + formatters = {'flavorprofiles': v2_utils.ListColumn} return (columns, (utils.get_dict_properties(s, columns, formatters=formatters) for s in data['flavors'])) @@ -179,7 +179,7 @@ class ShowFlavor(command.ShowOne): data = self.app.client_manager.load_balancer.flavor_show( flavor_id=flavor_id ) - formatters = {'flavorprofiles': v2_utils.format_list} + formatters = {'flavorprofiles': v2_utils.ListColumn} return (rows, (utils.get_dict_properties( data, rows, formatters=formatters))) diff --git a/octaviaclient/osc/v2/health_monitor.py b/octaviaclient/osc/v2/health_monitor.py index 6f7a324..f01a52a 100644 --- a/octaviaclient/osc/v2/health_monitor.py +++ b/octaviaclient/osc/v2/health_monitor.py @@ -168,8 +168,8 @@ class CreateHealthMonitor(command.ShowOne): data['healthmonitor']['id'])) } - formatters = {'pools': v2_utils.format_list, - 'tags': v2_utils.format_list_flat} + formatters = {'pools': v2_utils.ListColumn, + 'tags': v2_utils.FlatListColumn} return (rows, (utils.get_dict_properties(data['healthmonitor'], @@ -230,7 +230,7 @@ class ListHealthMonitor(lister.Lister): data = self.app.client_manager.load_balancer.health_monitor_list( **attrs) - formatters = {'pools': v2_utils.format_list} + formatters = {'pools': v2_utils.ListColumn} return (columns, (utils.get_dict_properties(s, columns, formatters=formatters) for s in data['healthmonitors'])) @@ -269,8 +269,8 @@ class ShowHealthMonitor(command.ShowOne): data = self.app.client_manager.load_balancer.health_monitor_show( health_monitor_id=health_monitor_id, ) - formatters = {'pools': v2_utils.format_list, - 'tags': v2_utils.format_list_flat} + formatters = {'pools': v2_utils.ListColumn, + 'tags': v2_utils.FlatListColumn} return (rows, (utils.get_dict_properties(data, rows, formatters=formatters))) diff --git a/octaviaclient/osc/v2/l7policy.py b/octaviaclient/osc/v2/l7policy.py index 7f96853..b55b871 100644 --- a/octaviaclient/osc/v2/l7policy.py +++ b/octaviaclient/osc/v2/l7policy.py @@ -142,8 +142,8 @@ class CreateL7Policy(command.ShowOne): data['l7policy']['id'])) } - formatters = {'rules': v2_utils.format_list, - 'tags': v2_utils.format_list_flat} + formatters = {'rules': v2_utils.ListColumn, + 'tags': v2_utils.FlatListColumn} return (rows, (utils.get_dict_properties( data['l7policy'], rows, formatters=formatters))) @@ -208,7 +208,7 @@ class ListL7Policy(lister.Lister): parsed_args) data = self.app.client_manager.load_balancer.l7policy_list(**attrs) - formatters = {'rules': v2_utils.format_list} + formatters = {'rules': v2_utils.ListColumn} return (columns, (utils.get_dict_properties( @@ -248,8 +248,8 @@ class ShowL7Policy(command.ShowOne): data = self.app.client_manager.load_balancer.l7policy_show( l7policy_id=l7policy_id, ) - formatters = {'rules': v2_utils.format_list, - 'tags': v2_utils.format_list_flat} + formatters = {'rules': v2_utils.ListColumn, + 'tags': v2_utils.FlatListColumn} return (rows, (utils.get_dict_properties( data, rows, formatters=formatters))) diff --git a/octaviaclient/osc/v2/l7rule.py b/octaviaclient/osc/v2/l7rule.py index 594e3be..8bf6722 100644 --- a/octaviaclient/osc/v2/l7rule.py +++ b/octaviaclient/osc/v2/l7rule.py @@ -130,7 +130,7 @@ class CreateL7Rule(command.ShowOne): l7policy_id, data['rule']['id'])) } - formatters = {'tags': v2_utils.format_list_flat} + formatters = {'tags': v2_utils.FlatListColumn} return (rows, (utils.get_dict_properties( data['rule'], rows, formatters=formatters))) @@ -245,7 +245,7 @@ class ShowL7Rule(command.ShowOne): l7rule_id=attrs['l7rule_id'], l7policy_id=attrs['l7policy_id'] ) - formatters = {'tags': v2_utils.format_list_flat} + formatters = {'tags': v2_utils.FlatListColumn} return (rows, (utils.get_dict_properties( data, rows, formatters=formatters))) diff --git a/octaviaclient/osc/v2/listener.py b/octaviaclient/osc/v2/listener.py index 987b518..4d3d5d9 100644 --- a/octaviaclient/osc/v2/listener.py +++ b/octaviaclient/osc/v2/listener.py @@ -258,12 +258,12 @@ class CreateListener(command.ShowOne): data['listener']['id'])) } - formatters = {'loadbalancers': v2_utils.format_list, - 'pools': v2_utils.format_list, - 'l7policies': v2_utils.format_list, - 'insert_headers': v2_utils.format_hash, - 'allowed_cidrs': v2_utils.format_list_flat, - 'tags': v2_utils.format_list_flat} + formatters = {'loadbalancers': v2_utils.ListColumn, + 'pools': v2_utils.ListColumn, + 'l7policies': v2_utils.ListColumn, + 'insert_headers': v2_utils.HashColumn, + 'allowed_cidrs': v2_utils.FlatListColumn, + 'tags': v2_utils.FlatListColumn} return (rows, (utils.get_dict_properties(data['listener'], @@ -352,7 +352,7 @@ class ListListener(lister.Lister): attrs = v2_utils.get_listener_attrs(self.app.client_manager, parsed_args) data = self.app.client_manager.load_balancer.listener_list(**attrs) - formatters = {'loadbalancers': v2_utils.format_list} + formatters = {'loadbalancers': v2_utils.ListColumn} return (columns, (utils.get_dict_properties(s, columns, formatters=formatters) for s in data['listeners'])) @@ -390,12 +390,12 @@ class ShowListener(command.ShowOne): data = self.app.client_manager.load_balancer.listener_show( listener_id=listener_id, ) - formatters = {'loadbalancers': v2_utils.format_list, - 'pools': v2_utils.format_list, - 'l7policies': v2_utils.format_list, - 'insert_headers': v2_utils.format_hash, - 'allowed_cidrs': v2_utils.format_list_flat, - 'tags': v2_utils.format_list_flat} + formatters = {'loadbalancers': v2_utils.ListColumn, + 'pools': v2_utils.ListColumn, + 'l7policies': v2_utils.ListColumn, + 'insert_headers': v2_utils.HashColumn, + 'allowed_cidrs': v2_utils.FlatListColumn, + 'tags': v2_utils.FlatListColumn} return rows, utils.get_dict_properties(data, rows, formatters=formatters) diff --git a/octaviaclient/osc/v2/load_balancer.py b/octaviaclient/osc/v2/load_balancer.py index 9ef4194..a2c99bb 100644 --- a/octaviaclient/osc/v2/load_balancer.py +++ b/octaviaclient/osc/v2/load_balancer.py @@ -179,10 +179,10 @@ class CreateLoadBalancer(command.ShowOne): data['loadbalancer']['vip_vnic_type'] = 'normal' formatters = { - 'listeners': v2_utils.format_list, - 'pools': v2_utils.format_list, - 'l7policies': v2_utils.format_list, - 'tags': v2_utils.format_list_flat + 'listeners': v2_utils.ListColumn, + 'pools': v2_utils.ListColumn, + 'l7policies': v2_utils.ListColumn, + 'tags': v2_utils.FlatListColumn } return (rows, @@ -407,10 +407,10 @@ class ShowLoadBalancer(command.ShowOne): data['vip_vnic_type'] = 'normal' formatters = { - 'listeners': v2_utils.format_list, - 'pools': v2_utils.format_list, - 'l7policies': v2_utils.format_list, - 'tags': v2_utils.format_list_flat + 'listeners': v2_utils.ListColumn, + 'pools': v2_utils.ListColumn, + 'l7policies': v2_utils.ListColumn, + 'tags': v2_utils.FlatListColumn } return (rows, (utils.get_dict_properties( diff --git a/octaviaclient/osc/v2/member.py b/octaviaclient/osc/v2/member.py index 6051a4a..86b126e 100644 --- a/octaviaclient/osc/v2/member.py +++ b/octaviaclient/osc/v2/member.py @@ -103,7 +103,7 @@ class ShowMember(command.ShowOne): if not data.get('vnic_type', False): data['vnic_type'] = 'normal' - formatters = {'tags': v2_utils.format_list_flat} + formatters = {'tags': v2_utils.FlatListColumn} return (rows, (utils.get_dict_properties( data, rows, formatters=formatters))) @@ -239,7 +239,7 @@ class CreateMember(command.ShowOne): if not data['member'].get('vnic_type', False): data['member']['vnic_type'] = 'normal' - formatters = {'tags': v2_utils.format_list_flat} + formatters = {'tags': v2_utils.FlatListColumn} return (rows, (utils.get_dict_properties( diff --git a/octaviaclient/osc/v2/pool.py b/octaviaclient/osc/v2/pool.py index 24519c0..7354f2c 100644 --- a/octaviaclient/osc/v2/pool.py +++ b/octaviaclient/osc/v2/pool.py @@ -181,11 +181,11 @@ class CreatePool(command.ShowOne): data['pool']['id'])) } - formatters = {'loadbalancers': v2_utils.format_list, - 'members': v2_utils.format_list, - 'listeners': v2_utils.format_list, - 'session_persistence': v2_utils.format_hash, - 'tags': v2_utils.format_list_flat} + formatters = {'loadbalancers': v2_utils.ListColumn, + 'members': v2_utils.ListColumn, + 'listeners': v2_utils.ListColumn, + 'session_persistence': v2_utils.HashColumn, + 'tags': v2_utils.FlatListColumn} return (rows, (utils.get_dict_properties( data['pool'], rows, formatters=formatters, @@ -244,9 +244,9 @@ class ListPool(lister.Lister): columns = const.POOL_COLUMNS attrs = v2_utils.get_pool_attrs(self.app.client_manager, parsed_args) data = self.app.client_manager.load_balancer.pool_list(**attrs) - formatters = {'loadbalancers': v2_utils.format_list, - 'members': v2_utils.format_list, - 'listeners': v2_utils.format_list} + formatters = {'loadbalancers': v2_utils.ListColumn, + 'members': v2_utils.ListColumn, + 'listeners': v2_utils.ListColumn} return (columns, (utils.get_dict_properties( @@ -284,11 +284,11 @@ class ShowPool(command.ShowOne): data = self.app.client_manager.load_balancer.pool_show( pool_id=pool_id, ) - formatters = {'loadbalancers': v2_utils.format_list, - 'members': v2_utils.format_list, - 'listeners': v2_utils.format_list, - 'session_persistence': v2_utils.format_hash, - 'tags': v2_utils.format_list_flat} + formatters = {'loadbalancers': v2_utils.ListColumn, + 'members': v2_utils.ListColumn, + 'listeners': v2_utils.ListColumn, + 'session_persistence': v2_utils.HashColumn, + 'tags': v2_utils.FlatListColumn} return (rows, (utils.get_dict_properties( data, rows, formatters=formatters, diff --git a/octaviaclient/osc/v2/quota.py b/octaviaclient/osc/v2/quota.py index 9614c71..ddb9426 100644 --- a/octaviaclient/osc/v2/quota.py +++ b/octaviaclient/osc/v2/quota.py @@ -45,7 +45,7 @@ class ListQuota(lister.Lister): attrs = v2_utils.get_listener_attrs(self.app.client_manager, parsed_args) data = self.app.client_manager.load_balancer.quota_list(**attrs) - formatters = {'quotas': v2_utils.format_list} + formatters = {'quotas': v2_utils.ListColumn} return (columns, (utils.get_dict_properties(s, columns, formatters=formatters) for s in data['quotas'])) diff --git a/octaviaclient/osc/v2/utils.py b/octaviaclient/osc/v2/utils.py index d376260..4772295 100644 --- a/octaviaclient/osc/v2/utils.py +++ b/octaviaclient/osc/v2/utils.py @@ -14,6 +14,7 @@ import functools import ipaddress +from cliff import columns from openstackclient.identity import common as identity_common from osc_lib import exceptions as osc_exc from osc_lib import utils @@ -702,16 +703,31 @@ def format_list(data): return '\n'.join(i['id'] for i in data) +class ListColumn(columns.FormattableColumn): + def human_readable(self): + return format_list(self._value) + + def format_list_flat(data): return '\n'.join(i for i in data) +class FlatListColumn(columns.FormattableColumn): + def human_readable(self): + return format_list_flat(self._value) + + def format_hash(data): if data: return '\n'.join('{}={}'.format(k, v) for k, v in data.items()) return None +class HashColumn(columns.FormattableColumn): + def human_readable(self): + return format_hash(self._value) + + def _format_kv(data): formatted_kv = {} values = data.split(',')