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,65 +2,55 @@ from django.conf import settings
import glance.client
import httplib
import logging
import json
import openstack.compute
import openstackx.admin
import openstackx.extras
import openstackx.auth
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):
compute = openstack.compute.Compute(auth_token=request.session['token'],
management_url=settings.OPENSTACK_MANAGER_URL)
compute.client.auth_token = auth_token=request.session['token']
compute.client.management_url = settings.OPENSTACK_MANAGER_URL
return compute
return openstack.compute.Compute(auth_token=request.session['token'],
management_url=url_for(request, 'nova'))
def account_api(request):
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):
o = urlparse(settings.OPENSTACK_GLANCE_URL)
o = urlparse(url_for(request, 'glance'))
return glance.client.Client(o.hostname, o.port)
def admin_api(request):
return openstackx.admin.Admin(auth_token=request.session['token'],
management_url=settings.OPENSTACK_ADMIN_MANAGER_URL)
def extras_api(request):
management_url=url_for(request, 'nova', True))
def extras_api(request):
return openstackx.extras.Extras(auth_token=request.session['token'],
management_url=settings.OPENSTACK_ADMIN_MANAGER_URL)
def auth_api():
management_url=url_for(request, 'nova'))
def auth_api():
return openstackx.auth.Auth(management_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
settings.OPENSTACK_KEYSTONE_URL)
def token_info(token):
hdrs = {"Content-type": "application/json",
"X_AUTH_TOKEN": settings.OPENSTACK_ADMIN_TOKEN,
"Accept": "text/json"}
o = urlparse(settings.OPENSTACK_ACCOUNT_URL)
o = urlparse(token.serviceCatalog['keystone'][0]['adminURL'])
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()
data = json.loads(response.read())

View File

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