From af6ae1cc1ab271697c73da83e4846266ffeefcc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=9Cmit=20Seren?= Date: Wed, 21 Jul 2021 13:58:23 +0200 Subject: [PATCH] Bugfix: Allow to unset extra contracts Change-Id: I5478546c66a34cfbe66200853a50952bf9f7c327 --- gbpclient/gbp/v2_0/network.py | 19 +++++++++++++------ gbpclient/tests/unit/test_network.py | 23 +++++++++++++++++++++++ 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/gbpclient/gbp/v2_0/network.py b/gbpclient/gbp/v2_0/network.py index 4fd8bb5..c3340c4 100644 --- a/gbpclient/gbp/v2_0/network.py +++ b/gbpclient/gbp/v2_0/network.py @@ -63,12 +63,19 @@ def _get_attrs_network_extension(client_manager, parsed_args): ] = list(map(int, parsed_args.apic_nested_domain_allowed_vlans.split( ","))) - if parsed_args.apic_extra_provided_contracts: - attrs['apic:extra_provided_contracts' - ] = parsed_args.apic_extra_provided_contracts.split(",") - if parsed_args.apic_extra_consumed_contracts: - attrs['apic:extra_consumed_contracts' - ] = parsed_args.apic_extra_consumed_contracts.split(",") + if parsed_args.apic_extra_provided_contracts is not None: + if parsed_args.apic_extra_provided_contracts: + attrs['apic:extra_provided_contracts' + ] = parsed_args.apic_extra_provided_contracts.split(",") + else: + attrs['apic:extra_provided_contracts'] = [] + + if parsed_args.apic_extra_consumed_contracts is not None: + if parsed_args.apic_extra_consumed_contracts: + attrs['apic:extra_consumed_contracts' + ] = parsed_args.apic_extra_consumed_contracts.split(",") + else: + attrs['apic:extra_consumed_contracts'] = [] if parsed_args.apic_epg_contract_masters: attrs['apic:epg_contract_masters' ] = parsed_args.apic_epg_contract_masters.split(",") diff --git a/gbpclient/tests/unit/test_network.py b/gbpclient/tests/unit/test_network.py index 3e53631..a52d12c 100644 --- a/gbpclient/tests/unit/test_network.py +++ b/gbpclient/tests/unit/test_network.py @@ -135,6 +135,29 @@ class TestNetworkCreate(test_network.TestNetwork, test_cli20.CLITestV20Base): 'apic:policy_enforcement_pref': 'enforced', }) + def test_create_empty_contracts(self): + arglist = [ + self._network.name, + "--apic-extra-provided-contracts", '', + "--apic-extra-consumed-contracts", '', + ] + verifylist = [ + ('name', self._network.name), + ('apic_extra_provided_contracts', ''), + ('apic_extra_consumed_contracts', ''), + ] + create_ext = network_ext.CreateNetworkExtension(self.app) + parsed_args = self.check_parser_ext( + self.cmd, arglist, verifylist, create_ext) + columns, data = self.cmd.take_action(parsed_args) + + self.network.create_network.assert_called_once_with(**{ + 'admin_state_up': True, + 'name': self._network.name, + 'apic:extra_consumed_contracts': [], + 'apic:extra_provided_contracts': [], + }) + def test_create_no_nat_option(self): arglist = [ self._network.name,