diff --git a/lib/ansible/modules/network/onyx/onyx_linkagg.py b/lib/ansible/modules/network/onyx/onyx_linkagg.py index 776d051677e..acfd5b488c4 100644 --- a/lib/ansible/modules/network/onyx/onyx_linkagg.py +++ b/lib/ansible/modules/network/onyx/onyx_linkagg.py @@ -109,6 +109,7 @@ class OnyxLinkAggModule(BaseOnyxModule): CHANNEL_GROUP = 'channel-group' MLAG_PORT_CHANNEL = 'mlag-port-channel' MLAG_CHANNEL_GROUP = 'mlag-channel-group' + MLAG_SUMMARY = 'MLAG Port-Channel Summary' LAG_TYPE = 'lag' MLAG_TYPE = 'mlag' @@ -225,7 +226,21 @@ class OnyxLinkAggModule(BaseOnyxModule): def _parse_port_channels_summary(self, lag_type, lag_summary): if lag_type == self.MLAG_TYPE: - lag_summary = lag_summary.get('MLAG Port-Channel Summary', {}) + if self._os_version >= self.ONYX_API_VERSION: + found_summary = False + for summary_item in lag_summary: + if self.MLAG_SUMMARY in summary_item: + lag_summary = summary_item[self.MLAG_SUMMARY] + if lag_summary: + lag_summary = lag_summary[0] + else: + lag_summary = dict() + found_summary = True + break + if not found_summary: + lag_summary = dict() + else: + lag_summary = lag_summary.get(self.MLAG_SUMMARY, dict()) for lag_key, lag_data in iteritems(lag_summary): lag_name, state = self._extract_lag_name(lag_key) if not lag_name: @@ -240,6 +255,7 @@ class OnyxLinkAggModule(BaseOnyxModule): def load_current_config(self): self._current_config = dict() + self._os_version = self._get_os_version() lag_types = set([lag_obj['type'] for lag_obj in self._required_config]) for lag_type in lag_types: if_type = self.IF_TYPE_MAP[lag_type] diff --git a/test/units/modules/network/onyx/test_onyx_linkagg.py b/test/units/modules/network/onyx/test_onyx_linkagg.py index 864e7dd0307..ba7f970302a 100644 --- a/test/units/modules/network/onyx/test_onyx_linkagg.py +++ b/test/units/modules/network/onyx/test_onyx_linkagg.py @@ -26,15 +26,20 @@ class TestOnyxLinkaggModule(TestOnyxModule): self.mock_load_config = patch( 'ansible.module_utils.network.onyx.onyx.load_config') self.load_config = self.mock_load_config.start() + self.mock_get_version = patch.object( + onyx_linkagg.OnyxLinkAggModule, "_get_os_version") + self.get_version = self.mock_get_version.start() def tearDown(self): super(TestOnyxLinkaggModule, self).tearDown() self.mock_get_config.stop() self.mock_load_config.stop() + self.mock_get_version.stop() def load_fixture(self, config_file): self.get_config.return_value = load_fixture(config_file) self.load_config.return_value = None + self.get_version.return_value = "3.6.5000" def load_port_channel_fixture(self): config_file = 'onyx_port_channel_show.cfg'