Fix CRLF issues

Some files in the repo has a DOS/Windows CRLF (\r\n) ending instead
of the Unix return.  This patch set fixes the issue.

Change-Id: Ic6601f3ace9507f30c487f495198c2397b5bf805
This commit is contained in:
Tin Lam 2017-06-03 11:37:36 -05:00
parent 2ea460f044
commit cbc3044d4d
4 changed files with 265 additions and 265 deletions

View File

@ -1,17 +1,17 @@
If you would like to contribute to the development of OpenStack, you must If you would like to contribute to the development of OpenStack, you must
follow the steps in this page: follow the steps in this page:
http://docs.openstack.org/infra/manual/developers.html http://docs.openstack.org/infra/manual/developers.html
If you already have a good understanding of how the system works and your If you already have a good understanding of how the system works and your
OpenStack accounts are set up, you can skip to the development workflow OpenStack accounts are set up, you can skip to the development workflow
section of this documentation to learn how changes to OpenStack should be section of this documentation to learn how changes to OpenStack should be
submitted for review via the Gerrit tool: submitted for review via the Gerrit tool:
http://docs.openstack.org/infra/manual/developers.html#development-workflow http://docs.openstack.org/infra/manual/developers.html#development-workflow
Pull requests submitted through GitHub will be ignored. Pull requests submitted through GitHub will be ignored.
Bugs should be filed on Launchpad, not GitHub: Bugs should be filed on Launchpad, not GitHub:
https://bugs.launchpad.net/valet https://bugs.launchpad.net/valet

View File

@ -1,4 +1,4 @@
Valet Style Commandments Valet Style Commandments
======================== ========================
Read the OpenStack Commandments http://docs.openstack.org/developer/hacking/ Read the OpenStack Commandments http://docs.openstack.org/developer/hacking/

View File

@ -1 +1 @@
[python: **.py] [python: **.py]

View File

@ -1,245 +1,245 @@
# #
# Copyright 2014-2017 AT&T Intellectual Property # Copyright 2014-2017 AT&T Intellectual Property
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
# You may obtain a copy of the License at # You may obtain a copy of the License at
# #
# http://www.apache.org/licenses/LICENSE-2.0 # http://www.apache.org/licenses/LICENSE-2.0
# #
# Unless required by applicable law or agreed to in writing, software # Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, # distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
"""Group Cli.""" """Group Cli."""
import argparse import argparse
import json import json
from oslo_config import cfg from oslo_config import cfg
import requests import requests
from valet.common import conf as common from valet.common import conf as common
CONF = cfg.CONF CONF = cfg.CONF
class ResponseError(Exception): class ResponseError(Exception):
"""Response Error Exception.""" """Response Error Exception."""
pass pass
class ConnectionError(Exception): class ConnectionError(Exception):
"""Connection Error Exception.""" """Connection Error Exception."""
pass pass
def print_verbose(verbose, url, headers, body, rest_cmd, timeout): def print_verbose(verbose, url, headers, body, rest_cmd, timeout):
pass pass
def pretty_print_json(json_thing, sort=True, indents=4): def pretty_print_json(json_thing, sort=True, indents=4):
"""Print parser in nice format.""" """Print parser in nice format."""
# TODO(Chris Martin): Replace prints with logs # TODO(Chris Martin): Replace prints with logs
if type(json_thing) is str: if type(json_thing) is str:
print(json.dumps(json.loads(json_thing), sort_keys=sort, print(json.dumps(json.loads(json_thing), sort_keys=sort,
indent=indents)) indent=indents))
else: else:
print(json.dumps(json_thing, sort_keys=sort, indent=indents)) print(json.dumps(json_thing, sort_keys=sort, indent=indents))
return None return None
def add_to_parser(service_sub): def add_to_parser(service_sub):
"""Return parser.""" """Return parser."""
parser = service_sub.add_parser('group', help='Group Management', parser = service_sub.add_parser('group', help='Group Management',
formatter_class=lambda formatter_class=lambda
prog: argparse.HelpFormatter( prog: argparse.HelpFormatter(
prog, max_help_position=30, prog, max_help_position=30,
width=120)) width=120))
parser.add_argument('--version', action='version', version='%(prog)s 1.1') parser.add_argument('--version', action='version', version='%(prog)s 1.1')
parser.add_argument('--timeout', type=int, parser.add_argument('--timeout', type=int,
help='Set request timeout in seconds (default: 10)') help='Set request timeout in seconds (default: 10)')
parser.add_argument('--host', type=str, parser.add_argument('--host', type=str,
help='Hostname or ip of valet server') help='Hostname or ip of valet server')
parser.add_argument('--port', type=str, help='Port number of valet server') parser.add_argument('--port', type=str, help='Port number of valet server')
parser.add_argument('--os-tenant-name', type=str, help='Tenant name') parser.add_argument('--os-tenant-name', type=str, help='Tenant name')
parser.add_argument('--os-user-name', dest='os_username', type=str, parser.add_argument('--os-user-name', dest='os_username', type=str,
help='Username') help='Username')
parser.add_argument('--os-password', type=str, help="User's password") parser.add_argument('--os-password', type=str, help="User's password")
parser.add_argument('--verbose', '-v', help='Show details', parser.add_argument('--verbose', '-v', help='Show details',
action="store_true") action="store_true")
subparsers = parser.add_subparsers(dest='subcmd', metavar='<subcommand>') subparsers = parser.add_subparsers(dest='subcmd', metavar='<subcommand>')
# create group # create group
parser_create_group = subparsers.add_parser('create', parser_create_group = subparsers.add_parser('create',
help='Create new group.') help='Create new group.')
parser_create_group.add_argument('name', type=str, help='<GROUP_NAME>') parser_create_group.add_argument('name', type=str, help='<GROUP_NAME>')
parser_create_group.add_argument('type', type=str, parser_create_group.add_argument('type', type=str,
help='<GROUP_TYPE> (exclusivity)') help='<GROUP_TYPE> (exclusivity)')
parser_create_group.add_argument('--description', type=str, parser_create_group.add_argument('--description', type=str,
help='<GROUP_DESCRIPTION>') help='<GROUP_DESCRIPTION>')
# delete group # delete group
parser_delete_group = subparsers.add_parser('delete', parser_delete_group = subparsers.add_parser('delete',
help='Delete specified group.') help='Delete specified group.')
parser_delete_group.add_argument('groupid', type=str, help='<GROUP_ID>') parser_delete_group.add_argument('groupid', type=str, help='<GROUP_ID>')
# delete group member # delete group member
parser_delete_group_member = subparsers.add_parser( parser_delete_group_member = subparsers.add_parser(
'delete-member', help='Delete member from specified group.') 'delete-member', help='Delete member from specified group.')
parser_delete_group_member.add_argument('groupid', type=str, parser_delete_group_member.add_argument('groupid', type=str,
help='<GROUP_ID>') help='<GROUP_ID>')
parser_delete_group_member.add_argument('memberid', type=str, parser_delete_group_member.add_argument('memberid', type=str,
help='<MEMBER_ID>') help='<MEMBER_ID>')
# delete all group members # delete all group members
parser_delete_all_group_members = subparsers.add_parser( parser_delete_all_group_members = subparsers.add_parser(
'delete-all-members', help='Delete all members from ' 'delete-all-members', help='Delete all members from '
'specified group.') 'specified group.')
parser_delete_all_group_members.add_argument('groupid', type=str, parser_delete_all_group_members.add_argument('groupid', type=str,
help='<GROUP_ID>') help='<GROUP_ID>')
# list group # list group
subparsers.add_parser('list', help='List all groups.') subparsers.add_parser('list', help='List all groups.')
# show group details # show group details
parser_show_group_details = subparsers.add_parser('show', parser_show_group_details = subparsers.add_parser('show',
help='Show details about' help='Show details about'
'the given group.') 'the given group.')
parser_show_group_details.add_argument('groupid', type=str, parser_show_group_details.add_argument('groupid', type=str,
help='<GROUP_ID>') help='<GROUP_ID>')
# update group # update group
parser_update_group = subparsers.add_parser('update', parser_update_group = subparsers.add_parser('update',
help='Update group' help='Update group'
'description.') 'description.')
parser_update_group.add_argument('groupid', type=str, help='<GROUP_ID>') parser_update_group.add_argument('groupid', type=str, help='<GROUP_ID>')
parser_update_group.add_argument('--description', type=str, parser_update_group.add_argument('--description', type=str,
help='<GROUP_DESCRIPTION>') help='<GROUP_DESCRIPTION>')
parser_update_group_members = subparsers.add_parser('update-member', parser_update_group_members = subparsers.add_parser('update-member',
help='Update' help='Update'
'group members.') 'group members.')
parser_update_group_members.add_argument('groupid', type=str, parser_update_group_members.add_argument('groupid', type=str,
help='<GROUP_ID>') help='<GROUP_ID>')
parser_update_group_members.add_argument('members', type=str, parser_update_group_members.add_argument('members', type=str,
help='<MEMBER_ID>') help='<MEMBER_ID>')
return parser return parser
def cmd_details(args): def cmd_details(args):
"""Command details.""" """Command details."""
if args.subcmd == 'create': if args.subcmd == 'create':
return requests.post, '' return requests.post, ''
elif args.subcmd == 'update': elif args.subcmd == 'update':
return requests.put, '/%s' % args.groupid return requests.put, '/%s' % args.groupid
elif args.subcmd == 'update-member': elif args.subcmd == 'update-member':
return requests.put, '/%s/members' % args.groupid return requests.put, '/%s/members' % args.groupid
elif args.subcmd == 'delete': elif args.subcmd == 'delete':
return requests.delete, '/%s' % args.groupid return requests.delete, '/%s' % args.groupid
elif args.subcmd == 'delete-all-members': elif args.subcmd == 'delete-all-members':
return requests.delete, '/%s/members' % args.groupid return requests.delete, '/%s/members' % args.groupid
elif args.subcmd == 'delete-member': elif args.subcmd == 'delete-member':
return (requests.delete, '/%s/members/%s' % return (requests.delete, '/%s/members/%s' %
(args.groupid, args.memberid)) (args.groupid, args.memberid))
elif args.subcmd == 'show': elif args.subcmd == 'show':
return requests.get, '/%s' % args.groupid return requests.get, '/%s' % args.groupid
elif args.subcmd == 'list': elif args.subcmd == 'list':
return requests.get, '' return requests.get, ''
def get_token(timeout, args): def get_token(timeout, args):
"""Return JSON of access token id.""" """Return JSON of access token id."""
tenant_name = args.os_tenant_name if args.os_tenant_name \ tenant_name = args.os_tenant_name if args.os_tenant_name \
else CONF.identity.project_name else CONF.identity.project_name
auth_name = args.os_username if args.os_username \ auth_name = args.os_username if args.os_username \
else CONF.identity.username else CONF.identity.username
password = args.os_password if args.os_password \ password = args.os_password if args.os_password \
else CONF.identity.password else CONF.identity.password
headers = { headers = {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
} }
url = '%s/tokens' % CONF.identity.uth_url url = '%s/tokens' % CONF.identity.uth_url
data = ''' data = '''
{ {
"auth": { "auth": {
"tenantName": "%s", "tenantName": "%s",
"passwordCredentials": { "passwordCredentials": {
"username": "%s", "username": "%s",
"password": "%s" "password": "%s"
} }
} }
}''' % (tenant_name, auth_name, password) }''' % (tenant_name, auth_name, password)
print_verbose(args.verbose, url, headers, data, None, timeout) print_verbose(args.verbose, url, headers, data, None, timeout)
try: try:
resp = requests.post(url, timeout=timeout, data=data, headers=headers) resp = requests.post(url, timeout=timeout, data=data, headers=headers)
if resp.status_code != 200: if resp.status_code != 200:
raise ResponseError( raise ResponseError(
'Failed in get_token: status code received {}'.format( 'Failed in get_token: status code received {}'.format(
resp.status_code)) resp.status_code))
return resp.json()['access']['token']['id'] return resp.json()['access']['token']['id']
except Exception as e: except Exception as e:
message = 'Failed in get_token' message = 'Failed in get_token'
print(e) print(e)
raise ConnectionError(message) raise ConnectionError(message)
def populate_args_request_body(args): def populate_args_request_body(args):
"""Return JSON of filtered body dictionary.""" """Return JSON of filtered body dictionary."""
body_args_list = ['name', 'type', 'description', 'members'] body_args_list = ['name', 'type', 'description', 'members']
# assign values to dict (if val exist) members will be assign as a list # assign values to dict (if val exist) members will be assign as a list
body_dict = {} body_dict = {}
for body_arg in body_args_list: for body_arg in body_args_list:
if hasattr(args, body_arg): if hasattr(args, body_arg):
body_dict[body_arg] = getattr(args, body_arg) \ body_dict[body_arg] = getattr(args, body_arg) \
if body_arg != 'members' else [getattr(args, body_arg)] if body_arg != 'members' else [getattr(args, body_arg)]
# remove keys without values # remove keys without values
filtered_body_dict = dict( filtered_body_dict = dict(
(k, v) for k, v in body_dict.iteritems() if v is not None) (k, v) for k, v in body_dict.iteritems() if v is not None)
# check if dictionary is not empty, convert body dictionary to json format # check if dictionary is not empty, convert body dictionary to json format
return json.dumps(filtered_body_dict) if bool(filtered_body_dict) else None return json.dumps(filtered_body_dict) if bool(filtered_body_dict) else None
def run(args): def run(args):
"""Run.""" """Run."""
common.init_conf("cli.log") common.init_conf("cli.log")
args.host = args.host or CONF.server.host args.host = args.host or CONF.server.host
args.port = args.port or CONF.server.port args.port = args.port or CONF.server.port
args.timeout = args.timeout or 10 args.timeout = args.timeout or 10
rest_cmd, cmd_url = cmd_details(args) rest_cmd, cmd_url = cmd_details(args)
args.url = 'http://%s:%s/v1/groups' % (args.host, args.port) + cmd_url args.url = 'http://%s:%s/v1/groups' % (args.host, args.port) + cmd_url
auth_token = get_token(args.timeout, args) auth_token = get_token(args.timeout, args)
args.headers = { args.headers = {
'content-type': 'application/json', 'content-type': 'application/json',
'X-Auth-Token': auth_token 'X-Auth-Token': auth_token
} }
args.body = populate_args_request_body(args) args.body = populate_args_request_body(args)
try: try:
print_verbose(args.verbose, args.url, args.headers, args.body, print_verbose(args.verbose, args.url, args.headers, args.body,
rest_cmd, args.timeout) rest_cmd, args.timeout)
if args.body: if args.body:
resp = rest_cmd(args.url, timeout=args.timeout, data=args.body, resp = rest_cmd(args.url, timeout=args.timeout, data=args.body,
headers=args.headers) headers=args.headers)
else: else:
resp = rest_cmd(args.url, timeout=args.timeout, resp = rest_cmd(args.url, timeout=args.timeout,
headers=args.headers) headers=args.headers)
except Exception as e: except Exception as e:
print(e) print(e)
exit(1) exit(1)
if not 200 <= resp.status_code < 300: if not 200 <= resp.status_code < 300:
content = resp.json() if resp.status_code == 500 else '' content = resp.json() if resp.status_code == 500 else ''
print('API error: %s %s (Reason: %d)\n%s' % ( print('API error: %s %s (Reason: %d)\n%s' % (
rest_cmd.func_name.upper(), args.url, resp.status_code, content)) rest_cmd.func_name.upper(), args.url, resp.status_code, content))
exit(1) exit(1)
try: try:
if resp.content: if resp.content:
rj = resp.json() rj = resp.json()
pretty_print_json(rj) pretty_print_json(rj)
except Exception as e: except Exception as e:
print(e) print(e)
exit(1) exit(1)