Skip to content

Commit 3a5b975

Browse files
committed
Format code with ruff
1 parent 4588d43 commit 3a5b975

360 files changed

Lines changed: 30613 additions & 25400 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

coriolis/api-refs/source/conf.py

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,26 @@
1+
extensions = ["openstackdocstheme", "os_api_ref"]
12

2-
extensions = [
3-
'openstackdocstheme',
4-
'os_api_ref'
5-
]
6-
7-
source_suffix = '.rst'
3+
source_suffix = ".rst"
84

9-
master_doc = 'index'
5+
master_doc = "index"
106

11-
project = u'Coriolis API Reference'
12-
copyright = u'2018-present, Cloudbase Solutions S.R.L'
7+
project = "Coriolis API Reference"
8+
copyright = "2018-present, Cloudbase Solutions S.R.L"
139

14-
repository_name = 'cloudbase/coriolis'
15-
bug_project = 'coriolis'
16-
bug_tag = 'api-ref'
10+
repository_name = "cloudbase/coriolis"
11+
bug_project = "coriolis"
12+
bug_tag = "api-ref"
1713

18-
pygments_style = 'sphinx'
14+
pygments_style = "sphinx"
1915

20-
html_theme = 'openstackdocs'
16+
html_theme = "openstackdocs"
2117

2218
html_theme_options = {
2319
"sidebar_mode": "toc",
2420
}
2521

26-
html_last_updated_fmt = '%Y-%m-%d %H:%M'
22+
html_last_updated_fmt = "%Y-%m-%d %H:%M"
2723

2824
latex_documents = [
29-
('index'),
25+
("index"),
3026
]

coriolis/api/__init__.py

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,14 @@
1818
WSGI middleware for OpenStack API controllers.
1919
"""
2020

21-
from paste import urlmap
2221
import routes
23-
2422
from oslo_log import log as logging
2523
from oslo_service import wsgi as base_wsgi
24+
from paste import urlmap
2625

27-
from coriolis.api import wsgi
2826
from coriolis import exception
29-
from coriolis.i18n import _, _LW # noqa
30-
27+
from coriolis.api import wsgi
28+
from coriolis.i18n import _LW, _ # noqa
3129

3230
LOG = logging.getLogger(__name__)
3331

@@ -38,7 +36,7 @@ def root_app_factory(loader, global_conf, **local_conf):
3836

3937
class APIMapper(routes.Mapper):
4038
def routematch(self, url=None, environ=None):
41-
if url is "":
39+
if url == "":
4240
result = self._match("", environ)
4341
return result[0], result[1]
4442
return routes.Mapper.routematch(self, url, environ)
@@ -47,30 +45,30 @@ def connect(self, *args, **kwargs):
4745
# NOTE(inhye): Default the format part of a route to only accept json
4846
# and xml so it doesn't eat all characters after a '.'
4947
# in the url.
50-
kwargs.setdefault('requirements', {})
51-
if not kwargs['requirements'].get('format'):
52-
kwargs['requirements']['format'] = 'json|xml'
48+
kwargs.setdefault("requirements", {})
49+
if not kwargs["requirements"].get("format"):
50+
kwargs["requirements"]["format"] = "json|xml"
5351
return routes.Mapper.connect(self, *args, **kwargs)
5452

5553

5654
class ProjectMapper(APIMapper):
5755
def resource(self, member_name, collection_name, **kwargs):
58-
if 'parent_resource' not in kwargs:
59-
kwargs['path_prefix'] = '{project_id}/'
56+
if "parent_resource" not in kwargs:
57+
kwargs["path_prefix"] = "{project_id}/"
6058
else:
61-
parent_resource = kwargs['parent_resource']
62-
p_collection = parent_resource['collection_name']
63-
p_member = parent_resource['member_name']
64-
kwargs['path_prefix'] = '{project_id}/%s/:%s_id' % (p_collection,
65-
p_member)
66-
routes.Mapper.resource(self,
67-
member_name,
68-
collection_name,
69-
**kwargs)
59+
parent_resource = kwargs["parent_resource"]
60+
p_collection = parent_resource["collection_name"]
61+
p_member = parent_resource["member_name"]
62+
kwargs["path_prefix"] = "{project_id}/%s/:%s_id" % (
63+
p_collection,
64+
p_member,
65+
)
66+
routes.Mapper.resource(self, member_name, collection_name, **kwargs)
7067

7168

7269
class APIRouter(base_wsgi.Router):
7370
"""Routes requests on the API to the appropriate controller and method."""
71+
7472
ExtensionManager = None # override in subclasses
7573

7674
@classmethod
@@ -83,7 +81,8 @@ def __init__(self, ext_mgr=None):
8381
ext_mgr = self.ExtensionManager()
8482
else:
8583
raise exception.CoriolisException(
86-
_("Must specify an ExtensionManager class"))
84+
_("Must specify an ExtensionManager class")
85+
)
8786

8887
mapper = ProjectMapper()
8988
self.resources = {}
@@ -94,18 +93,18 @@ def __init__(self, ext_mgr=None):
9493

9594
def _setup_ext_routes(self, mapper, ext_mgr):
9695
for resource in ext_mgr.get_resources():
97-
LOG.debug('Extended resource: %s',
98-
resource.collection)
96+
LOG.debug("Extended resource: %s", resource.collection)
9997

10098
wsgi_resource = wsgi.Resource(resource.controller)
10199
self.resources[resource.collection] = wsgi_resource
102100
kargs = dict(
103101
controller=wsgi_resource,
104102
collection=resource.collection_actions,
105-
member=resource.member_actions)
103+
member=resource.member_actions,
104+
)
106105

107106
if resource.parent:
108-
kargs['parent_resource'] = resource.parent
107+
kargs["parent_resource"] = resource.parent
109108

110109
mapper.resource(resource.collection, resource.collection, **kargs)
111110

@@ -118,16 +117,25 @@ def _setup_extensions(self, ext_mgr):
118117
controller = extension.controller
119118

120119
if collection not in self.resources:
121-
LOG.warning(_LW('Extension %(ext_name)s: Cannot extend '
122-
'resource %(collection)s: No such resource'),
123-
{'ext_name': extension.extension.name,
124-
'collection': collection})
120+
LOG.warning(
121+
_LW(
122+
"Extension %(ext_name)s: Cannot extend "
123+
"resource %(collection)s: No such resource"
124+
),
125+
{
126+
"ext_name": extension.extension.name,
127+
"collection": collection,
128+
},
129+
)
125130
continue
126131

127-
LOG.debug('Extension %(ext_name)s extending resource: '
128-
'%(collection)s',
129-
{'ext_name': extension.extension.name,
130-
'collection': collection})
132+
LOG.debug(
133+
"Extension %(ext_name)s extending resource: %(collection)s",
134+
{
135+
"ext_name": extension.extension.name,
136+
"collection": collection,
137+
},
138+
)
131139

132140
resource = self.resources[collection]
133141
resource.register_actions(controller)

coriolis/api/common.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ def get_paging_params(req):
1212
return marker, limit
1313

1414

15-
def get_sort_params(req,
16-
default_keys=('created_at', 'id'),
17-
default_dirs=('desc', 'desc')):
15+
def get_sort_params(
16+
req, default_keys=("created_at", "id"), default_dirs=("desc", "desc")
17+
):
1818
"""Retrieves sort keys/directions parameters.
1919
2020
Processes the parameters to create a list of sort keys and sort directions
@@ -34,10 +34,10 @@ def get_sort_params(req,
3434
params = req.params.copy()
3535
sort_keys = []
3636
sort_dirs = []
37-
while 'sort_key' in params:
38-
sort_keys.append(params.pop('sort_key').strip())
39-
while 'sort_dir' in params:
40-
sort_dirs.append(params.pop('sort_dir').strip())
37+
while "sort_key" in params:
38+
sort_keys.append(params.pop("sort_key").strip())
39+
while "sort_dir" in params:
40+
sort_dirs.append(params.pop("sort_dir").strip())
4141
if len(sort_keys) == 0 and default_keys:
4242
sort_keys.extend(default_keys)
4343
if len(sort_dirs) == 0 and default_dirs:

coriolis/api/middleware/auth.py

Lines changed: 36 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,38 @@
11
# Copyright 2016 Cloudbase Solutions Srl
22
# All Rights Reserved.
33

4+
import webob
45
from oslo_log import log as logging
56
from oslo_middleware import request_id
67
from oslo_serialization import jsonutils
7-
import webob
88

9-
from coriolis.api import wsgi
109
from coriolis import context
10+
from coriolis.api import wsgi
1111
from coriolis.i18n import _
1212

1313
LOG = logging.getLogger(__name__)
1414

1515

1616
class CoriolisKeystoneContext(wsgi.Middleware):
1717
def _get_project_id(self, req):
18-
if 'X_TENANT_ID' in req.headers:
18+
if "X_TENANT_ID" in req.headers:
1919
# This is the new header since Keystone went to ID/Name
20-
return req.headers['X_TENANT_ID']
21-
elif 'X_TENANT' in req.headers:
20+
return req.headers["X_TENANT_ID"]
21+
elif "X_TENANT" in req.headers:
2222
# This is for legacy compatibility
23-
return req.headers['X_TENANT']
23+
return req.headers["X_TENANT"]
2424
else:
2525
raise webob.exc.HTTPBadRequest(
26-
explanation=_("No 'X_TENANT_ID' or 'X_TENANT' passed."))
26+
explanation=_("No 'X_TENANT_ID' or 'X_TENANT' passed.")
27+
)
2728

2829
def _get_user(self, req):
29-
user = req.headers.get('X_USER')
30-
user = req.headers.get('X_USER_ID', user)
30+
user = req.headers.get("X_USER")
31+
user = req.headers.get("X_USER_ID", user)
3132
if user is None:
3233
raise webob.exc.HTTPUnauthorized(
33-
explanation=_("Neither X_USER_ID nor X_USER found in request"))
34+
explanation=_("Neither X_USER_ID nor X_USER found in request")
35+
)
3436
return user
3537

3638
@webob.dec.wsgify(RequestClass=wsgi.Request)
@@ -40,42 +42,45 @@ def __call__(self, req):
4042
project_id = self._get_project_id(req)
4143

4244
# get the roles
43-
roles = [r.strip() for r in req.headers.get('X_ROLE', '').split(',')]
45+
roles = [r.strip() for r in req.headers.get("X_ROLE", "").split(",")]
4446

45-
project_name = req.headers.get('X_TENANT_NAME')
46-
project_domain_name = req.headers.get('X-Project-Domain-Name')
47-
user_domain_name = req.headers.get('X-User-Domain-Name')
47+
project_name = req.headers.get("X_TENANT_NAME")
48+
project_domain_name = req.headers.get("X-Project-Domain-Name")
49+
user_domain_name = req.headers.get("X-User-Domain-Name")
4850

4951
req_id = req.environ.get(request_id.ENV_REQUEST_ID)
5052
# TODO(alexpilotti): Check why it's not str
5153
if isinstance(req_id, bytes):
5254
req_id = req_id.decode()
5355

5456
# Get the auth token
55-
auth_token = req.headers.get('X_AUTH_TOKEN')
57+
auth_token = req.headers.get("X_AUTH_TOKEN")
5658

5759
# Build a context, including the auth_token...
5860
remote_address = req.remote_addr
5961

6062
service_catalog = None
61-
if req.headers.get('X_SERVICE_CATALOG') is not None:
63+
if req.headers.get("X_SERVICE_CATALOG") is not None:
6264
try:
63-
catalog_header = req.headers.get('X_SERVICE_CATALOG')
65+
catalog_header = req.headers.get("X_SERVICE_CATALOG")
6466
service_catalog = jsonutils.loads(catalog_header)
6567
except ValueError:
6668
raise webob.exc.HTTPInternalServerError(
67-
explanation=_('Invalid service catalog json.'))
68-
69-
ctx = context.RequestContext(user,
70-
project_id,
71-
project_name=project_name,
72-
project_domain_name=project_domain_name,
73-
user_domain_name=user_domain_name,
74-
roles=roles,
75-
auth_token=auth_token,
76-
remote_address=remote_address,
77-
service_catalog=service_catalog,
78-
request_id=req_id)
79-
80-
req.environ['coriolis.context'] = ctx
69+
explanation=_("Invalid service catalog json.")
70+
)
71+
72+
ctx = context.RequestContext(
73+
user,
74+
project_id,
75+
project_name=project_name,
76+
project_domain_name=project_domain_name,
77+
user_domain_name=user_domain_name,
78+
roles=roles,
79+
auth_token=auth_token,
80+
remote_address=remote_address,
81+
service_catalog=service_catalog,
82+
request_id=req_id,
83+
)
84+
85+
req.environ["coriolis.context"] = ctx
8186
return self.application

coriolis/api/middleware/fault.py

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,14 @@
1414
# License for the specific language governing permissions and limitations
1515
# under the License.
1616

17-
from oslo_log import log as logging
1817
import six
1918
import webob.dec
2019
import webob.exc
20+
from oslo_log import log as logging
2121

22+
from coriolis import exception, utils
2223
from coriolis.api import wsgi
23-
from coriolis import exception
24-
from coriolis.i18n import _, _LE, _LI # noqa
25-
from coriolis import utils
26-
24+
from coriolis.i18n import _LE, _LI, _ # noqa
2725

2826
LOG = logging.getLogger(__name__)
2927

@@ -39,15 +37,17 @@ def status_to_type(status):
3937
for clazz in utils.walk_class_hierarchy(webob.exc.HTTPError):
4038
FaultWrapper._status_to_type[clazz.code] = clazz
4139
return FaultWrapper._status_to_type.get(
42-
status, webob.exc.HTTPInternalServerError)()
40+
status, webob.exc.HTTPInternalServerError
41+
)()
4342

4443
def _error(self, inner, req):
45-
LOG.exception(_LE("Caught error: %(type)s %(error)s"),
46-
{'type': type(inner),
47-
'error': inner})
48-
safe = getattr(inner, 'safe', False)
49-
headers = getattr(inner, 'headers', None)
50-
status = getattr(inner, 'code', 500)
44+
LOG.exception(
45+
_LE("Caught error: %(type)s %(error)s"),
46+
{"type": type(inner), "error": inner},
47+
)
48+
safe = getattr(inner, "safe", False)
49+
headers = getattr(inner, "headers", None)
50+
status = getattr(inner, "code", 500)
5151
if status is None:
5252
status = 500
5353

@@ -57,11 +57,16 @@ def _error(self, inner, req):
5757
if headers:
5858
outer.headers = headers
5959
if safe:
60-
msg = (inner.msg if isinstance(inner, exception.CoriolisException)
61-
else six.text_type(inner))
62-
params = {'exception': inner.__class__.__name__,
63-
'explanation': msg}
64-
outer.explanation = _('%(exception)s: %(explanation)s') % params
60+
msg = (
61+
inner.msg
62+
if isinstance(inner, exception.CoriolisException)
63+
else six.text_type(inner)
64+
)
65+
params = {
66+
"exception": inner.__class__.__name__,
67+
"explanation": msg,
68+
}
69+
outer.explanation = _("%(exception)s: %(explanation)s") % params
6570
return wsgi.Fault(outer)
6671

6772
@webob.dec.wsgify(RequestClass=wsgi.Request)

0 commit comments

Comments
 (0)