Add bugbear to flake8 and cleanup some errors
Added a python3 tool called bugbear as part of flake8 Moved the tox.ini for nfv to a new location. Removed nfv tox calls from the bottom level tox.ini file Specified the queens upper-constraint. This is because the kubernetes client from pike is not what is shipped. Adds a separate tox.ini for nova-api-proxy. Fix two of the errors flagged by bugbear: B006: Do not use mutable data structures for argument defaults. B306: BaseException.message has been deprecated as of Python 2.6 and is removed in Python 3. Fix unused imports in Flake8 F401 '<module>' imported but unused Clean up two pylint errors: W0102 dangerous-default-value W0631 undefined-loop-variable Story: 2003499 Task: 26410 Change-Id: I61deb6a002f963cd58fe019bb54a4c3296809391 Signed-off-by: Al Bailey <Al.Bailey@windriver.com>
This commit is contained in:
parent
6cf70c6c51
commit
cb1b85b13f
49
.zuul.yaml
49
.zuul.yaml
@ -3,15 +3,39 @@
|
||||
check:
|
||||
jobs:
|
||||
- openstack-tox-linters
|
||||
- openstack-tox-pep8
|
||||
- nfv-tox-pep8
|
||||
- nfv-tox-py27
|
||||
- nfv-tox-pylint
|
||||
- openstack-tox-py27
|
||||
- nova-api-proxy-tox-pep8
|
||||
- nova-api-proxy-tox-pylint
|
||||
gate:
|
||||
jobs:
|
||||
- openstack-tox-linters
|
||||
- openstack-tox-pep8
|
||||
- nfv-tox-pep8
|
||||
- nfv-tox-py27
|
||||
- nfv-tox-pylint
|
||||
- openstack-tox-py27
|
||||
- nova-api-proxy-tox-pep8
|
||||
- nova-api-proxy-tox-pylint
|
||||
|
||||
- job:
|
||||
name: nfv-tox-py27
|
||||
parent: tox
|
||||
description: Run py27 for nfv
|
||||
required-projects:
|
||||
- openstack/stx-fault
|
||||
vars:
|
||||
tox_envlist: py27
|
||||
tox_extra_args: -c nfv/tox.ini
|
||||
|
||||
- job:
|
||||
name: nfv-tox-pep8
|
||||
parent: tox
|
||||
description: Run pep8 for nfv
|
||||
required-projects:
|
||||
- openstack/stx-fault
|
||||
vars:
|
||||
tox_envlist: pep8
|
||||
tox_extra_args: -c nfv/tox.ini
|
||||
|
||||
- job:
|
||||
name: nfv-tox-pylint
|
||||
@ -21,3 +45,20 @@
|
||||
- openstack/stx-fault
|
||||
vars:
|
||||
tox_envlist: pylint
|
||||
tox_extra_args: -c nfv/tox.ini
|
||||
|
||||
- job:
|
||||
name: nova-api-proxy-tox-pep8
|
||||
parent: tox
|
||||
description: Run pep8 for nova-api-proxy
|
||||
vars:
|
||||
tox_envlist: pep8
|
||||
tox_extra_args: -c nova-api-proxy/tox.ini
|
||||
|
||||
- job:
|
||||
name: nova-api-proxy-tox-pylint
|
||||
parent: tox
|
||||
description: Run pylint for nova-api-proxy
|
||||
vars:
|
||||
tox_envlist: pylint
|
||||
tox_extra_args: -c nova-api-proxy/tox.ini
|
||||
|
7
nfv/.gitignore
vendored
7
nfv/.gitignore
vendored
@ -1,6 +1 @@
|
||||
!.distro
|
||||
.distro/centos7/rpmbuild/RPMS
|
||||
.distro/centos7/rpmbuild/SRPMS
|
||||
.distro/centos7/rpmbuild/BUILD
|
||||
.distro/centos7/rpmbuild/BUILDROOT
|
||||
.distro/centos7/rpmbuild/SOURCES/nfv*tar.gz
|
||||
.coverage
|
||||
|
@ -1,14 +1,14 @@
|
||||
#
|
||||
# Copyright (c) 2015-2016 Wind River Systems, Inc.
|
||||
# Copyright (c) 2018 Wind River Systems, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
[run]
|
||||
branch = True
|
||||
source =
|
||||
../../nfv-common
|
||||
../../nfv-plugins
|
||||
../../nfv-vim
|
||||
nfv-common
|
||||
nfv-plugins
|
||||
nfv-vim
|
||||
|
||||
[report]
|
||||
include =
|
@ -45,7 +45,6 @@ import sys
|
||||
import time
|
||||
import plotly
|
||||
import plotly.graph_objs as go
|
||||
from plotly.graph_objs import Scatter, Layout
|
||||
from plotly import tools
|
||||
from glob import iglob
|
||||
import subprocess
|
||||
@ -252,7 +251,9 @@ def pCommand(pList):
|
||||
|
||||
# Stores the average execution time, or delta hit count data into into a plotly graph obj, and restricts sample to be within a certain
|
||||
# date range if specified. If plots is 1, one graph will be generated. If plots is 2, two graphs will be generated with one above the other.
|
||||
def storeGraphData(procs, dateRange=[], execTime=False, hits=False, plots=1):
|
||||
def storeGraphData(procs, dateRange=None, execTime=False, hits=False, plots=1):
|
||||
if dateRange is None:
|
||||
dateRange = []
|
||||
graphData = {}
|
||||
prevHitTotal = 0
|
||||
timeList = [[] for p in range(len(procs))]
|
||||
|
@ -7,12 +7,12 @@
|
||||
# pip install pyyaml
|
||||
# pip install jinja2
|
||||
#
|
||||
import argparse
|
||||
import os
|
||||
import shutil
|
||||
import six
|
||||
import yaml
|
||||
import shutil
|
||||
import pprint
|
||||
import argparse
|
||||
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
|
||||
|
||||
|
@ -12,9 +12,10 @@
|
||||
# All configuration values have a default; values that are commented out
|
||||
# serve to show the default.
|
||||
|
||||
import sys
|
||||
import os
|
||||
import shlex
|
||||
# Uncomment these imports if the extensions below are enabled
|
||||
# import sys
|
||||
# import os
|
||||
# import shlex
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
|
@ -404,8 +404,8 @@ def _rest_api_request(token_id, method, api_cmd, api_cmd_headers=None,
|
||||
pass
|
||||
|
||||
raise OpenStackRestAPIException(method, api_cmd, api_cmd_headers,
|
||||
api_cmd_payload, e.code, e.message,
|
||||
"%s" % e, headers, response_raw, reason)
|
||||
api_cmd_payload, e.code, str(e),
|
||||
str(e), headers, response_raw, reason)
|
||||
|
||||
except urllib2.URLError as e:
|
||||
now_ms = timers.get_monotonic_timestamp_in_ms()
|
||||
@ -416,7 +416,7 @@ def _rest_api_request(token_id, method, api_cmd, api_cmd_headers=None,
|
||||
int(elapsed_ms)))
|
||||
|
||||
raise OpenStackException(method, api_cmd, api_cmd_headers,
|
||||
api_cmd_payload, e.message, "%s" % e)
|
||||
api_cmd_payload, str(e), str(e))
|
||||
|
||||
|
||||
def rest_api_request(token, method, api_cmd, api_cmd_headers=None,
|
||||
|
@ -3,6 +3,8 @@
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
# flake8: noqa
|
||||
#
|
||||
from _test_instances import TestInstanceStart, TestInstanceStop
|
||||
from _test_instances import TestInstancePause, TestInstanceUnpause
|
||||
from _test_instances import TestInstanceSuspend, TestInstanceResume
|
||||
|
@ -3,17 +3,16 @@
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
import os
|
||||
import time
|
||||
import shutil
|
||||
import datetime
|
||||
import os
|
||||
import shutil
|
||||
import time
|
||||
|
||||
from nfv_common import debug
|
||||
|
||||
from nfv_plugins.nfvi_plugins import config
|
||||
from nfv_plugins.nfvi_plugins.openstack import nova
|
||||
from nfv_plugins.nfvi_plugins.openstack import sysinv
|
||||
from nfv_plugins.nfvi_plugins.openstack import fm
|
||||
from nfv_plugins.nfvi_plugins.openstack import nova
|
||||
from nfv_plugins.nfvi_plugins.openstack import openstack
|
||||
|
||||
import _instances
|
||||
|
1
nfv/nfv-tests/nfv_unit_tests/.gitignore
vendored
1
nfv/nfv-tests/nfv_unit_tests/.gitignore
vendored
@ -1 +0,0 @@
|
||||
.coverage
|
@ -1,100 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 2015-2016 Wind River Systems, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
# Tox (http://tox.testrun.org/) is a tool for running tests
|
||||
# in multiple virtualenvs. This configuration file will run the
|
||||
# test suite on all supported python versions. To use it, "pip install tox"
|
||||
# and then run "tox" from this directory.
|
||||
[nfv]
|
||||
nfv_base_dir = ../..
|
||||
nfv_client_dir = ../../nfv-client
|
||||
nfv_common_dir = ../../nfv-common
|
||||
nfv_plugins_dir = ../../nfv-plugins
|
||||
nfv_vim_dir = ../../nfv-vim
|
||||
stx_fault_dir = ../../../../stx-fault
|
||||
|
||||
nfv_client_src_dir = {[nfv]nfv_client_dir}/nfv_client
|
||||
nfv_common_src_dir = {[nfv]nfv_common_dir}/nfv_common
|
||||
nfv_plugins_src_dir = {[nfv]nfv_plugins_dir}/nfv_plugins
|
||||
nfv_vim_src_dir = {[nfv]nfv_vim_dir}/nfv_vim
|
||||
|
||||
deps = {[nfv]nfv_client_dir}
|
||||
{[nfv]nfv_common_dir}
|
||||
{[nfv]nfv_plugins_dir}
|
||||
{[nfv]nfv_vim_dir}
|
||||
{[nfv]stx_fault_dir}/fm-api
|
||||
iso8601
|
||||
keyring
|
||||
kombu
|
||||
kubernetes
|
||||
passlib
|
||||
pecan
|
||||
pyparsing
|
||||
PyYAML
|
||||
sqlalchemy
|
||||
stevedore
|
||||
wsme
|
||||
|
||||
|
||||
[nosetests]
|
||||
verbosity=2
|
||||
|
||||
[tox]
|
||||
toxworkdir = /tmp/{env:USER}_nfvtox
|
||||
envlist = pep8,py27-sqlite
|
||||
|
||||
[testenv]
|
||||
recreate = True
|
||||
install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages}
|
||||
|
||||
|
||||
[testenv:pep8]
|
||||
deps = flake8
|
||||
commands = flake8 --max-line-length 84 {[nfv]nfv_client_dir}
|
||||
flake8 --max-line-length 84 {[nfv]nfv_common_dir}
|
||||
flake8 --max-line-length 84 {[nfv]nfv_plugins_dir}
|
||||
flake8 --max-line-length 84 {[nfv]nfv_vim_dir}
|
||||
|
||||
[testenv:lint]
|
||||
deps = {[nfv]deps}
|
||||
pylint
|
||||
basepython = python2.7
|
||||
commands = pylint {[nfv]nfv_client_src_dir} \
|
||||
{[nfv]nfv_common_src_dir} \
|
||||
{[nfv]nfv_plugins_src_dir} \
|
||||
{[nfv]nfv_vim_src_dir} \
|
||||
--rcfile=./pylint.rc
|
||||
|
||||
[bandit]
|
||||
# These are the bandit codes that are failing for stx-nfv
|
||||
# B104: hardcoded_bind_all_interfaces
|
||||
# B108: Probable insecure usage of temp file/directory
|
||||
# B110: Try, Except, Pass detected.
|
||||
# B310: Audit url open for permitted schemes
|
||||
# B506: Test for use of yaml load
|
||||
skips = B104,B108,B110,B310,B506
|
||||
exclude = nfv-docs,nfv-tests,nfv-debug-tools,unit_test
|
||||
|
||||
[testenv:bandit]
|
||||
deps = {[nfv]deps}
|
||||
bandit
|
||||
basepython = python2.7
|
||||
commands = bandit --ini tox.ini -f txt -r {[nfv]nfv_base_dir}
|
||||
|
||||
[testenv:py27-sqlite]
|
||||
basepython = py27-sqlite: python2.7
|
||||
deps = {[nfv]deps}
|
||||
mock
|
||||
nose
|
||||
coverage
|
||||
setenv = PYTHONDONTWRITEBYTECODE=True
|
||||
#commands = nosetests --pdb --exe -w tests/
|
||||
commands = cp -v ./test_data/nfv_vim_db_18.03_GA {envdir}/
|
||||
{envbindir}/nosetests --exe -w tests/ '{posargs}'
|
||||
# Use the following for code coverage
|
||||
# {envbindir}/nosetests --exe --cover-erase --cover-branches \
|
||||
# --cover-package=nfv_common,nfv_vim --with-coverage -w tests/
|
||||
whitelist_externals = cp
|
@ -29,10 +29,12 @@ def _migrate_instances_v4_to_v5(session, instances_v4, instances_v5):
|
||||
|
||||
# We can build the flavor details embedded in the instance from
|
||||
# the flavor referenced from the original instance.
|
||||
for instance_type in instance_types:
|
||||
if instance_type.uuid == instance_type_uuid:
|
||||
instance_type = None
|
||||
for i_type in instance_types:
|
||||
if i_type.uuid == instance_type_uuid:
|
||||
instance_type = i_type
|
||||
break
|
||||
else:
|
||||
if instance_type is None:
|
||||
DLOG.error("Missing instance type: %s" % instance_type_uuid)
|
||||
continue
|
||||
|
||||
|
@ -158,7 +158,7 @@ class SwUpdateStrategy(strategy.Strategy):
|
||||
"""
|
||||
from nfv_vim import tables
|
||||
|
||||
def has_policy_conflict():
|
||||
def has_policy_conflict(peer_host):
|
||||
for instance in instance_table.on_host(host.name):
|
||||
for peer_instance in instance_table.on_host(peer_host.name):
|
||||
for policy in policies:
|
||||
@ -308,7 +308,7 @@ class SwUpdateStrategy(strategy.Strategy):
|
||||
continue
|
||||
|
||||
for peer_host in host_list:
|
||||
if has_policy_conflict():
|
||||
if has_policy_conflict(peer_host):
|
||||
# don't add host to the current list
|
||||
break
|
||||
else:
|
||||
|
@ -1461,10 +1461,11 @@ class QueryAlarmsStep(strategy.StrategyStep):
|
||||
"""
|
||||
Query Alarms - Strategy Step
|
||||
"""
|
||||
def __init__(self, fail_on_alarms=False, ignore_alarms=[]):
|
||||
def __init__(self, fail_on_alarms=False, ignore_alarms=None):
|
||||
super(QueryAlarmsStep, self).__init__(
|
||||
STRATEGY_STEP_NAME.QUERY_ALARMS, timeout_in_secs=60)
|
||||
|
||||
if ignore_alarms is None:
|
||||
ignore_alarms = []
|
||||
self._fail_on_alarms = fail_on_alarms
|
||||
self._ignore_alarms = ignore_alarms
|
||||
|
||||
@ -1543,10 +1544,11 @@ class WaitDataSyncStep(strategy.StrategyStep):
|
||||
"""
|
||||
Alarm Wait - Strategy Step
|
||||
"""
|
||||
def __init__(self, timeout_in_secs=300, ignore_alarms=[]):
|
||||
def __init__(self, timeout_in_secs=300, ignore_alarms=None):
|
||||
super(WaitDataSyncStep, self).__init__(
|
||||
STRATEGY_STEP_NAME.WAIT_DATA_SYNC, timeout_in_secs=timeout_in_secs)
|
||||
|
||||
if ignore_alarms is None:
|
||||
ignore_alarms = []
|
||||
self._ignore_alarms = ignore_alarms
|
||||
self._wait_time = 0
|
||||
self._query_inprogress = False
|
||||
|
@ -26,7 +26,6 @@ load-plugins=
|
||||
# can either give multiple identifier separated by comma (,) or put this option
|
||||
# multiple time (only on the command line, not in the configuration file where
|
||||
# it should appear only once).
|
||||
# W0102 dangerous-default-value
|
||||
# W0107 unnecessary-pass
|
||||
# W0120 useless-else-on-loop
|
||||
# W0125 using-constant-test
|
||||
@ -44,12 +43,11 @@ load-plugins=
|
||||
# W0612 Unused variable warning
|
||||
# W0613 Unused argument warning
|
||||
# W0621 redefined-outer-name
|
||||
# W0631 undefined-loop-variable
|
||||
# W0622 redefined-builtin
|
||||
# W0703 broad except warning
|
||||
# W1401 anomalous-backslash-in-string
|
||||
disable=C, R, W0102, W0107, W0120, W0125, W0212, W0221, W0223, W0231, W0235, W0311,
|
||||
W0401, W0403, W0404, W0511, W0603, W0612, W0613, W0621, W0622, W0631, W0703, W1401
|
||||
disable=C, R, W0107, W0120, W0125, W0212, W0221, W0223, W0231, W0235, W0311,
|
||||
W0401, W0403, W0404, W0511, W0603, W0612, W0613, W0621, W0622, W0703, W1401
|
||||
|
||||
|
||||
[REPORTS]
|
158
nfv/tox.ini
Executable file
158
nfv/tox.ini
Executable file
@ -0,0 +1,158 @@
|
||||
#
|
||||
# Copyright (c) 2018 Wind River Systems, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
# Tox (http://tox.testrun.org/) is a tool for running tests
|
||||
# in multiple virtualenvs. This configuration file will run the
|
||||
# test suite on all supported python versions. To use it, "pip install tox"
|
||||
# and then run "tox" from this directory.
|
||||
[tox]
|
||||
toxworkdir = /tmp/{env:USER}_nfvtox
|
||||
envlist = pep8,py27,pylint
|
||||
skipsdist = True
|
||||
stxdir = {toxinidir}/../..
|
||||
|
||||
[testenv]
|
||||
recreate = True
|
||||
install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=stable/queens} {opts} {packages}
|
||||
whitelist_externals = cp
|
||||
|
||||
[nfv]
|
||||
nfv_base_dir = .
|
||||
nfv_client_dir = ./nfv-client
|
||||
nfv_common_dir = ./nfv-common
|
||||
nfv_plugins_dir = ./nfv-plugins
|
||||
nfv_vim_dir = ./nfv-vim
|
||||
stx_fault_dir = ../../stx-fault
|
||||
|
||||
nfv_client_src_dir = {[nfv]nfv_client_dir}/nfv_client
|
||||
nfv_common_src_dir = {[nfv]nfv_common_dir}/nfv_common
|
||||
nfv_plugins_src_dir = {[nfv]nfv_plugins_dir}/nfv_plugins
|
||||
nfv_vim_src_dir = {[nfv]nfv_vim_dir}/nfv_vim
|
||||
|
||||
deps = {[nfv]nfv_client_dir}
|
||||
{[nfv]nfv_common_dir}
|
||||
{[nfv]nfv_plugins_dir}
|
||||
{[nfv]nfv_vim_dir}
|
||||
{[nfv]stx_fault_dir}/fm-api
|
||||
iso8601
|
||||
keyring
|
||||
kombu
|
||||
kubernetes
|
||||
passlib
|
||||
pecan
|
||||
pyparsing
|
||||
PyYAML
|
||||
sqlalchemy
|
||||
stevedore
|
||||
wsme
|
||||
|
||||
[nosetests]
|
||||
verbosity=2
|
||||
|
||||
[flake8]
|
||||
# Temporarily ignoring these warnings
|
||||
# E121 continuation line under-indented for hanging indent
|
||||
# E122 continuation line missing indentation or outdented
|
||||
# E123 closing bracket does not match indentation of opening bracket
|
||||
# E124 closing bracket does not match visual indentation
|
||||
# E126 continuation line over-indented for hanging indent
|
||||
# E127 continuation line over-indented for visual indent
|
||||
# E128 continuation line under-indented for visual indent
|
||||
# E129 visually indented line with same indent as next logical line
|
||||
# E501 line too long
|
||||
# E712 comparison to bool should be reworded
|
||||
# - hacking codes -
|
||||
# H102: license header not found
|
||||
# H104: File contains nothing but comments
|
||||
# H301: one import per line
|
||||
# H306: imports not in alphabetical order
|
||||
# H401: docstring should not start with a space
|
||||
# H404: multi line docstring should start without a leading new line
|
||||
# H405: multi line docstring summary not separated with an empty line
|
||||
# H501: Do not use self.__dict__ for string formatting
|
||||
# - flake8 codes -
|
||||
# F821 undefined name 'unicode' (python3 specific)
|
||||
# - bugbear codes -
|
||||
# B007 Loop control variable 'X' not used within the loop body. If this is intended, start the name with an underscore.
|
||||
# B301 Python 3 does not include `.iter*` methods on dictionaries.
|
||||
ignore = E121,E122,E123,E124,E126,E127,E128,E129,E501,E712,
|
||||
H102,H104,H301,H306,H401,H404,H405,H501,
|
||||
F821,
|
||||
B007, B301
|
||||
# H106 Don’t put vim configuration in source files (off by default).
|
||||
# H203 Use assertIs(Not)None to check for None (off by default).
|
||||
# TODO: enable: H904 Delay string interpolations at logging calls (off by default).
|
||||
enable-extensions = H106,H203
|
||||
max-line-length = 84
|
||||
|
||||
[testenv:pep8]
|
||||
basepython = python3.5
|
||||
usedevelop = False
|
||||
skip_install = True
|
||||
deps =
|
||||
hacking
|
||||
flake8-bugbear
|
||||
flake8
|
||||
commands =
|
||||
flake8 {[nfv]nfv_base_dir}
|
||||
|
||||
|
||||
[testenv:pylint]
|
||||
deps = {[nfv]deps}
|
||||
pylint
|
||||
basepython = python2.7
|
||||
commands = pylint {[nfv]nfv_client_src_dir} \
|
||||
{[nfv]nfv_common_src_dir} \
|
||||
{[nfv]nfv_plugins_src_dir} \
|
||||
{[nfv]nfv_vim_src_dir} \
|
||||
--rcfile=./pylint.rc
|
||||
|
||||
[bandit]
|
||||
# These are the bandit codes that are failing for stx-nfv
|
||||
# B104: hardcoded_bind_all_interfaces
|
||||
# B108: Probable insecure usage of temp file/directory
|
||||
# B110: Try, Except, Pass detected.
|
||||
# B310: Audit url open for permitted schemes
|
||||
# B506: Test for use of yaml load
|
||||
skips = B104,B108,B110,B310,B506
|
||||
exclude = nfv-docs,nfv-tests,nfv-debug-tools,unit_test
|
||||
|
||||
[testenv:bandit]
|
||||
deps = {[nfv]deps}
|
||||
bandit
|
||||
basepython = python2.7
|
||||
commands = bandit --ini tox.ini -f txt -r {[nfv]nfv_base_dir}
|
||||
|
||||
[testenv:py27]
|
||||
basepython = python2.7
|
||||
deps = {[nfv]deps}
|
||||
mock
|
||||
nose
|
||||
coverage
|
||||
setenv = PYTHONDONTWRITEBYTECODE=True
|
||||
commands = cp -v {[nfv]nfv_base_dir}/nfv-tests/nfv_unit_tests/test_data/nfv_vim_db_18.03_GA {envdir}/
|
||||
{envbindir}/nosetests --exe -w {[nfv]nfv_base_dir}/nfv-tests/nfv_unit_tests/tests/ '{posargs}'
|
||||
|
||||
[testenv:py35]
|
||||
basepython = python3.5
|
||||
deps = {[nfv]deps}
|
||||
mock
|
||||
nose
|
||||
coverage
|
||||
setenv = PYTHONDONTWRITEBYTECODE=True
|
||||
commands = cp -v {[nfv]nfv_base_dir}/nfv-tests/nfv_unit_tests/test_data/nfv_vim_db_18.03_GA {envdir}/
|
||||
{envbindir}/nosetests --exe -w {[nfv]nfv_base_dir}/nfv-tests/nfv_unit_tests/tests/ '{posargs}'
|
||||
|
||||
[testenv:cover]
|
||||
basepython = python2.7
|
||||
deps = {[nfv]deps}
|
||||
mock
|
||||
nose
|
||||
coverage
|
||||
setenv = PYTHONDONTWRITEBYTECODE=True
|
||||
commands = cp -v {[nfv]nfv_base_dir}/nfv-tests/nfv_unit_tests/test_data/nfv_vim_db_18.03_GA {envdir}/
|
||||
{envbindir}/nosetests --exe --cover-erase --cover-branches \
|
||||
--cover-package=nfv_common,nfv_vim --with-coverage -w {[nfv]nfv_base_dir}/nfv-tests/nfv_unit_tests/tests/
|
222
nova-api-proxy/pylint.rc
Executable file
222
nova-api-proxy/pylint.rc
Executable file
@ -0,0 +1,222 @@
|
||||
[MASTER]
|
||||
# Specify a configuration file.
|
||||
rcfile=pylint.rc
|
||||
|
||||
# Python code to execute, usually for sys.path manipulation such as pygtk.require().
|
||||
#init-hook=
|
||||
|
||||
# Add files or directories to the blacklist. They should be base names, not paths.
|
||||
ignore=unit_test.py
|
||||
|
||||
# Pickle collected data for later comparisons.
|
||||
persistent=yes
|
||||
|
||||
# List of plugins (as comma separated values of python modules names) to load,
|
||||
# usually to register additional checkers.
|
||||
load-plugins=
|
||||
|
||||
|
||||
[MESSAGES CONTROL]
|
||||
# Enable the message, report, category or checker with the given id(s). You can
|
||||
# either give multiple identifier separated by comma (,) or put this option
|
||||
# multiple time.
|
||||
#enable=
|
||||
|
||||
# Disable the message, report, category or checker with the given id(s). You
|
||||
# can either give multiple identifier separated by comma (,) or put this option
|
||||
# multiple time (only on the command line, not in the configuration file where
|
||||
# it should appear only once).
|
||||
# E1101 no-member
|
||||
# E1121: Too many positional arguments for function call
|
||||
# W0107 unnecessary-pass
|
||||
# W0404 reimported
|
||||
# W0601 Global variable %r undefined at the module level
|
||||
# W0603 Using the global statement warning
|
||||
# W0613 Unused argument warning
|
||||
# W0621 Redefining name %r from outer scope
|
||||
# W0703 broad except warning
|
||||
disable=C, R, E1101, E1121, W0107, W0404, W0601, W0603, W0613, W0621, W0703
|
||||
|
||||
|
||||
[REPORTS]
|
||||
# Set the output format. Available formats are text, parseable, colorized, msvs
|
||||
# (visual studio) and html
|
||||
output-format=text
|
||||
|
||||
# Put messages in a separate file for each module / package specified on the
|
||||
# command line instead of printing them on stdout. Reports (if any) will be
|
||||
# written in a file name "pylint_global.[txt|html]".
|
||||
files-output=no
|
||||
|
||||
# Tells whether to display a full report or only the messages
|
||||
reports=no
|
||||
|
||||
# Python expression which should return a note less than 10 (10 is the highest
|
||||
# note). You have access to the variables errors warning, statement which
|
||||
# respectively contain the number of errors / warnings messages and the total
|
||||
# number of statements analyzed. This is used by the global evaluation report
|
||||
# (RP0004).
|
||||
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
|
||||
|
||||
|
||||
[SIMILARITIES]
|
||||
# Minimum lines number of a similarity.
|
||||
min-similarity-lines=4
|
||||
|
||||
# Ignore comments when computing similarities.
|
||||
ignore-comments=yes
|
||||
|
||||
# Ignore docstrings when computing similarities.
|
||||
ignore-docstrings=yes
|
||||
|
||||
|
||||
[FORMAT]
|
||||
# Maximum number of characters on a single line.
|
||||
max-line-length=85
|
||||
|
||||
# Maximum number of lines in a module
|
||||
max-module-lines=1000
|
||||
|
||||
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 tab).
|
||||
indent-string=' '
|
||||
|
||||
|
||||
[TYPECHECK]
|
||||
# Tells whether missing members accessed in mixin class should be ignored. A
|
||||
# mixin class is detected if its name ends with "mixin" (case insensitive).
|
||||
ignore-mixin-members=yes
|
||||
|
||||
# List of classes names for which member attributes should not be checked
|
||||
# (useful for classes with attributes dynamically set).
|
||||
# The following VIM objects are ignored: ObjectData, GuestService, Network, SwUpdate
|
||||
ignored-classes=SQLObject,sqlalchemy,scoped_session,_socketobject,ObjectData,GuestService,Network,SwUpdate
|
||||
|
||||
# List of members which are set dynamically and missed by pylint inference
|
||||
# system, and so shouldn't trigger E0201 when accessed. Python regular
|
||||
# expressions are accepted.
|
||||
generated-members=REQUEST,acl_users,aq_parent
|
||||
|
||||
|
||||
[BASIC]
|
||||
# List of builtins function names that should not be used, separated by a comma
|
||||
bad-functions=map,filter,apply,input
|
||||
|
||||
# Regular expression which should only match correct module names
|
||||
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
|
||||
|
||||
# Regular expression which should only match correct module level names
|
||||
const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
|
||||
|
||||
# Regular expression which should only match correct class names
|
||||
class-rgx=[A-Z_][a-zA-Z0-9]+$
|
||||
|
||||
# Regular expression which should only match correct function names
|
||||
function-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression which should only match correct method names
|
||||
method-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression which should only match correct instance attribute names
|
||||
attr-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression which should only match correct argument names
|
||||
argument-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression which should only match correct variable names
|
||||
variable-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression which should only match correct list comprehension /
|
||||
# generator expression variable names
|
||||
inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
|
||||
|
||||
# Good variable names which should always be accepted, separated by a comma
|
||||
good-names=i,j,k,ex,Run,_
|
||||
|
||||
# Bad variable names which should always be refused, separated by a comma
|
||||
bad-names=foo,bar,baz,toto,tutu,tata
|
||||
|
||||
# Regular expression which should only match functions or classes name which do
|
||||
# not require a docstring
|
||||
no-docstring-rgx=__.*__
|
||||
|
||||
|
||||
[MISCELLANEOUS]
|
||||
# List of note tags to take in consideration, separated by a comma.
|
||||
notes=FIXME,XXX,TODO
|
||||
|
||||
|
||||
[VARIABLES]
|
||||
# Tells whether we should check for unused import in __init__ files.
|
||||
init-import=no
|
||||
|
||||
# A regular expression matching the beginning of the name of dummy variables
|
||||
# (i.e. not used).
|
||||
dummy-variables-rgx=_|dummy
|
||||
|
||||
# List of additional names supposed to be defined in builtins. Remember that
|
||||
# you should avoid to define new builtins when possible.
|
||||
additional-builtins=
|
||||
|
||||
|
||||
[IMPORTS]
|
||||
# Deprecated modules which should not be used, separated by a comma
|
||||
deprecated-modules=regsub,string,TERMIOS,Bastion,rexec
|
||||
|
||||
# Create a graph of every (i.e. internal and external) dependencies in the
|
||||
# given file (report RP0402 must not be disabled)
|
||||
import-graph=
|
||||
|
||||
# Create a graph of external dependencies in the given file (report RP0402 must
|
||||
# not be disabled)
|
||||
ext-import-graph=
|
||||
|
||||
# Create a graph of internal dependencies in the given file (report RP0402 must
|
||||
# not be disabled)
|
||||
int-import-graph=
|
||||
|
||||
|
||||
[DESIGN]
|
||||
# Maximum number of arguments for function / method
|
||||
max-args=5
|
||||
|
||||
# Argument names that match this expression will be ignored. Default to name
|
||||
# with leading underscore
|
||||
ignored-argument-names=_.*
|
||||
|
||||
# Maximum number of locals for function / method body
|
||||
max-locals=15
|
||||
|
||||
# Maximum number of return / yield for function / method body
|
||||
max-returns=6
|
||||
|
||||
# Maximum number of branch for function / method body
|
||||
max-branchs=12
|
||||
|
||||
# Maximum number of statements in function / method body
|
||||
max-statements=50
|
||||
|
||||
# Maximum number of parents for a class (see R0901).
|
||||
max-parents=7
|
||||
|
||||
# Maximum number of attributes for a class (see R0902).
|
||||
max-attributes=7
|
||||
|
||||
# Minimum number of public methods for a class (see R0903).
|
||||
min-public-methods=2
|
||||
|
||||
# Maximum number of public methods for a class (see R0904).
|
||||
max-public-methods=20
|
||||
|
||||
|
||||
[CLASSES]
|
||||
# List of method names used to declare (i.e. assign) instance attributes.
|
||||
defining-attr-methods=__init__,__new__,setUp
|
||||
|
||||
# List of valid names for the first argument in a class method.
|
||||
valid-classmethod-first-arg=cls
|
||||
|
||||
|
||||
[EXCEPTIONS]
|
||||
# Exceptions that will emit a warning when being caught. Defaults to
|
||||
# "Exception"
|
||||
overgeneral-exceptions=Exception
|
65
nova-api-proxy/tox.ini
Normal file
65
nova-api-proxy/tox.ini
Normal file
@ -0,0 +1,65 @@
|
||||
[tox]
|
||||
envlist = pep8,pylint
|
||||
minversion = 2.3
|
||||
skipsdist = True
|
||||
|
||||
[testenv]
|
||||
basepython = python3
|
||||
install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=stable/pike} {opts} {packages}
|
||||
setenv = VIRTUAL_ENV={envdir}
|
||||
OS_STDOUT_CAPTURE=1
|
||||
OS_STDERR_CAPTURE=1
|
||||
OS_TEST_TIMEOUT=60
|
||||
PYTHONDONTWRITEBYTECODE=True
|
||||
commands = find {toxinidir} -type f -not -path '{toxinidir}/.tox/*' -not -path '*/__pycache__/*' -name '*.py[c|o]' -delete
|
||||
whitelist_externals = find
|
||||
|
||||
[testenv:venv]
|
||||
commands = {posargs}
|
||||
|
||||
[flake8]
|
||||
# Temporarily ignoring these warnings
|
||||
# E123 closing bracket does not match indentation of opening bracket
|
||||
# E127 continuation line over-indented for visual indent
|
||||
# E129 visually indented line with same indent as next logical line
|
||||
# - hacking codes -
|
||||
# H104: File contains nothing but comments
|
||||
# H301: one import per line
|
||||
# H306: imports not in alphabetical order
|
||||
# H404: multi line docstring should start without a leading new line
|
||||
# H405: multi line docstring summary not separated with an empty line
|
||||
# H501: Do not use self.__dict__ for string formatting
|
||||
# - flake8 codes -
|
||||
# F821 undefined name 'unicode' (python3 specific)
|
||||
ignore=E123,E127,E129
|
||||
H104,H301,H306,H404,H405,H501,
|
||||
F821
|
||||
# H106 Don’t put vim configuration in source files (off by default).
|
||||
# H203 Use assertIs(Not)None to check for None (off by default).
|
||||
# TODO: enable: H904 Delay string interpolations at logging calls (off by default).
|
||||
enable-extensions = H106,H203
|
||||
max-line-length=84
|
||||
|
||||
[testenv:pep8]
|
||||
usedevelop = False
|
||||
skip_install = True
|
||||
deps =
|
||||
hacking
|
||||
flake8-bugbear
|
||||
flake8
|
||||
commands =
|
||||
flake8
|
||||
|
||||
[testenv:pylint]
|
||||
basepython = python2.7
|
||||
deps =
|
||||
eventlet
|
||||
oslo.config
|
||||
oslo.log
|
||||
paste
|
||||
PasteDeploy
|
||||
routes
|
||||
webob
|
||||
pylint
|
||||
commands = pylint nova-api-proxy/nova_api_proxy --rcfile=pylint.rc
|
||||
|
105
tox.ini
105
tox.ini
@ -1,19 +1,30 @@
|
||||
[tox]
|
||||
envlist = linters,pep8,py27,pylint
|
||||
envlist = linters
|
||||
minversion = 2.3
|
||||
skipsdist = True
|
||||
|
||||
[testenv]
|
||||
basepython = python3
|
||||
install_command = pip install -U {opts} {packages}
|
||||
setenv = VIRTUAL_ENV={envdir}
|
||||
OS_STDOUT_CAPTURE=1
|
||||
OS_STDERR_CAPTURE=1
|
||||
OS_TEST_TIMEOUT=60
|
||||
PYTHONDONTWRITEBYTECODE=True
|
||||
install_command = pip install -U {opts} {packages}
|
||||
commands = find {toxinidir} -type f -not -path '{toxinidir}/.tox/*' -not -path '*/__pycache__/*' -name '*.py[c|o]' -delete
|
||||
deps = -r{toxinidir}/requirements.txt
|
||||
-r{toxinidir}/test-requirements.txt
|
||||
deps = -r{toxinidir}/test-requirements.txt
|
||||
|
||||
[testenv:venv]
|
||||
commands = {posargs}
|
||||
|
||||
[testenv:flake8]
|
||||
description = Dummy environment to allow flake8 to be run in subdir tox
|
||||
|
||||
[testenv:pep8]
|
||||
description = Dummy environment to allow pep8 to be run in subdir tox
|
||||
|
||||
[testenv:pylint]
|
||||
description = Dummy environment to allow pylint to be run in subdir tox
|
||||
|
||||
[testenv:linters]
|
||||
whitelist_externals = bash
|
||||
@ -24,89 +35,3 @@ commands =
|
||||
-o -type f -name '*.yaml' \
|
||||
-print0 | xargs -0 yamllint"
|
||||
|
||||
[flake8]
|
||||
# Temporarily ignoring these warnings
|
||||
# E121 continuation line under-indented for hanging indent
|
||||
# E122 continuation line missing indentation or outdented
|
||||
# E123 closing bracket does not match indentation of opening bracket
|
||||
# E124 closing bracket does not match visual indentation
|
||||
# E126 continuation line over-indented for hanging indent
|
||||
# E127 continuation line over-indented for visual indent
|
||||
# E128 continuation line under-indented for visual indent
|
||||
# E129 visually indented line with same indent as next logical line
|
||||
# E501 line too long
|
||||
# E712 comparison to bool should be reworded
|
||||
# - hacking codes -
|
||||
# H102: license header not found
|
||||
# H104: File contains nothing but comments
|
||||
# H301: one import per line
|
||||
# H306: imports not in alphabetical order
|
||||
# H401: docstring should not start with a space
|
||||
# H404: multi line docstring should start without a leading new line
|
||||
# H405: multi line docstring summary not separated with an empty line
|
||||
# H501: Do not use self.__dict__ for string formatting
|
||||
# - flake8 codes -
|
||||
# F401 '<module>' imported but unused
|
||||
# F821 undefined name 'unicode' (python3 specific)
|
||||
ignore = E121,E122,E123,E124,E126,E127,E128,E129,E501,E712,
|
||||
H102,H104,H301,H306,H401,H404,H405,H501,
|
||||
F401,F821,
|
||||
# H106 Don’t put vim configuration in source files (off by default).
|
||||
# H203 Use assertIs(Not)None to check for None (off by default).
|
||||
# TODO: enable: H904 Delay string interpolations at logging calls (off by default).
|
||||
enable-extensions = H106,H203
|
||||
|
||||
[testenv:pep8]
|
||||
usedevelop = False
|
||||
skip_install = True
|
||||
deps =
|
||||
hacking
|
||||
flake8
|
||||
commands =
|
||||
flake8
|
||||
|
||||
[testenv:venv]
|
||||
commands = {posargs}
|
||||
|
||||
[nosetests]
|
||||
verbosity=2
|
||||
|
||||
[testenv:py27]
|
||||
basepython = python2.7
|
||||
deps = {[testenv]deps}
|
||||
{toxinidir}/nfv/nfv-client
|
||||
{toxinidir}/nfv/nfv-common
|
||||
{toxinidir}/nfv/nfv-plugins
|
||||
{toxinidir}/nfv/nfv-vim
|
||||
whitelist_externals = cp
|
||||
find
|
||||
recreate = True
|
||||
commands = {[testenv]commands}
|
||||
cp -v nfv/nfv-tests/nfv_unit_tests/test_data/nfv_vim_db_18.03_GA {envdir}/
|
||||
nosetests --exe -w nfv/nfv-tests/nfv_unit_tests/tests/ '{posargs}'
|
||||
|
||||
[testenv:pylint]
|
||||
basepython = python2.7
|
||||
deps = {[testenv]deps}
|
||||
{toxinidir}/nfv/nfv-client
|
||||
{toxinidir}/nfv/nfv-common
|
||||
{toxinidir}/nfv/nfv-plugins
|
||||
{toxinidir}/nfv/nfv-vim
|
||||
{toxinidir}/../stx-fault/fm-api
|
||||
iso8601
|
||||
keyring
|
||||
kombu
|
||||
kubernetes
|
||||
passlib
|
||||
pecan
|
||||
pyparsing
|
||||
wsme
|
||||
pylint
|
||||
whitelist_externals = cp
|
||||
find
|
||||
commands = pylint nfv/nfv-client/nfv_client \
|
||||
nfv/nfv-common/nfv_common \
|
||||
nfv/nfv-plugins/nfv_plugins \
|
||||
nfv/nfv-vim/nfv_vim \
|
||||
--rcfile=nfv/nfv-tests/nfv_unit_tests/pylint.rc
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user