Identity: Add --project-domain option for limits
Change-Id: Ia0930c8dbd3325e0eeadf91716e7dfaabbfd1978 Signed-off-by: 0weng <oweng@osuosl.org>
This commit is contained in:
@@ -68,6 +68,7 @@ class CreateLimit(command.ShowOne):
|
||||
required=True,
|
||||
help=_('Project to associate the resource limit to'),
|
||||
)
|
||||
common_utils.add_project_domain_option_to_parser(parser)
|
||||
parser.add_argument(
|
||||
'--service',
|
||||
metavar='<service>',
|
||||
@@ -98,12 +99,12 @@ class CreateLimit(command.ShowOne):
|
||||
if parsed_args.description:
|
||||
kwargs["description"] = parsed_args.description
|
||||
|
||||
# TODO(0weng): Add --project-domain option
|
||||
# to support filtering project domain
|
||||
kwargs["project_id"] = common_utils._find_sdk_id(
|
||||
identity_client.find_project,
|
||||
name_or_id=parsed_args.project,
|
||||
kwargs["project_id"] = common_utils.find_project_id_sdk(
|
||||
identity_client,
|
||||
parsed_args.project,
|
||||
domain_name_or_id=parsed_args.project_domain,
|
||||
)
|
||||
|
||||
kwargs["service_id"] = common_utils.find_service_sdk(
|
||||
identity_client, parsed_args.service
|
||||
).id
|
||||
@@ -144,6 +145,8 @@ class ListLimit(command.Lister):
|
||||
metavar='<project>',
|
||||
help=_('List resource limits associated with project'),
|
||||
)
|
||||
common_utils.add_project_domain_option_to_parser(parser)
|
||||
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
@@ -160,12 +163,17 @@ class ListLimit(command.Lister):
|
||||
parsed_args.region
|
||||
).id
|
||||
|
||||
# TODO(0weng): Add --project-domain option
|
||||
# to support filtering project domain
|
||||
if parsed_args.project:
|
||||
project_domain_id = None
|
||||
if parsed_args.project_domain:
|
||||
project_domain_id = common_utils.find_domain_id_sdk(
|
||||
identity_client, parsed_args.project_domain
|
||||
)
|
||||
|
||||
kwargs["project_id"] = common_utils._find_sdk_id(
|
||||
identity_client.find_project,
|
||||
name_or_id=parsed_args.project,
|
||||
domain_id=project_domain_id,
|
||||
)
|
||||
|
||||
if parsed_args.resource_name:
|
||||
|
||||
@@ -100,6 +100,53 @@ class LimitTestCase(common.IdentityTests):
|
||||
self.assert_show_fields(items, self.LIMIT_FIELDS)
|
||||
registered_limit_id = self._create_dummy_registered_limit()
|
||||
|
||||
def test_limit_create_with_project_domain(self):
|
||||
registered_limit_id = self._create_dummy_registered_limit()
|
||||
raw_output = self.openstack(
|
||||
f'registered limit show {registered_limit_id}',
|
||||
cloud=SYSTEM_CLOUD,
|
||||
)
|
||||
items = self.parse_show(raw_output)
|
||||
service_id = self._extract_value_from_items('service_id', items)
|
||||
resource_name = self._extract_value_from_items('resource_name', items)
|
||||
|
||||
raw_output = self.openstack(f'service show {service_id}')
|
||||
items = self.parse_show(raw_output)
|
||||
service_name = self._extract_value_from_items('name', items)
|
||||
|
||||
project_name = self._create_dummy_project()
|
||||
raw_output = self.openstack(
|
||||
f'project show {project_name}',
|
||||
cloud=SYSTEM_CLOUD,
|
||||
)
|
||||
items = self.parse_show(raw_output)
|
||||
domain_id = self._extract_value_from_items('domain_id', items)
|
||||
|
||||
params = {
|
||||
'project_name': project_name,
|
||||
'project_domain': domain_id,
|
||||
'service_name': service_name,
|
||||
'resource_name': resource_name,
|
||||
'resource_limit': 15,
|
||||
}
|
||||
raw_output = self.openstack(
|
||||
'limit create'
|
||||
' --project {project_name}'
|
||||
' --project-domain {project_domain}'
|
||||
' --service {service_name}'
|
||||
' --resource-limit {resource_limit}'
|
||||
' {resource_name}'.format(**params),
|
||||
cloud=SYSTEM_CLOUD,
|
||||
)
|
||||
items = self.parse_show(raw_output)
|
||||
limit_id = self._extract_value_from_items('id', items)
|
||||
self.addCleanup(
|
||||
self.openstack, f'limit delete {limit_id}', cloud=SYSTEM_CLOUD
|
||||
)
|
||||
|
||||
self.assert_show_fields(items, self.LIMIT_FIELDS)
|
||||
registered_limit_id = self._create_dummy_registered_limit()
|
||||
|
||||
def test_limit_create_with_service_id(self):
|
||||
self._create_dummy_limit()
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
# under the License.
|
||||
|
||||
from openstack import exceptions as sdk_exc
|
||||
from openstack.identity.v3 import domain as _domain
|
||||
from openstack.identity.v3 import limit as _limit
|
||||
from openstack.identity.v3 import project as _project
|
||||
from openstack.identity.v3 import region as _region
|
||||
@@ -26,7 +27,10 @@ class TestLimitCreate(identity_fakes.TestIdentityv3):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
self.project = sdk_fakes.generate_fake_resource(_project.Project)
|
||||
self.domain = sdk_fakes.generate_fake_resource(_domain.Domain)
|
||||
self.project = sdk_fakes.generate_fake_resource(
|
||||
_project.Project, domain_id=self.domain.id
|
||||
)
|
||||
self.region = sdk_fakes.generate_fake_resource(_region.Region)
|
||||
self.service = sdk_fakes.generate_fake_resource(_service.Service)
|
||||
|
||||
@@ -35,6 +39,7 @@ class TestLimitCreate(identity_fakes.TestIdentityv3):
|
||||
self.identity_sdk_client.find_service.return_value = self.service
|
||||
self.identity_sdk_client.get_region.return_value = self.region
|
||||
self.identity_sdk_client.find_project.return_value = self.project
|
||||
self.identity_sdk_client.find_domain.return_value = self.domain
|
||||
|
||||
self.limit = sdk_fakes.generate_fake_resource(
|
||||
resource_type=_limit.Limit,
|
||||
@@ -116,6 +121,8 @@ class TestLimitCreate(identity_fakes.TestIdentityv3):
|
||||
arglist = [
|
||||
'--project',
|
||||
self.project.id,
|
||||
'--project-domain',
|
||||
self.domain.name,
|
||||
'--service',
|
||||
self.service.id,
|
||||
'--resource-limit',
|
||||
@@ -128,6 +135,7 @@ class TestLimitCreate(identity_fakes.TestIdentityv3):
|
||||
]
|
||||
verifylist = [
|
||||
('project', self.project.id),
|
||||
('project_domain', self.domain.name),
|
||||
('service', self.service.id),
|
||||
('resource_name', self.limit_with_options.resource_name),
|
||||
('resource_limit', resource_limit),
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Add ``--project-domain`` option for the ``limit list`` and ``limit create``
|
||||
commands.
|
||||
Reference in New Issue
Block a user