factor out api calls
This commit is contained in:
@@ -1,3 +1,6 @@
|
|||||||
|
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||||
|
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
@@ -50,15 +53,138 @@ def auth_api():
|
|||||||
settings.OPENSTACK_KEYSTONE_URL)
|
settings.OPENSTACK_KEYSTONE_URL)
|
||||||
|
|
||||||
|
|
||||||
def get_tenant(request, tenant_id):
|
def console_create(request, instance_id, kind=None):
|
||||||
tenants = auth_api().tenants.for_token(request.session['token'])
|
return extras_api(request).consoles.create(instance_id, kind)
|
||||||
for t in tenants:
|
|
||||||
if str(t.id) == str(tenant_id):
|
|
||||||
return t
|
|
||||||
|
|
||||||
|
|
||||||
|
def flavor_create(request, name, memory, vcpu, disk, flavor_id):
|
||||||
|
return admin_api(request).flavors.create(
|
||||||
|
name, int(memory), int(vcpu), int(disk), flavor_id)
|
||||||
|
|
||||||
def token_info(token):
|
|
||||||
|
def flavor_delete(request, flavor_id, purge=False):
|
||||||
|
return admin_api(request).flavors.delete(flavor_id, purge)
|
||||||
|
|
||||||
|
|
||||||
|
def flavor_get(request, flavor_id):
|
||||||
|
return compute_api(request).flavors.get(flavor_id)
|
||||||
|
|
||||||
|
|
||||||
|
def flavor_list(request):
|
||||||
|
return extras_api(request).flavors.list()
|
||||||
|
|
||||||
|
|
||||||
|
def flavor_list_admin(request):
|
||||||
|
return extras_api(request).flavors.list()
|
||||||
|
|
||||||
|
|
||||||
|
def image_all_metadata(request):
|
||||||
|
images = glance_api(request).get_images_detailed()
|
||||||
|
image_dict = {}
|
||||||
|
for image in images:
|
||||||
|
image_dict[image['id']] = image
|
||||||
|
return image_dict
|
||||||
|
|
||||||
|
|
||||||
|
def image_create(request, image_meta, image_file):
|
||||||
|
return glance_api(request).add_image(image_meta, image_file)
|
||||||
|
|
||||||
|
|
||||||
|
def image_delete(request, image_id):
|
||||||
|
return glance_api(request).delete_image(image_id)
|
||||||
|
|
||||||
|
|
||||||
|
def image_get(request, image_id):
|
||||||
|
return glance_api(request).get_image(image_id)[0]
|
||||||
|
|
||||||
|
|
||||||
|
def image_list_detailed(request):
|
||||||
|
return glance_api(request).get_images_detailed()
|
||||||
|
|
||||||
|
|
||||||
|
def image_update(request, image_id, image_meta=None):
|
||||||
|
image_meta = image_meta and image_meta or {}
|
||||||
|
return glance_api(request).update_image(image_id, image_meta=image_meta)
|
||||||
|
|
||||||
|
|
||||||
|
def keypair_create(request, name):
|
||||||
|
return extras_api(request).keypairs.create(name)
|
||||||
|
|
||||||
|
|
||||||
|
def keypair_delete(request, keypair_id):
|
||||||
|
return extras_api(request).keypairs.delete(keypair_id)
|
||||||
|
|
||||||
|
|
||||||
|
def keypair_list(request):
|
||||||
|
return extras_api(request).keypairs.list()
|
||||||
|
|
||||||
|
|
||||||
|
def server_create(request, name, image, flavor, user_data, key_name):
|
||||||
|
return extras_api(request).servers.create(
|
||||||
|
name, image, flavor, user_data, key_name)
|
||||||
|
|
||||||
|
|
||||||
|
def server_delete(request, instance):
|
||||||
|
return compute_api(request).servers.delete(instance)
|
||||||
|
|
||||||
|
|
||||||
|
def server_get(request, instance_id):
|
||||||
|
return compute_api(request).servers.get(instance_id)
|
||||||
|
|
||||||
|
|
||||||
|
def server_list(request):
|
||||||
|
return extras_api(request).servers.list()
|
||||||
|
|
||||||
|
|
||||||
|
def server_reboot(request, instance_id, hardness=openstack.compute.servers.REBOOT_HARD):
|
||||||
|
server = server_get(request, instance_id)
|
||||||
|
return server.reboot(hardness)
|
||||||
|
|
||||||
|
|
||||||
|
def service_get(request, name):
|
||||||
|
return admin_api(request).services.get(name)
|
||||||
|
|
||||||
|
|
||||||
|
def service_list(request):
|
||||||
|
return admin_api(request).services.list()
|
||||||
|
|
||||||
|
|
||||||
|
def service_update(request, name, enabled):
|
||||||
|
return admin_api(request).services.update(name, enabled)
|
||||||
|
|
||||||
|
|
||||||
|
def token_get_tenant(request, tenant_id):
|
||||||
|
tenants = auth_api().tenants.for_token(request.session['token'])
|
||||||
|
for t in tenants:
|
||||||
|
if str(t.id) == str(tenant_id):
|
||||||
|
return t
|
||||||
|
|
||||||
|
|
||||||
|
def token_list_tenants(request, token):
|
||||||
|
return auth_api().tenants.for_token(token)
|
||||||
|
|
||||||
|
|
||||||
|
def tenant_create(request, tenant_id, description, enabled):
|
||||||
|
return account_api(request).tenants.create(tenant_id, description, enabled)
|
||||||
|
|
||||||
|
|
||||||
|
def tenant_get(request, tenant_id):
|
||||||
|
return account_api(request).tenants.get(tenant_id)
|
||||||
|
|
||||||
|
|
||||||
|
def tenant_list(request):
|
||||||
|
return account_api(request).tenants.list()
|
||||||
|
|
||||||
|
|
||||||
|
def tenant_update(request, tenant_id, description, enabled):
|
||||||
|
return account_api(request).tenants.update(tenant_id, description, enabled)
|
||||||
|
|
||||||
|
|
||||||
|
def token_create(request, tenant, username, password):
|
||||||
|
return auth_api().tokens.create(tenant, username, password)
|
||||||
|
|
||||||
|
|
||||||
|
def token_info(request, 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"}
|
||||||
@@ -79,9 +205,38 @@ def token_info(token):
|
|||||||
'admin': admin}
|
'admin': admin}
|
||||||
|
|
||||||
|
|
||||||
def get_image_cache(request):
|
def usage_get(request, tenant_id, start, end):
|
||||||
images = glance_api(request).get_images_detailed()
|
return extras_api(request).usage.get(tenant_id, start, end)
|
||||||
image_dict = {}
|
|
||||||
for image in images:
|
|
||||||
image_dict[image['id']] = image
|
def usage_list(request, start, end):
|
||||||
return image_dict
|
return extras_api(request).usage.list(start, end)
|
||||||
|
|
||||||
|
|
||||||
|
def user_create(request, user_id, email, password, tenant_id):
|
||||||
|
return account_api(request).users.create(
|
||||||
|
user_id, email, password, tenant_id)
|
||||||
|
|
||||||
|
|
||||||
|
def user_delete(request, user_id):
|
||||||
|
return account_api(request).users.delete(user_id)
|
||||||
|
|
||||||
|
|
||||||
|
def user_get(request, user_id):
|
||||||
|
return account_api(request).users.get(user_id)
|
||||||
|
|
||||||
|
|
||||||
|
def user_list(request):
|
||||||
|
return account_api(request).users.list()
|
||||||
|
|
||||||
|
|
||||||
|
def user_update_email(request, user_id, email):
|
||||||
|
return account_api(request).users.update_email(user_id, email)
|
||||||
|
|
||||||
|
|
||||||
|
def user_update_password(request, user_id, password):
|
||||||
|
return account_api(request).users.update_password(user_id, password)
|
||||||
|
|
||||||
|
|
||||||
|
def user_update_tenant(request, user_id, tenant_id):
|
||||||
|
return account_api(request).users.update_tenant(user_id, tenant_id)
|
||||||
|
|||||||
@@ -18,10 +18,11 @@ class Login(forms.SelfHandlingForm):
|
|||||||
|
|
||||||
def handle(self, request, data):
|
def handle(self, request, data):
|
||||||
try:
|
try:
|
||||||
token = api.auth_api().tokens.create("",
|
token = api.token_create(request,
|
||||||
data['username'],
|
"",
|
||||||
data['password'])
|
data['username'],
|
||||||
info = api.token_info(token)
|
data['password'])
|
||||||
|
info = api.token_info(request, 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']
|
||||||
@@ -37,6 +38,7 @@ class Login(forms.SelfHandlingForm):
|
|||||||
except api_exceptions.Unauthorized as e:
|
except api_exceptions.Unauthorized as e:
|
||||||
messages.error(request, 'Error authenticating: %s' % e.message)
|
messages.error(request, 'Error authenticating: %s' % e.message)
|
||||||
|
|
||||||
|
|
||||||
def login(request):
|
def login(request):
|
||||||
if request.user and request.user.is_authenticated():
|
if request.user and request.user.is_authenticated():
|
||||||
if request.user.is_admin():
|
if request.user.is_admin():
|
||||||
|
|||||||
@@ -5,4 +5,4 @@ from django_openstack import api
|
|||||||
def tenants(request):
|
def tenants(request):
|
||||||
if not request.user or not request.user.is_authenticated():
|
if not request.user or not request.user.is_authenticated():
|
||||||
return {}
|
return {}
|
||||||
return {'tenants': api.auth_api().tenants.for_token(request.user.token)}
|
return {'tenants': api.token_list_tenants(request, request.user.token)}
|
||||||
|
|||||||
@@ -67,13 +67,14 @@ class LaunchForm(forms.SelfHandlingForm):
|
|||||||
def handle(self, request, data):
|
def handle(self, request, data):
|
||||||
image_id = data['image_id']
|
image_id = data['image_id']
|
||||||
try:
|
try:
|
||||||
image = api.compute_api(request).images.get(image_id)
|
image = api.image_get(request, image_id)
|
||||||
flavor = api.compute_api(request).flavors.get(data['flavor'])
|
flavor = api.flavor_get(request, data['flavor'])
|
||||||
api.extras_api(request).servers.create(data['name'],
|
api.server_create(request,
|
||||||
image,
|
data['name'],
|
||||||
flavor,
|
image,
|
||||||
user_data=data['user_data'],
|
flavor,
|
||||||
key_name=data.get('key_name'))
|
user_data=data['user_data'],
|
||||||
|
key_name=data.get('key_name'))
|
||||||
|
|
||||||
messages.success(request, "Instance was successfully\
|
messages.success(request, "Instance was successfully\
|
||||||
launched.")
|
launched.")
|
||||||
@@ -86,10 +87,10 @@ class LaunchForm(forms.SelfHandlingForm):
|
|||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def index(request, tenant_id):
|
def index(request, tenant_id):
|
||||||
tenant = api.get_tenant(request, request.user.tenant)
|
tenant = api.token_get_tenant(request, request.user.tenant)
|
||||||
all_images = []
|
all_images = []
|
||||||
try:
|
try:
|
||||||
all_images = api.glance_api(request).get_images_detailed()
|
all_images = api.image_list_detailed(request)
|
||||||
if not all_images:
|
if not all_images:
|
||||||
messages.info(request, "There are currently no images.")
|
messages.info(request, "There are currently no images.")
|
||||||
except GlanceClientConnectionError, e:
|
except GlanceClientConnectionError, e:
|
||||||
@@ -121,7 +122,7 @@ def index(request, tenant_id):
|
|||||||
def launch(request, tenant_id, image_id):
|
def launch(request, tenant_id, image_id):
|
||||||
def flavorlist():
|
def flavorlist():
|
||||||
try:
|
try:
|
||||||
fl = api.extras_api(request).flavors.list()
|
fl = api.flavor_list(request)
|
||||||
|
|
||||||
# TODO add vcpu count to flavors
|
# TODO add vcpu count to flavors
|
||||||
sel = [(f.id, '%s (%svcpu / %sGB Disk / %sMB Ram )' %
|
sel = [(f.id, '%s (%svcpu / %sGB Disk / %sMB Ram )' %
|
||||||
@@ -132,14 +133,14 @@ def launch(request, tenant_id, image_id):
|
|||||||
|
|
||||||
def keynamelist():
|
def keynamelist():
|
||||||
try:
|
try:
|
||||||
fl = api.extras_api(request).keypairs.list()
|
fl = api.keypair_list(request)
|
||||||
sel = [(f.key_name, f.key_name) for f in fl]
|
sel = [(f.key_name, f.key_name) for f in fl]
|
||||||
return sel
|
return sel
|
||||||
except:
|
except:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
image = api.compute_api(request).images.get(image_id)
|
image = api.image_get(request, image_id)
|
||||||
tenant = api.get_tenant(request, request.user.tenant)
|
tenant = api.token_get_tenant(request, request.user.tenant)
|
||||||
|
|
||||||
form, handled = LaunchForm.maybe_handle(
|
form, handled = LaunchForm.maybe_handle(
|
||||||
request, initial={'flavorlist': flavorlist(),
|
request, initial={'flavorlist': flavorlist(),
|
||||||
|
|||||||
@@ -44,10 +44,10 @@ class TerminateInstance(forms.SelfHandlingForm):
|
|||||||
|
|
||||||
def handle(self, request, data):
|
def handle(self, request, data):
|
||||||
instance_id = data['instance']
|
instance_id = data['instance']
|
||||||
instance = api.compute_api(request).servers.get(instance_id)
|
instance = api.server_get(request, instance_id)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
api.compute_api(request).servers.delete(instance)
|
api.server_delete(request, instance)
|
||||||
except api_exceptions.ApiException, e:
|
except api_exceptions.ApiException, e:
|
||||||
messages.error(request,
|
messages.error(request,
|
||||||
'Unable to terminate %s: %s' %
|
'Unable to terminate %s: %s' %
|
||||||
@@ -65,8 +65,7 @@ class RebootInstance(forms.SelfHandlingForm):
|
|||||||
def handle(self, request, data):
|
def handle(self, request, data):
|
||||||
instance_id = data['instance']
|
instance_id = data['instance']
|
||||||
try:
|
try:
|
||||||
server = api.compute_api(request).servers.get(instance_id)
|
server = api.server_reboot(request, instance_id)
|
||||||
server.reboot(openstack.compute.servers.REBOOT_HARD)
|
|
||||||
messages.success(request, "Instance rebooting")
|
messages.success(request, "Instance rebooting")
|
||||||
except api_exceptions.ApiException, e:
|
except api_exceptions.ApiException, e:
|
||||||
messages.error(request,
|
messages.error(request,
|
||||||
@@ -84,8 +83,8 @@ def index(request, tenant_id):
|
|||||||
|
|
||||||
instances = []
|
instances = []
|
||||||
try:
|
try:
|
||||||
image_dict = api.get_image_cache(request)
|
image_dict = api.image_all_metadata(request)
|
||||||
instances = api.extras_api(request).servers.list()
|
instances = api.server_list(request)
|
||||||
for instance in instances:
|
for instance in instances:
|
||||||
# FIXME - ported this over, but it is hacky
|
# FIXME - ported this over, but it is hacky
|
||||||
instance._info['attrs']['image_name'] =\
|
instance._info['attrs']['image_name'] =\
|
||||||
@@ -117,11 +116,9 @@ def usage(request, tenant_id=None):
|
|||||||
tenant_id = request.user.tenant
|
tenant_id = request.user.tenant
|
||||||
|
|
||||||
try:
|
try:
|
||||||
usage = api.extras_api(request).usage.get(tenant_id,
|
usage = api.usage_get(request, tenant_id, datetime_start, datetime_end)
|
||||||
datetime_start, datetime_end)
|
|
||||||
except api_exceptions.ApiException, e:
|
except api_exceptions.ApiException, e:
|
||||||
messages.error(request, 'Unable to get usage info: %s' % e.message)
|
messages.error(request, 'Unable to get usage info: %s' % e.message)
|
||||||
|
|
||||||
return render_to_response('dash_usage.html', {
|
return render_to_response('dash_usage.html', {
|
||||||
'usage': usage,
|
'usage': usage,
|
||||||
}, context_instance=template.RequestContext(request))
|
}, context_instance=template.RequestContext(request))
|
||||||
@@ -130,7 +127,7 @@ def usage(request, tenant_id=None):
|
|||||||
@login_required
|
@login_required
|
||||||
def console(request, tenant_id, instance_id):
|
def console(request, tenant_id, instance_id):
|
||||||
try:
|
try:
|
||||||
console = api.extras_api(request).consoles.create(instance_id)
|
console = api.console_create(request, instance_id)
|
||||||
response = http.HttpResponse(mimetype='text/plain')
|
response = http.HttpResponse(mimetype='text/plain')
|
||||||
response.write(console.output)
|
response.write(console.output)
|
||||||
response.flush()
|
response.flush()
|
||||||
@@ -145,7 +142,7 @@ def console(request, tenant_id, instance_id):
|
|||||||
@login_required
|
@login_required
|
||||||
def vnc(request, tenant_id, instance_id):
|
def vnc(request, tenant_id, instance_id):
|
||||||
try:
|
try:
|
||||||
console = api.extras_api(request).consoles.create(instance_id, 'vnc')
|
console = api.console_create(request, instance_id, 'vnc')
|
||||||
return redirect(console.output)
|
return redirect(console.output)
|
||||||
except api_exceptions.ApiException, e:
|
except api_exceptions.ApiException, e:
|
||||||
messages.error(request,
|
messages.error(request,
|
||||||
|
|||||||
@@ -45,8 +45,7 @@ class DeleteKeypair(forms.SelfHandlingForm):
|
|||||||
|
|
||||||
def handle(self, request, data):
|
def handle(self, request, data):
|
||||||
try:
|
try:
|
||||||
keypair = api.extras_api(request).keypairs.delete(
|
keypair = api.keypair_delete(request, data['keypair_id'])
|
||||||
data['keypair_id'])
|
|
||||||
messages.info(request, 'Successfully deleted keypair: %s' \
|
messages.info(request, 'Successfully deleted keypair: %s' \
|
||||||
% data['keypair_id'])
|
% data['keypair_id'])
|
||||||
except api_exceptions.ApiException, e:
|
except api_exceptions.ApiException, e:
|
||||||
@@ -58,7 +57,7 @@ class CreateKeypair(forms.SelfHandlingForm):
|
|||||||
|
|
||||||
def handle(self, request, data):
|
def handle(self, request, data):
|
||||||
try:
|
try:
|
||||||
keypair = api.extras_api(request).keypairs.create(data['name'])
|
keypair = api.keypair_create(request, data['name'])
|
||||||
response = http.HttpResponse(mimetype='application/binary')
|
response = http.HttpResponse(mimetype='application/binary')
|
||||||
response['Content-Disposition'] = \
|
response['Content-Disposition'] = \
|
||||||
'attachment; filename=%s.pem' % \
|
'attachment; filename=%s.pem' % \
|
||||||
@@ -76,7 +75,7 @@ def index(request, tenant_id):
|
|||||||
return handled
|
return handled
|
||||||
|
|
||||||
try:
|
try:
|
||||||
keypairs = api.extras_api(request).keypairs.list()
|
keypairs = api.keypair_list(request)
|
||||||
except api_exceptions.ApiException, e:
|
except api_exceptions.ApiException, e:
|
||||||
keypairs = []
|
keypairs = []
|
||||||
messages.error(request, 'Error featching keypairs: %s' % e.message)
|
messages.error(request, 'Error featching keypairs: %s' % e.message)
|
||||||
|
|||||||
@@ -24,11 +24,12 @@ class CreateFlavor(forms.SelfHandlingForm):
|
|||||||
disk_gb = forms.CharField(max_length="5", label="Disk GB")
|
disk_gb = forms.CharField(max_length="5", label="Disk GB")
|
||||||
|
|
||||||
def handle(self, request, data):
|
def handle(self, request, data):
|
||||||
api.admin_api(request).flavors.create(data['name'],
|
api.flavor_create(request,
|
||||||
int(data['memory_mb']),
|
data['name'],
|
||||||
int(data['vcpus']),
|
int(data['memory_mb']),
|
||||||
int(data['disk_gb']),
|
int(data['vcpus']),
|
||||||
int(data['flavorid']))
|
int(data['disk_gb']),
|
||||||
|
int(data['flavorid']))
|
||||||
messages.success(request,
|
messages.success(request,
|
||||||
'%s was successfully added to flavors.' % data['name'])
|
'%s was successfully added to flavors.' % data['name'])
|
||||||
return redirect('syspanel_flavors')
|
return redirect('syspanel_flavors')
|
||||||
@@ -39,7 +40,7 @@ class DeleteFlavor(forms.SelfHandlingForm):
|
|||||||
|
|
||||||
def handle(self, request, data):
|
def handle(self, request, data):
|
||||||
flavor_id = data['flavorid']
|
flavor_id = data['flavorid']
|
||||||
api.admin_api(request).flavors.delete(flavor_id, True)
|
api.flavor_delete(flavor_id, True)
|
||||||
return redirect(request.build_absolute_uri())
|
return redirect(request.build_absolute_uri())
|
||||||
|
|
||||||
|
|
||||||
@@ -56,7 +57,7 @@ def index(request):
|
|||||||
|
|
||||||
flavors = []
|
flavors = []
|
||||||
try:
|
try:
|
||||||
flavors = api.admin_api(request).flavors.list()
|
flavors = api.flavor_list_admin(request)
|
||||||
except api_exceptions.ApiException, e:
|
except api_exceptions.ApiException, e:
|
||||||
messages.error(request, 'Unable to get usage info: %s' % e.message)
|
messages.error(request, 'Unable to get usage info: %s' % e.message)
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class DeleteImage(forms.SelfHandlingForm):
|
|||||||
def handle(self, request, data):
|
def handle(self, request, data):
|
||||||
image_id = data['image_id']
|
image_id = data['image_id']
|
||||||
try:
|
try:
|
||||||
api.glance_api(request).delete_image(image_id)
|
api.image_delete(request, image_id)
|
||||||
except GlanceClientConnectionError, e:
|
except GlanceClientConnectionError, e:
|
||||||
messages.error(request, "Error connecting to glance: %s" % e.message)
|
messages.error(request, "Error connecting to glance: %s" % e.message)
|
||||||
except glance_exception.Error, e:
|
except glance_exception.Error, e:
|
||||||
@@ -32,8 +32,9 @@ class ToggleImage(forms.SelfHandlingForm):
|
|||||||
image_id = forms.CharField(required=True)
|
image_id = forms.CharField(required=True)
|
||||||
|
|
||||||
def handle(self, request, data):
|
def handle(self, request, data):
|
||||||
|
image_id = data['image_id']
|
||||||
try:
|
try:
|
||||||
api.glance_api(request).update_image(image_id, image_meta={'is_public': False})
|
api.image_update(request, image_id, image_meta={'is_public': False})
|
||||||
except GlanceClientConnectionError, e:
|
except GlanceClientConnectionError, e:
|
||||||
messages.error(request, "Error connecting to glance: %s" % e.message)
|
messages.error(request, "Error connecting to glance: %s" % e.message)
|
||||||
except glance_exception.Error, e:
|
except glance_exception.Error, e:
|
||||||
@@ -56,7 +57,7 @@ def index(request):
|
|||||||
|
|
||||||
images = []
|
images = []
|
||||||
try:
|
try:
|
||||||
images = api.glance_api(request).get_images_detailed()
|
images = api.image_list_detailed(request)
|
||||||
if not images:
|
if not images:
|
||||||
messages.info(request, "There are currently no images.")
|
messages.info(request, "There are currently no images.")
|
||||||
except GlanceClientConnectionError, e:
|
except GlanceClientConnectionError, e:
|
||||||
@@ -74,7 +75,7 @@ def index(request):
|
|||||||
@login_required
|
@login_required
|
||||||
def update(request, image_id):
|
def update(request, image_id):
|
||||||
try:
|
try:
|
||||||
image = glance_api(request).get_image(image_id)[0]
|
image = api.image_get(request, image_id)
|
||||||
except GlanceClientConnectionError, e:
|
except GlanceClientConnectionError, e:
|
||||||
messages.error(request, "Error connecting to glance: %s" % e.message)
|
messages.error(request, "Error connecting to glance: %s" % e.message)
|
||||||
except glance_exception.Error, e:
|
except glance_exception.Error, e:
|
||||||
@@ -100,8 +101,7 @@ def update(request, image_id):
|
|||||||
'architecture': image_form['architecture'],
|
'architecture': image_form['architecture'],
|
||||||
'project_id': image_form['project_id'],
|
'project_id': image_form['project_id'],
|
||||||
}
|
}
|
||||||
|
api.image_update(request, image_id, metadata)
|
||||||
glance_api(request).update_image(image_id, metadata)
|
|
||||||
messages.success(request, "Image was successfully updated.")
|
messages.success(request, "Image was successfully updated.")
|
||||||
except GlanceClientConnectionError, e:
|
except GlanceClientConnectionError, e:
|
||||||
messages.error(request, "Error connecting to glance: %s" % e.message)
|
messages.error(request, "Error connecting to glance: %s" % e.message)
|
||||||
@@ -156,7 +156,7 @@ def upload(request):
|
|||||||
messages.error(request, "Image could not be uploaded, please try again.")
|
messages.error(request, "Image could not be uploaded, please try again.")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
glance_api(request).add_image(metadata, image['image_file'])
|
api.image_create(request, metadata, image['image_file'])
|
||||||
except GlanceClientConnectionError, e:
|
except GlanceClientConnectionError, e:
|
||||||
messages.error(request, "Error connecting to glance: %s" % e.message)
|
messages.error(request, "Error connecting to glance: %s" % e.message)
|
||||||
except glance_exception.Error, e:
|
except glance_exception.Error, e:
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ def usage(request):
|
|||||||
datetime_end = datetime_start
|
datetime_end = datetime_start
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
service_list = api.admin_api(request).services.list()
|
service_list = api.service_list(request)
|
||||||
except api_exceptions.ApiException, e:
|
except api_exceptions.ApiException, e:
|
||||||
messages.error(request, 'Unable to get service info: %s' % e.message)
|
messages.error(request, 'Unable to get service info: %s' % e.message)
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ def usage(request):
|
|||||||
max_gigabytes += service.stats['max_gigabytes']
|
max_gigabytes += service.stats['max_gigabytes']
|
||||||
|
|
||||||
try:
|
try:
|
||||||
usage_list = api.extras_api(request).usage.list(datetime_start, datetime_end)
|
usage_list = api.usage_list(request, datetime_start, datetime_end)
|
||||||
except api_exceptions.ApiException, e:
|
except api_exceptions.ApiException, e:
|
||||||
messages.error(request, 'Unable to get usage info: %s' % e.message)
|
messages.error(request, 'Unable to get usage info: %s' % e.message)
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ def tenant_usage(request, tenant_id):
|
|||||||
|
|
||||||
usage = {}
|
usage = {}
|
||||||
try:
|
try:
|
||||||
usage = extras_api(request).usage.get(tenant_id, datetime_start, datetime_end)
|
usage = api.usage_get(request, tenant_id, datetime_start, datetime_end)
|
||||||
except api_exceptions.ApiException, e:
|
except api_exceptions.ApiException, e:
|
||||||
messages.error(request, 'Unable to get usage info: %s' % e.message)
|
messages.error(request, 'Unable to get usage info: %s' % e.message)
|
||||||
|
|
||||||
@@ -162,8 +162,8 @@ def index(request):
|
|||||||
|
|
||||||
instances = []
|
instances = []
|
||||||
try:
|
try:
|
||||||
image_dict = api.get_image_cache(request)
|
image_dict = api.image_all_metadata(request)
|
||||||
instances = api.extras_api(request).servers.list()
|
instances = api.server_list(request)
|
||||||
for instance in instances:
|
for instance in instances:
|
||||||
# FIXME - ported this over, but it is hacky
|
# FIXME - ported this over, but it is hacky
|
||||||
instance._info['attrs']['image_name'] =\
|
instance._info['attrs']['image_name'] =\
|
||||||
|
|||||||
@@ -28,9 +28,10 @@ class ToggleService(forms.SelfHandlingForm):
|
|||||||
|
|
||||||
def handle(self, request, data):
|
def handle(self, request, data):
|
||||||
try:
|
try:
|
||||||
service = api.admin_api(request).services.get(data['service'])
|
service = api.service_get(request, data['service'])
|
||||||
api.admin_api(request).services.update(data['service'],
|
api.service_update(request,
|
||||||
not service.disabled)
|
data['service'],
|
||||||
|
not service.disabled)
|
||||||
if service.disabled:
|
if service.disabled:
|
||||||
messages.info(request, "Service '%s' has been enabled"
|
messages.info(request, "Service '%s' has been enabled"
|
||||||
% data['name'])
|
% data['name'])
|
||||||
@@ -53,7 +54,7 @@ def index(request):
|
|||||||
|
|
||||||
services = []
|
services = []
|
||||||
try:
|
try:
|
||||||
services = api.admin_api(request).services.list()
|
services = api.service_list(request)
|
||||||
except api_exceptions.ApiException, e:
|
except api_exceptions.ApiException, e:
|
||||||
messages.error(request, 'Unable to get service info: %s' % e.message)
|
messages.error(request, 'Unable to get service info: %s' % e.message)
|
||||||
|
|
||||||
|
|||||||
@@ -27,8 +27,10 @@ class CreateTenant(forms.SelfHandlingForm):
|
|||||||
|
|
||||||
def handle(self, request, data):
|
def handle(self, request, data):
|
||||||
try:
|
try:
|
||||||
api.account_api(request).tenants.create(data['id'],
|
api.tenant_create(request,
|
||||||
data['description'], data['enabled'])
|
data['id'],
|
||||||
|
data['description'],
|
||||||
|
data['enabled'])
|
||||||
messages.success(request,
|
messages.success(request,
|
||||||
'%s was successfully created.'
|
'%s was successfully created.'
|
||||||
% data['id'])
|
% data['id'])
|
||||||
@@ -45,8 +47,10 @@ class UpdateTenant(forms.SelfHandlingForm):
|
|||||||
|
|
||||||
def handle(self, request, data):
|
def handle(self, request, data):
|
||||||
try:
|
try:
|
||||||
api.account_api(request).tenants.update(data['id'],
|
api.tenant_update(request,
|
||||||
data['description'], data['enabled'])
|
data['id'],
|
||||||
|
data['description'],
|
||||||
|
data['enabled'])
|
||||||
messages.success(request,
|
messages.success(request,
|
||||||
'%s was successfully updated.'
|
'%s was successfully updated.'
|
||||||
% data['id'])
|
% data['id'])
|
||||||
@@ -59,7 +63,7 @@ class UpdateTenant(forms.SelfHandlingForm):
|
|||||||
def index(request):
|
def index(request):
|
||||||
tenants = []
|
tenants = []
|
||||||
try:
|
try:
|
||||||
tenants = api.account_api(request).tenants.list()
|
tenants = api.tenant_list(request)
|
||||||
except api_exceptions.ApiException, e:
|
except api_exceptions.ApiException, e:
|
||||||
messages.error(request, 'Unable to get tenant info: %s' % e.message)
|
messages.error(request, 'Unable to get tenant info: %s' % e.message)
|
||||||
tenants.sort(key=lambda x: x.id, reverse=True)
|
tenants.sort(key=lambda x: x.id, reverse=True)
|
||||||
@@ -88,7 +92,7 @@ def update(request, tenant_id):
|
|||||||
|
|
||||||
if request.method == 'GET':
|
if request.method == 'GET':
|
||||||
try:
|
try:
|
||||||
tenant = api.account_api(request).tenants.get(tenant_id)
|
tenant = api.tenant_get(request, tenant_id)
|
||||||
form = UpdateTenant(initial={'id': tenant.id,
|
form = UpdateTenant(initial={'id': tenant.id,
|
||||||
'description': tenant.description,
|
'description': tenant.description,
|
||||||
'enabled': tenant.enabled})
|
'enabled': tenant.enabled})
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class UserDeleteForm(forms.SelfHandlingForm):
|
|||||||
|
|
||||||
def handle(self, request, data):
|
def handle(self, request, data):
|
||||||
user_id = data['user']
|
user_id = data['user']
|
||||||
api.account_api(request).users.delete(user_id)
|
api.user_delete(request, user_id)
|
||||||
messages.success(request,
|
messages.success(request,
|
||||||
'%s was successfully deleted.'
|
'%s was successfully deleted.'
|
||||||
% user_id)
|
% user_id)
|
||||||
@@ -52,7 +52,7 @@ def index(request):
|
|||||||
if handled:
|
if handled:
|
||||||
return handled
|
return handled
|
||||||
|
|
||||||
users = api.account_api(request).users.list()
|
users = api.user_list(request)
|
||||||
|
|
||||||
user_delete_form = UserDeleteForm()
|
user_delete_form = UserDeleteForm()
|
||||||
return render_to_response('syspanel_users.html',{
|
return render_to_response('syspanel_users.html',{
|
||||||
@@ -64,23 +64,20 @@ def index(request):
|
|||||||
@login_required
|
@login_required
|
||||||
def update(request, user_id):
|
def update(request, user_id):
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
tenants = api.account_api(request).tenants.list()
|
tenants = api.tenant_list(request)
|
||||||
form = UserForm(request.POST, tenant_list=tenants)
|
form = UserForm(request.POST, tenant_list=tenants)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
user = form.clean()
|
user = form.clean()
|
||||||
updated = []
|
updated = []
|
||||||
if user['email']:
|
if user['email']:
|
||||||
updated.append('email')
|
updated.append('email')
|
||||||
api.account_api(request).users.update_email(user['id'],
|
api.user_update_email(request, user['id'], user['email'])
|
||||||
user['email'])
|
|
||||||
if user['password']:
|
if user['password']:
|
||||||
updated.append('password')
|
updated.append('password')
|
||||||
api.account_api(request).users.update_password(user['id'],
|
api.user_update_password(request, user['id'], user['password'])
|
||||||
user['password'])
|
|
||||||
if user['tenant_id']:
|
if user['tenant_id']:
|
||||||
updated.append('tenant')
|
updated.append('tenant')
|
||||||
api.account_api(request).users.update_tenant(user['id'],
|
api.user_update_tenant(request, user['id'], user['tenant_id'])
|
||||||
user['tenant_id'])
|
|
||||||
messages.success(request,
|
messages.success(request,
|
||||||
'Updated %s for %s.'
|
'Updated %s for %s.'
|
||||||
% (', '.join(updated), user_id))
|
% (', '.join(updated), user_id))
|
||||||
@@ -97,8 +94,8 @@ def update(request, user_id):
|
|||||||
}, context_instance = template.RequestContext(request))
|
}, context_instance = template.RequestContext(request))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
u = api.account_api(request).users.get(user_id)
|
u = api.user_get(request, user_id)
|
||||||
tenants = api.account_api(request).tenants.list()
|
tenants = api.tenant_list(request)
|
||||||
try:
|
try:
|
||||||
# FIXME
|
# FIXME
|
||||||
email = u.email
|
email = u.email
|
||||||
@@ -122,7 +119,7 @@ def update(request, user_id):
|
|||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def create(request):
|
def create(request):
|
||||||
tenants = api.account_api(request).tenants.list()
|
tenants = api.tenant_list(request)
|
||||||
|
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
form = UserForm(request.POST, tenant_list=tenants)
|
form = UserForm(request.POST, tenant_list=tenants)
|
||||||
@@ -130,11 +127,12 @@ def create(request):
|
|||||||
user = form.clean()
|
user = form.clean()
|
||||||
# TODO Make this a real request
|
# TODO Make this a real request
|
||||||
try:
|
try:
|
||||||
api.account_api(request).users.create(user['id'],
|
api.user_create(request,
|
||||||
user['email'],
|
user['id'],
|
||||||
user['password'],
|
user['email'],
|
||||||
user['tenant_id'],
|
user['password'],
|
||||||
True)
|
user['tenant_id'],
|
||||||
|
True)
|
||||||
|
|
||||||
messages.success(request,
|
messages.success(request,
|
||||||
'%s was successfully created.'
|
'%s was successfully created.'
|
||||||
|
|||||||
Reference in New Issue
Block a user