summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/source/command-objects/security-group-rule.rst2
-rw-r--r--openstackclient/network/v2/security_group_rule.py12
-rw-r--r--openstackclient/tests/network/v2/test_security_group_rule.py10
-rw-r--r--releasenotes/notes/bug-1540656-f7b7b7e3feef2440.yaml5
4 files changed, 21 insertions, 8 deletions
diff --git a/doc/source/command-objects/security-group-rule.rst b/doc/source/command-objects/security-group-rule.rst
index ad496e79..fa07c377 100644
--- a/doc/source/command-objects/security-group-rule.rst
+++ b/doc/source/command-objects/security-group-rule.rst
@@ -28,7 +28,7 @@ Create a new security group rule
.. option:: --src-group <group>
- Source security group (ID only)
+ Source security group (name or ID)
.. option:: --dst-port <port-range>
diff --git a/openstackclient/network/v2/security_group_rule.py b/openstackclient/network/v2/security_group_rule.py
index e0244654..f60995ab 100644
--- a/openstackclient/network/v2/security_group_rule.py
+++ b/openstackclient/network/v2/security_group_rule.py
@@ -69,7 +69,7 @@ class CreateSecurityGroupRule(common.NetworkAndComputeShowOne):
source_group.add_argument(
"--src-group",
metavar="<group>",
- help="Source security group (ID only)",
+ help="Source security group (name or ID)",
)
parser.add_argument(
"--dst-port",
@@ -103,7 +103,10 @@ class CreateSecurityGroupRule(common.NetworkAndComputeShowOne):
attrs['port_range_max'] = parsed_args.dst_port[1]
attrs['protocol'] = parsed_args.proto
if parsed_args.src_group is not None:
- attrs['remote_group_id'] = parsed_args.src_group
+ attrs['remote_group_id'] = client.find_security_group(
+ parsed_args.src_group,
+ ignore_missing=False
+ ).id
else:
attrs['remote_ip_prefix'] = parsed_args.src_ip
attrs['security_group_id'] = security_group_id
@@ -123,6 +126,11 @@ class CreateSecurityGroupRule(common.NetworkAndComputeShowOne):
from_port, to_port = -1, -1
else:
from_port, to_port = parsed_args.dst_port
+ if parsed_args.src_group is not None:
+ parsed_args.src_group = utils.find_resource(
+ client.security_groups,
+ parsed_args.src_group,
+ ).id
obj = client.security_group_rules.create(
group.id,
parsed_args.proto,
diff --git a/openstackclient/tests/network/v2/test_security_group_rule.py b/openstackclient/tests/network/v2/test_security_group_rule.py
index a0d6185c..81b9e18b 100644
--- a/openstackclient/tests/network/v2/test_security_group_rule.py
+++ b/openstackclient/tests/network/v2/test_security_group_rule.py
@@ -149,13 +149,13 @@ class TestCreateSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
})
arglist = [
'--dst-port', str(self._security_group_rule.port_range_min),
- '--src-group', self._security_group.id,
+ '--src-group', self._security_group.name,
self._security_group.id,
]
verifylist = [
('dst_port', (self._security_group_rule.port_range_min,
self._security_group_rule.port_range_max)),
- ('src_group', self._security_group.id),
+ ('src_group', self._security_group.name),
('group', self._security_group.id),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -289,17 +289,17 @@ class TestCreateSecurityGroupRuleCompute(TestSecurityGroupRuleCompute):
expected_columns, expected_data = self._setup_security_group_rule({
'from_port': 22,
'to_port': 22,
- 'group': {'name': self._security_group.id},
+ 'group': {'name': self._security_group.name},
})
arglist = [
'--dst-port', str(self._security_group_rule.from_port),
- '--src-group', self._security_group.id,
+ '--src-group', self._security_group.name,
self._security_group.id,
]
verifylist = [
('dst_port', (self._security_group_rule.from_port,
self._security_group_rule.to_port)),
- ('src_group', self._security_group.id),
+ ('src_group', self._security_group.name),
('group', self._security_group.id),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
diff --git a/releasenotes/notes/bug-1540656-f7b7b7e3feef2440.yaml b/releasenotes/notes/bug-1540656-f7b7b7e3feef2440.yaml
new file mode 100644
index 00000000..4abb2844
--- /dev/null
+++ b/releasenotes/notes/bug-1540656-f7b7b7e3feef2440.yaml
@@ -0,0 +1,5 @@
+---
+features:
+ - The ``security group rule create`` command now supports a security
+ group name for the ``--src-group`` option.
+ [Bug `1540656 <https://bugs.launchpad.net/bugs/1540656>`_]