Merge "Detect MultiDict when generating json body"

This commit is contained in:
Jenkins 2014-03-20 09:41:57 +00:00 committed by Gerrit Code Review
commit 49d3220d94
3 changed files with 62 additions and 1 deletions

View File

@ -39,6 +39,7 @@ import routes
import routes.middleware
import webob.dec
import webob.exc
from webob import multidict
from glance.common import exception
from glance.common import utils
@ -566,6 +567,8 @@ class JSONResponseSerializer(object):
return obj.isoformat()
if hasattr(obj, "to_dict"):
return obj.to_dict()
if isinstance(obj, multidict.MultiDict):
return obj.mixed()
return obj
def to_json(self, data):

View File

@ -75,6 +75,8 @@ class Server(object):
self.property_protection_file = ''
self.enable_v1_api = True
self.enable_v2_api = True
self.enable_v1_registry = True
self.enable_v2_registry = True
self.needs_database = False
self.log_file = None
self.sock = sock
@ -485,6 +487,7 @@ sql_idle_timeout = 3600
api_limit_max = 1000
limit_param_default = 25
owner_is_tenant = %(owner_is_tenant)s
enable_v2_registry = %(enable_v2_registry)s
workers = %(workers)s
user_storage_quota = %(user_storage_quota)s
[paste_deploy]
@ -497,7 +500,7 @@ pipeline = unauthenticated-context registryapp
pipeline = fakeauth context registryapp
[app:registryapp]
paste.app_factory = glance.registry.api.v%(api_version)s:API.factory
paste.app_factory = glance.registry.api:API.factory
[filter:context]
paste.filter_factory = glance.api.middleware.context:ContextMiddleware.factory

View File

@ -0,0 +1,55 @@
# Copyright 2014 Hewlett-Packard Development Company, L.P.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import requests
from glance.openstack.common import jsonutils
from glance.tests import functional
class TestRegistryURLVisibility(functional.FunctionalTest):
def setUp(self):
super(TestRegistryURLVisibility, self).setUp()
self.cleanup()
self.registry_server.deployment_flavor = ''
self.req_body = jsonutils.dumps([{"command": "image_get_all"}])
def _url(self, path):
return 'http://127.0.0.1:%d%s' % (self.registry_port, path)
def _headers(self, custom_headers=None):
base_headers = {
}
base_headers.update(custom_headers or {})
return base_headers
def test_v2_not_enabled(self):
self.registry_server.enable_v2_registry = False
self.start_servers(**self.__dict__.copy())
path = self._url('/rpc')
response = requests.post(path, headers=self._headers(),
data=self.req_body)
self.assertEqual(404, response.status_code)
self.stop_servers()
def test_v2_enabled(self):
self.registry_server.enable_v2_registry = True
self.start_servers(**self.__dict__.copy())
path = self._url('/rpc')
response = requests.post(path, headers=self._headers(),
data=self.req_body)
self.assertEqual(200, response.status_code)
self.stop_servers()