From c33b041c0c20b8078dad0f4cdca7c9b2177a122f Mon Sep 17 00:00:00 2001 From: reedip Date: Tue, 1 Mar 2016 14:29:24 +0900 Subject: [PATCH] Remove case dependancy for user inputs With the introduction of Lowercase/Uppercase conversion functions in the utils.py, the following patch removes the dependancy of the current code on character casing. utils.convert_to_lowercase is called where the code expects the input to be in lower case while utils.convert_to_uppercase will be called where the code expects the input to be in CAPITAL casing only. Change-Id: I1c5c3c87f343fc2731469b9a0c38d278f6018a11 --- neutronclient/neutron/v2_0/metering.py | 2 ++ neutronclient/neutron/v2_0/port.py | 2 ++ neutronclient/neutron/v2_0/rbac.py | 3 +++ neutronclient/neutron/v2_0/securitygroup.py | 3 +++ neutronclient/neutron/v2_0/subnet.py | 2 ++ neutronclient/neutron/v2_0/vpn/ikepolicy.py | 18 +++++++++------ .../neutron/v2_0/vpn/ipsec_site_connection.py | 2 +- neutronclient/neutron/v2_0/vpn/ipsecpolicy.py | 22 ++++++++++++------- ...move-case-dependency-773ccb3237c38e81.yaml | 7 ++++++ 9 files changed, 45 insertions(+), 16 deletions(-) create mode 100644 releasenotes/notes/remove-case-dependency-773ccb3237c38e81.yaml diff --git a/neutronclient/neutron/v2_0/metering.py b/neutronclient/neutron/v2_0/metering.py index df81724fc..67bbec908 100644 --- a/neutronclient/neutron/v2_0/metering.py +++ b/neutronclient/neutron/v2_0/metering.py @@ -13,6 +13,7 @@ # under the License. from neutronclient._i18n import _ +from neutronclient.common import utils from neutronclient.neutron import v2_0 as neutronv20 @@ -93,6 +94,7 @@ class CreateMeteringLabelRule(neutronv20.CreateCommand): parser.add_argument( '--direction', default='ingress', choices=['ingress', 'egress'], + type=utils.convert_to_lowercase, help=_('Direction of traffic, default: ingress.')) parser.add_argument( '--excluded', diff --git a/neutronclient/neutron/v2_0/port.py b/neutronclient/neutron/v2_0/port.py index b279cf601..e3dfa6989 100644 --- a/neutronclient/neutron/v2_0/port.py +++ b/neutronclient/neutron/v2_0/port.py @@ -253,11 +253,13 @@ class CreatePort(neutronV20.CreateCommand, UpdatePortSecGroupMixin, '| normal | baremetal>', choices=['direct', 'direct-physical', 'macvtap', 'normal', 'baremetal'], + type=utils.convert_to_lowercase, help=_('VNIC type for this port.')) parser.add_argument( '--vnic_type', choices=['direct', 'direct-physical', 'macvtap', 'normal', 'baremetal'], + type=utils.convert_to_lowercase, help=argparse.SUPPRESS) parser.add_argument( '--binding-profile', diff --git a/neutronclient/neutron/v2_0/rbac.py b/neutronclient/neutron/v2_0/rbac.py index 64645e573..e1153b055 100644 --- a/neutronclient/neutron/v2_0/rbac.py +++ b/neutronclient/neutron/v2_0/rbac.py @@ -14,6 +14,7 @@ # under the License. from neutronclient._i18n import _ +from neutronclient.common import utils from neutronclient.neutron import v2_0 as neutronV20 # key=object_type: value={key=resource, value=cmd_resource} @@ -66,6 +67,7 @@ class CreateRBACPolicy(neutronV20.CreateCommand): parser.add_argument( '--type', choices=RBAC_OBJECTS.keys(), required=True, + type=utils.convert_to_lowercase, help=_('Type of the object that RBAC policy affects.')) parser.add_argument( '--target-tenant', @@ -74,6 +76,7 @@ class CreateRBACPolicy(neutronV20.CreateCommand): 'policy will be enforced.')) parser.add_argument( '--action', choices=['access_as_external', 'access_as_shared'], + type=utils.convert_to_lowercase, required=True, help=_('Action for the RBAC policy.')) diff --git a/neutronclient/neutron/v2_0/securitygroup.py b/neutronclient/neutron/v2_0/securitygroup.py index 8cb89ac1c..3c0bafa0e 100644 --- a/neutronclient/neutron/v2_0/securitygroup.py +++ b/neutronclient/neutron/v2_0/securitygroup.py @@ -18,6 +18,7 @@ import argparse from neutronclient._i18n import _ from neutronclient.common import exceptions +from neutronclient.common import utils from neutronclient.neutron import v2_0 as neutronV20 @@ -314,6 +315,7 @@ class CreateSecurityGroupRule(neutronV20.CreateCommand): 'which the rule is added.')) parser.add_argument( '--direction', + type=utils.convert_to_lowercase, default='ingress', choices=['ingress', 'egress'], help=_('Direction of traffic: ingress/egress.')) parser.add_argument( @@ -321,6 +323,7 @@ class CreateSecurityGroupRule(neutronV20.CreateCommand): help=_('IPv4/IPv6')) parser.add_argument( '--protocol', + type=utils.convert_to_lowercase, help=_('Protocol of packet. Allowed values are ' '[icmp, icmpv6, tcp, udp] and ' 'integer representations [0-255].')) diff --git a/neutronclient/neutron/v2_0/subnet.py b/neutronclient/neutron/v2_0/subnet.py index 107b52543..633826422 100644 --- a/neutronclient/neutron/v2_0/subnet.py +++ b/neutronclient/neutron/v2_0/subnet.py @@ -184,10 +184,12 @@ class CreateSubnet(neutronV20.CreateCommand): help=_('CIDR of subnet to create.')) parser.add_argument( '--ipv6-ra-mode', + type=utils.convert_to_lowercase, choices=['dhcpv6-stateful', 'dhcpv6-stateless', 'slaac'], help=_('IPv6 RA (Router Advertisement) mode.')) parser.add_argument( '--ipv6-address-mode', + type=utils.convert_to_lowercase, choices=['dhcpv6-stateful', 'dhcpv6-stateless', 'slaac'], help=_('IPv6 address mode.')) parser.add_argument( diff --git a/neutronclient/neutron/v2_0/vpn/ikepolicy.py b/neutronclient/neutron/v2_0/vpn/ikepolicy.py index 3a6c1b678..1aa8a5af3 100644 --- a/neutronclient/neutron/v2_0/vpn/ikepolicy.py +++ b/neutronclient/neutron/v2_0/vpn/ikepolicy.py @@ -28,27 +28,31 @@ def add_common_args(parser, is_create=True): help=_('Description of the IKE policy.')) parser.add_argument( '--auth-algorithm', + type=utils.convert_to_lowercase, default='sha1' if is_create else argparse.SUPPRESS, - help=_('Authentication algorithm in lowercase. ' - 'Default:sha1')) + help=_('Authentication algorithm, default:sha1.')) parser.add_argument( '--encryption-algorithm', default='aes-128' if is_create else argparse.SUPPRESS, - help=_('Encryption algorithm in lowercase, default:aes-128')) + type=utils.convert_to_lowercase, + help=_('Encryption algorithm, default:aes-128.')) parser.add_argument( '--phase1-negotiation-mode', default='main' if is_create else argparse.SUPPRESS, choices=['main'], - help=_('IKE Phase1 negotiation mode in lowercase, default:main')) + type=utils.convert_to_lowercase, + help=_('IKE Phase1 negotiation mode, default:main.')) parser.add_argument( '--ike-version', default='v1' if is_create else argparse.SUPPRESS, choices=['v1', 'v2'], - help=_('IKE version in lowercase, default:v1')) + type=utils.convert_to_lowercase, + help=_('IKE version for the policy, default:v1.')) parser.add_argument( '--pfs', default='group5' if is_create else argparse.SUPPRESS, - help=_('Perfect Forward Secrecy in lowercase, default:group5')) + type=utils.convert_to_lowercase, + help=_('Perfect Forward Secrecy, default:group5.')) parser.add_argument( '--lifetime', metavar="units=UNITS,value=VALUE", @@ -109,7 +113,7 @@ class UpdateIKEPolicy(neutronv20.UpdateCommand): def add_known_arguments(self, parser): parser.add_argument( '--name', - help=_('Updated Name of the IKE policy.')) + help=_('Updated name of the IKE policy.')) add_common_args(parser, is_create=False) def args2body(self, parsed_args): diff --git a/neutronclient/neutron/v2_0/vpn/ipsec_site_connection.py b/neutronclient/neutron/v2_0/vpn/ipsec_site_connection.py index 505f4c5d9..03a635f6e 100644 --- a/neutronclient/neutron/v2_0/vpn/ipsec_site_connection.py +++ b/neutronclient/neutron/v2_0/vpn/ipsec_site_connection.py @@ -96,7 +96,7 @@ class IPsecSiteConnectionMixin(object): parser.add_argument( '--mtu', default='1500' if is_create else argparse.SUPPRESS, - help=_('MTU size for the connection, default:1500')) + help=_('MTU size for the connection, default:1500.')) parser.add_argument( '--initiator', default='bi-directional' if is_create else argparse.SUPPRESS, diff --git a/neutronclient/neutron/v2_0/vpn/ipsecpolicy.py b/neutronclient/neutron/v2_0/vpn/ipsecpolicy.py index e9ad2f5cc..016ebbd19 100644 --- a/neutronclient/neutron/v2_0/vpn/ipsecpolicy.py +++ b/neutronclient/neutron/v2_0/vpn/ipsecpolicy.py @@ -26,19 +26,22 @@ def add_common_args(parser, is_create=True): parser.add_argument( '--auth-algorithm', default='sha1' if is_create else argparse.SUPPRESS, - help=_('Authentication algorithm in lowercase, default:sha1')) + type=utils.convert_to_lowercase, + help=_('Authentication algorithm for IPsec policy, default:sha1.')) parser.add_argument( '--description', help=_('Description of the IPsec policy.')) - parser.add_argument( - '--encryption-algorithm', - default='aes-128' if is_create else argparse.SUPPRESS, - help=_('Encryption algorithm in lowercase, default:aes-128')) parser.add_argument( '--encapsulation-mode', default='tunnel' if is_create else argparse.SUPPRESS, choices=['tunnel', 'transport'], - help=_('Encapsulation mode in lowercase, default:tunnel')) + type=utils.convert_to_lowercase, + help=_('Encapsulation mode for IPsec policy, default:tunnel.')) + parser.add_argument( + '--encryption-algorithm', + default='aes-128' if is_create else argparse.SUPPRESS, + type=utils.convert_to_lowercase, + help=_('Encryption algorithm for IPsec policy, default:aes-128.')) parser.add_argument( '--lifetime', metavar="units=UNITS,value=VALUE", @@ -47,12 +50,14 @@ def add_common_args(parser, is_create=True): parser.add_argument( '--pfs', default='group5' if is_create else argparse.SUPPRESS, - help=_('Perfect Forward Secrecy in lowercase, default:group5')) + type=utils.convert_to_lowercase, + help=_('Perfect Forward Secrecy for IPsec policy, default:group5.')) parser.add_argument( '--transform-protocol', default='esp' if is_create else argparse.SUPPRESS, + type=utils.convert_to_lowercase, choices=['esp', 'ah', 'ah-esp'], - help=_('Transform protocol in lowercase, default:esp')) + help=_('Transform protocol for IPsec policy, default:esp.')) def parse_common_args2body(parsed_args, body): @@ -88,6 +93,7 @@ class CreateIPsecPolicy(neutronv20.CreateCommand): """Create an IPsec policy.""" resource = 'ipsecpolicy' + help_resource = 'IPsec policy' def add_known_arguments(self, parser): parser.add_argument( diff --git a/releasenotes/notes/remove-case-dependency-773ccb3237c38e81.yaml b/releasenotes/notes/remove-case-dependency-773ccb3237c38e81.yaml new file mode 100644 index 000000000..d32f96b4f --- /dev/null +++ b/releasenotes/notes/remove-case-dependency-773ccb3237c38e81.yaml @@ -0,0 +1,7 @@ +--- +other: + - | + This patch provides user the support to use + any form of casing, thus removing the specific + UPPER/lower case inputs required by different + neutron CLIs.