Skip to content

Commit f3d3813

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Allow input the QoS policy name in network rbac create command"
2 parents c89d441 + 57d5f94 commit f3d3813

4 files changed

Lines changed: 49 additions & 6 deletions

File tree

doc/source/command-objects/network-rbac.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ Create network RBAC policy
5252
.. _network_rbac_create-rbac-policy:
5353
.. describe:: <rbac-object>
5454
55-
The object to which this RBAC policy affects (name or ID for network objects, ID only for QoS policy objects)
55+
The object to which this RBAC policy affects (name or ID)
5656
5757
network rbac delete
5858
-------------------

openstackclient/network/v2/network_rbac.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ def _get_attrs(client_manager, parsed_args):
4747
object_id = network_client.find_network(
4848
parsed_args.rbac_object, ignore_missing=False).id
4949
if parsed_args.type == 'qos_policy':
50-
# TODO(Huanxuan Ao): Support finding a object ID by obejct name
51-
# after qos policy finding supported in SDK.
52-
object_id = parsed_args.rbac_object
50+
object_id = network_client.find_qos_policy(
51+
parsed_args.rbac_object,
52+
ignore_missing=False).id
5353
attrs['object_id'] = object_id
5454

5555
identity_client = client_manager.identity
@@ -78,8 +78,7 @@ def get_parser(self, prog_name):
7878
parser.add_argument(
7979
'rbac_object',
8080
metavar="<rbac-object>",
81-
help=_("The object to which this RBAC policy affects (name or "
82-
"ID for network objects, ID only for QoS policy objects)")
81+
help=_("The object to which this RBAC policy affects (name or ID)")
8382
)
8483
parser.add_argument(
8584
'--type',

openstackclient/tests/unit/network/v2/test_network_rbac.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ def setUp(self):
3636
class TestCreateNetworkRBAC(TestNetworkRBAC):
3737

3838
network_object = network_fakes.FakeNetwork.create_one_network()
39+
qos_object = network_fakes.FakeNetworkQosPolicy.create_one_qos_policy()
3940
project = identity_fakes_v3.FakeProject.create_one_project()
4041
rbac_policy = network_fakes.FakeNetworkRBAC.create_one_network_rbac(
4142
attrs={'tenant_id': project.id,
@@ -71,6 +72,8 @@ def setUp(self):
7172
return_value=self.rbac_policy)
7273
self.network.find_network = mock.Mock(
7374
return_value=self.network_object)
75+
self.network.find_qos_policy = mock.Mock(
76+
return_value=self.qos_object)
7477
self.projects_mock.get.return_value = self.project
7578

7679
def test_network_rbac_create_no_type(self):
@@ -194,6 +197,43 @@ def test_network_rbac_create_all_options(self):
194197
self.assertEqual(self.columns, columns)
195198
self.assertEqual(self.data, list(data))
196199

200+
def test_network_rbac_create_qos_object(self):
201+
self.rbac_policy.object_type = 'qos_policy'
202+
self.rbac_policy.object_id = self.qos_object.id
203+
arglist = [
204+
'--type', 'qos_policy',
205+
'--action', self.rbac_policy.action,
206+
'--target-project', self.rbac_policy.target_tenant,
207+
self.qos_object.name,
208+
]
209+
verifylist = [
210+
('type', 'qos_policy'),
211+
('action', self.rbac_policy.action),
212+
('target_project', self.rbac_policy.target_tenant),
213+
('rbac_object', self.qos_object.name),
214+
]
215+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
216+
217+
# DisplayCommandBase.take_action() returns two tuples
218+
columns, data = self.cmd.take_action(parsed_args)
219+
220+
self.network.create_rbac_policy.assert_called_with(**{
221+
'object_id': self.qos_object.id,
222+
'object_type': 'qos_policy',
223+
'action': self.rbac_policy.action,
224+
'target_tenant': self.rbac_policy.target_tenant,
225+
})
226+
self.data = [
227+
self.rbac_policy.action,
228+
self.rbac_policy.id,
229+
self.qos_object.id,
230+
'qos_policy',
231+
self.rbac_policy.tenant_id,
232+
self.rbac_policy.target_tenant,
233+
]
234+
self.assertEqual(self.columns, columns)
235+
self.assertEqual(self.data, list(data))
236+
197237

198238
class TestDeleteNetworkRBAC(TestNetworkRBAC):
199239

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
features:
3+
- |
4+
``rbac_object`` parameter in ``network rbac create`` command now can be a QoS policy name.

0 commit comments

Comments
 (0)