diff --git a/openstackclient/network/v2/network_agent.py b/openstackclient/network/v2/network_agent.py index 7d36e5e9f0..d429fa0830 100644 --- a/openstackclient/network/v2/network_agent.py +++ b/openstackclient/network/v2/network_agent.py @@ -20,6 +20,7 @@ from osc_lib import exceptions from osc_lib import utils from openstackclient.i18n import _ +from openstackclient.network import sdk_utils LOG = logging.getLogger(__name__) @@ -31,10 +32,19 @@ def _format_admin_state(state): _formatters = { 'admin_state_up': _format_admin_state, + 'is_admin_state_up': _format_admin_state, 'configurations': utils.format_dict, } +def _get_network_columns(item): + column_map = { + 'is_admin_state_up': 'admin_state_up', + 'is_alive': 'alive', + } + return sdk_utils.get_osc_show_columns_for_sdk_resource(item, column_map) + + class DeleteNetworkAgent(command.Command): _description = _("Delete network agent(s)") @@ -69,6 +79,8 @@ class DeleteNetworkAgent(command.Command): raise exceptions.CommandError(msg) +# TODO(huanxuan): Use the SDK resource mapped attribute names once the +# OSC minimum requirements include SDK 1.0. class ListNetworkAgent(command.Lister): _description = _("List network agents") @@ -98,8 +110,8 @@ class ListNetworkAgent(command.Lister): 'agent_type', 'host', 'availability_zone', - 'alive', - 'admin_state_up', + 'is_alive', + 'is_admin_state_up', 'binary' ) column_headers = ( @@ -138,6 +150,8 @@ class ListNetworkAgent(command.Lister): ) for s in data)) +# TODO(huanxuan): Use the SDK resource mapped attribute names once the +# OSC minimum requirements include SDK 1.0. class SetNetworkAgent(command.Command): _description = _("Set network agent properties") @@ -172,6 +186,8 @@ class SetNetworkAgent(command.Command): attrs = {} if parsed_args.description is not None: attrs['description'] = str(parsed_args.description) + # TODO(huanxuan): Also update by the new attribute name + # "is_admin_state_up" after sdk 0.9.12 if parsed_args.enable: attrs['admin_state_up'] = True if parsed_args.disable: @@ -194,6 +210,6 @@ class ShowNetworkAgent(command.ShowOne): def take_action(self, parsed_args): client = self.app.client_manager.network obj = client.get_agent(parsed_args.network_agent) - columns = tuple(sorted(list(obj.keys()))) + display_columns, columns = _get_network_columns(obj) data = utils.get_item_properties(obj, columns, formatters=_formatters,) - return columns, data + return display_columns, data diff --git a/openstackclient/tests/unit/network/v2/fakes.py b/openstackclient/tests/unit/network/v2/fakes.py index 98d5dea37b..524285ab18 100644 --- a/openstackclient/tests/unit/network/v2/fakes.py +++ b/openstackclient/tests/unit/network/v2/fakes.py @@ -565,6 +565,8 @@ class FakeNetworkAgent(object): agent_attrs.update(attrs) agent = fakes.FakeResource(info=copy.deepcopy(agent_attrs), loaded=True) + agent.is_admin_state_up = agent_attrs['admin_state_up'] + agent.is_alive = agent_attrs['alive'] return agent @staticmethod diff --git a/openstackclient/tests/unit/network/v2/test_network_agent.py b/openstackclient/tests/unit/network/v2/test_network_agent.py index 9964f14da5..2fc0c04328 100644 --- a/openstackclient/tests/unit/network/v2/test_network_agent.py +++ b/openstackclient/tests/unit/network/v2/test_network_agent.py @@ -195,6 +195,8 @@ class TestListNetworkAgent(TestNetworkAgent): self.assertEqual(self.data, list(data)) +# TODO(huanxuan): Also update by the new attribute name +# "is_admin_state_up" after sdk 0.9.12 class TestSetNetworkAgent(TestNetworkAgent): _network_agent = (