]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: Add isort to rearrange imports
authorVolker Theile <vtheile@suse.com>
Wed, 30 Sep 2020 14:14:10 +0000 (16:14 +0200)
committerVolker Theile <vtheile@suse.com>
Thu, 1 Oct 2020 12:54:45 +0000 (14:54 +0200)
* Add 'isort' tox environment.
* Apply 'isort' fixes.

Signed-off-by: Volker Theile <vtheile@suse.com>
97 files changed:
src/pybind/mgr/dashboard/__init__.py
src/pybind/mgr/dashboard/awsauth.py
src/pybind/mgr/dashboard/cherrypy_backports.py
src/pybind/mgr/dashboard/ci/check_grafana_uids.py
src/pybind/mgr/dashboard/controllers/__init__.py
src/pybind/mgr/dashboard/controllers/auth.py
src/pybind/mgr/dashboard/controllers/cephfs.py
src/pybind/mgr/dashboard/controllers/cluster_configuration.py
src/pybind/mgr/dashboard/controllers/crush_rule.py
src/pybind/mgr/dashboard/controllers/docs.py
src/pybind/mgr/dashboard/controllers/erasure_code_profile.py
src/pybind/mgr/dashboard/controllers/frontend_logging.py
src/pybind/mgr/dashboard/controllers/grafana.py
src/pybind/mgr/dashboard/controllers/health.py
src/pybind/mgr/dashboard/controllers/home.py
src/pybind/mgr/dashboard/controllers/host.py
src/pybind/mgr/dashboard/controllers/iscsi.py
src/pybind/mgr/dashboard/controllers/logs.py
src/pybind/mgr/dashboard/controllers/mgr_modules.py
src/pybind/mgr/dashboard/controllers/monitor.py
src/pybind/mgr/dashboard/controllers/nfsganesha.py
src/pybind/mgr/dashboard/controllers/orchestrator.py
src/pybind/mgr/dashboard/controllers/osd.py
src/pybind/mgr/dashboard/controllers/perf_counters.py
src/pybind/mgr/dashboard/controllers/pool.py
src/pybind/mgr/dashboard/controllers/prometheus.py
src/pybind/mgr/dashboard/controllers/rbd.py
src/pybind/mgr/dashboard/controllers/rbd_mirroring.py
src/pybind/mgr/dashboard/controllers/rgw.py
src/pybind/mgr/dashboard/controllers/role.py
src/pybind/mgr/dashboard/controllers/saml2.py
src/pybind/mgr/dashboard/controllers/service.py
src/pybind/mgr/dashboard/controllers/settings.py
src/pybind/mgr/dashboard/controllers/summary.py
src/pybind/mgr/dashboard/controllers/task.py
src/pybind/mgr/dashboard/controllers/telemetry.py
src/pybind/mgr/dashboard/controllers/user.py
src/pybind/mgr/dashboard/grafana.py
src/pybind/mgr/dashboard/module.py
src/pybind/mgr/dashboard/plugins/__init__.py
src/pybind/mgr/dashboard/plugins/debug.py
src/pybind/mgr/dashboard/plugins/feature_toggles.py
src/pybind/mgr/dashboard/plugins/interfaces.py
src/pybind/mgr/dashboard/plugins/lru_cache.py
src/pybind/mgr/dashboard/plugins/pluggy.py
src/pybind/mgr/dashboard/plugins/plugin.py
src/pybind/mgr/dashboard/plugins/ttl_cache.py
src/pybind/mgr/dashboard/requirements-lint.txt
src/pybind/mgr/dashboard/rest_client.py
src/pybind/mgr/dashboard/services/access_control.py
src/pybind/mgr/dashboard/services/auth.py
src/pybind/mgr/dashboard/services/ceph_service.py
src/pybind/mgr/dashboard/services/cephfs.py
src/pybind/mgr/dashboard/services/exception.py
src/pybind/mgr/dashboard/services/ganesha.py
src/pybind/mgr/dashboard/services/iscsi_cli.py
src/pybind/mgr/dashboard/services/iscsi_client.py
src/pybind/mgr/dashboard/services/iscsi_config.py
src/pybind/mgr/dashboard/services/orchestrator.py
src/pybind/mgr/dashboard/services/progress.py
src/pybind/mgr/dashboard/services/rbd.py
src/pybind/mgr/dashboard/services/rgw_client.py
src/pybind/mgr/dashboard/services/sso.py
src/pybind/mgr/dashboard/services/tcmu_service.py
src/pybind/mgr/dashboard/settings.py
src/pybind/mgr/dashboard/tests/__init__.py
src/pybind/mgr/dashboard/tests/helper.py
src/pybind/mgr/dashboard/tests/test_access_control.py
src/pybind/mgr/dashboard/tests/test_api_auditing.py
src/pybind/mgr/dashboard/tests/test_ceph_service.py
src/pybind/mgr/dashboard/tests/test_cephfs.py
src/pybind/mgr/dashboard/tests/test_controllers.py
src/pybind/mgr/dashboard/tests/test_docs.py
src/pybind/mgr/dashboard/tests/test_erasure_code_profile.py
src/pybind/mgr/dashboard/tests/test_exceptions.py
src/pybind/mgr/dashboard/tests/test_feature_toggles.py
src/pybind/mgr/dashboard/tests/test_ganesha.py
src/pybind/mgr/dashboard/tests/test_grafana.py
src/pybind/mgr/dashboard/tests/test_home.py
src/pybind/mgr/dashboard/tests/test_host.py
src/pybind/mgr/dashboard/tests/test_iscsi.py
src/pybind/mgr/dashboard/tests/test_notification.py
src/pybind/mgr/dashboard/tests/test_orchestrator.py
src/pybind/mgr/dashboard/tests/test_osd.py
src/pybind/mgr/dashboard/tests/test_pool.py
src/pybind/mgr/dashboard/tests/test_prometheus.py
src/pybind/mgr/dashboard/tests/test_rbd_mirroring.py
src/pybind/mgr/dashboard/tests/test_rbd_service.py
src/pybind/mgr/dashboard/tests/test_rest_client.py
src/pybind/mgr/dashboard/tests/test_rest_tasks.py
src/pybind/mgr/dashboard/tests/test_rgw.py
src/pybind/mgr/dashboard/tests/test_settings.py
src/pybind/mgr/dashboard/tests/test_sso.py
src/pybind/mgr/dashboard/tests/test_task.py
src/pybind/mgr/dashboard/tests/test_tools.py
src/pybind/mgr/dashboard/tools.py
src/pybind/mgr/dashboard/tox.ini

index b05da375c8af5e0ce08903ec7e549c448ec9dfab..feefda948163cb1962046b81c50b5c27adb1e44a 100644 (file)
@@ -6,6 +6,7 @@ ceph dashboard module
 from __future__ import absolute_import
 
 import os
+
 import cherrypy
 
 if 'COVERAGE_ENABLED' in os.environ:
index 5cbb6f297d755b1a8151d6a16c89cc032f6574c1..911052e4c91bc51262c2e536938767231dd25889 100644 (file)
 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 import hmac
-
+from email.utils import formatdate
 from hashlib import sha1 as sha
 
+from requests.auth import AuthBase
+
 py3k = False
 try:
-    from urlparse import urlparse, unquote
     from base64 import encodestring
+
+    from urlparse import unquote, urlparse
 except ImportError:
     py3k = True
-    from urllib.parse import urlparse, unquote
     from base64 import encodebytes as encodestring
-
-from email.utils import formatdate
-
-from requests.auth import AuthBase
+    from urllib.parse import unquote, urlparse
 
 
 class S3Auth(AuthBase):
index 94c44fe13d4218205ed125339b6ed63b30c30704..4d2a2cb05c30cefa529b617dec712f7496d37bf9 100644 (file)
@@ -43,8 +43,7 @@ def patch_http_connection_init(v):
     # It was fixed in 3.7.0.  Exact lower bound version is probably earlier,
     # but 3.5.0 is what this monkey patch is tested on.
     if StrictVersion("3.5.0") <= v < StrictVersion("3.7.0"):
-        from cherrypy.wsgiserver.wsgiserver2 import \
-            HTTPConnection, CP_fileobject
+        from cherrypy.wsgiserver.wsgiserver2 import CP_fileobject, HTTPConnection
 
         def fixed_init(hc_self, server, sock, makefile=CP_fileobject):
             hc_self.server = server
@@ -156,6 +155,7 @@ def patch_request_unique_id(v):
     if v < StrictVersion('11.1.0'):
         import uuid
         from functools import update_wrapper
+
         from cherrypy._cprequest import Request
 
         class LazyUUID4(object):
index ab27ab663993d0f7c09e512f19030b237c1887e8..f82ddbbc8bab7355bce536bc02713969645066a8 100644 (file)
@@ -17,7 +17,6 @@ import codecs
 import copy
 import json
 import os
-
 from html.parser import HTMLParser
 
 
index 6a45c2f9c9ccf111da0a3f8557340926f144f16d..b77ea759eb403397d16bd4d9413de7c79b364b0c 100644 (file)
@@ -12,17 +12,16 @@ import pkgutil
 import re
 import sys
 import urllib
-
 from functools import wraps
 
 # pylint: disable=wrong-import-position
 import cherrypy
 
-from ..security import Scope, Permission
-from ..tools import getargspec, TaskManager, get_request_body_params
-from ..exceptions import ScopeNotValid, PermissionNotValid
-from ..services.auth import AuthManager, JwtManager
+from ..exceptions import PermissionNotValid, ScopeNotValid
 from ..plugins import PLUGIN_MANAGER
+from ..security import Permission, Scope
+from ..services.auth import AuthManager, JwtManager
+from ..tools import TaskManager, get_request_body_params, getargspec
 
 try:
     from typing import Any, List, Optional
index ee638a617189f6bdcb0e6bce4446fa34d1d99055..7ce5f3ff1071ff9249e5781b31cbc1c987d855b1 100644 (file)
@@ -2,14 +2,13 @@
 from __future__ import absolute_import
 
 import logging
+
 import cherrypy
 
-from . import ApiController, RESTController, \
-    allow_empty_body, ControllerDoc, EndpointDoc
 from .. import mgr
 from ..exceptions import DashboardException
 from ..services.auth import AuthManager, JwtManager
-
+from . import ApiController, ControllerDoc, EndpointDoc, RESTController, allow_empty_body
 
 logger = logging.getLogger('controllers.auth')
 
@@ -29,6 +28,7 @@ class Auth(RESTController):
     """
     Provide authenticates and returns JWT token.
     """
+
     def create(self, username, password):
         user_data = AuthManager.authenticate(username, password)
         user_perms, pwd_expiration_date, pwd_update_required = None, None, None
index 272feda0b8206954fb7488efd97d953909924dbc..842d911fa8bc9026fdbe76772bda6bd947c408bd 100644 (file)
@@ -1,19 +1,18 @@
 # -*- coding: utf-8 -*-
-from collections import defaultdict
-
 import os
+from collections import defaultdict
 
-import cherrypy
 import cephfs
+import cherrypy
 
-from . import ApiController, ControllerDoc, RESTController, UiApiController, \
-    allow_empty_body, EndpointDoc
 from .. import mgr
 from ..exceptions import DashboardException
 from ..security import Scope
-from ..services.cephfs import CephFS as CephFS_
 from ..services.ceph_service import CephService
+from ..services.cephfs import CephFS as CephFS_
 from ..tools import ViewCache
+from . import ApiController, ControllerDoc, EndpointDoc, RESTController, \
+    UiApiController, allow_empty_body
 
 GET_QUOTAS_SCHEMA = {
     'max_bytes': (int, ''),
index 382e18eb01ac2e2ad90e9f68a078139caac8c3a9..e57ce48c4f53fb5c300200477b82a53f8e5dcdea 100644 (file)
@@ -3,12 +3,11 @@ from __future__ import absolute_import
 
 import cherrypy
 
-from . import ApiController, RESTController, ControllerDoc, EndpointDoc
 from .. import mgr
+from ..exceptions import DashboardException
 from ..security import Scope
 from ..services.ceph_service import CephService
-from ..exceptions import DashboardException
-
+from . import ApiController, ControllerDoc, EndpointDoc, RESTController
 
 FILTER_SCHEMA = [{
     "name": (str, 'Name of the config option'),
index fe62f090f61d61687d9c2937791b6835c9c5ff87..ea5096cca0f178f38f901d9cd468f529d2e10433 100644 (file)
@@ -3,12 +3,11 @@ from __future__ import absolute_import
 
 from cherrypy import NotFound
 
-from . import ApiController, ControllerDoc, RESTController, Endpoint, ReadPermission, \
-    UiApiController, EndpointDoc
+from .. import mgr
 from ..security import Scope
 from ..services.ceph_service import CephService
-from .. import mgr
-
+from . import ApiController, ControllerDoc, Endpoint, EndpointDoc, \
+    ReadPermission, RESTController, UiApiController
 
 LIST_SCHEMA = {
     "rule_id": (int, 'Rule ID'),
index 9aaeaa0c1b68022af3243b76178b7762e4237c93..a537121993459c1c240d7a2c6df573cad0f32005 100644 (file)
@@ -1,13 +1,13 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
-from typing import Any, Dict, Union
 
 import logging
+from typing import Any, Dict, Union
+
 import cherrypy
 
-from . import Controller, BaseController, Endpoint, ENDPOINT_MAP, \
-    allow_empty_body
 from .. import mgr
+from . import ENDPOINT_MAP, BaseController, Controller, Endpoint, allow_empty_body
 
 NO_DESCRIPTION_AVAILABLE = "*No description available*"
 
@@ -456,7 +456,9 @@ class Docs(BaseController):
 
 if __name__ == "__main__":
     import sys
+
     import yaml
+
     from . import generate_routes
 
     def fix_null_descr(obj):
index e9dc01e7e8a3eb76847f8e9cd6e820e8e028465e..53b1f14ef5e46f22b4aed2c323e7ea742b950c79 100644 (file)
@@ -3,11 +3,11 @@ from __future__ import absolute_import
 
 from cherrypy import NotFound
 
-from . import ApiController, ControllerDoc, RESTController, Endpoint, ReadPermission, \
-    UiApiController, EndpointDoc
+from .. import mgr
 from ..security import Scope
 from ..services.ceph_service import CephService
-from .. import mgr
+from . import ApiController, ControllerDoc, Endpoint, EndpointDoc, \
+    ReadPermission, RESTController, UiApiController
 
 LIST_CODE__SCHEMA = {
     "crush-failure-domain": (str, ''),
index 910e39b6ae5390a9364f7d86e22cd469b7278da3..421e36c02e744cb5a1c74b85691f539e94bba7f4 100644 (file)
@@ -2,8 +2,7 @@ from __future__ import absolute_import
 
 import logging
 
-from . import UiApiController, BaseController, Endpoint
-
+from . import BaseController, Endpoint, UiApiController
 
 logger = logging.getLogger('frontend.error')
 
index 9639d0260f13a9cf3e963a5f47c8dae02dcb7ffc..68e6f83179817b143d6b555618614cc64f00743c 100644 (file)
@@ -1,14 +1,12 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-from . import (ApiController, BaseController, Endpoint, ReadPermission,
-               UpdatePermission)
-from . import ControllerDoc, EndpointDoc
 from ..exceptions import DashboardException
 from ..grafana import GrafanaRestClient, push_local_dashboards
 from ..security import Scope
 from ..settings import Settings
-
+from . import ApiController, BaseController, ControllerDoc, Endpoint, \
+    EndpointDoc, ReadPermission, UpdatePermission
 
 URL_SCHEMA = {
     "instance": (str, "grafana instance")
index b8f91ca8f514d6c13c9f9ab93415bcbde6bfde4d..0ae0a5bf08b17d875dc6bece78ed819fbf488a9b 100644 (file)
@@ -3,8 +3,6 @@ from __future__ import absolute_import
 
 import json
 
-from . import ApiController, Endpoint, BaseController, ControllerDoc, EndpointDoc
-
 from .. import mgr
 from ..rest_client import RequestException
 from ..security import Permission, Scope
@@ -12,6 +10,7 @@ from ..services.ceph_service import CephService
 from ..services.iscsi_cli import IscsiGatewaysConfig
 from ..services.iscsi_client import IscsiClient
 from ..tools import partial_dict
+from . import ApiController, BaseController, ControllerDoc, Endpoint, EndpointDoc
 from .host import get_hosts
 
 HEALTH_MINIMAL_SCHEMA = ({
index 6dcac57c8722b60d940914a54e8ae0ca32bcb3e3..705d7c456c8793cf12b962c636358f3a63d39b7a 100644 (file)
@@ -1,20 +1,21 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-import os
-import re
 import json
 import logging
+import os
+import re
+
 try:
     from functools import lru_cache
 except ImportError:
     from ..plugins.lru_cache import lru_cache
+
 import cherrypy
 from cherrypy.lib.static import serve_file
 
-from . import Controller, UiApiController, BaseController, Proxy, Endpoint
 from .. import mgr
-
+from . import BaseController, Controller, Endpoint, Proxy, UiApiController
 
 logger = logging.getLogger("controllers.home")
 
index 86889ae15f7bbcf04da98103715a8d9dd92c8c74..abae3284b35def8f05c17b664c5731d534042a66 100644 (file)
@@ -2,22 +2,22 @@
 from __future__ import absolute_import
 
 import copy
-
-from typing import List, Dict
+from typing import Dict, List
 
 import cherrypy
-
 from mgr_util import merge_dicts
 from orchestrator import HostSpec
-from . import ApiController, RESTController, Task, Endpoint, ReadPermission, \
-    UiApiController, BaseController, allow_empty_body, ControllerDoc, EndpointDoc
-from .orchestrator import raise_if_no_orchestrator
+
 from .. import mgr
 from ..exceptions import DashboardException
 from ..security import Scope
-from ..services.orchestrator import OrchClient, OrchFeature
 from ..services.ceph_service import CephService
 from ..services.exception import handle_orchestrator_error
+from ..services.orchestrator import OrchClient, OrchFeature
+from . import ApiController, BaseController, ControllerDoc, Endpoint, \
+    EndpointDoc, ReadPermission, RESTController, Task, UiApiController, \
+    allow_empty_body
+from .orchestrator import raise_if_no_orchestrator
 
 LIST_HOST_SCHEMA = {
     "hostname": (str, "Hostname"),
index ce81768072ae578423eb4c0aea7d3edf8da188fa..687daa91966f7e1db9894cc62c34d061a3f5adaf 100644 (file)
@@ -4,26 +4,27 @@
 # pylint: disable=too-many-lines
 from __future__ import absolute_import
 
-from copy import deepcopy
-import re
 import json
-import cherrypy
+import re
+from copy import deepcopy
 
+import cherrypy
 import rados
 import rbd
 
-from . import ApiController, UiApiController, RESTController, BaseController, Endpoint,\
-    ReadPermission, UpdatePermission, Task, ControllerDoc, EndpointDoc
 from .. import mgr
+from ..exceptions import DashboardException
 from ..rest_client import RequestException
 from ..security import Scope
-from ..services.iscsi_client import IscsiClient
 from ..services.iscsi_cli import IscsiGatewaysConfig
+from ..services.iscsi_client import IscsiClient
 from ..services.iscsi_config import IscsiGatewayDoesNotExist
 from ..services.rbd import format_bitmask
 from ..services.tcmu_service import TcmuService
-from ..exceptions import DashboardException
-from ..tools import str_to_bool, TaskManager
+from ..tools import TaskManager, str_to_bool
+from . import ApiController, BaseController, ControllerDoc, Endpoint, \
+    EndpointDoc, ReadPermission, RESTController, Task, UiApiController, \
+    UpdatePermission
 
 try:
     from typing import Any, Dict, List, no_type_check
index 63f7bfdb414efc6ec4b4980e7768b1f3aaf66cee..1676f29e020dd75e1b083e6fc7f9e1f7bc368ab5 100644 (file)
@@ -3,11 +3,10 @@ from __future__ import absolute_import
 
 import collections
 
-from . import ApiController, Endpoint, BaseController, ReadPermission, ControllerDoc, EndpointDoc
 from ..security import Scope
 from ..services.ceph_service import CephService
 from ..tools import NotificationQueue
-
+from . import ApiController, BaseController, ControllerDoc, Endpoint, EndpointDoc, ReadPermission
 
 LOG_BUFFER_SIZE = 30
 
index da31044f24b9b93fe068bee8fe2003e1de2e2d4e..574be4666469fb1a5580bf9b75b2bcea7d5cb717 100644 (file)
@@ -1,13 +1,12 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-from . import ApiController, RESTController, \
-    allow_empty_body, ControllerDoc, EndpointDoc
 from .. import mgr
 from ..security import Scope
 from ..services.ceph_service import CephService
 from ..services.exception import handle_send_command_error
 from ..tools import find_object_in_list, str_to_bool
+from . import ApiController, ControllerDoc, EndpointDoc, RESTController, allow_empty_body
 
 MGR_MODULE_SCHEMA = ([{
     "name": (str, "Module Name"),
index 5b5a44fec747e98756f59e5ac6351aec42737090..b61fcd4f393e26e45039e107f1395fc50caf01f1 100644 (file)
@@ -3,9 +3,9 @@ from __future__ import absolute_import
 
 import json
 
-from . import ApiController, Endpoint, BaseController, ReadPermission, ControllerDoc, EndpointDoc
 from .. import mgr
 from ..security import Scope
+from . import ApiController, BaseController, ControllerDoc, Endpoint, EndpointDoc, ReadPermission
 
 MONITOR_SCHEMA = {
     "mon_status": ({
index 16b35e7f2711b54faa1498074352a5f360bab211..fae04e5e1b81d73ef3612b4b0832587efadd3648 100644 (file)
@@ -1,21 +1,20 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-from functools import partial
 import logging
+from functools import partial
 
-import cherrypy
 import cephfs
+import cherrypy
 
-from . import ApiController, RESTController, UiApiController, BaseController, \
-              Endpoint, Task, ReadPermission, ControllerDoc, EndpointDoc
 from ..security import Scope
 from ..services.cephfs import CephFS
 from ..services.cephx import CephX
 from ..services.exception import serialize_dashboard_exception
 from ..services.ganesha import Ganesha, GaneshaConf, NFSException
 from ..services.rgw_client import RgwClient
-
+from . import ApiController, BaseController, ControllerDoc, Endpoint, \
+    EndpointDoc, ReadPermission, RESTController, Task, UiApiController
 
 logger = logging.getLogger('controllers.ganesha')
 
index 445fb7235a7ecf6d9249bf75b865b98fd2fe54d5..6b2d9bb4c133ab9130df15ade5d7b7d25d4e67c2 100644 (file)
@@ -1,18 +1,18 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
-import os.path
 
+import os.path
 import time
 from functools import wraps
 
-from . import ApiController, Endpoint, ReadPermission, UpdatePermission, ControllerDoc, EndpointDoc
-from . import RESTController, Task
 from .. import mgr
 from ..exceptions import DashboardException
 from ..security import Scope
 from ..services.exception import handle_orchestrator_error
 from ..services.orchestrator import OrchClient, OrchFeature
 from ..tools import TaskManager, str_to_bool
+from . import ApiController, ControllerDoc, Endpoint, EndpointDoc, \
+    ReadPermission, RESTController, Task, UpdatePermission
 
 STATUS_SCHEMA = {
     "available": (bool, "Orchestrator status"),
index a6127da9ebf9a1663c8dc4827d2e75fb1488f395..91d1126fa4064c18ac4d3e11feb656d811ba857a 100644 (file)
@@ -1,26 +1,25 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
+
 import json
 import logging
 import time
+from typing import Any, Dict, List, Union
 
 from ceph.deployment.drive_group import DriveGroupSpec, DriveGroupValidationError  # type: ignore
 from mgr_util import get_most_recent_rate
 
-from . import ApiController, RESTController, Endpoint, Task
-from . import CreatePermission, ReadPermission, UpdatePermission, DeletePermission, \
-    allow_empty_body, ControllerDoc, EndpointDoc
-from .orchestrator import raise_if_no_orchestrator
 from .. import mgr
 from ..exceptions import DashboardException
 from ..security import Scope
 from ..services.ceph_service import CephService, SendCommandError
-from ..services.exception import handle_send_command_error, handle_orchestrator_error
+from ..services.exception import handle_orchestrator_error, handle_send_command_error
 from ..services.orchestrator import OrchClient, OrchFeature
 from ..tools import str_to_bool
-
-from typing import Any, Dict, List, Union  # pylint: disable=C0411
-
+from . import ApiController, ControllerDoc, CreatePermission, \
+    DeletePermission, Endpoint, EndpointDoc, ReadPermission, RESTController, \
+    Task, UpdatePermission, allow_empty_body
+from .orchestrator import raise_if_no_orchestrator
 
 logger = logging.getLogger('controllers.osd')
 
index 30d62358e37a3c4410dacad29036f5769a03c166..96aa08590ac4354a68dd078a6d36ee8d8f88fb33 100644 (file)
@@ -3,10 +3,10 @@ from __future__ import absolute_import
 
 import cherrypy
 
-from . import ApiController, RESTController, EndpointDoc, ControllerDoc
 from .. import mgr
 from ..security import Scope
 from ..services.ceph_service import CephService
+from . import ApiController, ControllerDoc, EndpointDoc, RESTController
 
 PERF_SCHEMA = {
     "mon.a": ({
index 8e3294bfbbc7b926bb745ca6a1c09682d3359a03..32ec6c198f8799476cefca9ff9331f7dcb2e90cb 100644 (file)
@@ -1,18 +1,19 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
-from typing import Any, cast, Dict, Iterable, List, Optional, Union
 
 import time
+from typing import Any, Dict, Iterable, List, Optional, Union, cast
+
 import cherrypy
 
-from . import ApiController, ControllerDoc, RESTController, Endpoint, ReadPermission, Task, \
-    UiApiController, EndpointDoc
 from .. import mgr
 from ..security import Scope
 from ..services.ceph_service import CephService
-from ..services.rbd import RbdConfiguration
 from ..services.exception import handle_send_command_error
-from ..tools import str_to_bool, TaskManager
+from ..services.rbd import RbdConfiguration
+from ..tools import TaskManager, str_to_bool
+from . import ApiController, ControllerDoc, Endpoint, EndpointDoc, \
+    ReadPermission, RESTController, Task, UiApiController
 
 POOL_SCHEMA = ([{
     "pool": (int, "pool id"),
index c13e6bd64dc73c5b5dea04c49a1ecf8240ce14b9..a1e793913aeab051303773fd221bff451e60c79b 100644 (file)
@@ -1,14 +1,15 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-from datetime import datetime
 import json
+from datetime import datetime
+
 import requests
 
-from . import Controller, ApiController, BaseController, RESTController, Endpoint, ControllerDoc
+from ..exceptions import DashboardException
 from ..security import Scope
 from ..settings import Settings
-from ..exceptions import DashboardException
+from . import ApiController, BaseController, Controller, ControllerDoc, Endpoint, RESTController
 
 
 @Controller('/api/prometheus_receiver', secure=False)
index 97e1f81fab37ba471e546d90be75c17fdb0318a8..bd72e80bc9b36d4377542dfdd325a2ab197ee9a3 100644 (file)
@@ -5,22 +5,23 @@ from __future__ import absolute_import
 
 import logging
 import math
-from functools import partial
 from datetime import datetime
+from functools import partial
 
 import rbd
 
-from . import ApiController, RESTController, Task, UpdatePermission, \
-    DeletePermission, CreatePermission, allow_empty_body, ControllerDoc, EndpointDoc
 from .. import mgr
 from ..exceptions import DashboardException
 from ..security import Scope
 from ..services.ceph_service import CephService
+from ..services.exception import handle_rados_error, handle_rbd_error, serialize_dashboard_exception
 from ..services.rbd import RbdConfiguration, RbdService, RbdSnapshotService, \
-    format_bitmask, format_features, parse_image_spec, rbd_call, rbd_image_call
+    format_bitmask, format_features, parse_image_spec, rbd_call, \
+    rbd_image_call
 from ..tools import ViewCache, str_to_bool
-from ..services.exception import handle_rados_error, handle_rbd_error, \
-    serialize_dashboard_exception
+from . import ApiController, ControllerDoc, CreatePermission, \
+    DeletePermission, EndpointDoc, RESTController, Task, UpdatePermission, \
+    allow_empty_body
 
 logger = logging.getLogger(__name__)
 
index 8056de489f12908d6b9d558ddc9466b17ff0f171..0c41d71375cfbec591f6484c385ac9b555145fab 100644 (file)
@@ -2,25 +2,22 @@
 from __future__ import absolute_import
 
 import json
-import re
 import logging
-
+import re
 from functools import partial
 
 import cherrypy
-
 import rbd
 
-from . import ApiController, Endpoint, Task, BaseController, ReadPermission, \
-    UpdatePermission, RESTController, allow_empty_body, ControllerDoc, EndpointDoc
-
 from .. import mgr
 from ..security import Scope
 from ..services.ceph_service import CephService
+from ..services.exception import handle_rados_error, handle_rbd_error, serialize_dashboard_exception
 from ..services.rbd import rbd_call
 from ..tools import ViewCache
-from ..services.exception import handle_rados_error, handle_rbd_error, \
-    serialize_dashboard_exception
+from . import ApiController, BaseController, ControllerDoc, Endpoint, \
+    EndpointDoc, ReadPermission, RESTController, Task, UpdatePermission, \
+    allow_empty_body
 
 try:
     from typing import no_type_check
index d3fcb9163c1c31e756a221e33fb0cc724fa3cad0..e00a77b3cbf8d06c7f438ffd8892bdfa348932d4 100644 (file)
@@ -1,19 +1,20 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-import logging
 import json
+import logging
 
 import cherrypy
-from . import ApiController, BaseController, RESTController, Endpoint, \
-    ReadPermission, allow_empty_body, ControllerDoc, EndpointDoc
+
 from ..exceptions import DashboardException
 from ..rest_client import RequestException
-from ..security import Scope, Permission
+from ..security import Permission, Scope
 from ..services.auth import AuthManager, JwtManager
 from ..services.ceph_service import CephService
 from ..services.rgw_client import RgwClient
 from ..tools import json_str_to_object, str_to_bool
+from . import ApiController, BaseController, ControllerDoc, Endpoint, \
+    EndpointDoc, ReadPermission, RESTController, allow_empty_body
 
 try:
     from typing import Any, List
index cfa28fa5c410932d0eacefee0672688e4fc61614..32404237c4a7c17bf3dafdc5632df53f7de3f7b3 100644 (file)
@@ -3,13 +3,14 @@ from __future__ import absolute_import
 
 import cherrypy
 
-from . import ApiController, RESTController, UiApiController,\
-    CreatePermission, ControllerDoc, EndpointDoc
 from .. import mgr
-from ..exceptions import RoleDoesNotExist, DashboardException,\
-    RoleIsAssociatedWithUser, RoleAlreadyExists
-from ..security import Scope as SecurityScope, Permission
+from ..exceptions import DashboardException, RoleAlreadyExists, \
+    RoleDoesNotExist, RoleIsAssociatedWithUser
+from ..security import Permission
+from ..security import Scope as SecurityScope
 from ..services.access_control import SYSTEM_ROLES
+from . import ApiController, ControllerDoc, CreatePermission, EndpointDoc, \
+    RESTController, UiApiController
 
 ROLE_SCHEMA = [{
     "name": (str, "Role Name"),
index 4bafc6933ac99e919ed3a5c0c0ddeddcc6181273..f53c7f0e1f665d866b5e5018ba64881653e22b00 100644 (file)
@@ -16,7 +16,7 @@ from .. import mgr
 from ..exceptions import UserDoesNotExist
 from ..services.auth import JwtManager
 from ..tools import prepare_url_prefix
-from . import Controller, Endpoint, BaseController
+from . import BaseController, Controller, Endpoint
 
 
 @Controller('/auth/saml2', secure=False)
index 4ea435f1c8f9a36043ec7c1b2ab31c9d1170d6aa..b62e7d68a33150e0b51270e8329955fcc53e6f2d 100644 (file)
@@ -1,14 +1,15 @@
-from typing import List, Optional, Dict
-import cherrypy
+from typing import Dict, List, Optional
 
+import cherrypy
 from ceph.deployment.service_spec import ServiceSpec
-from . import ApiController, ControllerDoc, RESTController, Task, Endpoint, ReadPermission, \
-    CreatePermission, DeletePermission
-from .orchestrator import raise_if_no_orchestrator
+
 from ..exceptions import DashboardException
 from ..security import Scope
-from ..services.orchestrator import OrchClient, OrchFeature
 from ..services.exception import handle_orchestrator_error
+from ..services.orchestrator import OrchClient, OrchFeature
+from . import ApiController, ControllerDoc, CreatePermission, \
+    DeletePermission, Endpoint, ReadPermission, RESTController, Task
+from .orchestrator import raise_if_no_orchestrator
 
 
 def service_task(name, metadata, wait_for=2.0):
index 417a07c7bab579e0e4b471b4216bf77d5a34f772..cb16083ff11ea28e70f276c82e89e5abe25748e7 100644 (file)
@@ -1,12 +1,14 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
+
 from contextlib import contextmanager
 
 import cherrypy
 
-from . import ApiController, RESTController, UiApiController, ControllerDoc, EndpointDoc
-from ..settings import Settings as SettingsModule, Options
 from ..security import Scope
+from ..settings import Options
+from ..settings import Settings as SettingsModule
+from . import ApiController, ControllerDoc, EndpointDoc, RESTController, UiApiController
 
 SETTINGS_SCHEMA = [{
     "name": (str, 'Settings Name'),
index 5febf4a6d83da335ea07a9def48e586a634c645a..4e240b9770bd022be848b35919f89aaf1c7202e5 100644 (file)
@@ -3,13 +3,13 @@ from __future__ import absolute_import
 
 import json
 
-from . import ApiController, Endpoint, BaseController, ControllerDoc, EndpointDoc
 from .. import mgr
-from ..security import Permission, Scope
 from ..controllers.rbd_mirroring import get_daemons_and_pools
 from ..exceptions import ViewCacheNoDataException
-from ..tools import TaskManager
+from ..security import Permission, Scope
 from ..services import progress
+from ..tools import TaskManager
+from . import ApiController, BaseController, ControllerDoc, Endpoint, EndpointDoc
 
 SUMMARY_SCHEMA = {
     "health_status": (str, ""),
index 1668f26af37ebd955551fb771f3f3bb36a5ba404..16c5017822e308c4adb40de4c365b159c0036863 100644 (file)
@@ -1,9 +1,9 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-from . import ApiController, RESTController, ControllerDoc, EndpointDoc
-from ..tools import TaskManager
 from ..services import progress
+from ..tools import TaskManager
+from . import ApiController, ControllerDoc, EndpointDoc, RESTController
 
 TASK_SCHEMA = {
     "executing_tasks": (str, "ongoing executing tasks"),
index 34c0a30a142a989d9bcf8508d1c360c98f436364..9e3d3e1cbb06c283812c5002ebe8df0053b1a661 100644 (file)
@@ -1,10 +1,10 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-from . import ApiController, RESTController, ControllerDoc, EndpointDoc
 from .. import mgr
 from ..exceptions import DashboardException
 from ..security import Scope
+from . import ApiController, ControllerDoc, EndpointDoc, RESTController
 
 REPORT_SCHEMA = {
     "report": ({
index bba47a8c4d3c7b8ebc714fa5e3dd39e78ee311e6..4bdea87266ebe458e96c2740f78038c9ed08ba5b 100644 (file)
@@ -1,20 +1,19 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-from datetime import datetime
-
 import time
+from datetime import datetime
 
 import cherrypy
 
-from . import BaseController, ApiController, RESTController, Endpoint, \
-    allow_empty_body, ControllerDoc, EndpointDoc
 from .. import mgr
-from ..exceptions import DashboardException, UserAlreadyExists, \
-    UserDoesNotExist, PasswordPolicyException, PwdExpirationDateNotValid
+from ..exceptions import DashboardException, PasswordPolicyException, \
+    PwdExpirationDateNotValid, UserAlreadyExists, UserDoesNotExist
 from ..security import Scope
 from ..services.access_control import SYSTEM_ROLES, PasswordPolicy
 from ..services.auth import JwtManager
+from . import ApiController, BaseController, ControllerDoc, Endpoint, \
+    EndpointDoc, RESTController, allow_empty_body
 
 USER_SCHEMA = ([{
     "username": (str, 'Username of the user'),
index 163df1942e05f7c77d25c6ae40fe50afef75c805..2ba28fbeb6f4c3ad94d4fd14c134db5bf3884097 100644 (file)
@@ -5,12 +5,12 @@ import json
 import logging
 import os
 import time
+
 import requests
 
 from .exceptions import GrafanaError
 from .settings import Settings
 
-
 logger = logging.getLogger('grafana')
 
 
index eb1b30f7bf160f6b4fbdfc80bec4b2532f74b4ca..030ecb68b9417bccc398f455577f4fd3a887d20d 100644 (file)
@@ -13,9 +13,19 @@ import tempfile
 import threading
 import time
 
-from mgr_module import MgrModule, MgrStandbyModule, Option, CLIWriteCommand
-from mgr_util import get_default_addr, ServerConfigException, verify_tls_files, \
-    create_self_signed_cert
+from mgr_module import CLIWriteCommand, MgrModule, MgrStandbyModule, Option
+from mgr_util import ServerConfigException, create_self_signed_cert, \
+    get_default_addr, verify_tls_files
+
+from . import mgr
+from .controllers import generate_routes, json_error_page
+from .grafana import push_local_dashboards
+from .services.auth import AuthManager, AuthManagerTool, JwtManager
+from .services.exception import dashboard_exception_handler
+from .services.sso import SSO_COMMANDS, handle_sso_command
+from .settings import handle_option_command, options_command_list, options_schema_list
+from .tools import NotificationQueue, RequestLoggingTool, TaskManager, \
+    prepare_url_prefix, str_to_bool
 
 try:
     import cherrypy
@@ -31,21 +41,7 @@ if cherrypy is not None:
     patch_cherrypy(cherrypy.__version__)
 
 # pylint: disable=wrong-import-position
-from . import mgr
-from .controllers import generate_routes, json_error_page
-from .grafana import push_local_dashboards
-from .tools import NotificationQueue, RequestLoggingTool, TaskManager, \
-                   prepare_url_prefix, str_to_bool
-from .services.auth import AuthManager, AuthManagerTool, JwtManager
-from .services.sso import SSO_COMMANDS, \
-                          handle_sso_command
-from .services.exception import dashboard_exception_handler
-from .settings import options_command_list, options_schema_list, \
-                      handle_option_command
-
-from .plugins import PLUGIN_MANAGER
-from .plugins import feature_toggles, debug  # noqa # pylint: disable=unused-import
-
+from .plugins import PLUGIN_MANAGER, debug, feature_toggles  # noqa # pylint: disable=unused-import
 
 PLUGIN_MANAGER.hook.init()
 
@@ -355,7 +351,7 @@ class Module(MgrModule, CherryPyConfig):
     def set_ssl_certificate(self, mgr_id=None, inbuf=None):
         if inbuf is None:
             return -errno.EINVAL, '',\
-                   'Please specify the certificate file with "-i" option'
+                'Please specify the certificate file with "-i" option'
         if mgr_id is not None:
             self.set_store('{}/crt'.format(mgr_id), inbuf)
         else:
@@ -367,7 +363,7 @@ class Module(MgrModule, CherryPyConfig):
     def set_ssl_certificate_key(self, mgr_id=None, inbuf=None):
         if inbuf is None:
             return -errno.EINVAL, '',\
-                   'Please specify the certificate key file with "-i" option'
+                'Please specify the certificate key file with "-i" option'
         if mgr_id is not None:
             self.set_store('{}/key'.format(mgr_id), inbuf)
         else:
index b8ce811512da99de4c82ac0b85cdf3c3c55dcebf..6cd03fa95385832b7570535685f0605c2e4c2db8 100644 (file)
@@ -3,7 +3,7 @@ from __future__ import absolute_import
 
 import abc
 
-from .pluggy import HookspecMarker, HookimplMarker, PluginManager
+from .pluggy import HookimplMarker, HookspecMarker, PluginManager
 
 
 class Interface(object, metaclass=abc.ABCMeta):
index d5719157bc44f7e58f2aafd87a51066b7d34a950..bc386cc4451322bbe40712c44ba288d576489215 100644 (file)
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-from enum import Enum
 import json
+from enum import Enum
 
 from . import PLUGIN_MANAGER as PM
 from . import interfaces as I  # noqa: E741,N812
index f72afc58c13e722039cd913b55b0edf9f7fad7eb..97227ca65bd362affea9d3537b1c4544870e3cf5 100644 (file)
@@ -2,22 +2,23 @@
 from __future__ import absolute_import
 
 from enum import Enum
+
 import cherrypy
 from mgr_module import CLICommand, Option
+
+from ..controllers.cephfs import CephFS
+from ..controllers.iscsi import Iscsi, IscsiTarget
+from ..controllers.nfsganesha import NFSGanesha, NFSGaneshaExports, NFSGaneshaService
+from ..controllers.rbd import Rbd, RbdSnapshot, RbdTrash
+from ..controllers.rbd_mirroring import RbdMirroringPoolMode, \
+    RbdMirroringPoolPeer, RbdMirroringSummary
+from ..controllers.rgw import Rgw, RgwBucket, RgwDaemon, RgwUser
 from . import PLUGIN_MANAGER as PM
 from . import interfaces as I  # noqa: E741,N812
 from .ttl_cache import ttl_cache
 
-from ..controllers.rbd import Rbd, RbdSnapshot, RbdTrash
-from ..controllers.rbd_mirroring import (
-    RbdMirroringSummary, RbdMirroringPoolMode, RbdMirroringPoolPeer)
-from ..controllers.iscsi import Iscsi, IscsiTarget
-from ..controllers.cephfs import CephFS
-from ..controllers.rgw import Rgw, RgwDaemon, RgwBucket, RgwUser
-from ..controllers.nfsganesha import NFSGanesha, NFSGaneshaService, NFSGaneshaExports
-
 try:
-    from typing import no_type_check, Set
+    from typing import Set, no_type_check
 except ImportError:
     no_type_check = object()  # Just for type checking
 
@@ -132,12 +133,12 @@ class FeatureToggles(I.CanMgr, I.Setupable, I.HasOptions,
                 404, "Feature='{}' disabled by option '{}'".format(
                     feature.value,
                     self.OPTION_FMT.format(feature.value),
-                    )
                 )
+            )
 
     @PM.add_hook
     def get_controllers(self):
-        from ..controllers import ApiController, RESTController, ControllerDoc, EndpointDoc
+        from ..controllers import ApiController, ControllerDoc, EndpointDoc, RESTController
 
         FEATURES_SCHEMA = {
             "rbd": (bool, ''),
index f9169a0d89a6ea4f6fe17d17e0a1c58e58dc1582..f2693eb82e0b9208051fd57ab0a08d44fbc2e651 100644 (file)
@@ -1,7 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-from . import PLUGIN_MANAGER as PM, Interface, Mixin  # pylint: disable=cyclic-import
+from . import PLUGIN_MANAGER as PM  # pylint: disable=cyclic-import
+from . import Interface, Mixin
 
 
 class CanMgr(Mixin):
index f5f300171c23d849b2c2e60526326a3391f01954..9b29a60124475636525567af7cb9e9568c9eee5d 100644 (file)
@@ -6,8 +6,8 @@ Based on Python 3 functools and backports.functools_lru_cache.
 """
 from __future__ import absolute_import
 
-from functools import wraps
 from collections import OrderedDict
+from functools import wraps
 from threading import RLock
 
 
index 0a1765f1f7f541cbdcb75c4368471ced3357dc71..53a0cf65dcc924815490236b4da487f705b682cc 100644 (file)
@@ -48,6 +48,7 @@ except ImportError:
 
 class HookspecMarker(object):
     """ Dummy implementation. No spec validation. """
+
     def __init__(self, project_name):
         self.project_name = project_name
 
@@ -77,6 +78,7 @@ class _HookRelay(object):
     Provides the PluginManager.hook.<method_name>() syntax and
     functionality.
     """
+
     def __init__(self):
         from collections import defaultdict
         self._registry = defaultdict(list)  # type: DefaultDict[str, list]
index ad8342a20d7db0ecb1a3a55bb6ed127b17e2c17e..847a61872677f80e6603c5d3ac2358b39374b1f3 100644 (file)
@@ -1,4 +1,4 @@
-from mgr_module import Option, Command
+from mgr_module import Command, Option
 
 from . import PLUGIN_MANAGER as PM
 from . import interfaces as I  # noqa: E741,N812
index 4f4f244d2d77a54d93b1c90de321f5949b5e14b7..b316151e7e08ef33522d4f57602f61bece7ad12d 100644 (file)
@@ -5,8 +5,8 @@ Based on Python 3 functools and backports.functools_lru_cache.
 """
 from __future__ import absolute_import
 
-from functools import wraps
 from collections import OrderedDict
+from functools import wraps
 from threading import RLock
 from time import time
 
index f01fa54e6ebba5712dd6ebc27f933a0157c35a8d..a23951620f815a957dfa792ac8e8a62b11bebce6 100644 (file)
@@ -3,9 +3,8 @@ flake8==3.7.8; python_version >= '3'
 flake8-colors==0.1.6; python_version >= '3'
 #TODO: Fix docstring issues: https://tracker.ceph.com/issues/41224
 #flake8-docstrings
-#flake8-import-order
-#flake8-typing-imports; python_version >= '3'
 #pep8-naming
 rstcheck==3.3.1; python_version >= '3'
 autopep8; python_version >= '3'
 pyfakefs; python_version >= '3'
+isort==5.5.3
index 7c04f36a0d7fd9b3030370ce40da400e40670e32..4550c092e8af9c0aca6654d2f9be0c5215d88908 100644 (file)
@@ -16,8 +16,10 @@ from __future__ import absolute_import
 import inspect
 import logging
 import re
+
 import requests
 from requests.exceptions import ConnectionError, InvalidURL, Timeout
+
 from .settings import Settings
 from .tools import build_url
 
@@ -39,6 +41,7 @@ class TimeoutRequestsSession(requests.Session):
     """
     Set timeout argument for all requests if this is not already done.
     """
+
     def request(self, *args, **kwargs):
         if ((args[8] if len(args) > 8 else None) is None) \
                 and kwargs.get('timeout') is None:
index e55c1455ccd17ce08ca1b20fc2185db0866962d1..a4fcd377885456396f816b0d09b23741e1b30730 100644 (file)
@@ -3,29 +3,25 @@
 # pylint: disable=too-many-branches, too-many-locals, too-many-statements
 from __future__ import absolute_import
 
-from string import punctuation, ascii_lowercase, digits, ascii_uppercase
-
 import errno
 import json
 import logging
+import re
 import threading
 import time
-import re
-
 from datetime import datetime, timedelta
+from string import ascii_lowercase, ascii_uppercase, digits, punctuation
 
 import bcrypt
-
 from mgr_module import CLIReadCommand, CLIWriteCommand
 
 from .. import mgr
-from ..security import Scope, Permission
+from ..exceptions import PasswordPolicyException, PermissionNotValid, \
+    PwdExpirationDateNotValid, RoleAlreadyExists, RoleDoesNotExist, \
+    RoleIsAssociatedWithUser, RoleNotInUser, ScopeNotInRole, ScopeNotValid, \
+    UserAlreadyExists, UserDoesNotExist
+from ..security import Permission, Scope
 from ..settings import Settings
-from ..exceptions import RoleAlreadyExists, RoleDoesNotExist, ScopeNotValid, \
-                         PermissionNotValid, RoleIsAssociatedWithUser, \
-                         UserAlreadyExists, UserDoesNotExist, ScopeNotInRole, \
-                         RoleNotInUser, PasswordPolicyException, PwdExpirationDateNotValid
-
 
 logger = logging.getLogger('access_control')
 
@@ -628,7 +624,7 @@ def ac_role_delete_cmd(_, rolename):
     except RoleDoesNotExist as ex:
         if rolename in SYSTEM_ROLES:
             return -errno.EPERM, '', "Cannot delete system role '{}'" \
-                                        .format(rolename)
+                .format(rolename)
         return -errno.ENOENT, '', str(ex)
     except RoleIsAssociatedWithUser as ex:
         return -errno.EPERM, '', str(ex)
@@ -650,15 +646,15 @@ def ac_role_add_scope_perms_cmd(_, rolename, scopename, permissions):
     except RoleDoesNotExist as ex:
         if rolename in SYSTEM_ROLES:
             return -errno.EPERM, '', "Cannot update system role '{}'" \
-                                        .format(rolename)
+                .format(rolename)
         return -errno.ENOENT, '', str(ex)
     except ScopeNotValid as ex:
         return -errno.EINVAL, '', str(ex) + "\n Possible values: {}" \
                                             .format(Scope.all_scopes())
     except PermissionNotValid as ex:
         return -errno.EINVAL, '', str(ex) + \
-                                    "\n Possible values: {}" \
-                                    .format(Permission.all_permissions())
+            "\n Possible values: {}" \
+            .format(Permission.all_permissions())
 
 
 @CLIWriteCommand('dashboard ac-role-del-scope-perms',
@@ -675,7 +671,7 @@ def ac_role_del_scope_perms_cmd(_, rolename, scopename):
     except RoleDoesNotExist as ex:
         if rolename in SYSTEM_ROLES:
             return -errno.EPERM, '', "Cannot update system role '{}'" \
-                                        .format(rolename)
+                .format(rolename)
         return -errno.ENOENT, '', str(ex)
     except ScopeNotInRole as ex:
         return -errno.ENOENT, '', str(ex)
index d553a01abfa602244846dfbb59a66119f0990164..610484b0e076784907dd94cfe53962a0d2d546f7 100644 (file)
@@ -1,23 +1,23 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-from base64 import b64encode
 import json
 import logging
 import os
 import threading
 import time
 import uuid
+from base64 import b64encode
 
 import cherrypy
 import jwt
 
-from .access_control import LocalAuthenticator, UserDoesNotExist
 from .. import mgr
+from .access_control import LocalAuthenticator, UserDoesNotExist
 
 cherrypy.config.update({
     'response.headers.server': 'Ceph-Dashboard'
-    })
+})
 
 
 class JwtManager(object):
index 89582e3f73984212d024d07730c1555fe1d49ff4..2661f9a4b53f6f15045d71f2cde6ad6912e8bd67 100644 (file)
@@ -1,18 +1,18 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
+
 import json
 import logging
 
 import rados
-
 from mgr_module import CommandResult
-from mgr_util import get_time_series_rates, get_most_recent_rate
+from mgr_util import get_most_recent_rate, get_time_series_rates
 
 from .. import mgr
 from ..exceptions import DashboardException
 
 try:
-    from typing import Dict, Any, Union
+    from typing import Any, Dict, Union
 except ImportError:
     pass  # For typing only
 
index a9d9cb5093619edc0876e67efb6ee7f434bbf651..604cf4a77fc823d2f90a0fb8373fed7f56f5b518 100644 (file)
@@ -1,16 +1,15 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-from contextlib import contextmanager
-import logging
-
 import datetime
+import logging
 import os
+from contextlib import contextmanager
+
 import cephfs
 
 from .. import mgr
 
-
 logger = logging.getLogger('cephfs')
 
 
index 089491aec31399ebe9d447b66bcb69cf4a2b28f5..feb084622bc0a5131a1d52f9e9ff0dead5a1f43c 100644 (file)
@@ -2,18 +2,16 @@
 from __future__ import absolute_import
 
 import json
-from contextlib import contextmanager
 import logging
+from contextlib import contextmanager
 
 import cherrypy
-
-from orchestrator import OrchestratorError
-import rbd
 import rados
+import rbd
+from orchestrator import OrchestratorError
 
+from ..exceptions import DashboardException, ViewCacheNoDataException
 from ..services.ceph_service import SendCommandError
-from ..exceptions import ViewCacheNoDataException, DashboardException
-
 
 logger = logging.getLogger('exception')
 
index 051e36f40351ead3c71cb251dec9155e96df3ff8..633049ba89c4180ac0b005633edc8107d31da566 100644 (file)
@@ -6,14 +6,14 @@ import logging
 import re
 
 from orchestrator import OrchestratorError
+
+from .. import mgr
+from ..exceptions import DashboardException
+from ..settings import Settings
 from .cephfs import CephFS
 from .cephx import CephX
 from .orchestrator import OrchClient
-from .rgw_client import RgwClient, RequestException, NoCredentialsException
-from .. import mgr
-from ..settings import Settings
-from ..exceptions import DashboardException
-
+from .rgw_client import NoCredentialsException, RequestException, RgwClient
 
 logger = logging.getLogger('ganesha')
 
index e894a56caef73465f775dbbf6c69a40490440da2..2067d1e8d17aeae38797dfc720a1979cd3d4ebfa 100644 (file)
@@ -6,10 +6,11 @@ import json
 
 from mgr_module import CLIReadCommand, CLIWriteCommand
 
-from .iscsi_client import IscsiClient
-from .iscsi_config import IscsiGatewaysConfig, IscsiGatewayAlreadyExists, InvalidServiceUrl, \
-    ManagedByOrchestratorException, IscsiGatewayDoesNotExist
 from ..rest_client import RequestException
+from .iscsi_client import IscsiClient
+from .iscsi_config import InvalidServiceUrl, IscsiGatewayAlreadyExists, \
+    IscsiGatewayDoesNotExist, IscsiGatewaysConfig, \
+    ManagedByOrchestratorException
 
 
 @CLIReadCommand('dashboard iscsi-gateway-list', desc='List iSCSI gateways')
index b5ab88629aebfb5fdd86a746207b9d348d4667c7..9cc2600e1217b720cbae4de136e7d6e026c16f10 100644 (file)
@@ -12,10 +12,9 @@ try:
 except ImportError:
     from urllib.parse import urlparse
 
-from .iscsi_config import IscsiGatewaysConfig
-from ..settings import Settings
 from ..rest_client import RestClient
-
+from ..settings import Settings
+from .iscsi_config import IscsiGatewaysConfig
 
 logger = logging.getLogger('iscsi_client')
 
index 86bdfc770d27dc597087e09b092a6e675e9abf87..acc0c09362cee6dfeae858b658c494dc550ffb32 100644 (file)
@@ -57,8 +57,8 @@ class IscsiGatewaysConfig(object):
         """
         for gateway_name, gateway_config in config['gateways'].items():
             if '.' not in gateway_name:
-                from .iscsi_client import IscsiClient  # pylint: disable=cyclic-import
                 from ..rest_client import RequestException
+                from .iscsi_client import IscsiClient  # pylint: disable=cyclic-import
                 try:
                     service_url = gateway_config['service_url']
                     new_gateway_name = IscsiClient.instance(
index 7841bf519835d529ab6fa537c9806d120906decc..37b7b3b141e1df94263d8a6b6310568c4ff7239b 100644 (file)
@@ -1,15 +1,15 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
-import logging
 
+import logging
 from functools import wraps
-from typing import List, Optional, Dict, Any
+from typing import Any, Dict, List, Optional
 
 from ceph.deployment.service_spec import ServiceSpec
-from orchestrator import InventoryFilter, DeviceLightLoc, Completion
-from orchestrator import ServiceDescription, DaemonDescription
-from orchestrator import OrchestratorClientMixin, raise_if_exception, OrchestratorError
-from orchestrator import HostSpec
+from orchestrator import Completion, DaemonDescription, DeviceLightLoc, \
+    HostSpec, InventoryFilter, OrchestratorClientMixin, OrchestratorError, \
+    ServiceDescription, raise_if_exception
+
 from .. import mgr
 
 logger = logging.getLogger('orchestrator')
index d7b9ed973b560ba3640e5003b4240864a4b1168e..96272beff7c451ce7ee2002b49cc0b204e00220e 100644 (file)
@@ -9,12 +9,11 @@ using the same structure of dashboard tasks
 
 from __future__ import absolute_import
 
-from datetime import datetime
 import logging
+from datetime import datetime
 
-from . import rbd  # pylint: disable=no-name-in-module
 from .. import mgr
-
+from . import rbd  # pylint: disable=no-name-in-module
 
 logger = logging.getLogger('progress')
 
index fa46356f1c2ab375e9cba20a7980ce5ded68051c..08363191557550cc364ff3662e98b94479f04149 100644 (file)
@@ -3,7 +3,6 @@
 from __future__ import absolute_import
 
 import cherrypy
-
 import rbd
 
 from .. import mgr
index 8d6ca85c9ffff102769b91069499851a603b84b4..28256fc2cc63bb3da31a295216a542a59303b2cd 100644 (file)
@@ -1,18 +1,18 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-import re
-import logging
 import ipaddress
-from distutils.util import strtobool
+import logging
+import re
 import xml.etree.ElementTree as ET  # noqa: N814
+from distutils.util import strtobool
+
+from .. import mgr
 from ..awsauth import S3Auth
 from ..exceptions import DashboardException
-from ..settings import Settings, Options
-from ..rest_client import RestClient, RequestException
-from ..tools import build_url, dict_contains_path, json_str_to_object,\
-                    partial_dict, dict_get
-from .. import mgr
+from ..rest_client import RequestException, RestClient
+from ..settings import Options, Settings
+from ..tools import build_url, dict_contains_path, dict_get, json_str_to_object, partial_dict
 
 try:
     from typing import Dict, List, Optional
index 7f0bd683085b212ba61426aabd8c28160bd9f12f..ac19180bddc2cc6e16b537ebd15e20235a880ae6 100644 (file)
@@ -2,25 +2,23 @@
 # pylint: disable=too-many-return-statements,too-many-branches
 from __future__ import absolute_import
 
-import os
 import errno
 import json
 import logging
+import os
 import threading
 import warnings
-
 from urllib import parse
 
 from .. import mgr
 from ..tools import prepare_url_prefix
 
-
 logger = logging.getLogger('sso')
 
 try:
-    from onelogin.saml2.settings import OneLogin_Saml2_Settings as Saml2Settings
     from onelogin.saml2.errors import OneLogin_Saml2_Error as Saml2Error
     from onelogin.saml2.idp_metadata_parser import OneLogin_Saml2_IdPMetadataParser as Saml2Parser
+    from onelogin.saml2.settings import OneLogin_Saml2_Settings as Saml2Settings
 
     python_saml_imported = True
 except ImportError:
@@ -154,7 +152,7 @@ def handle_sso_command(cmd):
             Saml2Settings(mgr.SSO_DB.saml2.onelogin_settings)
         except Saml2Error:
             return -errno.EPERM, '', 'Single Sign-On is not configured: ' \
-                          'use `ceph dashboard sso setup saml2`'
+                'use `ceph dashboard sso setup saml2`'
         mgr.SSO_DB.protocol = 'saml2'
         mgr.SSO_DB.save()
         return 0, 'SSO is "enabled" with "SAML2" protocol.', ''
index 183cb29bb37a155093311b5c46a19de3367ec155..565e3dce09306f20726eacd26f7efef8bb83484e 100644 (file)
@@ -1,6 +1,7 @@
 from mgr_util import get_most_recent_rate
 
 from dashboard.services.ceph_service import CephService
+
 from .. import mgr
 
 try:
@@ -60,7 +61,7 @@ class TcmuService(object):
                 perf_key = "{}lock_acquired_time".format(perf_key_prefix)
                 lock_acquired_time = (mgr.get_counter(
                     'tcmu-runner', service_id, perf_key)[perf_key]
-                                      or [[0, 0]])[-1][1] / 1000000000
+                    or [[0, 0]])[-1][1] / 1000000000
                 if lock_acquired_time > image.get('optimized_since', 0):
                     image['optimized_daemon'] = hostname
                     image['optimized_since'] = lock_acquired_time
index 23e95b1f3d2c62bc02cd36b66b1bc4704bac1500..c9c3448597470da7f36d70d3ef70e64316118981 100644 (file)
@@ -85,7 +85,7 @@ class Options(object):
     @staticmethod
     def has_default_value(name):
         return getattr(Settings, name, None) is None or \
-               getattr(Settings, name) == getattr(Options, name)[0]
+            getattr(Settings, name) == getattr(Options, name)[0]
 
 
 class SettingsMeta(type):
index 08d6aef86ab5452454cf2c7faeb1d51efb16201c..722f7d86e773503a967318c67b451d1cda1d33c0 100644 (file)
@@ -10,19 +10,15 @@ import time
 import cherrypy
 from cherrypy._cptools import HandlerWrapperTool
 from cherrypy.test import helper
-from pyfakefs import fake_filesystem
-
 from mgr_module import CLICommand
+from pyfakefs import fake_filesystem
 
 from .. import mgr
-from ..controllers import json_error_page, generate_controller_routes
+from ..controllers import generate_controller_routes, json_error_page
+from ..plugins import PLUGIN_MANAGER, debug, feature_toggles  # noqa
 from ..services.auth import AuthManagerTool
 from ..services.exception import dashboard_exception_handler
 
-from ..plugins import PLUGIN_MANAGER
-from ..plugins import feature_toggles, debug  # noqa
-
-
 PLUGIN_MANAGER.hook.init()
 PLUGIN_MANAGER.hook.register_commands()
 
index 06b83d42a82cf4ef935f746701ebc4d82497c4f8..e71133a108b73069fc128680127ef453ad195bac 100644 (file)
@@ -2,7 +2,7 @@
 from __future__ import absolute_import
 
 try:
-    from typing import Dict, Any
+    from typing import Any, Dict
 except ImportError:
     pass
 
index bf831a4ac74231e4db495565f9c42c5df9fdf98e..7ace71d6ce66cb0e743f8457e86aed78d7226a86 100644 (file)
@@ -6,16 +6,14 @@ import errno
 import json
 import time
 import unittest
-
 from datetime import datetime, timedelta
 
-from . import CmdException, CLICommandTestMixin  # pylint: disable=no-name-in-module
 from .. import mgr
-from ..security import Scope, Permission
-from ..services.access_control import load_access_control_db, \
-                                      password_hash, AccessControlDB, \
-                                      SYSTEM_ROLES, PasswordPolicy
+from ..security import Permission, Scope
+from ..services.access_control import SYSTEM_ROLES, AccessControlDB, \
+    PasswordPolicy, load_access_control_db, password_hash
 from ..settings import Settings
+from . import CLICommandTestMixin, CmdException  # pylint: disable=no-name-in-module
 
 
 class AccessControlTest(unittest.TestCase, CLICommandTestMixin):
index 023ea7992a1f7a1b2f9b124f842ee63dea1faf2f..04314b27e0c1e15e6c43c33cea45e69332debaba 100644 (file)
@@ -1,18 +1,20 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-import re
 import json
+import re
+
 import cherrypy
+
 try:
     import mock
 except ImportError:
     import unittest.mock as mock
 
-from . import ControllerTestCase, KVStoreMockMixin  # pylint: disable=no-name-in-module
-from ..controllers import RESTController, Controller
-from ..tools import RequestLoggingTool
 from .. import mgr
+from ..controllers import Controller, RESTController
+from ..tools import RequestLoggingTool
+from . import ControllerTestCase, KVStoreMockMixin  # pylint: disable=no-name-in-module
 
 
 # pylint: disable=W0613
index 5111e68d492bd893e1710b21ae06323b698a7258..6c793631fd9e55d4d3b417affc2d943c0441359b 100644 (file)
@@ -3,6 +3,7 @@
 from __future__ import absolute_import
 
 import unittest
+
 try:
     import mock
 except ImportError:
index 778b0aa2750b9af6ec4d2a9806ae8916cc6f1fea..f37741e50fdc3138be7c578f1914cabb7dcf1e82 100644 (file)
@@ -1,13 +1,14 @@
 # -*- coding: utf-8 -*-
 from collections import defaultdict
+
 try:
     from mock import Mock
 except ImportError:
     from unittest.mock import Mock
 
 from .. import mgr
-from . import ControllerTestCase  # pylint: disable=no-name-in-module
 from ..controllers.cephfs import CephFS
+from . import ControllerTestCase  # pylint: disable=no-name-in-module
 
 
 class MetaDataMock(object):
index b14878ff2e44a54b5fcc79b6b24081b39fb57b2e..bacef3677d787af894f69dee7730262fe5f14e1f 100644 (file)
@@ -1,9 +1,8 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
+from ..controllers import ApiController, BaseController, Controller, Endpoint, RESTController
 from . import ControllerTestCase  # pylint: disable=no-name-in-module
-from ..controllers import BaseController, RESTController, Controller, \
-                          ApiController, Endpoint
 
 
 @Controller("/btest/{key}", base_url="/ui", secure=False)
index ccb777aca5f2a5df74d2d976e8e91f7974765668..db5eefdddec388c5ce641d0531f3bee236eac1ea 100644 (file)
@@ -1,9 +1,9 @@
 # # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
-from . import ControllerTestCase  # pylint: disable=no-name-in-module
-from ..controllers import RESTController, ApiController, Endpoint, EndpointDoc, ControllerDoc
+from ..controllers import ApiController, ControllerDoc, Endpoint, EndpointDoc, RESTController
 from ..controllers.docs import Docs
+from . import ControllerTestCase  # pylint: disable=no-name-in-module
 
 
 # Dummy controller and endpoint that can be assigned with @EndpointDoc and @GroupDoc
index d266735e8f5c2268771cac7dee2affba4d22c17d..8ff1490708ff0e0e4c01a41dd331670b1f369282 100644 (file)
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 
 from .. import mgr
-from . import ControllerTestCase  # pylint: disable=no-name-in-module
 from ..controllers.erasure_code_profile import ErasureCodeProfile
+from . import ControllerTestCase  # pylint: disable=no-name-in-module
 
 
 class ErasureCodeProfileTest(ControllerTestCase):
index d08c1b01d4c6364895a363608a7dc0327d45da22..bbf9090957204ea2e386b5c2513a9ad5fe50721f 100644 (file)
@@ -5,12 +5,12 @@ import time
 
 import rados
 
-from . import ControllerTestCase  # pylint: disable=no-name-in-module
+from ..controllers import Controller, Endpoint, RESTController, Task
 from ..services.ceph_service import SendCommandError
-from ..controllers import RESTController, Controller, Task, Endpoint
-from ..services.exception import handle_rados_error, handle_send_command_error, \
-    serialize_dashboard_exception
-from ..tools import ViewCache, TaskManager, NotificationQueue
+from ..services.exception import handle_rados_error, \
+    handle_send_command_error, serialize_dashboard_exception
+from ..tools import NotificationQueue, TaskManager, ViewCache
+from . import ControllerTestCase  # pylint: disable=no-name-in-module
 
 
 # pylint: disable=W0613
index 23068c5eda75c5c932d9b2bc1eea4e7067e6accb..a5088e1a0c5948fa93c896fd74bdb3a72aa699d0 100644 (file)
@@ -2,13 +2,14 @@
 from __future__ import absolute_import
 
 import unittest
+
 try:
     from mock import Mock, patch
 except ImportError:
     from unittest.mock import Mock, patch
 
+from ..plugins.feature_toggles import Features, FeatureToggles
 from . import KVStoreMockMixin  # pylint: disable=no-name-in-module
-from ..plugins.feature_toggles import FeatureToggles, Features
 
 
 class SettingsTest(unittest.TestCase, KVStoreMockMixin):
index 44498ac40cc1c5a956b26b8f43b4107f52481da2..8e2d5804395d8829deab9a422b77e4dbd602e9df 100644 (file)
@@ -9,11 +9,12 @@ except ImportError:
     from unittest.mock import MagicMock, Mock
 
 import orchestrator
-from . import KVStoreMockMixin  # pylint: disable=no-name-in-module
+
 from .. import mgr
-from ..settings import Settings
 from ..services import ganesha
-from ..services.ganesha import GaneshaConf, Export, GaneshaConfParser
+from ..services.ganesha import Export, GaneshaConf, GaneshaConfParser
+from ..settings import Settings
+from . import KVStoreMockMixin  # pylint: disable=no-name-in-module
 
 
 class GaneshaConfTest(unittest.TestCase, KVStoreMockMixin):
index a5456905f20279d0e149e2246082278c2e950a16..d9b15e8231e5b0006b9b91c0ce6b5b201ef22fda 100644 (file)
@@ -8,10 +8,10 @@ except ImportError:
 
 from requests import RequestException
 
-from . import ControllerTestCase, KVStoreMockMixin  # pylint: disable=no-name-in-module
 from ..controllers.grafana import Grafana
 from ..grafana import GrafanaRestClient
 from ..settings import Settings
+from . import ControllerTestCase, KVStoreMockMixin  # pylint: disable=no-name-in-module
 
 
 class GrafanaTest(ControllerTestCase, KVStoreMockMixin):
index b0646e41d9ee1e63938c400864e276fe8cada0f2..37e09b4b2af9e2fcbe2a203e695d688937ac3690 100644 (file)
@@ -8,10 +8,9 @@ try:
 except ImportError:
     import unittest.mock as mock
 
-from . import ControllerTestCase, FakeFsMixin  # pylint: disable=no-name-in-module
 from .. import mgr
-
 from ..controllers.home import HomeController, LanguageMixin
+from . import ControllerTestCase, FakeFsMixin  # pylint: disable=no-name-in-module
 
 logger = logging.getLogger()
 
index aaf4b1dd4d975da962f3801ee9217d8f15ba49a3..9c2500cd0787af36fadc5e2e05858ca56cdedbf2 100644 (file)
@@ -7,9 +7,9 @@ except ImportError:
 
 from orchestrator import HostSpec
 
-from . import ControllerTestCase  # pylint: disable=no-name-in-module
-from ..controllers.host import get_hosts, Host, HostUi
 from .. import mgr
+from ..controllers.host import Host, HostUi, get_hosts
+from . import ControllerTestCase  # pylint: disable=no-name-in-module
 
 
 class HostControllerTest(ControllerTestCase):
index 475c1a777987feb09e5b3e0277f273441693e3f6..fc51c61028ace85fdb625a41f50c1614c355ca50 100644 (file)
@@ -1,4 +1,4 @@
-# pylint: disable=too-many-public-methods
+# pylint: disable=too-many-public-methods,too-many-lines
 
 import copy
 import errno
@@ -10,14 +10,16 @@ try:
 except ImportError:
     import unittest.mock as mock
 
-from . import CmdException, ControllerTestCase, CLICommandTestMixin, \
-    KVStoreMockMixin  # pylint: disable=no-name-in-module
 from .. import mgr
 from ..controllers.iscsi import Iscsi, IscsiTarget
+from ..rest_client import RequestException
 from ..services.iscsi_client import IscsiClient
 from ..services.orchestrator import OrchClient
-from ..rest_client import RequestException
 from ..tools import NotificationQueue, TaskManager
+from . import CLICommandTestMixin  # pylint: disable=no-name-in-module
+from . import CmdException  # pylint: disable=no-name-in-module
+from . import ControllerTestCase  # pylint: disable=no-name-in-module
+from . import KVStoreMockMixin  # pylint: disable=no-name-in-module
 
 
 class IscsiTestCli(unittest.TestCase, CLICommandTestMixin):
index 185ddc127b50dee818db6dde06065d021f9cbc08..df303e455634f4a4afd63416f233ca1c05937259 100644 (file)
@@ -5,7 +5,6 @@ import random
 import time
 import unittest
 
-
 from ..tools import NotificationQueue
 
 
index c053f920d1651649ce0afdd0ab886ad90366b3c9..00102f36a58758a1fa3a90eb63c217911a654f19 100644 (file)
@@ -1,5 +1,6 @@
 import inspect
 import unittest
+
 try:
     import mock
 except ImportError:
@@ -8,12 +9,10 @@ except ImportError:
 from orchestrator import InventoryHost
 from orchestrator import Orchestrator as OrchestratorBase
 
-from . import ControllerTestCase  # pylint: disable=no-name-in-module
 from .. import mgr
-from ..controllers.orchestrator import get_device_osd_map
-from ..controllers.orchestrator import Orchestrator
-from ..controllers.orchestrator import OrchestratorInventory
+from ..controllers.orchestrator import Orchestrator, OrchestratorInventory, get_device_osd_map
 from ..services.orchestrator import OrchFeature
+from . import ControllerTestCase  # pylint: disable=no-name-in-module
 
 
 class OrchestratorControllerTest(ControllerTestCase):
index 925035a169e041bd0a546427ec3bbd5d0935d1bd..2c4080adbe94b0a1dfdf82fd6b0d3649e6f5097a 100644 (file)
@@ -1,19 +1,18 @@
 # -*- coding: utf-8 -*-
 import uuid
 from contextlib import contextmanager
-
+from typing import Any, Dict, List, Optional
 from unittest import mock
+
 from ceph.deployment.drive_group import DeviceSelection, DriveGroupSpec  # type: ignore
 from ceph.deployment.service_spec import PlacementSpec  # type: ignore
 
-from . import ControllerTestCase  # pylint: disable=no-name-in-module
+from .. import mgr
 from ..controllers.osd import Osd
 from ..tools import NotificationQueue, TaskManager
-from .. import mgr
+from . import ControllerTestCase  # pylint: disable=no-name-in-module
 from .helper import update_dict  # pylint: disable=import-error
 
-from typing import Any, Dict, List, Optional  # pylint: disable=C0411
-
 
 class OsdHelper(object):
     DEFAULT_OSD_IDS = [0, 1, 2]
index 179a8feeed80030c442b3afac97bec240a5d65d7..d5cdb63e0e5c03e1be3745590d090085d03759a1 100644 (file)
@@ -1,15 +1,16 @@
 # -*- coding: utf-8 -*-
 # pylint: disable=protected-access
 import time
+
 try:
     import mock
 except ImportError:
     import unittest.mock as mock
 
-from . import ControllerTestCase  # pylint: disable=no-name-in-module
 from ..controllers.pool import Pool
 from ..controllers.task import Task
 from ..tools import NotificationQueue, TaskManager
+from . import ControllerTestCase  # pylint: disable=no-name-in-module
 
 
 class MockTask(object):
index ef669a62033736fa614973f8c1dfe162b32d22da..3b84f0e0044eec86d0167efcba983e1eb9601017 100644 (file)
@@ -5,9 +5,9 @@ try:
 except ImportError:
     from unittest.mock import patch
 
-from . import ControllerTestCase  # pylint: disable=no-name-in-module
 from .. import mgr
-from ..controllers.prometheus import Prometheus, PrometheusReceiver, PrometheusNotifications
+from ..controllers.prometheus import Prometheus, PrometheusNotifications, PrometheusReceiver
+from . import ControllerTestCase  # pylint: disable=no-name-in-module
 
 
 class PrometheusControllerTest(ControllerTestCase):
index d7e0c7dd1e87966df7b5e86875e57484a5b811ab..9f83bad83e1236ed0601d85cb488bf000ed89100 100644 (file)
@@ -1,18 +1,17 @@
 from __future__ import absolute_import
 
 import json
+
 try:
     import mock
 except ImportError:
     import unittest.mock as mock
 
-from . import ControllerTestCase  # pylint: disable=no-name-in-module
 from .. import mgr
+from ..controllers.rbd_mirroring import RbdMirroring, RbdMirroringPoolBootstrap, RbdMirroringSummary
 from ..controllers.summary import Summary
-from ..controllers.rbd_mirroring import RbdMirroring, RbdMirroringSummary, \
-    RbdMirroringPoolBootstrap
 from ..services import progress
-
+from . import ControllerTestCase  # pylint: disable=no-name-in-module
 
 mock_list_servers = [{
     'hostname': 'ceph-host',
@@ -137,7 +136,7 @@ class RbdMirroringSummaryControllerTest(ControllerTestCase):
             'mgr_map': {
                 'services': {
                     'dashboard': 'https://ceph.dev:11000/'
-                    },
+                },
             }
         }[key]
         mgr.url_prefix = ''
index caee4029180f52f5e53fa8c9994cbee719d2a232..99cf27d8214574466316c096dbdabc6bc0cd9f82 100644 (file)
@@ -3,12 +3,13 @@
 from __future__ import absolute_import
 
 import unittest
+
 try:
     import mock
 except ImportError:
     import unittest.mock as mock
 
-from ..services.rbd import get_image_spec, parse_image_spec, RbdConfiguration
+from ..services.rbd import RbdConfiguration, get_image_spec, parse_image_spec
 
 
 class RbdServiceTest(unittest.TestCase):
index fc48f0eb0369bfd656f26065aa9705ab0522bcf2..ba71b4f153ea4bd3893270133f50472e89f6a7eb 100644 (file)
@@ -1,5 +1,6 @@
 # -*- coding: utf-8 -*-
 import unittest
+
 import requests.exceptions
 
 try:
@@ -8,6 +9,7 @@ except ImportError:
     from unittest.mock import patch
 
 from urllib3.exceptions import MaxRetryError, ProtocolError
+
 from .. import mgr
 from ..rest_client import RequestException, RestClient
 
index f9e7a428e6c25d20282ceae8151c6eb167f1a477..b4abbdea36b97cde32509d8c8532acc597bf4586 100644 (file)
@@ -7,11 +7,11 @@ try:
 except ImportError:
     import unittest.mock as mock
 
-from . import ControllerTestCase  # pylint: disable=no-name-in-module
 from ..controllers import Controller, RESTController, Task
 from ..controllers.task import Task as TaskController
 from ..services import progress
 from ..tools import NotificationQueue, TaskManager
+from . import ControllerTestCase  # pylint: disable=no-name-in-module
 
 
 @Controller('/test/task', secure=False)
index 11818ca2b78af14a0f5ed99daf03c45e2ec849cf..05a7bbbc5db8ac58d8c675048dfbe951b6783645 100644 (file)
@@ -3,8 +3,8 @@ try:
 except ImportError:
     import unittest.mock as mock
 
-from . import ControllerTestCase  # pylint: disable=no-name-in-module
 from ..controllers.rgw import RgwUser
+from . import ControllerTestCase  # pylint: disable=no-name-in-module
 
 
 class RgwUserControllerTestCase(ControllerTestCase):
index abdb059c1d5181a7fe092c0cc61f72bb779e77b9..1fdd8f96e5aabaa2fedb4d0e461381c6ea3f91f6 100644 (file)
@@ -3,10 +3,11 @@ from __future__ import absolute_import
 
 import errno
 import unittest
-from . import KVStoreMockMixin, ControllerTestCase  # pylint: disable=no-name-in-module
+
 from .. import settings
 from ..controllers.settings import Settings as SettingsController
 from ..settings import Settings, handle_option_command
+from . import ControllerTestCase, KVStoreMockMixin  # pylint: disable=no-name-in-module
 
 
 class SettingsTest(unittest.TestCase, KVStoreMockMixin):
index e8141a09cc360817ddf045121b1e6f2bc4bae373..ee97fb20fddf445200ae59b1d804f2e16aca1c20 100644 (file)
@@ -5,9 +5,10 @@ from __future__ import absolute_import
 import errno
 import unittest
 
-from . import CmdException, exec_dashboard_cmd, \
-    KVStoreMockMixin  # pylint: disable=no-name-in-module
 from ..services.sso import handle_sso_command, load_sso_db
+from . import CmdException  # pylint: disable=no-name-in-module
+from . import KVStoreMockMixin  # pylint: disable=no-name-in-module
+from . import exec_dashboard_cmd  # pylint: disable=no-name-in-module
 
 
 class AccessControlTest(unittest.TestCase, KVStoreMockMixin):
index f3e8ed77f464cf73365ab46d944c48949358b8ed..0d51e2d3f889d06cbef28e3925c75e6bc012986d 100644 (file)
@@ -2,14 +2,14 @@
 from __future__ import absolute_import
 
 import json
-import unittest
 import threading
 import time
+import unittest
 from collections import defaultdict
 from functools import partial
 
 from ..services.exception import serialize_dashboard_exception
-from ..tools import NotificationQueue, TaskManager, TaskExecutor
+from ..tools import NotificationQueue, TaskExecutor, TaskManager
 
 
 class MyTask(object):
index cb1c12cb020daff5ca1c78117327ee453cfce7b0..4f9b17c03278a909b5ff84f210b6d9dd18cb0e04 100644 (file)
@@ -5,17 +5,17 @@ import unittest
 
 import cherrypy
 from cherrypy.lib.sessions import RamSession
+
 try:
     from mock import patch
 except ImportError:
     from unittest.mock import patch
 
-from . import ControllerTestCase  # pylint: disable=no-name-in-module
+from ..controllers import ApiController, BaseController, Controller, Proxy, RESTController
 from ..services.exception import handle_rados_error
-from ..controllers import RESTController, ApiController, Controller, \
-                          BaseController, Proxy
-from ..tools import dict_contains_path, json_str_to_object, partial_dict,\
-                    dict_get, RequestLoggingTool
+from ..tools import RequestLoggingTool, dict_contains_path, dict_get, \
+    json_str_to_object, partial_dict
+from . import ControllerTestCase  # pylint: disable=no-name-in-module
 
 
 # pylint: disable=W0613
index bf15b745b5cc4e626c3d2ca39c665c85ee6cda54..c4819ef30263a7fb404fa3d401d147a3a17ded82 100644 (file)
@@ -1,30 +1,27 @@
 # -*- coding: utf-8 -*-
 from __future__ import absolute_import
 
+import collections
+import fnmatch
 import inspect
 import json
 import logging
-
-import collections
-from datetime import datetime, timedelta
-from distutils.util import strtobool
-import fnmatch
-import time
 import threading
+import time
 import urllib
+from datetime import datetime, timedelta
+from distutils.util import strtobool
 
 import cherrypy
-
 from ceph.deployment.utils import wrap_ipv6
 
 from . import mgr
 from .exceptions import ViewCacheNoDataException
-from .settings import Settings
 from .services.auth import JwtManager
+from .settings import Settings
 
 try:
-    from typing import Any, AnyStr, Callable, DefaultDict, Deque,\
-        Dict, List, Set, Tuple, Union  # noqa
+    from typing import Any, AnyStr, Callable, DefaultDict, Deque, Dict, List, Set, Tuple, Union
 except ImportError:
     pass  # For typing only
 
index e45907be7a21b26a254b2d6ef3f0c3719cc4d9cc..a4438cff326faf32eb7bfd1053ad42c814157e04 100644 (file)
@@ -73,6 +73,12 @@ statistics = True
 #max-complexity = 10
 format = ${cyan}%(path)s${reset}:${yellow_bold}%(row)d${reset}:${green_bold}%(col)d${reset}: ${red_bold}%(code)s${reset} %(text)s
 
+[isort]
+atomic = true
+multi_line_output = 2
+line_length = 100
+wrap_length = 80
+
 [pylint]
 # Allow similarity/code duplication detection
 jobs = 1
@@ -97,6 +103,7 @@ deps =
     {[base-lint]deps}
 commands =
     flake8
+    isort . --check
     {[base-pylint]commands}
     {[base-rst]commands}
 
@@ -137,7 +144,7 @@ deps =
 commands =
     python --version
     autopep8 {[autopep8]addopts} {posargs:.}
-
+    isort .
 
 [testenv:check]
 commands =