diff --git a/octaviaclient/osc/v2/amphora.py b/octaviaclient/osc/v2/amphora.py index 20162a9..38226c7 100644 --- a/octaviaclient/osc/v2/amphora.py +++ b/octaviaclient/osc/v2/amphora.py @@ -100,11 +100,9 @@ class ShowAmphora(command.ShowOne): return parser def take_action(self, parsed_args): - attrs = v2_utils.get_amphora_attrs(self.app.client_manager, - parsed_args) data = self.app.client_manager.load_balancer.amphora_show( - amphora_id=attrs.pop('amphora_id'), + amphora_id=parsed_args.amphora_id, ) rows = const.AMPHORA_ROWS diff --git a/octaviaclient/osc/v2/flavor.py b/octaviaclient/osc/v2/flavor.py index 489c4c0..38aff4e 100644 --- a/octaviaclient/osc/v2/flavor.py +++ b/octaviaclient/osc/v2/flavor.py @@ -19,7 +19,9 @@ from cliff import lister from osc_lib.command import command +from osc_lib import exceptions from osc_lib import utils +from oslo_utils import uuidutils from octaviaclient.osc.v2 import constants as const from octaviaclient.osc.v2 import utils as v2_utils @@ -162,13 +164,21 @@ class ShowFlavor(command.ShowOne): def take_action(self, parsed_args): rows = const.FLAVOR_ROWS - attrs = v2_utils.get_flavor_attrs(self.app.client_manager, - parsed_args) - flavor_id = attrs.pop('flavor_id') + data = None + if uuidutils.is_uuid_like(parsed_args.flavor): + try: + data = self.app.client_manager.load_balancer.flavor_show( + flavor_id=parsed_args.flavor) + except exceptions.NotFound: + pass + if data is None: + attrs = v2_utils.get_flavor_attrs(self.app.client_manager, + parsed_args) + flavor_id = attrs.pop('flavor_id') - data = self.app.client_manager.load_balancer.flavor_show( - flavor_id=flavor_id - ) + data = self.app.client_manager.load_balancer.flavor_show( + flavor_id=flavor_id + ) formatters = {'flavorprofiles': v2_utils.format_list} return (rows, (utils.get_dict_properties( diff --git a/octaviaclient/osc/v2/flavorprofile.py b/octaviaclient/osc/v2/flavorprofile.py index 5959048..f94d5c8 100644 --- a/octaviaclient/osc/v2/flavorprofile.py +++ b/octaviaclient/osc/v2/flavorprofile.py @@ -17,7 +17,9 @@ from cliff import lister from osc_lib.command import command +from osc_lib import exceptions from osc_lib import utils +from oslo_utils import uuidutils from octaviaclient.osc.v2 import constants as const from octaviaclient.osc.v2 import utils as v2_utils @@ -132,13 +134,22 @@ class ShowFlavorProfile(command.ShowOne): def take_action(self, parsed_args): rows = const.FLAVORPROFILE_ROWS - attrs = v2_utils.get_flavorprofile_attrs(self.app.client_manager, - parsed_args) - flavorprofile_id = attrs.pop('flavorprofile_id') + data = None + if uuidutils.is_uuid_like(parsed_args.flavorprofile): + try: + data = ( + self.app.client_manager.load_balancer.flavorprofile_show( + flavorprofile_id=parsed_args.flavorprofile)) + except exceptions.NotFound: + pass + if data is None: + attrs = v2_utils.get_flavorprofile_attrs(self.app.client_manager, + parsed_args) + flavorprofile_id = attrs.pop('flavorprofile_id') - data = self.app.client_manager.load_balancer.flavorprofile_show( - flavorprofile_id=flavorprofile_id - ) + data = self.app.client_manager.load_balancer.flavorprofile_show( + flavorprofile_id=flavorprofile_id + ) return (rows, (utils.get_dict_properties( data, rows, formatters={}))) diff --git a/octaviaclient/osc/v2/health_monitor.py b/octaviaclient/osc/v2/health_monitor.py index 18fca54..df381e4 100644 --- a/octaviaclient/osc/v2/health_monitor.py +++ b/octaviaclient/osc/v2/health_monitor.py @@ -19,7 +19,9 @@ from cliff import lister from osc_lib.command import command +from osc_lib import exceptions from osc_lib import utils +from oslo_utils import uuidutils from octaviaclient.osc.v2 import constants as const from octaviaclient.osc.v2 import utils as v2_utils @@ -212,14 +214,23 @@ class ShowHealthMonitor(command.ShowOne): def take_action(self, parsed_args): rows = const.MONITOR_ROWS - attrs = v2_utils.get_health_monitor_attrs(self.app.client_manager, - parsed_args) + data = None + if uuidutils.is_uuid_like(parsed_args.health_monitor): + try: + data = ( + self.app.client_manager.load_balancer.health_monitor_show( + health_monitor_id=parsed_args.health_monitor)) + except exceptions.NotFound: + pass + if data is None: + attrs = v2_utils.get_health_monitor_attrs(self.app.client_manager, + parsed_args) - health_monitor_id = attrs.pop('health_monitor_id') + health_monitor_id = attrs.pop('health_monitor_id') - data = self.app.client_manager.load_balancer.health_monitor_show( - health_monitor_id=health_monitor_id, - ) + data = self.app.client_manager.load_balancer.health_monitor_show( + health_monitor_id=health_monitor_id, + ) formatters = {'pools': v2_utils.format_list} return (rows, diff --git a/octaviaclient/osc/v2/l7policy.py b/octaviaclient/osc/v2/l7policy.py index 11eb6b3..5a6c688 100644 --- a/octaviaclient/osc/v2/l7policy.py +++ b/octaviaclient/osc/v2/l7policy.py @@ -18,7 +18,9 @@ from cliff import lister from osc_lib.command import command +from osc_lib import exceptions from osc_lib import utils +from oslo_utils import uuidutils from octaviaclient.osc.v2 import constants as const from octaviaclient.osc.v2 import utils as v2_utils @@ -192,14 +194,22 @@ class ShowL7Policy(command.ShowOne): def take_action(self, parsed_args): rows = const.L7POLICY_ROWS - attrs = v2_utils.get_l7policy_attrs(self.app.client_manager, - parsed_args) + data = None + if uuidutils.is_uuid_like(parsed_args.l7policy): + try: + data = self.app.client_manager.load_balancer.l7policy_show( + l7policy_id=parsed_args.l7policy) + except exceptions.NotFound: + pass + if data is None: + attrs = v2_utils.get_l7policy_attrs(self.app.client_manager, + parsed_args) - l7policy_id = attrs.pop('l7policy_id') + l7policy_id = attrs.pop('l7policy_id') - data = self.app.client_manager.load_balancer.l7policy_show( - l7policy_id=l7policy_id, - ) + data = self.app.client_manager.load_balancer.l7policy_show( + l7policy_id=l7policy_id, + ) formatters = {'rules': v2_utils.format_list} return (rows, (utils.get_dict_properties( diff --git a/octaviaclient/osc/v2/l7rule.py b/octaviaclient/osc/v2/l7rule.py index 2566395..9470f6b 100644 --- a/octaviaclient/osc/v2/l7rule.py +++ b/octaviaclient/osc/v2/l7rule.py @@ -18,7 +18,9 @@ from cliff import lister from osc_lib.command import command +from osc_lib import exceptions from osc_lib import utils +from oslo_utils import uuidutils from octaviaclient.osc.v2 import constants as const from octaviaclient.osc.v2 import utils as v2_utils @@ -181,12 +183,22 @@ class ShowL7Rule(command.ShowOne): def take_action(self, parsed_args): rows = const.L7RULE_ROWS - - attrs = v2_utils.get_l7rule_attrs(self.app.client_manager, parsed_args) - data = self.app.client_manager.load_balancer.l7rule_show( - l7rule_id=attrs['l7rule_id'], - l7policy_id=attrs['l7policy_id'] - ) + data = None + if (uuidutils.is_uuid_like(parsed_args.l7policy) and + uuidutils.is_uuid_like(parsed_args.l7rule)): + try: + data = self.app.client_manager.load_balancer.l7rule_show( + l7rule_id=parsed_args.l7rule, + l7policy_id=parsed_args.l7policy) + except exceptions.NotFound: + pass + if data is None: + attrs = v2_utils.get_l7rule_attrs(self.app.client_manager, + parsed_args) + data = self.app.client_manager.load_balancer.l7rule_show( + l7rule_id=attrs['l7rule_id'], + l7policy_id=attrs['l7policy_id'] + ) return (rows, (utils.get_dict_properties( data, rows, formatters={}))) diff --git a/octaviaclient/osc/v2/listener.py b/octaviaclient/osc/v2/listener.py index 6eb2f03..12f1336 100644 --- a/octaviaclient/osc/v2/listener.py +++ b/octaviaclient/osc/v2/listener.py @@ -17,7 +17,9 @@ from cliff import lister from osc_lib.command import command +from osc_lib import exceptions from osc_lib import utils +from oslo_utils import uuidutils from octaviaclient.osc.v2 import constants as const from octaviaclient.osc.v2 import utils as v2_utils @@ -277,14 +279,22 @@ class ShowListener(command.ShowOne): def take_action(self, parsed_args): rows = const.LISTENER_ROWS - attrs = v2_utils.get_listener_attrs(self.app.client_manager, - parsed_args) + data = None + if uuidutils.is_uuid_like(parsed_args.listener): + try: + data = self.app.client_manager.load_balancer.listener_show( + listener_id=parsed_args.listener) + except exceptions.NotFound: + pass + if data is None: + attrs = v2_utils.get_listener_attrs(self.app.client_manager, + parsed_args) - listener_id = attrs.pop('listener_id') + listener_id = attrs.pop('listener_id') - data = self.app.client_manager.load_balancer.listener_show( - listener_id=listener_id, - ) + 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, diff --git a/octaviaclient/osc/v2/load_balancer.py b/octaviaclient/osc/v2/load_balancer.py index 46d1505..5f93197 100644 --- a/octaviaclient/osc/v2/load_balancer.py +++ b/octaviaclient/osc/v2/load_balancer.py @@ -18,6 +18,7 @@ from osc_lib.command import command from osc_lib import exceptions from osc_lib import utils from oslo_serialization import jsonutils +from oslo_utils import uuidutils from octaviaclient.osc.v2 import constants as const from octaviaclient.osc.v2 import utils as v2_utils @@ -304,13 +305,23 @@ class ShowLoadBalancer(command.ShowOne): def take_action(self, parsed_args): rows = const.LOAD_BALANCER_ROWS - attrs = v2_utils.get_loadbalancer_attrs(self.app.client_manager, - parsed_args) - lb_id = attrs.pop('loadbalancer_id') + data = None - data = self.app.client_manager.load_balancer.load_balancer_show( - lb_id=lb_id - ) + if uuidutils.is_uuid_like(parsed_args.loadbalancer): + try: + data = ( + self.app.client_manager.load_balancer.load_balancer_show( + lb_id=parsed_args.loadbalancer)) + except exceptions.NotFound: + pass + + if data is None: + attrs = v2_utils.get_loadbalancer_attrs( + self.app.client_manager, parsed_args) + lb_id = attrs.pop('loadbalancer_id') + + data = self.app.client_manager.load_balancer.load_balancer_show( + lb_id=lb_id) formatters = { 'listeners': v2_utils.format_list, diff --git a/octaviaclient/osc/v2/member.py b/octaviaclient/osc/v2/member.py index c72a023..19f28d5 100644 --- a/octaviaclient/osc/v2/member.py +++ b/octaviaclient/osc/v2/member.py @@ -18,7 +18,9 @@ from cliff import lister from osc_lib.command import command +from osc_lib import exceptions from osc_lib import utils +from oslo_utils import uuidutils from octaviaclient.osc.v2 import constants as const from octaviaclient.osc.v2 import utils as v2_utils @@ -75,13 +77,23 @@ class ShowMember(command.ShowOne): def take_action(self, parsed_args): rows = const.MEMBER_ROWS - attrs = v2_utils.get_member_attrs(self.app.client_manager, parsed_args) + data = None + if (uuidutils.is_uuid_like(parsed_args.pool) and + uuidutils.is_uuid_like(parsed_args.member)): + try: + data = self.app.client_manager.load_balancer.member_show( + pool_id=parsed_args.pool, member_id=parsed_args.member) + except exceptions.NotFound: + pass + if data is None: + attrs = v2_utils.get_member_attrs(self.app.client_manager, + parsed_args) - member_id = attrs.pop('member_id') - pool_id = attrs.pop('pool_id') + member_id = attrs.pop('member_id') + pool_id = attrs.pop('pool_id') - data = self.app.client_manager.load_balancer.member_show( - pool_id=pool_id, member_id=member_id) + data = self.app.client_manager.load_balancer.member_show( + pool_id=pool_id, member_id=member_id) return (rows, (utils.get_dict_properties( data, rows, formatters={}))) diff --git a/octaviaclient/osc/v2/pool.py b/octaviaclient/osc/v2/pool.py index b26d528..f4e85f7 100644 --- a/octaviaclient/osc/v2/pool.py +++ b/octaviaclient/osc/v2/pool.py @@ -17,7 +17,9 @@ from cliff import lister from osc_lib.command import command +from osc_lib import exceptions from osc_lib import utils +from oslo_utils import uuidutils from octaviaclient.osc.v2 import constants as const from octaviaclient.osc.v2 import utils as v2_utils @@ -207,13 +209,21 @@ class ShowPool(command.ShowOne): def take_action(self, parsed_args): rows = const.POOL_ROWS + data = None + if uuidutils.is_uuid_like(parsed_args.pool): + try: + data = self.app.client_manager.load_balancer.pool_show( + pool_id=parsed_args.pool) + except exceptions.NotFound: + pass + if data is None: + attrs = v2_utils.get_pool_attrs(self.app.client_manager, + parsed_args) + pool_id = attrs.pop('pool_id') - attrs = v2_utils.get_pool_attrs(self.app.client_manager, parsed_args) - pool_id = attrs.pop('pool_id') - - data = self.app.client_manager.load_balancer.pool_show( - pool_id=pool_id, - ) + 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, diff --git a/octaviaclient/osc/v2/quota.py b/octaviaclient/osc/v2/quota.py index 092e5c7..e246561 100644 --- a/octaviaclient/osc/v2/quota.py +++ b/octaviaclient/osc/v2/quota.py @@ -20,6 +20,7 @@ from cliff import lister from osc_lib.command import command from osc_lib import exceptions from osc_lib import utils +from oslo_utils import uuidutils from octaviaclient.osc.v2 import constants as const from octaviaclient.osc.v2 import utils as v2_utils @@ -66,13 +67,21 @@ class ShowQuota(command.ShowOne): def take_action(self, parsed_args): rows = const.QUOTA_ROWS - attrs = v2_utils.get_quota_attrs(self.app.client_manager, - parsed_args) - project_id = attrs.pop('project_id') + data = None + if uuidutils.is_uuid_like(parsed_args.project): + try: + data = self.app.client_manager.load_balancer.quota_show( + project_id=parsed_args.project) + except exceptions.NotFound: + pass + if data is None: + attrs = v2_utils.get_quota_attrs(self.app.client_manager, + parsed_args) + project_id = attrs.pop('project_id') - data = self.app.client_manager.load_balancer.quota_show( - project_id=project_id - ) + data = self.app.client_manager.load_balancer.quota_show( + project_id=project_id + ) return (rows, (utils.get_dict_properties(data, rows))) diff --git a/releasenotes/notes/show-command-enhancement-df414a70df0a7089.yml b/releasenotes/notes/show-command-enhancement-df414a70df0a7089.yml new file mode 100644 index 0000000..edd473c --- /dev/null +++ b/releasenotes/notes/show-command-enhancement-df414a70df0a7089.yml @@ -0,0 +1,6 @@ +--- +features: + - | + If ID of resource is passed to resource show command - call is done + directly using passed UUID. If name of resource is in UUID format - list of + resources will be still executed to get correct resource ID. \ No newline at end of file