Skip to content

Commit 2109bce

Browse files
committed
Support security group name for --src-group
Support security group name for the "--src-group" option on the "os security group rule create" command. Change-Id: Ic23d0671dad77566269c9a588644c8d774368733 Closes-Bug: #1540656
1 parent d906507 commit 2109bce

4 files changed

Lines changed: 21 additions & 8 deletions

File tree

doc/source/command-objects/security-group-rule.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Create a new security group rule
2828

2929
.. option:: --src-group <group>
3030

31-
Source security group (ID only)
31+
Source security group (name or ID)
3232

3333
.. option:: --dst-port <port-range>
3434

openstackclient/network/v2/security_group_rule.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def update_parser_common(self, parser):
6969
source_group.add_argument(
7070
"--src-group",
7171
metavar="<group>",
72-
help="Source security group (ID only)",
72+
help="Source security group (name or ID)",
7373
)
7474
parser.add_argument(
7575
"--dst-port",
@@ -103,7 +103,10 @@ def take_action_network(self, client, parsed_args):
103103
attrs['port_range_max'] = parsed_args.dst_port[1]
104104
attrs['protocol'] = parsed_args.proto
105105
if parsed_args.src_group is not None:
106-
attrs['remote_group_id'] = parsed_args.src_group
106+
attrs['remote_group_id'] = client.find_security_group(
107+
parsed_args.src_group,
108+
ignore_missing=False
109+
).id
107110
else:
108111
attrs['remote_ip_prefix'] = parsed_args.src_ip
109112
attrs['security_group_id'] = security_group_id
@@ -123,6 +126,11 @@ def take_action_compute(self, client, parsed_args):
123126
from_port, to_port = -1, -1
124127
else:
125128
from_port, to_port = parsed_args.dst_port
129+
if parsed_args.src_group is not None:
130+
parsed_args.src_group = utils.find_resource(
131+
client.security_groups,
132+
parsed_args.src_group,
133+
).id
126134
obj = client.security_group_rules.create(
127135
group.id,
128136
parsed_args.proto,

openstackclient/tests/network/v2/test_security_group_rule.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -149,13 +149,13 @@ def test_create_source_group(self):
149149
})
150150
arglist = [
151151
'--dst-port', str(self._security_group_rule.port_range_min),
152-
'--src-group', self._security_group.id,
152+
'--src-group', self._security_group.name,
153153
self._security_group.id,
154154
]
155155
verifylist = [
156156
('dst_port', (self._security_group_rule.port_range_min,
157157
self._security_group_rule.port_range_max)),
158-
('src_group', self._security_group.id),
158+
('src_group', self._security_group.name),
159159
('group', self._security_group.id),
160160
]
161161
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -289,17 +289,17 @@ def test_create_source_group(self):
289289
expected_columns, expected_data = self._setup_security_group_rule({
290290
'from_port': 22,
291291
'to_port': 22,
292-
'group': {'name': self._security_group.id},
292+
'group': {'name': self._security_group.name},
293293
})
294294
arglist = [
295295
'--dst-port', str(self._security_group_rule.from_port),
296-
'--src-group', self._security_group.id,
296+
'--src-group', self._security_group.name,
297297
self._security_group.id,
298298
]
299299
verifylist = [
300300
('dst_port', (self._security_group_rule.from_port,
301301
self._security_group_rule.to_port)),
302-
('src_group', self._security_group.id),
302+
('src_group', self._security_group.name),
303303
('group', self._security_group.id),
304304
]
305305
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
features:
3+
- The ``security group rule create`` command now supports a security
4+
group name for the ``--src-group`` option.
5+
[Bug `1540656 <https://bugs.launchpad.net/bugs/1540656>`_]

0 commit comments

Comments
 (0)