diff --git a/nova/api/metadata/vendordata_dynamic.py b/nova/api/metadata/vendordata_dynamic.py index 9e37189621..8ec653616d 100644 --- a/nova/api/metadata/vendordata_dynamic.py +++ b/nova/api/metadata/vendordata_dynamic.py @@ -15,13 +15,13 @@ """Render vendordata as stored fetched from REST microservices.""" -import six import sys from keystoneauth1 import exceptions as ks_exceptions from keystoneauth1 import loading as ks_loading from oslo_log import log as logging from oslo_serialization import jsonutils +import six from nova.api.metadata import vendordata import nova.conf diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py index 75c705e552..68699fa48f 100644 --- a/nova/api/openstack/compute/servers.py +++ b/nova/api/openstack/compute/servers.py @@ -15,6 +15,7 @@ # under the License. import copy + from oslo_log import log as logging import oslo_messaging as messaging from oslo_utils import strutils diff --git a/nova/api/openstack/placement/handlers/resource_provider.py b/nova/api/openstack/placement/handlers/resource_provider.py index ea04d5ca3f..daf307a57f 100644 --- a/nova/api/openstack/placement/handlers/resource_provider.py +++ b/nova/api/openstack/placement/handlers/resource_provider.py @@ -12,8 +12,8 @@ """Placement API handlers for resource providers.""" import copy -import jsonschema +import jsonschema from oslo_db import exception as db_exc from oslo_serialization import jsonutils from oslo_utils import encodeutils diff --git a/nova/api/openstack/placement/util.py b/nova/api/openstack/placement/util.py index eff0765c02..e6476e4040 100644 --- a/nova/api/openstack/placement/util.py +++ b/nova/api/openstack/placement/util.py @@ -12,6 +12,7 @@ """Utility methods for placement API.""" import functools + import jsonschema from oslo_middleware import request_id from oslo_serialization import jsonutils diff --git a/nova/cmd/status.py b/nova/cmd/status.py index bc7c80f409..d3bce8a1ae 100644 --- a/nova/cmd/status.py +++ b/nova/cmd/status.py @@ -17,13 +17,14 @@ CLI interface for nova status commands. """ from __future__ import print_function + +# enum comes from the enum34 package if python < 3.4, else it's stdlib +import enum import functools import sys import textwrap import traceback -# enum comes from the enum34 package if python < 3.4, else it's stdlib -import enum from keystoneauth1 import exceptions as ks_exc from keystoneauth1 import loading as keystone from oslo_config import cfg diff --git a/nova/conf/xenserver.py b/nova/conf/xenserver.py index 90b5171643..415ce46f14 100644 --- a/nova/conf/xenserver.py +++ b/nova/conf/xenserver.py @@ -13,10 +13,10 @@ # License for the specific language governing permissions and limitations # under the License. +import socket from oslo_config import cfg from oslo_utils import units -import socket xenserver_group = cfg.OptGroup('xenserver', title='Xenserver Options', diff --git a/nova/scheduler/client/report.py b/nova/scheduler/client/report.py index 94b621dcea..b92766413c 100644 --- a/nova/scheduler/client/report.py +++ b/nova/scheduler/client/report.py @@ -16,12 +16,12 @@ import functools import math import re -from six.moves.urllib import parse import time from keystoneauth1 import exceptions as ks_exc from keystoneauth1 import loading as keystone from oslo_log import log as logging +from six.moves.urllib import parse from nova.compute import utils as compute_utils import nova.conf diff --git a/nova/test.py b/nova/test.py index b4e4b250eb..c8050e30d9 100644 --- a/nova/test.py +++ b/nova/test.py @@ -20,19 +20,19 @@ Allows overriding of flags for use of fakes, and some black magic for inline callbacks. """ -import contextlib -import datetime -import eventlet +import eventlet # noqa eventlet.monkey_patch(os=False) +import contextlib import copy +import datetime import inspect -import mock import os import pprint import fixtures +import mock from oslo_cache import core as cache from oslo_concurrency import lockutils from oslo_config import cfg diff --git a/nova/tests/functional/notification_sample_tests/test_instance.py b/nova/tests/functional/notification_sample_tests/test_instance.py index e6aff7a7fe..c8bf32b1b7 100644 --- a/nova/tests/functional/notification_sample_tests/test_instance.py +++ b/nova/tests/functional/notification_sample_tests/test_instance.py @@ -9,9 +9,11 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. -import mock + import time +import mock + from nova import context from nova import exception from nova.tests import fixtures diff --git a/nova/tests/unit/api/openstack/placement/test_microversion.py b/nova/tests/unit/api/openstack/placement/test_microversion.py index da23114942..4c5d96c4a9 100644 --- a/nova/tests/unit/api/openstack/placement/test_microversion.py +++ b/nova/tests/unit/api/openstack/placement/test_microversion.py @@ -13,9 +13,10 @@ """Tests for placement microversion handling.""" import collections -import mock import operator +import mock + # import the handlers to load up handler decorators import nova.api.openstack.placement.handler # noqa from nova.api.openstack.placement import microversion diff --git a/nova/tests/unit/compute/test_compute.py b/nova/tests/unit/compute/test_compute.py index 6688f427da..79aa946fce 100644 --- a/nova/tests/unit/compute/test_compute.py +++ b/nova/tests/unit/compute/test_compute.py @@ -18,13 +18,13 @@ """Tests for compute service.""" import datetime +from itertools import chain import operator import sys import time import traceback import uuid -from itertools import chain import mock from neutronclient.common import exceptions as neutron_exceptions from oslo_log import log as logging diff --git a/nova/tests/unit/notifications/objects/test_flavor.py b/nova/tests/unit/notifications/objects/test_flavor.py index 10a044ff86..7fbaaa4106 100644 --- a/nova/tests/unit/notifications/objects/test_flavor.py +++ b/nova/tests/unit/notifications/objects/test_flavor.py @@ -11,6 +11,7 @@ # under the License. import copy + import mock from nova import context diff --git a/nova/tests/unit/scheduler/filters/test_metrics_filters.py b/nova/tests/unit/scheduler/filters/test_metrics_filters.py index 2f4da840f1..bea15c03fb 100644 --- a/nova/tests/unit/scheduler/filters/test_metrics_filters.py +++ b/nova/tests/unit/scheduler/filters/test_metrics_filters.py @@ -11,6 +11,7 @@ # under the License. import datetime + from nova import objects from nova.scheduler.filters import metrics_filter from nova import test diff --git a/nova/tests/unit/test_api_validation.py b/nova/tests/unit/test_api_validation.py index 30fe43afab..60fa287a04 100644 --- a/nova/tests/unit/test_api_validation.py +++ b/nova/tests/unit/test_api_validation.py @@ -14,11 +14,11 @@ import copy import re +import sys import fixtures from jsonschema import exceptions as jsonschema_exc import six -import sys from nova.api.openstack import api_version_request as api_version from nova.api import validation diff --git a/nova/tests/unit/test_fixtures.py b/nova/tests/unit/test_fixtures.py index 28d0ffd180..8a81fe4790 100644 --- a/nova/tests/unit/test_fixtures.py +++ b/nova/tests/unit/test_fixtures.py @@ -14,7 +14,6 @@ # License for the specific language governing permissions and limitations # under the License. -import sqlalchemy import sys import fixtures as fx @@ -22,6 +21,7 @@ import mock from oslo_config import cfg from oslo_log import log as logging from oslo_utils import uuidutils +import sqlalchemy import testtools from nova.compute import rpcapi as compute_rpcapi diff --git a/nova/tests/unit/test_metadata.py b/nova/tests/unit/test_metadata.py index 0983731dde..d043f58abb 100644 --- a/nova/tests/unit/test_metadata.py +++ b/nova/tests/unit/test_metadata.py @@ -21,7 +21,6 @@ import hashlib import hmac import os import re -import requests try: import cPickle as pickle @@ -35,6 +34,7 @@ from oslo_config import cfg from oslo_serialization import base64 from oslo_serialization import jsonutils from oslo_utils import encodeutils +import requests import six import webob diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py index ca1a7c00fb..adac61a830 100644 --- a/nova/tests/unit/virt/libvirt/test_driver.py +++ b/nova/tests/unit/virt/libvirt/test_driver.py @@ -18,7 +18,6 @@ from collections import OrderedDict import contextlib import copy import datetime -import ddt import errno import glob import os @@ -29,6 +28,7 @@ import signal import threading import time +import ddt import eventlet from eventlet import greenthread import fixtures diff --git a/nova/tests/unit/virt/libvirt/test_utils.py b/nova/tests/unit/virt/libvirt/test_utils.py index 72e77a794f..0d0509421d 100644 --- a/nova/tests/unit/virt/libvirt/test_utils.py +++ b/nova/tests/unit/virt/libvirt/test_utils.py @@ -13,11 +13,11 @@ # License for the specific language governing permissions and limitations # under the License. -import ddt import functools import os import tempfile +import ddt import mock from oslo_concurrency import processutils from oslo_config import cfg diff --git a/nova/tests/unit/volume/encryptors/test_cryptsetup.py b/nova/tests/unit/volume/encryptors/test_cryptsetup.py index 53eb1098c2..4ecd79d8ec 100644 --- a/nova/tests/unit/volume/encryptors/test_cryptsetup.py +++ b/nova/tests/unit/volume/encryptors/test_cryptsetup.py @@ -16,12 +16,12 @@ import binascii import copy +import uuid from castellan.common.objects import symmetric_key as key import mock from oslo_concurrency import processutils import six -import uuid from nova import exception from nova.tests.unit.volume.encryptors import test_base diff --git a/nova/tests/unit/volume/encryptors/test_luks.py b/nova/tests/unit/volume/encryptors/test_luks.py index 398e0050dc..dea67176dc 100644 --- a/nova/tests/unit/volume/encryptors/test_luks.py +++ b/nova/tests/unit/volume/encryptors/test_luks.py @@ -15,10 +15,11 @@ import binascii +import uuid + from castellan.common.objects import symmetric_key as key import mock from oslo_concurrency import processutils -import uuid from nova.tests.unit.volume.encryptors import test_cryptsetup from nova.volume.encryptors import luks diff --git a/nova/virt/libvirt/guest.py b/nova/virt/libvirt/guest.py index 87a7d3573f..14a26c9aba 100644 --- a/nova/virt/libvirt/guest.py +++ b/nova/virt/libvirt/guest.py @@ -27,6 +27,8 @@ higher level APIs around the raw libvirt API. These APIs are then used by all the other libvirt related classes """ +import time + from lxml import etree from oslo_log import log as logging from oslo_service import loopingcall @@ -34,7 +36,6 @@ from oslo_utils import encodeutils from oslo_utils import excutils from oslo_utils import importutils import six -import time from nova.compute import power_state from nova import exception diff --git a/nova/virt/libvirt/migration.py b/nova/virt/libvirt/migration.py index 64ec2c98c4..d295ac9987 100644 --- a/nova/virt/libvirt/migration.py +++ b/nova/virt/libvirt/migration.py @@ -18,6 +18,7 @@ """ from collections import deque + from lxml import etree from oslo_log import log as logging diff --git a/nova/virt/libvirt/vif.py b/nova/virt/libvirt/vif.py index e3952634d8..ee11b6588d 100644 --- a/nova/virt/libvirt/vif.py +++ b/nova/virt/libvirt/vif.py @@ -19,8 +19,8 @@ """VIF drivers for libvirt.""" import copy - import os + import os_vif from os_vif import exception as osv_exception from oslo_concurrency import processutils diff --git a/test-requirements.txt b/test-requirements.txt index 5271b7005b..98c6c0a0d5 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -6,6 +6,7 @@ hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 coverage>=4.0 # Apache-2.0 ddt>=1.0.1 # MIT fixtures>=3.0.0 # Apache-2.0/BSD +flake8-import-order==0.11 # LGPLv3 mock>=2.0 # BSD mox3!=0.19.0,>=0.7.0 # Apache-2.0 psycopg2>=2.5 # LGPL/ZPL diff --git a/tox.ini b/tox.ini index 0dc13d979f..4346773711 100644 --- a/tox.ini +++ b/tox.ini @@ -157,6 +157,7 @@ commands = bash -c tools/releasenotes_tox.sh enable-extensions = H106,H203,H904 ignore = E121,E122,E123,E124,E125,E126,E127,E128,E129,E131,E251,H405 exclude = .venv,.git,.tox,dist,doc,*lib/python*,*egg,build,tools/xenserver*,releasenotes +import-order-style = pep8 # To get a list of functions that are more complex than 25, set max-complexity # to 25 and run 'tox -epep8'. # 34 is currently the most complex thing we have