Пример #1
0
 def test_limiter_offset_medium(self):
     # Test offset key works with a medium sized number.
     req = webob.Request.blank('/?offset=10')
     self.assertEqual(common.limited(self.tiny, req), [])
     self.assertEqual(common.limited(self.small, req), self.small[10:])
     self.assertEqual(common.limited(self.medium, req), self.medium[10:])
     self.assertEqual(common.limited(self.large, req), self.large[10:1010])
Пример #2
0
 def test_limiter_nothing(self):
     # Test request with no offset or limit.
     req = webob.Request.blank('/')
     self.assertEqual(common.limited(self.tiny, req), self.tiny)
     self.assertEqual(common.limited(self.small, req), self.small)
     self.assertEqual(common.limited(self.medium, req), self.medium)
     self.assertEqual(common.limited(self.large, req), self.large[:1000])
Пример #3
0
 def test_limiter_offset_zero(self):
     # Test offset key works with 0.
     req = webob.Request.blank('/?offset=0')
     self.assertEqual(common.limited(self.tiny, req), self.tiny)
     self.assertEqual(common.limited(self.small, req), self.small)
     self.assertEqual(common.limited(self.medium, req), self.medium)
     self.assertEqual(common.limited(self.large, req), self.large[:1000])
Пример #4
0
 def test_limiter_limit_zero(self):
     # Test limit of zero.
     req = webob.Request.blank('/?limit=0')
     self.assertEqual(common.limited(self.tiny, req), self.tiny)
     self.assertEqual(common.limited(self.small, req), self.small)
     self.assertEqual(common.limited(self.medium, req), self.medium)
     self.assertEqual(common.limited(self.large, req), self.large[:1000])
Пример #5
0
 def test_limiter_offset_over_max(self):
     # Test offset key works with a number over 1000 (max_limit).
     req = webob.Request.blank("/?offset=1001")
     self.assertEqual(0, len(common.limited(self.tiny, req)))
     self.assertEqual(0, len(common.limited(self.small, req)))
     self.assertEqual(0, len(common.limited(self.medium, req)))
     self.assertEqual(common.limited(self.large, req), self.large[1001:2001])
Пример #6
0
 def test_limiter_limit_zero(self):
     """ Test limit of zero. """
     req = Request.blank("/?limit=0")
     self.assertEqual(common.limited(self.tiny, req), self.tiny)
     self.assertEqual(common.limited(self.small, req), self.small)
     self.assertEqual(common.limited(self.medium, req), self.medium)
     self.assertEqual(common.limited(self.large, req), self.large[:1000])
Пример #7
0
 def test_limiter_offset_zero(self):
     """ Test offset key works with 0. """
     req = Request.blank("/?offset=0")
     self.assertEqual(common.limited(self.tiny, req), self.tiny)
     self.assertEqual(common.limited(self.small, req), self.small)
     self.assertEqual(common.limited(self.medium, req), self.medium)
     self.assertEqual(common.limited(self.large, req), self.large[:1000])
Пример #8
0
 def test_limiter_nothing(self):
     """ Test request with no offset or limit """
     req = Request.blank("/")
     self.assertEqual(common.limited(self.tiny, req), self.tiny)
     self.assertEqual(common.limited(self.small, req), self.small)
     self.assertEqual(common.limited(self.medium, req), self.medium)
     self.assertEqual(common.limited(self.large, req), self.large[:1000])
Пример #9
0
 def test_limiter_limit_over_max(self):
     # Test limit of 3000.
     req = webob.Request.blank("/?limit=3000")
     self.assertEqual(common.limited(self.tiny, req), self.tiny)
     self.assertEqual(common.limited(self.small, req), self.small)
     self.assertEqual(common.limited(self.medium, req), self.medium)
     self.assertEqual(common.limited(self.large, req), self.large[:1000])
Пример #10
0
 def test_limiter_limit_over_max(self):
     """ Test limit of 3000. """
     req = Request.blank('/?limit=3000')
     self.assertEqual(common.limited(self.tiny, req), self.tiny)
     self.assertEqual(common.limited(self.small, req), self.small)
     self.assertEqual(common.limited(self.medium, req), self.medium)
     self.assertEqual(common.limited(self.large, req), self.large[:1000])
Пример #11
0
 def test_limiter_limit_medium(self):
     # Test limit of 10.
     req = webob.Request.blank('/?limit=10')
     self.assertEqual(common.limited(self.tiny, req), self.tiny)
     self.assertEqual(common.limited(self.small, req), self.small)
     self.assertEqual(common.limited(self.medium, req), self.medium[:10])
     self.assertEqual(common.limited(self.large, req), self.large[:10])
Пример #12
0
 def test_limiter_limit_medium(self):
     """ Test limit of 10. """
     req = Request.blank("/?limit=10")
     self.assertEqual(common.limited(self.tiny, req), self.tiny)
     self.assertEqual(common.limited(self.small, req), self.small)
     self.assertEqual(common.limited(self.medium, req), self.medium[:10])
     self.assertEqual(common.limited(self.large, req), self.large[:10])
Пример #13
0
 def test_limiter_offset_over_max(self):
     """ Test offset key works with a number over 1000 (max_limit). """
     req = Request.blank('/?offset=1001')
     self.assertEqual(common.limited(self.tiny, req), [])
     self.assertEqual(common.limited(self.small, req), [])
     self.assertEqual(common.limited(self.medium, req), [])
     self.assertEqual(
         common.limited(self.large, req), self.large[1001:2001])
Пример #14
0
 def test_limiter_offset_bad(self):
     """
     Test offset key works with a BAD offset.
     """
     req = Request.blank(u'/?offset=\u0020aa')
     self.assertEqual(limited(self.tiny, req), self.tiny)
     self.assertEqual(limited(self.small, req), self.small)
     self.assertEqual(limited(self.medium, req), self.medium)
     self.assertEqual(limited(self.large, req), self.large[:1000])
Пример #15
0
 def test_limiter_custom_max_limit(self):
     """ Test a max_limit other than 1000. """
     items = range(2000)
     req = Request.blank("/?offset=1&limit=3")
     self.assertEqual(common.limited(items, req, max_limit=2000), items[1:4])
     req = Request.blank("/?offset=3&limit=0")
     self.assertEqual(common.limited(items, req, max_limit=2000), items[3:])
     req = Request.blank("/?offset=3&limit=2500")
     self.assertEqual(common.limited(items, req, max_limit=2000), items[3:])
     req = Request.blank("/?offset=3000&limit=10")
     self.assertEqual(common.limited(items, req, max_limit=2000), [])
Пример #16
0
 def test_limiter_limit_and_offset(self):
     """ Test request with both limit and offset. """
     items = range(2000)
     req = Request.blank("/?offset=1&limit=3")
     self.assertEqual(common.limited(items, req), items[1:4])
     req = Request.blank("/?offset=3&limit=0")
     self.assertEqual(common.limited(items, req), items[3:1003])
     req = Request.blank("/?offset=3&limit=1500")
     self.assertEqual(common.limited(items, req), items[3:1003])
     req = Request.blank("/?offset=3000&limit=10")
     self.assertEqual(common.limited(items, req), [])
Пример #17
0
 def test_limiter_limit_and_offset(self):
     # Test request with both limit and offset.
     items = range(2000)
     req = webob.Request.blank('/?offset=1&limit=3')
     self.assertEqual(common.limited(items, req), items[1:4])
     req = webob.Request.blank('/?offset=3&limit=0')
     self.assertEqual(common.limited(items, req), items[3:1003])
     req = webob.Request.blank('/?offset=3&limit=1500')
     self.assertEqual(common.limited(items, req), items[3:1003])
     req = webob.Request.blank('/?offset=3000&limit=10')
     self.assertEqual(common.limited(items, req), [])
Пример #18
0
 def test_limiter_custom_max_limit(self):
     # Test a max_limit other than 1000.
     max_limit = 2000
     self.flags(osapi_max_limit=max_limit)
     items = range(max_limit)
     req = webob.Request.blank("/?offset=1&limit=3")
     self.assertEqual(common.limited(items, req), items[1:4])
     req = webob.Request.blank("/?offset=3&limit=0")
     self.assertEqual(common.limited(items, req), items[3:])
     req = webob.Request.blank("/?offset=3&limit=2500")
     self.assertEqual(common.limited(items, req), items[3:])
     req = webob.Request.blank("/?offset=3000&limit=10")
     self.assertEqual(0, len(common.limited(items, req)))
Пример #19
0
 def test_limiter_custom_max_limit(self):
     # Test a max_limit other than 1000.
     items = range(2000)
     req = webob.Request.blank('/?offset=1&limit=3')
     self.assertEqual(
         common.limited(items, req, max_limit=2000), items[1:4])
     req = webob.Request.blank('/?offset=3&limit=0')
     self.assertEqual(
         common.limited(items, req, max_limit=2000), items[3:])
     req = webob.Request.blank('/?offset=3&limit=2500')
     self.assertEqual(
         common.limited(items, req, max_limit=2000), items[3:])
     req = webob.Request.blank('/?offset=3000&limit=10')
     self.assertEqual(common.limited(items, req, max_limit=2000), [])
Пример #20
0
 def _get_cells(self, ctxt, req, detail=False):
     """Return all cells."""
     # Ask the CellsManager for the most recent data
     items = self.cells_rpcapi.get_cell_info_for_neighbors(ctxt)
     items = common.limited(items, req)
     items = [_scrub_cell(item, detail=detail) for item in items]
     return dict(cells=items)
Пример #21
0
 def index(self, req):
     """Return all users in brief"""
     authorize(req.environ['nova.context'])
     users = self.manager.get_users()
     users = common.limited(users, req)
     users = [_translate_keys(user) for user in users]
     return dict(users=users)
Пример #22
0
    def _items(self, req, entity_maker):
        """Returns a list of snapshots, transformed through entity_maker."""
        context = req.environ["nova.context"]

        snapshots = self.volume_api.get_all_snapshots(context)
        limited_list = common.limited(snapshots, req)
        res = [entity_maker(context, snapshot) for snapshot in limited_list]
        return {"snapshots": res}
Пример #23
0
    def _items(self, req, server_id, entity_maker):
        """Returns a list of VIFs, transformed through entity_maker."""
        context = req.environ['nova.context']

        vifs = self.network_api.get_vifs_by_instance(context, server_id)
        limited_list = common.limited(vifs, req)
        res = [entity_maker(context, vif) for vif in limited_list]
        return {'virtual_interfaces': res}
Пример #24
0
 def index(self, req):
     """Return all zones in brief"""
     # Ask the ZoneManager in the Scheduler for most recent data,
     # or fall-back to the database ...
     items = api.get_zone_list(req.environ['nova.context'])
     items = common.limited(items, req)
     items = [_scrub_zone(item) for item in items]
     return dict(zones=items)
Пример #25
0
    def _items(self, req, entity_maker):
        """Returns a list of volumes, transformed through entity_maker."""
        context = req.environ['nova.context']

        volumes = self.volume_api.get_all(context)
        limited_list = common.limited(volumes, req)
        res = [entity_maker(context, vol) for vol in limited_list]
        return {'volumes': res}
Пример #26
0
    def _items(self, req, entity_maker):
        """Returns a list of volumes, transformed through entity_maker."""
        context = req.environ["nova.context"]
        context.can(vol_policies.BASE_POLICY_NAME)

        volumes = self.volume_api.get_all(context)
        limited_list = common.limited(volumes, req)
        res = [entity_maker(context, vol) for vol in limited_list]
        return {"volumes": res}
Пример #27
0
    def _items(self, req, server_id, entity_maker):
        """Returns a list of VIFs, transformed through entity_maker."""
        context = req.environ["nova.context"]
        instance = common.get_instance(self.compute_api, context, server_id, want_objects=True)

        vifs = self.network_api.get_vifs_by_instance(context, instance)
        limited_list = common.limited(vifs, req)
        res = [entity_maker(context, vif) for vif in limited_list]
        return {"virtual_interfaces": res}
Пример #28
0
    def _items(self, req, entity_maker):
        """Returns a list of servers for a given user.

        entity_maker - either _translate_detail_keys or _translate_keys
        """
        instance_list = self.compute_api.get_all(req.environ['nova.context'])
        limited_list = common.limited(instance_list, req)
        res = [entity_maker(inst)['server'] for inst in limited_list]
        return dict(servers=res)
Пример #29
0
    def _items(self, req, entity_maker):
        """Returns a list of snapshots, transformed through entity_maker."""
        context = req.environ['nova.context']
        context.can(vol_policies.BASE_POLICY_NAME)

        snapshots = self.volume_api.get_all_snapshots(context)
        limited_list = common.limited(snapshots, req)
        res = [entity_maker(context, snapshot) for snapshot in limited_list]
        return {'snapshots': res}
Пример #30
0
    def detail(self, req):
        """Return a detailed index listing of images available to the request.

        :param req: `wsgi.Request` object.
        """
        context = req.environ['nova.context']
        images = self._image_service.detail(context)
        images = common.limited(images, req)
        builder = self.get_builder(req).build
        return dict(images=[builder(image, detail=True) for image in images])
Пример #31
0
    def _items(self, req, server_id, entity_maker):
        """Returns a list of attachments, transformed through entity_maker."""
        context = req.environ['nova.context']
        authorize(context)

        instance = common.get_instance(self.compute_api,
                                       context,
                                       server_id,
                                       want_objects=True)

        bdms = objects.BlockDeviceMappingList.get_by_instance_uuid(
            context, instance.uuid)
        limited_list = common.limited(bdms, req)
        results = []

        for bdm in limited_list:
            if bdm.volume_id:
                results.append(
                    entity_maker(bdm.volume_id, bdm.instance_uuid,
                                 bdm.device_name))

        return {'volumeAttachments': results}
Пример #32
0
    def index(self, req):
        """Returns a list of security groups."""
        context = _authorize_context(req)

        search_opts = {}
        search_opts.update(req.GET)

        project_id = context.project_id
        raw_groups = self.security_group_api.list(context,
                                                  project=project_id,
                                                  search_opts=search_opts)

        limited_list = common.limited(raw_groups, req)
        result = [
            self._format_security_group(context, group)
            for group in limited_list
        ]

        return {
            'security_groups':
            list(sorted(result, key=lambda k: (k['tenant_id'], k['name'])))
        }
Пример #33
0
    def _items(self, req, server_id, entity_maker):
        """Returns a list of attachments, transformed through entity_maker."""
        context = req.environ['nova.context']
        authorize(context)

        try:
            instance = self.compute_api.get(context, server_id)
        except exception.NotFound as e:
            raise exc.HTTPNotFound(explanation=e.format_message())

        bdms = objects.BlockDeviceMappingList.get_by_instance_uuid(
            context, instance['uuid'])
        limited_list = common.limited(bdms, req)
        results = []

        for bdm in limited_list:
            if bdm.volume_id:
                results.append(
                    entity_maker(bdm.volume_id, bdm.instance_uuid,
                                 bdm.device_name))

        return {'volumeAttachments': results}
Пример #34
0
    def index(self, req, server_id):
        """Returns the list of volume attachments for a given instance."""
        context = req.environ['nova.context']
        instance = common.get_instance(self.compute_api, context, server_id)
        context.can(va_policies.POLICY_ROOT % 'index',
                    target={'project_id': instance.project_id})

        bdms = objects.BlockDeviceMappingList.get_by_instance_uuid(
                context, instance.uuid)
        limited_list = common.limited(bdms, req)

        results = []
        show_tag = api_version_request.is_supported(req, '2.70')
        show_delete_on_termination = api_version_request.is_supported(
            req, '2.79')
        for bdm in limited_list:
            if bdm.volume_id:
                va = _translate_attachment_detail_view(
                    bdm, show_tag=show_tag,
                    show_delete_on_termination=show_delete_on_termination)
                results.append(va)

        return {'volumeAttachments': results}
Пример #35
0
    def index(self, req):
        """Returns a list of security groups."""
        context = req.environ['nova.context']
        context.can(sg_policies.POLICY_NAME % 'get',
                    target={'project_id': context.project_id})

        search_opts = {}
        search_opts.update(req.GET)

        project_id = context.project_id
        raw_groups = security_group_api.list(context,
                                             project=project_id,
                                             search_opts=search_opts)

        limited_list = common.limited(raw_groups, req)
        result = [
            self._format_security_group(context, group)
            for group in limited_list
        ]

        return {
            'security_groups':
            list(sorted(result, key=lambda k: (k['tenant_id'], k['name'])))
        }
Пример #36
0
 def index(self, req):
     """Return all users in brief"""
     users = self.manager.get_users()
     users = common.limited(users, req)
     users = [_translate_keys(user) for user in users]
     return dict(users=users)
Пример #37
0
 def index(self, req):
     """Return all public images in brief"""
     items = self._service.index(req.environ['nova.context'])
     items = common.limited(items, req)
     items = [_filter_keys(item, ('id', 'name')) for item in items]
     return dict(images=items)
Пример #38
0
 def _limit_items(self, items, req):
     return common.limited(items, req)