From d50d16f6978859a3b2b56550ed5e046479462566 Mon Sep 17 00:00:00 2001 From: Sayali Naval Date: Tue, 13 Apr 2021 21:28:31 -0700 Subject: [PATCH] Add support for Policy Enforcement Pref Add APIC Policy Enforcement Pref attribute to OpenStack CLI Network Extension. Change-Id: I8df9c6adeada0eb647309a3ffa15dd4f010b5c6c --- gbpclient/gbp/v2_0/network.py | 21 +++++++++++++++++++++ gbpclient/tests/unit/test_network.py | 8 ++++++++ 2 files changed, 29 insertions(+) diff --git a/gbpclient/gbp/v2_0/network.py b/gbpclient/gbp/v2_0/network.py index a07d904..69f0080 100644 --- a/gbpclient/gbp/v2_0/network.py +++ b/gbpclient/gbp/v2_0/network.py @@ -78,6 +78,9 @@ def _get_attrs_network_extension(client_manager, parsed_args): for element in parsed_args.apic_distinguished_names: result.update(element) attrs['apic:distinguished_names'] = result + if parsed_args.apic_policy_enforcement_pref: + attrs['apic:policy_enforcement_pref' + ] = parsed_args.apic_policy_enforcement_pref if parsed_args.external: if 'apic_nat_type' in parsed_args and \ parsed_args.apic_nat_type: @@ -116,6 +119,8 @@ network_sdk.Network.apic_epg_contract_masters = resource.Body( 'apic:epg_contract_masters') network_sdk.Network.apic_distinguished_names = resource.Body( 'apic:distinguished_names') +network_sdk.Network.apic_policy_enforcement_pref = resource.Body( + 'apic:policy_enforcement_pref') network_sdk.Network.apic_nat_type = resource.Body('apic:nat_type') network_sdk.Network.apic_external_cidrs = resource.Body('apic:external_cidrs') @@ -256,6 +261,14 @@ class CreateNetworkExtension(hooks.CommandHook): "Syntax Example: BridgeDomain=aaa or ExternalNetwork=bbb " "or ExternalNetwork=aaa,BridgeDomain=bbb ") ) + parser.add_argument( + '--apic-policy-enforcement-pref', + metavar="", + dest='apic_policy_enforcement_pref', + help=_("APIC Policy Enforcement Pref\n" + "Default value is 'unenforced'\n" + "Valid values: unenforced, enforced, '' ") + ) parser.add_argument( '--apic-nat-type', metavar="", @@ -395,6 +408,14 @@ class SetNetworkExtension(hooks.CommandHook): "Default value is []\n" "Syntax Example: foo or foo,bar ") ) + parser.add_argument( + '--apic-policy-enforcement-pref', + metavar="", + dest='apic_policy_enforcement_pref', + help=_("APIC Policy Enforcement Pref\n" + "Default value is 'unenforced'\n" + "Valid values: unenforced, enforced, '' ") + ) parser.add_argument( '--apic-external-cidrs', metavar="", diff --git a/gbpclient/tests/unit/test_network.py b/gbpclient/tests/unit/test_network.py index 8a5c852..3ed20c8 100644 --- a/gbpclient/tests/unit/test_network.py +++ b/gbpclient/tests/unit/test_network.py @@ -52,6 +52,7 @@ class TestNetworkCreate(test_network.TestNetwork, test_cli20.CLITestV20Base): ('apic_nested_domain_node_network_vlan', None), ('apic_extra_provided_contracts', None), ('apic_extra_consumed_contracts', None), + ('apic_policy_enforcement_pref', None), ] create_ext = network_ext.CreateNetworkExtension(self.app) parsed_args = self.check_parser_ext( @@ -82,6 +83,7 @@ class TestNetworkCreate(test_network.TestNetwork, test_cli20.CLITestV20Base): "--apic-nested-domain-node-network-vlan", '4', "--apic-extra-provided-contracts", 'pcontest1', "--apic-extra-consumed-contracts", 'contest1', + "--apic-policy-enforcement-pref", 'enforced', ] verifylist = [ ('name', self._network.name), @@ -101,6 +103,7 @@ class TestNetworkCreate(test_network.TestNetwork, test_cli20.CLITestV20Base): ('apic_nested_domain_node_network_vlan', '4'), ('apic_extra_provided_contracts', 'pcontest1'), ('apic_extra_consumed_contracts', 'contest1'), + ('apic_policy_enforcement_pref', 'enforced'), ] create_ext = network_ext.CreateNetworkExtension(self.app) parsed_args = self.check_parser_ext( @@ -127,6 +130,7 @@ class TestNetworkCreate(test_network.TestNetwork, test_cli20.CLITestV20Base): 'apic:nested_domain_infra_vlan': '1', 'apic:nested_domain_node_network_vlan': '4', 'apic:nested_domain_service_vlan': '3', + 'apic:policy_enforcement_pref': 'enforced', }) @@ -160,6 +164,7 @@ class TestNetworkSet(test_network.TestNetwork, test_cli20.CLITestV20Base): ('apic_nested_domain_node_network_vlan', None), ('apic_extra_provided_contracts', None), ('apic_extra_consumed_contracts', None), + ('apic_policy_enforcement_pref', None), ] set_ext = network_ext.SetNetworkExtension(self.app) parsed_args = self.check_parser_ext( @@ -185,6 +190,7 @@ class TestNetworkSet(test_network.TestNetwork, test_cli20.CLITestV20Base): "--apic-nested-domain-node-network-vlan", '5', "--apic-extra-provided-contracts", 'pcontest1,pcontest11', "--apic-extra-consumed-contracts", 'contest1,contest11', + "--apic-policy-enforcement-pref", 'enforced', ] verifylist = [ ('network', self._network.name), @@ -201,6 +207,7 @@ class TestNetworkSet(test_network.TestNetwork, test_cli20.CLITestV20Base): ('apic_nested_domain_node_network_vlan', '5'), ('apic_extra_provided_contracts', 'pcontest1,pcontest11'), ('apic_extra_consumed_contracts', 'contest1,contest11'), + ('apic_policy_enforcement_pref', 'enforced'), ] set_ext = network_ext.SetNetworkExtension(self.app) parsed_args = self.check_parser_ext( @@ -222,6 +229,7 @@ class TestNetworkSet(test_network.TestNetwork, test_cli20.CLITestV20Base): 'apic:nested_domain_infra_vlan': '2', 'apic:nested_domain_node_network_vlan': '5', 'apic:nested_domain_service_vlan': '4', + 'apic:policy_enforcement_pref': 'enforced', } self.network.update_network.assert_called_once_with(