Ignore case in security group rule --ethertype
Currently, this only allows 'IPv4' or 'IPv6', but one can imagine a user frequently typing e.g. 'ipv6' and getting frustrated. Allow any case, while still keeping correct case for the choices and the value sent to Neutron. Change-Id: I70ce1f43d32aad01b174437d03c984a5b608b161
This commit is contained in:
parent
c684fd926a
commit
c53de3214e
@ -73,6 +73,14 @@ def _convert_to_lowercase(string):
|
|||||||
return string.lower()
|
return string.lower()
|
||||||
|
|
||||||
|
|
||||||
|
def _convert_ipvx_case(string):
|
||||||
|
if string.lower() == 'ipv4':
|
||||||
|
return 'IPv4'
|
||||||
|
if string.lower() == 'ipv6':
|
||||||
|
return 'IPv6'
|
||||||
|
return string
|
||||||
|
|
||||||
|
|
||||||
def _is_icmp_protocol(protocol):
|
def _is_icmp_protocol(protocol):
|
||||||
# NOTE(rtheis): Neutron has deprecated protocol icmpv6.
|
# NOTE(rtheis): Neutron has deprecated protocol icmpv6.
|
||||||
# However, while the OSC CLI doesn't document the protocol,
|
# However, while the OSC CLI doesn't document the protocol,
|
||||||
@ -183,6 +191,7 @@ class CreateSecurityGroupRule(common.NetworkAndComputeShowOne):
|
|||||||
'--ethertype',
|
'--ethertype',
|
||||||
metavar='<ethertype>',
|
metavar='<ethertype>',
|
||||||
choices=['IPv4', 'IPv6'],
|
choices=['IPv4', 'IPv6'],
|
||||||
|
type=_convert_ipvx_case,
|
||||||
help=_("Ethertype of network traffic "
|
help=_("Ethertype of network traffic "
|
||||||
"(IPv4, IPv6; default: based on IP protocol)")
|
"(IPv4, IPv6; default: based on IP protocol)")
|
||||||
)
|
)
|
||||||
|
@ -125,6 +125,30 @@ class TestCreateSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
|
|||||||
self.assertRaises(tests_utils.ParserException,
|
self.assertRaises(tests_utils.ParserException,
|
||||||
self.check_parser, self.cmd, arglist, [])
|
self.check_parser, self.cmd, arglist, [])
|
||||||
|
|
||||||
|
def test_lowercase_ethertype(self):
|
||||||
|
arglist = [
|
||||||
|
'--ethertype', 'ipv4',
|
||||||
|
self._security_group.id,
|
||||||
|
]
|
||||||
|
parsed_args = self.check_parser(self.cmd, arglist, [])
|
||||||
|
self.assertEqual('IPv4', parsed_args.ethertype)
|
||||||
|
|
||||||
|
def test_lowercase_v6_ethertype(self):
|
||||||
|
arglist = [
|
||||||
|
'--ethertype', 'ipv6',
|
||||||
|
self._security_group.id,
|
||||||
|
]
|
||||||
|
parsed_args = self.check_parser(self.cmd, arglist, [])
|
||||||
|
self.assertEqual('IPv6', parsed_args.ethertype)
|
||||||
|
|
||||||
|
def test_proper_case_ethertype(self):
|
||||||
|
arglist = [
|
||||||
|
'--ethertype', 'IPv6',
|
||||||
|
self._security_group.id,
|
||||||
|
]
|
||||||
|
parsed_args = self.check_parser(self.cmd, arglist, [])
|
||||||
|
self.assertEqual('IPv6', parsed_args.ethertype)
|
||||||
|
|
||||||
def test_create_all_protocol_options(self):
|
def test_create_all_protocol_options(self):
|
||||||
arglist = [
|
arglist = [
|
||||||
'--protocol', 'tcp',
|
'--protocol', 'tcp',
|
||||||
|
Loading…
Reference in New Issue
Block a user