Browse Source

Merge "Fix traceback in scheduler-stats API" into stable/train

stable/train
Zuul 2 weeks ago
committed by Gerrit Code Review
parent
commit
ebf217199b
3 changed files with 32 additions and 2 deletions
  1. +6
    -2
      manila/api/v1/scheduler_stats.py
  2. +19
    -0
      manila/tests/api/v1/test_scheduler_stats.py
  3. +7
    -0
      releasenotes/notes/bug-1917520-avoid-sending-traceback-to-user-if-action-forbidden-0da51825756fd5fc.yaml

+ 6
- 2
manila/api/v1/scheduler_stats.py View File

@ -71,8 +71,12 @@ class SchedulerStatsController(wsgi.Controller):
msg = _("Share type %s not found.") % req_share_type
raise exc.HTTPBadRequest(explanation=msg)
pools = self.scheduler_api.get_pools(context, filters=search_opts,
cached=True)
try:
pools = self.scheduler_api.get_pools(context,
filters=search_opts,
cached=True)
except exception.NotAuthorized:
raise exc.HTTPForbidden()
detail = (action == 'detail')
return self._view_builder.pools(pools, detail=detail)


+ 19
- 0
manila/tests/api/v1/test_scheduler_stats.py View File

@ -20,6 +20,7 @@ from webob import exc
from manila.api.openstack import api_version_request as api_version
from manila.api.v1 import scheduler_stats
from manila import context
from manila import exception
from manila import policy
from manila.scheduler import rpcapi
from manila.share import share_types
@ -332,6 +333,24 @@ class SchedulerStatsControllerTestCase(test.TestCase):
self.mock_policy_check.assert_called_once_with(
self.ctxt, self.resource_name, 'detail')
@ddt.data('index', 'detail')
def test_pools_forbidden(self, subresource):
mock_get_pools = self.mock_object(
rpcapi.SchedulerAPI, 'get_pools',
mock.Mock(side_effect=exception.AdminRequired(
"some traceback here")))
path = '/v1/fake_project/scheduler_stats/pools'
path = path + ('/%s' % subresource if subresource == 'detail' else '')
req = fakes.HTTPRequest.blank(path)
req.environ['manila.context'] = self.ctxt
self.assertRaises(exc.HTTPForbidden,
getattr(self.controller, 'pools_%s' % subresource),
req)
mock_get_pools.assert_called_once_with(self.ctxt,
filters={},
cached=True)
class SchedulerStatsTestCase(test.TestCase):


+ 7
- 0
releasenotes/notes/bug-1917520-avoid-sending-traceback-to-user-if-action-forbidden-0da51825756fd5fc.yaml View File

@ -0,0 +1,7 @@
---
fixes:
- |
The scheduler stats resource APIs (/scheduler-stats/pools and
/scheduler-stats/pools/detail) have been fixed to not return an
arbitrary traceback in the error message body to the caller when access to
the resource has been denied.

Loading…
Cancel
Save