diff --git a/neutronclient/neutron/v2_0/subnetpool.py b/neutronclient/neutron/v2_0/subnetpool.py index a4a224753..74a7eb416 100644 --- a/neutronclient/neutron/v2_0/subnetpool.py +++ b/neutronclient/neutron/v2_0/subnetpool.py @@ -26,7 +26,7 @@ def _format_prefixes(subnetpool): return subnetpool['prefixes'] -def add_updatable_arguments(parser): +def add_updatable_arguments(parser, for_create=False): parser.add_argument( '--min-prefixlen', type=int, help=_('Subnetpool minimum prefix length.')) @@ -39,6 +39,7 @@ def add_updatable_arguments(parser): parser.add_argument( '--pool-prefix', action='append', dest='prefixes', + required=for_create, help=_('Subnetpool prefixes (This option can be repeated).')) utils.add_boolean_argument( parser, '--is-default', @@ -46,7 +47,7 @@ def add_updatable_arguments(parser): '(True meaning default).')) -def updatable_args2body(parsed_args, body, for_create=True): +def updatable_args2body(parsed_args, body): neutronV20.update_dict(parsed_args, body, ['name', 'prefixes', 'default_prefixlen', 'min_prefixlen', 'max_prefixlen', 'is_default']) @@ -75,7 +76,7 @@ class CreateSubnetPool(neutronV20.CreateCommand): resource = 'subnetpool' def add_known_arguments(self, parser): - add_updatable_arguments(parser) + add_updatable_arguments(parser, for_create=True) parser.add_argument( '--shared', action='store_true', @@ -135,7 +136,7 @@ class UpdateSubnetPool(neutronV20.UpdateCommand): def args2body(self, parsed_args): body = {} - updatable_args2body(parsed_args, body, for_create=False) + updatable_args2body(parsed_args, body) # Parse and update for "address-scope" option/s if parsed_args.no_address_scope: diff --git a/neutronclient/tests/unit/test_cli20_subnetpool.py b/neutronclient/tests/unit/test_cli20_subnetpool.py index 60d25de6f..371a3c914 100644 --- a/neutronclient/tests/unit/test_cli20_subnetpool.py +++ b/neutronclient/tests/unit/test_cli20_subnetpool.py @@ -118,6 +118,19 @@ class CLITestV20SubnetPoolJSON(test_cli20.CLITestV20Base): self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values) + def test_create_subnetpool_no_poolprefix(self): + # Should raise an error because --pool-prefix is required + resource = 'subnetpool' + cmd = subnetpool.CreateSubnetPool(test_cli20.MyApp(sys.stdout), None) + name = 'myname' + myid = 'myid' + args = [name] + position_names = ['name'] + position_values = [name] + self.assertRaises(SystemExit, self._test_create_resource, resource, + cmd, name, myid, args, position_names, + position_values) + def test_list_subnetpool_pagination(self): cmd = subnetpool.ListSubnetPool(test_cli20.MyApp(sys.stdout), None) self.mox.StubOutWithMock(subnetpool.ListSubnetPool, "extend_list")