Merge "public_endpoint & admin_endpoint configuration"

This commit is contained in:
Jenkins 2013-01-28 16:02:29 +00:00 committed by Gerrit Code Review
commit e4f8145173
3 changed files with 21 additions and 18 deletions

View File

@ -11,6 +11,11 @@
# The port number which the public admin listens on
# admin_port = 35357
# The base endpoint URLs for keystone that are advertised to clients
# (NOTE: this does NOT affect how keystone listens for connections)
# public_endpoint = http://localhost:%(public_port)d/
# admin_endpoint = http://localhost:%(admin_port)d/
# The port number which the OpenStack Compute service listens on
# compute_port = 8774

View File

@ -133,6 +133,8 @@ register_str('bind_host', default='0.0.0.0')
register_str('compute_port', default=8774)
register_str('admin_port', default=35357)
register_str('public_port', default=5000)
register_str('public_endpoint', default='http://localhost:%(public_port)d/')
register_str('admin_endpoint', default='http://localhost:%(admin_port)d/')
register_str('onready')
register_str('auth_admin_prefix', default='')
register_str('policy_file', default='policy.json')

View File

@ -14,11 +14,16 @@
# License for the specific language governing permissions and limitations
# under the License.
from keystone import catalog
from keystone.common import wsgi
from keystone.common import logging
from keystone import config
from keystone import exception
LOG = logging.getLogger(__name__)
CONF = config.CONF
class Extensions(wsgi.Application):
"""Base extensions controller to be extended by public and admin API's."""
@ -70,28 +75,19 @@ class PublicExtensions(Extensions):
class Version(wsgi.Application):
def __init__(self, version_type):
self.catalog_api = catalog.Manager()
self.url_key = '%sURL' % version_type
self.endpoint_url_type = version_type
super(Version, self).__init__()
def _get_identity_url(self, context):
catalog_ref = self.catalog_api.get_catalog(context=context,
user_id=None,
tenant_id=None)
for region, region_ref in catalog_ref.iteritems():
for service, service_ref in region_ref.iteritems():
if service == 'identity':
return service_ref[self.url_key]
raise exception.NotImplemented()
def _get_identity_url(self, version='v2.0'):
"""Returns a URL to keystone's own endpoint."""
url = CONF['%s_endpoint' % self.endpoint_url_type] % CONF
if url[-1] != '/':
url += '/'
return '%s%s/' % (url, version)
def _get_versions_list(self, context):
"""The list of versions is dependent on the context."""
identity_url = self._get_identity_url(context)
if not identity_url.endswith('/'):
identity_url = identity_url + '/'
versions = {}
versions['v2.0'] = {
'id': 'v2.0',
@ -100,7 +96,7 @@ class Version(wsgi.Application):
'links': [
{
'rel': 'self',
'href': identity_url,
'href': self._get_identity_url(version='v2.0'),
}, {
'rel': 'describedby',
'type': 'text/html',