diff --git a/neutronclient/neutron/v2_0/subnetpool.py b/neutronclient/neutron/v2_0/subnetpool.py index 138c5215a..ee6dedc57 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( '--description', help=_('Description of subnetpool.')) @@ -42,6 +42,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', @@ -49,7 +50,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', @@ -79,7 +80,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', @@ -139,7 +140,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 e4e460ab1..63d04f411 100644 --- a/neutronclient/tests/unit/test_cli20_subnetpool.py +++ b/neutronclient/tests/unit/test_cli20_subnetpool.py @@ -119,6 +119,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")