Merge "Add apic-no-external-cidrs field to OpenStack CLI network resource"

This commit is contained in:
Zuul
2021-05-19 16:06:26 +00:00
committed by Gerrit Code Review
2 changed files with 53 additions and 0 deletions

View File

@@ -88,6 +88,9 @@ def _get_attrs_network_extension(client_manager, parsed_args):
if parsed_args.apic_external_cidrs: if parsed_args.apic_external_cidrs:
attrs['apic:external_cidrs' attrs['apic:external_cidrs'
] = parsed_args.apic_external_cidrs.split(",") ] = parsed_args.apic_external_cidrs.split(",")
if 'apic_no_external_cidrs' in parsed_args and \
parsed_args.apic_no_external_cidrs:
attrs['apic:external_cidrs'] = []
return attrs return attrs
@@ -423,10 +426,20 @@ class SetNetworkExtension(hooks.CommandHook):
help=_("APIC external CIDRS for external network\n" help=_("APIC external CIDRS for external network\n"
"For external type networks only\n" "For external type networks only\n"
"Data is passed as comma separated valid ip subnets\n" "Data is passed as comma separated valid ip subnets\n"
"Need to pass the --external argument wth this field\n"
"Default value is ['0.0.0.0/0']\n" "Default value is ['0.0.0.0/0']\n"
"Syntax Example: 10.10.10.0/24 " "Syntax Example: 10.10.10.0/24 "
"or 10.10.10.0/24,20.20.20.0/24 ") "or 10.10.10.0/24,20.20.20.0/24 ")
) )
parser.add_argument(
'--apic-no-external-cidrs',
dest='apic_no_external_cidrs',
action='store_true',
help=_("Reset APIC external CIDRS for external network\n"
"For external type networks only\n"
"Need to pass the --external argument wth this field\n"
"Resets the apic:external_cidrs field to 0.0.0.0/0 ")
)
return parser return parser
def get_epilog(self): def get_epilog(self):

View File

@@ -34,6 +34,7 @@ class TestNetworkCreate(test_network.TestNetwork, test_cli20.CLITestV20Base):
def test_create_default_options(self): def test_create_default_options(self):
arglist = [ arglist = [
self._network.name, self._network.name,
"--external",
] ]
verifylist = [ verifylist = [
('name', self._network.name), ('name', self._network.name),
@@ -62,6 +63,7 @@ class TestNetworkCreate(test_network.TestNetwork, test_cli20.CLITestV20Base):
self.network.create_network.assert_called_once_with(**{ self.network.create_network.assert_called_once_with(**{
'admin_state_up': True, 'admin_state_up': True,
'name': self._network.name, 'name': self._network.name,
'router:external': True,
}) })
def test_create_all_options(self): def test_create_all_options(self):
@@ -264,3 +266,41 @@ class TestNetworkSet(test_network.TestNetwork, test_cli20.CLITestV20Base):
self.network.update_network.assert_called_once_with( self.network.update_network.assert_called_once_with(
self._network, **attrs) self._network, **attrs)
self.assertIsNone(result) self.assertIsNone(result)
def test_set_apic_no_external_cidrs(self):
arglist = [
self._network.name,
"--external",
"--apic-no-external-cidrs",
]
verifylist = [
('network', self._network.name),
('external', True),
('apic_nested_domain_name', None),
('apic_nested_domain_type', None),
('apic_external_cidrs', None),
('apic_no_external_cidrs', True),
('apic_bgp_enable', None),
('apic_bgp_asn', None),
('apic_bgp_type', None),
('apic_nested_domain_infra_vlan', None),
('apic_nested_domain_allowed_vlans', None),
('apic_nested_domain_service_vlan', None),
('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(
self.cmd, arglist, verifylist, set_ext)
result = self.cmd.take_action(parsed_args)
attrs = {
'router:external': True,
'apic:external_cidrs': [],
}
self.network.update_network.assert_called_once_with(
self._network, **attrs)
self.assertIsNone(result)