Merge "Update hacking for Python3"

This commit is contained in:
Zuul 2020-04-23 11:08:18 +00:00 committed by Gerrit Code Review
commit c7e0ecdfc5
15 changed files with 65 additions and 55 deletions

View File

@ -25,8 +25,8 @@ import sys
from oslo_utils.encodeutils import safe_decode from oslo_utils.encodeutils import safe_decode
from oslo_utils.encodeutils import safe_encode from oslo_utils.encodeutils import safe_encode
import six.moves.urllib.parse as urlparse
from six.moves import urllib from six.moves import urllib
import six.moves.urllib.parse as urlparse
ADMIN = 'root' ADMIN = 'root'
ADMIN_PASS = 'root' ADMIN_PASS = 'root'
@ -46,8 +46,8 @@ def format_response(req):
try: try:
json_value = json.loads(req.read()) json_value = json.loads(req.read())
if (len(json_value['results'][0]) > 0 and if (len(json_value['results'][0]) > 0 and
'series' in json_value['results'][0] and 'series' in json_value['results'][0] and
'values' in json_value['results'][0]['series'][0]): 'values' in json_value['results'][0]['series'][0]):
return json_value['results'][0]['series'][0]['values'] return json_value['results'][0]['series'][0]['values']
else: else:
return [] return []
@ -77,7 +77,8 @@ def influxdb_get_post(uri, query, db=None):
"""Runs a query using HTTP GET or POST and returns the response as a Python list. """Runs a query using HTTP GET or POST and returns the response as a Python list.
At some InfluxDB release several ops changed from using GET to POST. For example, At some InfluxDB release several ops changed from using GET to POST. For example,
CREATE DATABASE. To maintain backward compatibility, this function first trys the CREATE DATABASE. To maintain backward compatibility, this function first trys the
query using POST and if that fails it retries again using GET.""" query using POST and if that fails it retries again using GET.
"""
query_params = {"q": query} query_params = {"q": query}
if db: if db:
@ -115,10 +116,12 @@ def main(argv=None):
query="SHOW RETENTION POLICIES ON {0}".format(DBNAME)) query="SHOW RETENTION POLICIES ON {0}".format(DBNAME))
if not any(pol[0] == SHARDSPACE_NAME for pol in policies): if not any(pol[0] == SHARDSPACE_NAME for pol in policies):
# Set retention policy # Set retention policy
policy = "CREATE RETENTION POLICY {0} ON {1} DURATION {2} REPLICATION {3} DEFAULT".format(SHARDSPACE_NAME, policy = ("CREATE RETENTION POLICY {0} ON {1} DURATION {2} "
DBNAME, "REPLICATION {3} DEFAULT".format(SHARDSPACE_NAME,
RETENTION, DBNAME,
REPLICATION) RETENTION,
REPLICATION)
)
influxdb_get_post(uri=api_uri, db=DBNAME, query=policy) influxdb_get_post(uri=api_uri, db=DBNAME, query=policy)
# Create the users # Create the users
@ -130,5 +133,6 @@ def main(argv=None):
.format(name, password)), .format(name, password)),
db=DBNAME) db=DBNAME)
if __name__ == "__main__": if __name__ == "__main__":
sys.exit(main()) sys.exit(main())

View File

@ -18,9 +18,9 @@
"""Health check will returns 0 when service is working properly.""" """Health check will returns 0 when service is working properly."""
import logging import logging
from urllib import request
import os import os
import sys import sys
from urllib import request
LOG_LEVEL = logging.getLevelName(os.environ.get('LOG_LEVEL', 'INFO')) LOG_LEVEL = logging.getLevelName(os.environ.get('LOG_LEVEL', 'INFO'))

View File

@ -22,7 +22,6 @@ extras==1.0.0
falcon==2.0.0 falcon==2.0.0
fasteners==0.7.0 fasteners==0.7.0
fixtures==3.0.0 fixtures==3.0.0
flake8==2.5.5
funcsigs==1.0.0 funcsigs==1.0.0
future==0.16.0 future==0.16.0
futures==3.0.0 futures==3.0.0
@ -30,7 +29,6 @@ gevent==1.2.2
gitdb==0.6.4 gitdb==0.6.4
GitPython==1.0.1 GitPython==1.0.1
greenlet==0.4.10 greenlet==0.4.10
hacking==1.1.0
httplib2==0.9.1 httplib2==0.9.1
idna==2.6 idna==2.6
imagesize==0.7.1 imagesize==0.7.1
@ -72,13 +70,11 @@ paramiko==2.0.0
PasteDeploy==1.5.0 PasteDeploy==1.5.0
Paste==2.0.2 Paste==2.0.2
pbr==2.0.0 pbr==2.0.0
pep8==1.5.7
positional==1.2.1 positional==1.2.1
prettytable==0.7.2 prettytable==0.7.2
pyasn1==0.1.8 pyasn1==0.1.8
pycadf==1.1.0 pycadf==1.1.0
pycparser==2.18 pycparser==2.18
pyflakes==0.8.1
Pygments==2.2.0 Pygments==2.2.0
pyinotify==0.9.6 pyinotify==0.9.6
PyMySQL==0.7.6 PyMySQL==0.7.6

View File

@ -21,5 +21,6 @@ from monasca_api.api import server
def main(): def main():
return server.get_wsgi_app(config_base_path='/etc/monasca') return server.get_wsgi_app(config_base_path='/etc/monasca')
if __name__ == '__main__' or __name__.startswith('_mod_wsgi'): if __name__ == '__main__' or __name__.startswith('_mod_wsgi'):
application = main() application = main()

View File

@ -111,41 +111,41 @@ def do_version():
def add_command_parsers(subparsers): def add_command_parsers(subparsers):
parser = subparsers.add_parser('fingerprint', parser = subparsers.add_parser('fingerprint',
help="Compute SHA1 fingerprint of " help="Compute SHA1 fingerprint of "
"current database schema ") "current database schema ")
parser.add_argument('-r', '--raw', action='store_true', parser.add_argument('-r', '--raw', action='store_true',
help='Print raw schema dump used for ' help='Print raw schema dump used for '
'fingerprinting') 'fingerprinting')
parser.set_defaults(func=do_fingerprint) parser.set_defaults(func=do_fingerprint)
parser = subparsers.add_parser('detect-revision', parser = subparsers.add_parser('detect-revision',
help="Attempt to detect revision " help="Attempt to detect revision "
"matching current database " "matching current database "
" schema ") " schema ")
parser.set_defaults(func=do_detect_revision) parser.set_defaults(func=do_detect_revision)
parser = subparsers.add_parser('stamp', help='Stamp database with an ' parser = subparsers.add_parser('stamp', help='Stamp database with an '
'Alembic revision') 'Alembic revision')
parser.add_argument('revision', nargs='?', metavar='VERSION', parser.add_argument('revision', nargs='?', metavar='VERSION',
help='Revision to stamp database with', help='Revision to stamp database with',
default=None) default=None)
parser.add_argument('-f', '--from-fingerprint', action='store_true', parser.add_argument('-f', '--from-fingerprint', action='store_true',
help='Try to determine VERSION from fingerprint') help='Try to determine VERSION from fingerprint')
parser.set_defaults(func=do_stamp) parser.set_defaults(func=do_stamp)
parser = subparsers.add_parser('upgrade', parser = subparsers.add_parser('upgrade',
help='Upgrade database to given or ' help='Upgrade database to given or '
'latest revision') 'latest revision')
parser.add_argument('revision', metavar='VERSION', nargs='?', parser.add_argument('revision', metavar='VERSION', nargs='?',
help='Alembic revision to upgrade database to', help='Alembic revision to upgrade database to',
default='head') default='head')
parser.add_argument('-f', '--from-fingerprint', action='store_true', parser.add_argument('-f', '--from-fingerprint', action='store_true',
help='Try to determine VERSION from fingerprint') help='Try to determine VERSION from fingerprint')
parser.set_defaults(func=do_upgrade) parser.set_defaults(func=do_upgrade)
parser = subparsers.add_parser('version', help="Show database's current Alembic version") parser = subparsers.add_parser('version', help="Show database's current Alembic version")
parser.set_defaults(func=do_version) parser.set_defaults(func=do_version)
command_opt = cfg.SubCommandOpt('command', command_opt = cfg.SubCommandOpt('command',

View File

@ -78,5 +78,6 @@ def run_migrations_online():
with context.begin_transaction(): with context.begin_transaction():
context.run_migrations() context.run_migrations()
if have_context: if have_context:
run_migrations_online() run_migrations_online()

View File

@ -221,6 +221,7 @@ def periodsValidation(instr, loc, tokens):
# Must return the string # Must return the string
return tokens[0] return tokens[0]
# Initialize non-ascii unicode code points in the Basic Multilingual Plane. # Initialize non-ascii unicode code points in the Basic Multilingual Plane.
unicode_printables = u''.join( unicode_printables = u''.join(
six.unichr(c) for c in range(128, 65536) if not six.unichr(c).isspace()) six.unichr(c) for c in range(128, 65536) if not six.unichr(c).isspace())

View File

@ -14,17 +14,15 @@
import re import re
from hacking import core
assert_no_xrange_re = re.compile(r"\s*xrange\s*\(") assert_no_xrange_re = re.compile(r"\s*xrange\s*\(")
@core.flake8ext
def no_xrange(logical_line): def no_xrange(logical_line):
"""Do not use 'xrange' """Do not use 'xrange'
B319 B319
""" """
if assert_no_xrange_re.match(logical_line): if assert_no_xrange_re.match(logical_line):
yield (0, "B319: Do not use xrange().") yield (0, "B319: Do not use xrange().")
def factory(register):
register(no_xrange)

View File

@ -180,6 +180,7 @@ def _hex_to_unicode(hex_raw):
hex_str = hex_str_raw.decode('utf-8', 'replace') hex_str = hex_str_raw.decode('utf-8', 'replace')
return hex_str return hex_str
# NOTE(trebskit) => http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt # NOTE(trebskit) => http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt
UNICODE_MESSAGES = [ UNICODE_MESSAGES = [
# Unicode is evil... # Unicode is evil...

View File

@ -103,7 +103,7 @@ class TestTimestampsValidation(base.BaseTestCase):
try: try:
helpers.validate_start_end_timestamps(start_timestamp, helpers.validate_start_end_timestamps(start_timestamp,
end_timestamp) end_timestamp)
except: except Exception:
self.fail("shouldn't happen") self.fail("shouldn't happen")
def test_same_timestamps(self): def test_same_timestamps(self):
@ -156,6 +156,7 @@ class TestConvertTimeString(base.BaseTestCase):
ValueError, ValueError,
helpers._convert_time_string, date_time_string) helpers._convert_time_string, date_time_string)
valid_periods = [0, 60] valid_periods = [0, 60]

View File

@ -59,6 +59,7 @@ def validate_alarm_action_list(v):
def validate_undetermined_action_list(v): def validate_undetermined_action_list(v):
validate_action_list(v, 'UNDETERMINED') validate_action_list(v, 'UNDETERMINED')
alarm_definition_schema = { alarm_definition_schema = {
Required('name'): All(Any(str, six.text_type), Length(max=255)), Required('name'): All(Any(str, six.text_type), Length(max=255)),
Required('expression'): All(Any(str, six.text_type)), Required('expression'): All(Any(str, six.text_type)),

View File

@ -713,7 +713,7 @@ def paginate_statistics(statistics, uri, limit):
def create_alarms_count_next_link(uri, offset, limit): def create_alarms_count_next_link(uri, offset, limit):
if offset is None: if offset is None:
offset = 0 offset = 0
parsed_url = urlparse.urlparse(uri) parsed_url = urlparse.urlparse(uri)
base_url = build_base_uri(parsed_url) base_url = build_base_uri(parsed_url)
new_query_params = [u'offset=' + urlparse.quote(str(offset + limit))] new_query_params = [u'offset=' + urlparse.quote(str(offset + limit))]

View File

@ -173,9 +173,9 @@ htmlhelp_basename = 'MonitoringApiReleaseNotesDoc'
# (source start file, target name, title, # (source start file, target name, title,
# author, documentclass [howto, manual, or own class]). # author, documentclass [howto, manual, or own class]).
latex_documents = [( latex_documents = [(
master_doc, 'MonitoringApiReleaseNotes.tex', master_doc, 'MonitoringApiReleaseNotes.tex',
u'Monitoring API Release Notes', [author], u'Monitoring API Release Notes', [author],
'manual' 'manual'
)] )]
# The name of an image file (relative to this directory) to place at the top of # The name of an image file (relative to this directory) to place at the top of

View File

@ -4,7 +4,7 @@
# Hacking already pins down pep8, pyflakes and flake8 # Hacking already pins down pep8, pyflakes and flake8
bandit>=1.1.0 # Apache-2.0 bandit>=1.1.0 # Apache-2.0
bashate>=0.5.1 # Apache-2.0 bashate>=0.5.1 # Apache-2.0
hacking>=1.1.0,<1.2.0 # Apache-2.0 hacking>=3.0,<3.1.0 # Apache-2.0
Babel!=2.4.0,>=2.3.4 # BSD Babel!=2.4.0,>=2.3.4 # BSD
coverage!=4.4,>=4.0 # Apache-2.0 coverage!=4.4,>=4.0 # Apache-2.0
cassandra-driver!=3.6.0,>=3.3.0 # Apache-2.0 cassandra-driver!=3.6.0,>=3.3.0 # Apache-2.0

View File

@ -144,7 +144,8 @@ commands = bindep test
# H201 no 'except:' at least use 'except Exception:' # H201 no 'except:' at least use 'except Exception:'
# H302 import only modules # H302 import only modules
# H405 multi line docstring summary not separated with an empty line # H405 multi line docstring summary not separated with an empty line
ignore = F821,H201,H302,H405 # W504 line break after binary operator
ignore = F821,H201,H302,H405,W504
# H106: Don't put vim configuration in source files # H106: Don't put vim configuration in source files
# H203: Use assertIs(Not)None to check for None # H203: Use assertIs(Not)None to check for None
# H204: Use assert(Not)Equal to check for equality. # H204: Use assert(Not)Equal to check for equality.
@ -161,6 +162,11 @@ local-check-factory = monasca_api.hacking.checks.factory
import_exceptions = import_exceptions =
six.moves six.moves
[flake8:local-plugins]
extension =
B319 = checks:no_xrange
paths = ./monasca_api/hacking
[testenv:lower-constraints] [testenv:lower-constraints]
deps = deps =
-c{toxinidir}/lower-constraints.txt -c{toxinidir}/lower-constraints.txt