use service catalog

This commit is contained in:
Anthony Young
2011-06-16 23:01:23 -07:00
committed by termie
parent 62a3704da3
commit d360b07f3a
2 changed files with 27 additions and 36 deletions

View File

@@ -2,43 +2,40 @@ from django.conf import settings
import glance.client import glance.client
import httplib import httplib
import logging
import json import json
import openstack.compute import openstack.compute
import openstackx.admin import openstackx.admin
import openstackx.extras import openstackx.extras
import openstackx.auth import openstackx.auth
from urlparse import urlparse from urlparse import urlparse
import json
# FIXME this is duplicated in syspanel need to consolidate def url_for(request, service_name, admin=False):
catalog = request.session['serviceCatalog']
if admin:
return catalog[service_name][0]['adminURL']
else:
return catalog[service_name][0]['internalURL']
def compute_api(request): def compute_api(request):
compute = openstack.compute.Compute(auth_token=request.session['token'], return openstack.compute.Compute(auth_token=request.session['token'],
management_url=settings.OPENSTACK_MANAGER_URL) management_url=url_for(request, 'nova'))
compute.client.auth_token = auth_token=request.session['token']
compute.client.management_url = settings.OPENSTACK_MANAGER_URL
return compute
def account_api(request): def account_api(request):
return openstackx.extras.Account(auth_token=request.session['token'], return openstackx.extras.Account(auth_token=request.session['token'],
management_url=settings.OPENSTACK_ACCOUNT_URL) management_url=url_for(request, 'keystone', True))
def glance_api(request): def glance_api(request):
o = urlparse(settings.OPENSTACK_GLANCE_URL) o = urlparse(url_for(request, 'glance'))
return glance.client.Client(o.hostname, o.port) return glance.client.Client(o.hostname, o.port)
def admin_api(request): def admin_api(request):
return openstackx.admin.Admin(auth_token=request.session['token'], return openstackx.admin.Admin(auth_token=request.session['token'],
management_url=settings.OPENSTACK_ADMIN_MANAGER_URL) management_url=url_for(request, 'nova', True))
def extras_api(request): def extras_api(request):
return openstackx.extras.Extras(auth_token=request.session['token'], return openstackx.extras.Extras(auth_token=request.session['token'],
management_url=settings.OPENSTACK_ADMIN_MANAGER_URL) management_url=url_for(request, 'nova'))
def auth_api(): def auth_api():
@@ -46,21 +43,14 @@ def auth_api():
settings.OPENSTACK_KEYSTONE_URL) settings.OPENSTACK_KEYSTONE_URL)
def get_tenant(request, tenant_id):
tenants = auth_api().tenants.for_token(request.session['token'])
logging.info('TENANTS: %s', tenants)
for t in tenants:
if str(t.id) == str(tenant_id):
return t
def token_info(token): def token_info(token):
hdrs = {"Content-type": "application/json", hdrs = {"Content-type": "application/json",
"X_AUTH_TOKEN": settings.OPENSTACK_ADMIN_TOKEN, "X_AUTH_TOKEN": settings.OPENSTACK_ADMIN_TOKEN,
"Accept": "text/json"} "Accept": "text/json"}
o = urlparse(settings.OPENSTACK_ACCOUNT_URL)
o = urlparse(token.serviceCatalog['keystone'][0]['adminURL'])
conn = httplib.HTTPConnection(o.hostname, o.port) conn = httplib.HTTPConnection(o.hostname, o.port)
conn.request("GET", "/v2.0/tokens/%s" % token, headers=hdrs) conn.request("GET", "/v2.0/tokens/%s" % token.id, headers=hdrs)
response = conn.getresponse() response = conn.getresponse()
data = json.loads(response.read()) data = json.loads(response.read())

View File

@@ -21,11 +21,12 @@ class Login(forms.SelfHandlingForm):
token = api.auth_api().tokens.create(data['tenant'], token = api.auth_api().tokens.create(data['tenant'],
data['username'], data['username'],
data['password']) data['password'])
info = api.token_info(token.id) info = api.token_info(token)
request.session['token'] = token.id request.session['token'] = token.id
request.session['user'] = info['user'] request.session['user'] = info['user']
request.session['tenant'] = info['tenant'] request.session['tenant'] = info['tenant']
request.session['admin'] = info['admin'] request.session['admin'] = info['admin']
request.session['serviceCatalog'] = token.serviceCatalog
if request.session['admin']: if request.session['admin']:
return shortcuts.redirect('syspanel_overview') return shortcuts.redirect('syspanel_overview')