Skip to content

Commit 46b25c7

Browse files
committed
network: Add '--project' to SG rule list command
Include '--project' and '--project-domain' filtering options to the 'security group rule list'. Closes-Bug: #1648317 Change-Id: I19e423906846073cfa1e45b4a295b3a8f5d11970 Signed-off-by: Alexey Stupnikov <aleksey.stupnikov@gmail.com>
1 parent c7d465a commit 46b25c7

3 files changed

Lines changed: 76 additions & 0 deletions

File tree

openstackclient/network/v2/security_group_rule.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,14 @@ def update_parser_network(self, parser):
427427
_("**Deprecated** This argument is no longer needed")
428428
),
429429
)
430+
parser.add_argument(
431+
'--project',
432+
metavar='<project>',
433+
help=self.enhance_help_neutron(_("Owner's project (name or ID)")),
434+
)
435+
identity_common.add_project_domain_option_to_parser(
436+
parser, enhance_help=self.enhance_help_neutron
437+
)
430438
return parser
431439

432440
def update_parser_compute(self, parser):
@@ -503,6 +511,15 @@ def take_action_network(self, client, parsed_args):
503511
query['direction'] = 'egress'
504512
if parsed_args.protocol is not None:
505513
query['protocol'] = parsed_args.protocol
514+
if parsed_args.project is not None:
515+
identity_client = self.app.client_manager.identity
516+
project_id = identity_common.find_project(
517+
identity_client,
518+
parsed_args.project,
519+
parsed_args.project_domain,
520+
).id
521+
query['tenant_id'] = project_id
522+
query['project_id'] = project_id
506523

507524
rules = [
508525
self._format_network_security_group_rule(r)

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

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1251,6 +1251,55 @@ def test_list_with_wrong_egress(self):
12511251
self.assertEqual(self.expected_columns_no_group, columns)
12521252
self.assertEqual(self.expected_data_no_group, list(data))
12531253

1254+
def test_list_with_project(self):
1255+
project = identity_fakes.FakeProject.create_one_project()
1256+
self._security_group_rule_tcp.port_range_min = 80
1257+
self.projects_mock.get.return_value = project
1258+
1259+
arglist = [
1260+
'--project',
1261+
project.id,
1262+
]
1263+
verifylist = [
1264+
('project', project.id),
1265+
]
1266+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1267+
1268+
columns, data = self.cmd.take_action(parsed_args)
1269+
filters = {'tenant_id': project.id, 'project_id': project.id}
1270+
1271+
self.network_client.security_group_rules.assert_called_once_with(
1272+
**filters
1273+
)
1274+
self.assertEqual(self.expected_columns_no_group, columns)
1275+
self.assertEqual(self.expected_data_no_group, list(data))
1276+
1277+
def test_list_with_project_domain(self):
1278+
project = identity_fakes.FakeProject.create_one_project()
1279+
self._security_group_rule_tcp.port_range_min = 80
1280+
self.projects_mock.get.return_value = project
1281+
1282+
arglist = [
1283+
'--project',
1284+
project.id,
1285+
'--project-domain',
1286+
project.domain_id,
1287+
]
1288+
verifylist = [
1289+
('project', project.id),
1290+
('project_domain', project.domain_id),
1291+
]
1292+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1293+
1294+
columns, data = self.cmd.take_action(parsed_args)
1295+
filters = {'tenant_id': project.id, 'project_id': project.id}
1296+
1297+
self.network_client.security_group_rules.assert_called_once_with(
1298+
**filters
1299+
)
1300+
self.assertEqual(self.expected_columns_no_group, columns)
1301+
self.assertEqual(self.expected_data_no_group, list(data))
1302+
12541303

12551304
class TestShowSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
12561305
# The security group rule to be shown.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
features:
3+
- |
4+
Add ``--project`` and --project-domain`` options to the following network
5+
commands:
6+
7+
- ``openstack security group rule list``
8+
9+
[Bug `1648317 <https://bugs.launchpad.net/bugs/1648317>`_]
10+

0 commit comments

Comments
 (0)