Ensure to use api.<category>.<method>

In the current code both api.<method> and api.<category>.<method> are used.
Using api.<method> directly makes it difficult to identify which module
defined a method and forces developers to use unique method names among
projects. This commit removes api.<method> style method calls.

Change-Id: Iaefa1061f99b7865e02541df87c112a6b2868ec0
This commit is contained in:
Akihiro MOTOKI 2013-01-20 00:50:11 +09:00
parent b8071bcce7
commit 12faaa5c30
62 changed files with 1040 additions and 929 deletions

View File

@ -32,9 +32,10 @@ In other words, Horizon developers not working on openstack_dashboard.api
shouldn't need to understand the finer details of APIs for
Keystone/Nova/Glance/Swift et. al.
"""
from openstack_dashboard.api.glance import *
from openstack_dashboard.api.keystone import *
from openstack_dashboard.api.nova import *
from openstack_dashboard.api.swift import *
from openstack_dashboard.api.quantum import *
from openstack_dashboard.api.cinder import *
from openstack_dashboard.api import base
from openstack_dashboard.api import cinder
from openstack_dashboard.api import glance
from openstack_dashboard.api import keystone
from openstack_dashboard.api import nova
from openstack_dashboard.api import quantum
from openstack_dashboard.api import swift

View File

@ -30,7 +30,8 @@ from django.utils.translation import ugettext as _
from cinderclient.v1 import client as cinder_client
from openstack_dashboard.api.base import url_for
from openstack_dashboard.api import nova, QuotaSet
from openstack_dashboard.api import nova
from openstack_dashboard.api.base import QuotaSet
from horizon import exceptions
LOG = logging.getLogger(__name__)

View File

@ -13,7 +13,7 @@ class FlavorExtrasTests(test.BaseAdminViewTests):
'flavor_get'), })
def test_list_extras_when_none_exists(self):
flavor = self.flavors.first()
extras = [api.FlavorExtraSpec(flavor.id, 'k1', 'v1')]
extras = [api.nova.FlavorExtraSpec(flavor.id, 'k1', 'v1')]
# GET -- to determine correctness of output
api.nova.flavor_get(IsA(http.HttpRequest), flavor.id).AndReturn(flavor)

View File

@ -15,7 +15,7 @@ class DeleteFlavor(tables.DeleteAction):
data_type_plural = _("Flavors")
def delete(self, request, obj_id):
api.flavor_delete(request, obj_id)
api.nova.flavor_delete(request, obj_id)
class CreateFlavor(tables.LinkAction):

View File

@ -43,7 +43,7 @@ class IndexView(tables.DataTableView):
request = self.request
flavors = []
try:
flavors = api.flavor_list(request)
flavors = api.nova.flavor_list(request)
except:
exceptions.handle(request,
_('Unable to retrieve flavor list.'))

View File

@ -25,12 +25,12 @@ from .tables import AdminImagesTable
class ImagesViewTest(test.BaseAdminViewTests):
@test.create_stubs({api: ('image_list_detailed',)})
@test.create_stubs({api.glance: ('image_list_detailed',)})
def test_images_list(self):
api.image_list_detailed(IsA(http.HttpRequest),
api.glance.image_list_detailed(IsA(http.HttpRequest),
marker=None) \
.AndReturn([self.images.list(),
False])
.AndReturn([self.images.list(),
False])
self.mox.ReplayAll()
res = self.client.get(
@ -39,24 +39,24 @@ class ImagesViewTest(test.BaseAdminViewTests):
self.assertEqual(len(res.context['images_table'].data),
len(self.images.list()))
@test.create_stubs({api: ('image_list_detailed',)})
@test.create_stubs({api.glance: ('image_list_detailed',)})
def test_images_list_get_pagination(self):
api.image_list_detailed(IsA(http.HttpRequest),
marker=None) \
api.glance.image_list_detailed(IsA(http.HttpRequest),
marker=None) \
.AndReturn([self.images.list(),
True])
api.image_list_detailed(IsA(http.HttpRequest),
marker=None) \
True])
api.glance.image_list_detailed(IsA(http.HttpRequest),
marker=None) \
.AndReturn([self.images.list()[:2],
True])
api.image_list_detailed(IsA(http.HttpRequest),
marker=self.images.list()[2].id) \
True])
api.glance.image_list_detailed(IsA(http.HttpRequest),
marker=self.images.list()[2].id) \
.AndReturn([self.images.list()[2:4],
True])
api.image_list_detailed(IsA(http.HttpRequest),
marker=self.images.list()[4].id) \
True])
api.glance.image_list_detailed(IsA(http.HttpRequest),
marker=self.images.list()[4].id) \
.AndReturn([self.images.list()[4:],
True])
True])
self.mox.ReplayAll()
url = reverse('horizon:admin:images:index')

View File

@ -48,8 +48,8 @@ class IndexView(tables.DataTableView):
marker = self.request.GET.get(AdminImagesTable._meta.pagination_param,
None)
try:
images, self._more = api.image_list_detailed(self.request,
marker=marker)
images, self._more = api.glance.image_list_detailed(self.request,
marker=marker)
except:
self._more = False
msg = _('Unable to retrieve image list.')

View File

@ -48,7 +48,7 @@ class MigrateInstance(tables.BatchAction):
and not is_deleting(instance))
def action(self, request, obj_id):
api.server_migrate(request, obj_id)
api.nova.server_migrate(request, obj_id)
class AdminUpdateRow(UpdateRow):

View File

@ -111,16 +111,16 @@ class InstanceViewTest(test.BaseAdminViewTests):
self.assertTemplateUsed(res, 'admin/instances/index.html')
self.assertEqual(len(res.context['instances_table'].data), 0)
@test.create_stubs({api: ('server_get', 'flavor_get',),
@test.create_stubs({api.nova: ('server_get', 'flavor_get',),
api.keystone: ('tenant_get',)})
def test_ajax_loading_instances(self):
server = self.servers.first()
flavor = self.flavors.list()[0]
tenant = self.tenants.list()[0]
api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.flavor_get(IsA(http.HttpRequest),
server.flavor['id']).AndReturn(flavor)
api.nova.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.nova.flavor_get(IsA(http.HttpRequest),
server.flavor['id']).AndReturn(flavor)
api.keystone.tenant_get(IsA(http.HttpRequest),
server.tenant_id,
admin=True).AndReturn(tenant)

View File

@ -38,7 +38,7 @@ INDEX_URL = reverse('horizon:project:overview:index')
class UsageViewTests(test.BaseAdminViewTests):
@test.create_stubs({api: ('usage_list',),
@test.create_stubs({api.nova: ('usage_list',),
quotas: ('tenant_quota_usages',),
api.keystone: ('tenant_list',)})
def test_usage(self):
@ -47,10 +47,10 @@ class UsageViewTests(test.BaseAdminViewTests):
quota_data = self.quota_usages.first()
api.keystone.tenant_list(IsA(http.HttpRequest), admin=True) \
.AndReturn(self.tenants.list())
api.usage_list(IsA(http.HttpRequest),
datetime.datetime(now.year, now.month, 1, 0, 0, 0),
Func(usage.almost_now)) \
.AndReturn([usage_obj])
api.nova.usage_list(IsA(http.HttpRequest),
datetime.datetime(now.year, now.month, 1, 0, 0, 0),
Func(usage.almost_now)) \
.AndReturn([usage_obj])
quotas.tenant_quota_usages(IsA(http.HttpRequest)).AndReturn(quota_data)
self.mox.ReplayAll()
res = self.client.get(reverse('horizon:admin:overview:index'))
@ -70,7 +70,7 @@ class UsageViewTests(test.BaseAdminViewTests):
usage_obj.vcpu_hours,
usage_obj.total_local_gb_usage))
@test.create_stubs({api: ('usage_list',),
@test.create_stubs({api.nova: ('usage_list',),
quotas: ('tenant_quota_usages',),
api.keystone: ('tenant_list',)})
def test_usage_csv(self):
@ -79,10 +79,10 @@ class UsageViewTests(test.BaseAdminViewTests):
quota_data = self.quota_usages.first()
api.keystone.tenant_list(IsA(http.HttpRequest), admin=True) \
.AndReturn(self.tenants.list())
api.usage_list(IsA(http.HttpRequest),
datetime.datetime(now.year, now.month, 1, 0, 0, 0),
Func(usage.almost_now)) \
.AndReturn([usage_obj, usage_obj])
api.nova.usage_list(IsA(http.HttpRequest),
datetime.datetime(now.year, now.month, 1, 0, 0, 0),
Func(usage.almost_now)) \
.AndReturn([usage_obj, usage_obj])
quotas.tenant_quota_usages(IsA(http.HttpRequest)).AndReturn(quota_data)
self.mox.ReplayAll()
csv_url = reverse('horizon:admin:overview:index') + "?format=csv"

View File

@ -65,10 +65,10 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
project_info.update(quota_data)
return project_info
@test.create_stubs({api: ('get_default_role',),
quotas: ('get_default_quota_data',),
api.keystone: ('user_list',
'role_list',)})
@test.create_stubs({api.keystone: ('get_default_role',
'user_list',
'role_list'),
quotas: ('get_default_quota_data',)})
def test_add_project_get(self):
quota = self.quotas.first()
default_role = self.roles.first()
@ -78,7 +78,8 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
quotas.get_default_quota_data(IsA(http.HttpRequest)).AndReturn(quota)
# init
api.get_default_role(IsA(http.HttpRequest)).AndReturn(default_role)
api.keystone.get_default_role(IsA(http.HttpRequest)) \
.AndReturn(default_role)
api.keystone.user_list(IsA(http.HttpRequest)).AndReturn(users)
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
@ -101,9 +102,9 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
'<UpdateProjectMembers: update_members>',
'<UpdateProjectQuota: update_quotas>'])
@test.create_stubs({api: ('get_default_role',
'add_tenant_user_role',),
api.keystone: ('tenant_create',
@test.create_stubs({api.keystone: ('get_default_role',
'add_tenant_user_role',
'tenant_create',
'user_list',
'role_list'),
quotas: ('get_default_quota_data',),
@ -119,7 +120,8 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
# init
quotas.get_default_quota_data(IsA(http.HttpRequest)).AndReturn(quota)
api.get_default_role(IsA(http.HttpRequest)).AndReturn(default_role)
api.keystone.get_default_role(IsA(http.HttpRequest)) \
.AndReturn(default_role)
api.keystone.user_list(IsA(http.HttpRequest)).AndReturn(users)
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
@ -140,10 +142,10 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
if "role_" + role.id in workflow_data:
ulist = workflow_data["role_" + role.id]
for user_id in ulist:
api.add_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id=user_id,
role_id=role.id)
api.keystone.add_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id=user_id,
role_id=role.id)
api.nova.tenant_quota_update(IsA(http.HttpRequest),
project.id,
@ -159,10 +161,10 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
self.assertNoFormErrors(res)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('get_default_role',),
quotas: ('get_default_quota_data',),
api.keystone: ('user_list',
'role_list',)})
@test.create_stubs({api.keystone: ('user_list',
'role_list',
'get_default_role'),
quotas: ('get_default_quota_data',)})
def test_add_project_quota_defaults_error(self):
default_role = self.roles.first()
users = self.users.list()
@ -170,9 +172,10 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
# init
quotas.get_default_quota_data(IsA(http.HttpRequest)) \
.AndRaise(self.exceptions.nova)
.AndRaise(self.exceptions.nova)
api.get_default_role(IsA(http.HttpRequest)).AndReturn(default_role)
api.keystone.get_default_role(IsA(http.HttpRequest)) \
.AndReturn(default_role)
api.keystone.user_list(IsA(http.HttpRequest)).AndReturn(users)
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
@ -184,11 +187,11 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
self.assertTemplateUsed(res, 'admin/projects/create.html')
self.assertContains(res, "Unable to retrieve default quota values")
@test.create_stubs({api: ('get_default_role',),
quotas: ('get_default_quota_data',),
api.keystone: ('tenant_create',
@test.create_stubs({api.keystone: ('tenant_create',
'user_list',
'role_list',)})
'role_list',
'get_default_role'),
quotas: ('get_default_quota_data',)})
def test_add_project_tenant_create_error(self):
project = self.tenants.first()
quota = self.quotas.first()
@ -199,7 +202,8 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
# init
quotas.get_default_quota_data(IsA(http.HttpRequest)).AndReturn(quota)
api.get_default_role(IsA(http.HttpRequest)).AndReturn(default_role)
api.keystone.get_default_role(IsA(http.HttpRequest)) \
.AndReturn(default_role)
api.keystone.user_list(IsA(http.HttpRequest)).AndReturn(users)
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
@ -222,11 +226,11 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
self.assertNoFormErrors(res)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('get_default_role',
'add_tenant_user_role',),
api.keystone: ('tenant_create',
@test.create_stubs({api.keystone: ('tenant_create',
'user_list',
'role_list'),
'role_list',
'get_default_role',
'add_tenant_user_role'),
quotas: ('get_default_quota_data',),
api.nova: ('tenant_quota_update',)})
def test_add_project_quota_update_error(self):
@ -239,7 +243,8 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
# init
quotas.get_default_quota_data(IsA(http.HttpRequest)).AndReturn(quota)
api.get_default_role(IsA(http.HttpRequest)).AndReturn(default_role)
api.keystone.get_default_role(IsA(http.HttpRequest)) \
.AndReturn(default_role)
api.keystone.user_list(IsA(http.HttpRequest)).AndReturn(users)
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
@ -251,7 +256,7 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
quota_data = self._get_quota_info(quota)
api.keystone.tenant_create(IsA(http.HttpRequest), **project_details) \
.AndReturn(project)
.AndReturn(project)
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
@ -260,10 +265,10 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
if "role_" + role.id in workflow_data:
ulist = workflow_data["role_" + role.id]
for user_id in ulist:
api.add_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id=user_id,
role_id=role.id)
api.keystone.add_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id=user_id,
role_id=role.id)
api.nova.tenant_quota_update(IsA(http.HttpRequest),
project.id,
@ -280,11 +285,11 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
self.assertNoFormErrors(res)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('get_default_role',
'add_tenant_user_role',),
api.keystone: ('tenant_create',
@test.create_stubs({api.keystone: ('tenant_create',
'user_list',
'role_list',),
'role_list',
'get_default_role',
'add_tenant_user_role'),
quotas: ('get_default_quota_data',),
api.nova: ('tenant_quota_update',)})
def test_add_project_user_update_error(self):
@ -297,7 +302,8 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
# init
quotas.get_default_quota_data(IsA(http.HttpRequest)).AndReturn(quota)
api.get_default_role(IsA(http.HttpRequest)).AndReturn(default_role)
api.keystone.get_default_role(IsA(http.HttpRequest)) \
.AndReturn(default_role)
api.keystone.user_list(IsA(http.HttpRequest)).AndReturn(users)
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
@ -318,10 +324,10 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
if "role_" + role.id in workflow_data:
ulist = workflow_data["role_" + role.id]
for user_id in ulist:
api.add_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id=user_id,
role_id=role.id) \
api.keystone.add_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id=user_id,
role_id=role.id) \
.AndRaise(self.exceptions.keystone)
break
break
@ -340,10 +346,10 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
self.assertNoFormErrors(res)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('get_default_role',),
quotas: ('get_default_quota_data',),
api.keystone: ('user_list',
'role_list',)})
@test.create_stubs({api.keystone: ('user_list',
'role_list',
'get_default_role'),
quotas: ('get_default_quota_data',)})
def test_add_project_missing_field_error(self):
project = self.tenants.first()
quota = self.quotas.first()
@ -354,7 +360,8 @@ class CreateProjectWorkflowTests(test.BaseAdminViewTests):
# init
quotas.get_default_quota_data(IsA(http.HttpRequest)).AndReturn(quota)
api.get_default_role(IsA(http.HttpRequest)).AndReturn(default_role)
api.keystone.get_default_role(IsA(http.HttpRequest)) \
.AndReturn(default_role)
api.keystone.user_list(IsA(http.HttpRequest)).AndReturn(users)
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
@ -379,12 +386,12 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
quota_data[field] = int(quota.get(field).limit)
return quota_data
@test.create_stubs({api: ('get_default_role',
'roles_for_user',
'tenant_get',),
quotas: ('get_tenant_quota_data',),
api.keystone: ('user_list',
'role_list',)})
@test.create_stubs({api.keystone: ('get_default_role',
'roles_for_user',
'tenant_get',
'user_list',
'role_list'),
quotas: ('get_tenant_quota_data',)})
def test_update_project_get(self):
project = self.tenants.first()
quota = self.quotas.first()
@ -392,18 +399,20 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
users = self.users.list()
roles = self.roles.list()
api.tenant_get(IsA(http.HttpRequest), self.tenant.id, admin=True) \
api.keystone.tenant_get(IsA(http.HttpRequest),
self.tenant.id, admin=True) \
.AndReturn(project)
quotas.get_tenant_quota_data(IsA(http.HttpRequest)).AndReturn(quota)
api.get_default_role(IsA(http.HttpRequest)).AndReturn(default_role)
api.keystone.get_default_role(IsA(http.HttpRequest)) \
.AndReturn(default_role)
api.keystone.user_list(IsA(http.HttpRequest)).AndReturn(users)
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
for user in users:
api.roles_for_user(IsA(http.HttpRequest),
user.id,
self.tenant.id).AndReturn(roles)
api.keystone.roles_for_user(IsA(http.HttpRequest),
user.id,
self.tenant.id).AndReturn(roles)
self.mox.ReplayAll()
@ -428,17 +437,17 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
'<UpdateProjectMembers: update_members>',
'<UpdateProjectQuota: update_quotas>'])
@test.create_stubs({api: ('tenant_get',
'tenant_update',
'get_default_role',
'roles_for_user',
'remove_tenant_user_role',
'add_tenant_user_role'),
@test.create_stubs({api.keystone: ('tenant_get',
'tenant_update',
'get_default_role',
'roles_for_user',
'remove_tenant_user_role',
'add_tenant_user_role',
'user_list',
'role_list'),
api.nova: ('tenant_quota_update',),
api.cinder: ('tenant_quota_update',),
quotas: ('get_tenant_quota_data',),
api.keystone: ('user_list',
'role_list',)})
quotas: ('get_tenant_quota_data',)})
def test_update_project_save(self):
project = self.tenants.first()
quota = self.quotas.first()
@ -447,19 +456,21 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
roles = self.roles.list()
# get/init
api.tenant_get(IsA(http.HttpRequest), self.tenant.id, admin=True) \
api.keystone.tenant_get(IsA(http.HttpRequest),
self.tenant.id, admin=True) \
.AndReturn(project)
quotas.get_tenant_quota_data(IsA(http.HttpRequest)).AndReturn(quota)
api.get_default_role(IsA(http.HttpRequest)).AndReturn(default_role)
api.keystone.get_default_role(IsA(http.HttpRequest)) \
.AndReturn(default_role)
api.keystone.user_list(IsA(http.HttpRequest)).AndReturn(users)
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
workflow_data = {}
for user in users:
api.roles_for_user(IsA(http.HttpRequest),
user.id,
self.tenant.id).AndReturn(roles)
api.keystone.roles_for_user(IsA(http.HttpRequest),
user.id,
self.tenant.id).AndReturn(roles)
workflow_data["role_1"] = ['3'] # admin role
workflow_data["role_2"] = ['2'] # member role
@ -480,7 +491,7 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
# handle
api.tenant_update(IsA(http.HttpRequest), **updated_project) \
api.keystone.tenant_update(IsA(http.HttpRequest), **updated_project) \
.AndReturn(project)
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
@ -488,40 +499,43 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
tenant_id=self.tenant.id).AndReturn(users)
# admin user - try to remove all roles on current project, warning
api.roles_for_user(IsA(http.HttpRequest), '1', self.tenant.id) \
api.keystone.roles_for_user(IsA(http.HttpRequest), '1',
self.tenant.id) \
.AndReturn(roles)
# member user 1 - has role 1, will remove it
api.roles_for_user(IsA(http.HttpRequest), '2', self.tenant.id) \
api.keystone.roles_for_user(IsA(http.HttpRequest), '2',
self.tenant.id) \
.AndReturn((roles[0],))
# remove role 1
api.remove_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id='2',
role_id='1')
api.keystone.remove_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id='2',
role_id='1')
# add role 2
api.add_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id='2',
role_id='2')
api.keystone.add_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id='2',
role_id='2')
# member user 3 - has role 2
api.roles_for_user(IsA(http.HttpRequest), '3', self.tenant.id) \
api.keystone.roles_for_user(IsA(http.HttpRequest), '3',
self.tenant.id) \
.AndReturn((roles[1],))
# remove role 2
api.remove_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id='3',
role_id='2')
api.keystone.remove_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id='3',
role_id='2')
# add role 1
api.add_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id='3',
role_id='1')
api.keystone.add_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id='3',
role_id='1')
api.nova.tenant_quota_update(IsA(http.HttpRequest),
project.id,
**updated_quota)
project.id,
**updated_quota)
api.cinder.tenant_quota_update(IsA(http.HttpRequest),
project.id,
volumes=updated_quota['volumes'],
@ -543,10 +557,11 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
self.assertMessageCount(error=0, warning=1)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('tenant_get',)})
@test.create_stubs({api.keystone: ('tenant_get',)})
def test_update_project_get_error(self):
api.tenant_get(IsA(http.HttpRequest), self.tenant.id, admin=True) \
api.keystone.tenant_get(IsA(http.HttpRequest), self.tenant.id,
admin=True) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
@ -557,16 +572,16 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('tenant_get',
'tenant_update',
'get_default_role',
'roles_for_user',
'remove_tenant_user',
'add_tenant_user_role'),
@test.create_stubs({api.keystone: ('tenant_get',
'tenant_update',
'get_default_role',
'roles_for_user',
'remove_tenant_user',
'add_tenant_user_role',
'user_list',
'role_list'),
quotas: ('get_tenant_quota_data',),
api.nova: ('tenant_quota_update',),
api.keystone: ('user_list',
'role_list',)})
api.nova: ('tenant_quota_update',)})
def test_update_project_tenant_update_error(self):
project = self.tenants.first()
quota = self.quotas.first()
@ -575,19 +590,21 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
roles = self.roles.list()
# get/init
api.tenant_get(IsA(http.HttpRequest), self.tenant.id, admin=True) \
api.keystone.tenant_get(IsA(http.HttpRequest), self.tenant.id,
admin=True) \
.AndReturn(project)
quotas.get_tenant_quota_data(IsA(http.HttpRequest)).AndReturn(quota)
api.get_default_role(IsA(http.HttpRequest)).AndReturn(default_role)
api.keystone.get_default_role(IsA(http.HttpRequest)) \
.AndReturn(default_role)
api.keystone.user_list(IsA(http.HttpRequest)).AndReturn(users)
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
workflow_data = {}
for user in users:
api.roles_for_user(IsA(http.HttpRequest),
user.id,
self.tenant.id).AndReturn(roles)
api.keystone.roles_for_user(IsA(http.HttpRequest),
user.id,
self.tenant.id).AndReturn(roles)
role_ids = [role.id for role in roles]
if role_ids:
workflow_data.setdefault("role_" + role_ids[0], []) \
@ -609,7 +626,7 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
# handle
api.tenant_update(IsA(http.HttpRequest), **updated_project) \
api.keystone.tenant_update(IsA(http.HttpRequest), **updated_project) \
.AndRaise(self.exceptions.keystone)
self.mox.ReplayAll()
@ -628,16 +645,16 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
self.assertNoFormErrors(res)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('tenant_get',
'tenant_update',
'get_default_role',
'roles_for_user',
'remove_tenant_user_role',
'add_tenant_user_role'),
@test.create_stubs({api.keystone: ('tenant_get',
'tenant_update',
'get_default_role',
'roles_for_user',
'remove_tenant_user_role',
'add_tenant_user_role',
'user_list',
'role_list'),
quotas: ('get_tenant_quota_data',),
api.nova: ('tenant_quota_update',),
api.keystone: ('user_list',
'role_list',)})
api.nova: ('tenant_quota_update',)})
def test_update_project_quota_update_error(self):
project = self.tenants.first()
quota = self.quotas.first()
@ -646,20 +663,22 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
roles = self.roles.list()
# get/init
api.tenant_get(IsA(http.HttpRequest), self.tenant.id, admin=True) \
api.keystone.tenant_get(IsA(http.HttpRequest), self.tenant.id,
admin=True) \
.AndReturn(project)
quotas.get_tenant_quota_data(IsA(http.HttpRequest)).AndReturn(quota)
api.get_default_role(IsA(http.HttpRequest)).AndReturn(default_role)
api.keystone.get_default_role(IsA(http.HttpRequest)) \
.AndReturn(default_role)
api.keystone.user_list(IsA(http.HttpRequest)).AndReturn(users)
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
workflow_data = {}
for user in users:
api.roles_for_user(IsA(http.HttpRequest),
user.id,
self.tenant.id).AndReturn(roles)
api.keystone.roles_for_user(IsA(http.HttpRequest),
user.id,
self.tenant.id).AndReturn(roles)
workflow_data["role_1"] = ['1', '3'] # admin role
workflow_data["role_2"] = ['1', '2', '3'] # member role
@ -681,7 +700,7 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
# handle
# handle
api.tenant_update(IsA(http.HttpRequest), **updated_project) \
api.keystone.tenant_update(IsA(http.HttpRequest), **updated_project) \
.AndReturn(project)
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
@ -689,25 +708,29 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
tenant_id=self.tenant.id).AndReturn(users)
# admin user - try to remove all roles on current project, warning
api.roles_for_user(IsA(http.HttpRequest), '1', self.tenant.id) \
api.keystone.roles_for_user(IsA(http.HttpRequest), '1',
self.tenant.id) \
.AndReturn(roles)
# member user 1 - has role 1, will remove it
api.roles_for_user(IsA(http.HttpRequest), '2', self.tenant.id) \
api.keystone.roles_for_user(IsA(http.HttpRequest), '2',
self.tenant.id) \
.AndReturn((roles[1],))
# member user 3 - has role 2
api.roles_for_user(IsA(http.HttpRequest), '3', self.tenant.id) \
api.keystone.roles_for_user(IsA(http.HttpRequest), '3',
self.tenant.id) \
.AndReturn((roles[0],))
# add role 2
api.add_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id='3',
role_id='2')
api.keystone.add_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id='3',
role_id='2')
api.nova.tenant_quota_update(IsA(http.HttpRequest),
project.id,
**updated_quota).AndRaise(self.exceptions.nova)
project.id,
**updated_quota) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
@ -726,15 +749,15 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
self.assertMessageCount(error=1, warning=0)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('tenant_get',
'tenant_update',
'get_default_role',
'roles_for_user',
'remove_tenant_user_role',
'add_tenant_user_role'),
quotas: ('get_tenant_quota_data',),
api.keystone: ('user_list',
'role_list',)})
@test.create_stubs({api.keystone: ('tenant_get',
'tenant_update',
'get_default_role',
'roles_for_user',
'remove_tenant_user_role',
'add_tenant_user_role',
'user_list',
'role_list'),
quotas: ('get_tenant_quota_data',)})
def test_update_project_member_update_error(self):
project = self.tenants.first()
quota = self.quotas.first()
@ -743,19 +766,21 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
roles = self.roles.list()
# get/init
api.tenant_get(IsA(http.HttpRequest), self.tenant.id, admin=True) \
api.keystone.tenant_get(IsA(http.HttpRequest), self.tenant.id,
admin=True) \
.AndReturn(project)
quotas.get_tenant_quota_data(IsA(http.HttpRequest)).AndReturn(quota)
api.get_default_role(IsA(http.HttpRequest)).AndReturn(default_role)
api.keystone.get_default_role(IsA(http.HttpRequest)) \
.AndReturn(default_role)
api.keystone.user_list(IsA(http.HttpRequest)).AndReturn(users)
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
workflow_data = {}
for user in users:
api.roles_for_user(IsA(http.HttpRequest),
user.id,
self.tenant.id).AndReturn(roles)
api.keystone.roles_for_user(IsA(http.HttpRequest),
user.id,
self.tenant.id).AndReturn(roles)
workflow_data["role_1"] = ['1', '3'] # admin role
workflow_data["role_2"] = ['1', '2', '3'] # member role
@ -775,7 +800,7 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
# handle
api.tenant_update(IsA(http.HttpRequest), **updated_project) \
api.keystone.tenant_update(IsA(http.HttpRequest), **updated_project) \
.AndReturn(project)
api.keystone.role_list(IsA(http.HttpRequest)).AndReturn(roles)
@ -783,21 +808,24 @@ class UpdateProjectWorkflowTests(test.BaseAdminViewTests):
tenant_id=self.tenant.id).AndReturn(users)
# admin user - try to remove all roles on current project, warning
api.roles_for_user(IsA(http.HttpRequest), '1', self.tenant.id) \
api.keystone.roles_for_user(IsA(http.HttpRequest), '1',
self.tenant.id) \
.AndReturn(roles)
# member user 1 - has role 1, will remove it
api.roles_for_user(IsA(http.HttpRequest), '2', self.tenant.id) \
api.keystone.roles_for_user(IsA(http.HttpRequest), '2',
self.tenant.id) \
.AndReturn((roles[1],))
# member user 3 - has role 2
api.roles_for_user(IsA(http.HttpRequest), '3', self.tenant.id) \
api.keystone.roles_for_user(IsA(http.HttpRequest), '3',
self.tenant.id) \
.AndReturn((roles[0],))
# add role 2
api.add_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id='3',
role_id='2')\
api.keystone.add_tenant_user_role(IsA(http.HttpRequest),
tenant_id=self.tenant.id,
user_id='3',
role_id='2')\
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()

View File

@ -169,7 +169,8 @@ class UpdateProjectView(workflows.WorkflowView):
try:
# get initial project info
project_info = api.tenant_get(self.request, project_id, admin=True)
project_info = api.keystone.tenant_get(self.request, project_id,
admin=True)
for field in PROJECT_INFO_FIELDS:
initial[field] = getattr(project_info, field, None)
@ -197,7 +198,8 @@ class CreateUserView(CreateView):
def get_context_data(self, **kwargs):
context = super(CreateUserView, self).get_context_data(**kwargs)
context['tenant_id'] = self.kwargs['tenant_id']
context['tenant_name'] = api.tenant_get(self.request,
self.kwargs['tenant_id'],
admin=True).name
context['tenant_name'] = api.keystone.tenant_get(
self.request,
self.kwargs['tenant_id'],
admin=True).name
return context

View File

@ -110,7 +110,7 @@ class UpdateProjectMembersAction(workflows.Action):
# Get the default role
try:
default_role = api.get_default_role(self.request).id
default_role = api.keystone.get_default_role(self.request).id
except:
exceptions.handle(self.request,
err_msg,
@ -145,9 +145,9 @@ class UpdateProjectMembersAction(workflows.Action):
if project_id:
for user in all_users:
try:
roles = api.roles_for_user(self.request,
user.id,
project_id)
roles = api.keystone.roles_for_user(self.request,
user.id,
project_id)
except:
exceptions.handle(request,
err_msg,
@ -222,10 +222,10 @@ class CreateProject(workflows.Workflow):
role_list = data["role_" + role.id]
users_added = 0
for user in role_list:
api.add_tenant_user_role(request,
tenant_id=project_id,
user_id=user,
role_id=role.id)
api.keystone.add_tenant_user_role(request,
tenant_id=project_id,
user_id=user,
role_id=role.id)
users_added += 1
users_to_add -= users_added
except:
@ -287,11 +287,11 @@ class UpdateProject(workflows.Workflow):
project_id = data['project_id']
# update project info
try:
api.tenant_update(request,
tenant_id=project_id,
tenant_name=data['name'],
description=data['description'],
enabled=data['enabled'])
api.keystone.tenant_update(request,
tenant_id=project_id,
tenant_name=data['name'],
description=data['description'],
enabled=data['enabled'])
except:
exceptions.handle(request, ignore=True)
return False
@ -305,9 +305,9 @@ class UpdateProject(workflows.Workflow):
users_to_modify = len(project_members)
for user in project_members:
current_roles = [role for role in
api.roles_for_user(self.request,
user.id,
project_id)]
api.keystone.roles_for_user(self.request,
user.id,
project_id)]
effective_roles = []
for role in available_roles:
role_list = data["role_" + role.id]
@ -315,10 +315,11 @@ class UpdateProject(workflows.Workflow):
effective_roles.append(role)
if role not in current_roles:
# user role has changed
api.add_tenant_user_role(request,
tenant_id=project_id,
user_id=user.id,
role_id=role.id)
api.keystone.add_tenant_user_role(
request,
tenant_id=project_id,
user_id=user.id,
role_id=role.id)
else:
# user role is unchanged
current_roles.pop(current_roles.index(role))
@ -334,10 +335,11 @@ class UpdateProject(workflows.Workflow):
else:
# delete user's removed roles
for to_delete in current_roles:
api.remove_tenant_user_role(request,
tenant_id=project_id,
user_id=user.id,
role_id=to_delete.id)
api.keystone.remove_tenant_user_role(
request,
tenant_id=project_id,
user_id=user.id,
role_id=to_delete.id)
users_to_modify -= 1
# add new roles to project
@ -350,10 +352,10 @@ class UpdateProject(workflows.Workflow):
users_added = 0
for user_id in role_list:
if not filter(lambda x: user_id == x.id, project_members):
api.add_tenant_user_role(request,
tenant_id=project_id,
user_id=user_id,
role_id=role.id)
api.keystone.add_tenant_user_role(request,
tenant_id=project_id,
user_id=user_id,
role_id=role.id)
users_added += 1
users_to_modify -= users_added
except:

View File

@ -45,7 +45,7 @@ class UpdateRow(tables.Row):
ajax = True
def get_data(self, request, router_id):
router = api.router_get(request, router_id)
router = api.quantum.router_get(request, router_id)
return router

View File

@ -41,7 +41,7 @@ class BaseUserForm(forms.SelfHandlingForm):
# Populate tenant choices
tenant_choices = [('', _("Select a project"))]
for tenant in api.tenant_list(request, admin=True):
for tenant in api.keystone.tenant_list(request, admin=True):
if tenant.enabled:
tenant_choices.append((tenant.id, tenant.name))
self.fields['tenant_id'].choices = tenant_choices
@ -86,18 +86,18 @@ class CreateUserForm(BaseUserForm):
def handle(self, request, data):
try:
LOG.info('Creating user with name "%s"' % data['name'])
new_user = api.user_create(request,
data['name'],
data['email'],
data['password'],
data['tenant_id'],
True)
new_user = api.keystone.user_create(request,
data['name'],
data['email'],
data['password'],
data['tenant_id'],
True)
messages.success(request,
_('User "%s" was successfully created.')
% data['name'])
if data['role_id']:
try:
api.add_tenant_user_role(request,
api.keystone.add_tenant_user_role(request,
data['tenant_id'],
new_user.id,
data['role_id'])
@ -129,7 +129,7 @@ class UpdateUserForm(BaseUserForm):
def __init__(self, request, *args, **kwargs):
super(UpdateUserForm, self).__init__(request, *args, **kwargs)
if api.keystone_can_edit_user() is False:
if api.keystone.keystone_can_edit_user() is False:
for field in ('name', 'email', 'password', 'confirm_password'):
self.fields.pop(field)
@ -138,7 +138,7 @@ class UpdateUserForm(BaseUserForm):
@sensitive_variables('data', 'password')
def handle(self, request, data):
failed, succeeded = [], []
user_is_editable = api.keystone_can_edit_user()
user_is_editable = api.keystone.keystone_can_edit_user()
user = data.pop('id')
tenant = data.pop('tenant_id')
@ -159,7 +159,7 @@ class UpdateUserForm(BaseUserForm):
# Update default tenant
msg_bits = (_('primary project'),)
try:
api.user_update_tenant(request, user, tenant)
api.keystone.user_update_tenant(request, user, tenant)
succeeded.extend(msg_bits)
except:
failed.append(msg_bits)
@ -180,7 +180,7 @@ class UpdateUserForm(BaseUserForm):
if password:
msg_bits = (_('password'),)
try:
api.user_update_password(request, user, password)
api.keystone.user_update_password(request, user, password)
succeeded.extend(msg_bits)
except:
failed.extend(msg_bits)

View File

@ -22,7 +22,7 @@ class CreateUserLink(tables.LinkAction):
classes = ("ajax-modal", "btn-create")
def allowed(self, request, user):
if api.keystone_can_edit_user():
if api.keystone.keystone_can_edit_user():
return True
return False
@ -76,7 +76,7 @@ class DeleteUsersAction(tables.DeleteAction):
data_type_plural = _("Users")
def allowed(self, request, datum):
if not api.keystone_can_edit_user() or \
if not api.keystone.keystone_can_edit_user() or \
(datum and datum.id == request.user.id):
return False
return True

View File

@ -46,25 +46,27 @@ class UsersViewTests(test.BaseAdminViewTests):
self.assertTemplateUsed(res, 'admin/users/index.html')
self.assertItemsEqual(res.context['table'].data, self.users.list())
@test.create_stubs({api: ('user_create',
'tenant_list',
'add_tenant_user_role'),
api.keystone: ('get_default_role',
@test.create_stubs({api.keystone: ('user_create',
'tenant_list',
'add_tenant_user_role',
'get_default_role',
'role_list')})
def test_create(self):
user = self.users.get(id="1")
role = self.roles.first()
api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())
api.user_create(IgnoreArg(),
user.name,
user.email,
user.password,
self.tenant.id,
True).AndReturn(user)
api.keystone.tenant_list(IgnoreArg(), admin=True) \
.AndReturn(self.tenants.list())
api.keystone.user_create(IgnoreArg(),
user.name,
user.email,
user.password,
self.tenant.id,
True).AndReturn(user)
api.keystone.role_list(IgnoreArg()).AndReturn(self.roles.list())
api.keystone.get_default_role(IgnoreArg()).AndReturn(role)
api.add_tenant_user_role(IgnoreArg(), self.tenant.id, user.id, role.id)
api.keystone.add_tenant_user_role(IgnoreArg(), self.tenant.id,
user.id, role.id)
self.mox.ReplayAll()
@ -80,12 +82,14 @@ class UsersViewTests(test.BaseAdminViewTests):
self.assertNoFormErrors(res)
self.assertMessageCount(success=1)
@test.create_stubs({api: ('tenant_list',),
api.keystone: ('role_list', 'get_default_role')})
@test.create_stubs({api.keystone: ('tenant_list',
'role_list',
'get_default_role')})
def test_create_with_password_mismatch(self):
user = self.users.get(id="1")
api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())
api.keystone.tenant_list(IgnoreArg(), admin=True) \
.AndReturn(self.tenants.list())
api.keystone.role_list(IgnoreArg()).AndReturn(self.roles.list())
api.keystone.get_default_role(IgnoreArg()) \
.AndReturn(self.roles.first())
@ -104,12 +108,14 @@ class UsersViewTests(test.BaseAdminViewTests):
self.assertFormError(res, "form", None, ['Passwords do not match.'])
@test.create_stubs({api: ('tenant_list',),
api.keystone: ('role_list', 'get_default_role')})
@test.create_stubs({api.keystone: ('tenant_list',
'role_list',
'get_default_role')})
def test_create_validation_for_password_too_short(self):
user = self.users.get(id="1")
api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())
api.keystone.tenant_list(IgnoreArg(), admin=True) \
.AndReturn(self.tenants.list())
api.keystone.role_list(IgnoreArg()).AndReturn(self.roles.list())
api.keystone.get_default_role(IgnoreArg()) \
.AndReturn(self.roles.first())
@ -131,12 +137,14 @@ class UsersViewTests(test.BaseAdminViewTests):
res, "form", 'password',
['Password must be between 8 and 18 characters.'])
@test.create_stubs({api: ('tenant_list',),
api.keystone: ('role_list', 'get_default_role')})
@test.create_stubs({api.keystone: ('tenant_list',
'role_list',
'get_default_role')})
def test_create_validation_for_password_too_long(self):
user = self.users.get(id="1")
api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())
api.keystone.tenant_list(IgnoreArg(), admin=True) \
.AndReturn(self.tenants.list())
api.keystone.role_list(IgnoreArg()).AndReturn(self.roles.list())
api.keystone.get_default_role(IgnoreArg()) \
.AndReturn(self.roles.first())
@ -158,32 +166,32 @@ class UsersViewTests(test.BaseAdminViewTests):
res, "form", 'password',
['Password must be between 8 and 18 characters.'])
@test.create_stubs({api: ('user_get',
'tenant_list',
'user_update_tenant',
'user_update_password'),
api.keystone: ('user_update',
@test.create_stubs({api.keystone: ('user_get',
'tenant_list',
'user_update_tenant',
'user_update_password',
'user_update',
'roles_for_user', )})
def test_update(self):
user = self.users.get(id="1")
api.user_get(IsA(http.HttpRequest), '1',
api.keystone.user_get(IsA(http.HttpRequest), '1',
admin=True).AndReturn(user)
api.tenant_list(IgnoreArg(),
api.keystone.tenant_list(IgnoreArg(),
admin=True).AndReturn(self.tenants.list())
api.keystone.user_update(IsA(http.HttpRequest),
user.id,
email=u'test@example.com',
name=u'test_user').AndReturn(None)
api.user_update_tenant(IsA(http.HttpRequest),
api.keystone.user_update_tenant(IsA(http.HttpRequest),
user.id,
self.tenant.id).AndReturn(None)
api.keystone.roles_for_user(IsA(http.HttpRequest),
user.id,
self.tenant.id).AndReturn(None)
api.user_update_password(IsA(http.HttpRequest),
user.id,
IgnoreArg()).AndReturn(None)
api.keystone.user_update_password(IsA(http.HttpRequest),
user.id,
IgnoreArg()).AndReturn(None)
self.mox.ReplayAll()
@ -200,23 +208,24 @@ class UsersViewTests(test.BaseAdminViewTests):
self.assertNoFormErrors(res)
self.assertMessageCount(warning=1)
@test.create_stubs({api: ('user_get',
'tenant_list',
'user_update_tenant',
'keystone_can_edit_user'),
api.keystone: ('roles_for_user', )})
@test.create_stubs({api.keystone: ('user_get',
'tenant_list',
'user_update_tenant',
'keystone_can_edit_user',
'roles_for_user', )})
def test_update_with_keystone_can_edit_user_false(self):
user = self.users.get(id="1")
api.user_get(IsA(http.HttpRequest),
api.keystone.user_get(IsA(http.HttpRequest),
'1',
admin=True).AndReturn(user)
api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())
api.keystone_can_edit_user().AndReturn(False)
api.keystone_can_edit_user().AndReturn(False)
api.user_update_tenant(IsA(http.HttpRequest),
user.id,
self.tenant.id).AndReturn(None)
api.keystone.tenant_list(IgnoreArg(), admin=True) \
.AndReturn(self.tenants.list())
api.keystone.keystone_can_edit_user().AndReturn(False)
api.keystone.keystone_can_edit_user().AndReturn(False)
api.keystone.user_update_tenant(IsA(http.HttpRequest),
user.id,
self.tenant.id).AndReturn(None)
api.keystone.roles_for_user(IsA(http.HttpRequest),
user.id,
self.tenant.id).AndReturn(None)
@ -233,14 +242,14 @@ class UsersViewTests(test.BaseAdminViewTests):
self.assertNoFormErrors(res)
self.assertMessageCount(warning=1)
@test.create_stubs({api: ('user_get', 'tenant_list')})
@test.create_stubs({api.keystone: ('user_get', 'tenant_list')})
def test_update_validation_for_password_too_short(self):
user = self.users.get(id="1")
api.user_get(IsA(http.HttpRequest), '1',
admin=True).AndReturn(user)
api.tenant_list(IgnoreArg(),
admin=True).AndReturn(self.tenants.list())
api.keystone.user_get(IsA(http.HttpRequest), '1',
admin=True).AndReturn(user)
api.keystone.tenant_list(IgnoreArg(),
admin=True).AndReturn(self.tenants.list())
self.mox.ReplayAll()
@ -258,14 +267,14 @@ class UsersViewTests(test.BaseAdminViewTests):
res, "form", 'password',
['Password must be between 8 and 18 characters.'])
@test.create_stubs({api: ('user_get', 'tenant_list')})
@test.create_stubs({api.keystone: ('user_get', 'tenant_list')})
def test_update_validation_for_password_too_long(self):
user = self.users.get(id="1")
api.user_get(IsA(http.HttpRequest), '1',
admin=True).AndReturn(user)
api.tenant_list(IgnoreArg(),
admin=True).AndReturn(self.tenants.list())
api.keystone.user_get(IsA(http.HttpRequest), '1',
admin=True).AndReturn(user)
api.keystone.tenant_list(IgnoreArg(),
admin=True).AndReturn(self.tenants.list())
self.mox.ReplayAll()
@ -360,11 +369,13 @@ class UsersViewTests(test.BaseAdminViewTests):
class SeleniumTests(test.SeleniumAdminTestCase):
@test.create_stubs({api: ('tenant_list',),
api.keystone: ('get_default_role', 'role_list',
@test.create_stubs({api.keystone: ('tenant_list',
'get_default_role',
'role_list',
'user_list')})
def test_modal_create_user_with_passwords_not_matching(self):
api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())
api.keystone.tenant_list(IgnoreArg(), admin=True) \
.AndReturn(self.tenants.list())
api.keystone.role_list(IgnoreArg()).AndReturn(self.roles.list())
api.keystone.user_list(IgnoreArg()).AndReturn(self.users.list())
api.keystone.get_default_role(IgnoreArg()) \
@ -391,11 +402,12 @@ class SeleniumTests(test.SeleniumAdminTestCase):
self.assertTrue("Passwords do not match" in body.text,
"Error message not found in body")
@test.create_stubs({api: ('tenant_list', 'user_get')})
@test.create_stubs({api.keystone: ('tenant_list', 'user_get')})
def test_update_user_with_passwords_not_matching(self):
api.user_get(IsA(http.HttpRequest), '1',
admin=True).AndReturn(self.user)
api.tenant_list(IgnoreArg(), admin=True).AndReturn(self.tenants.list())
api.keystone.user_get(IsA(http.HttpRequest), '1',
admin=True).AndReturn(self.user)
api.keystone.tenant_list(IgnoreArg(), admin=True) \
.AndReturn(self.tenants.list())
self.mox.ReplayAll()
self.selenium.get("%s%s" % (self.live_server_url, USER_UPDATE_URL))

View File

@ -61,9 +61,9 @@ class UpdateView(forms.ModalFormView):
def get_object(self):
if not hasattr(self, "_object"):
try:
self._object = api.user_get(self.request,
self.kwargs['user_id'],
admin=True)
self._object = api.keystone.user_get(self.request,
self.kwargs['user_id'],
admin=True)
except:
redirect = reverse("horizon:admin:users:index")
exceptions.handle(self.request,

View File

@ -38,7 +38,8 @@ class FloatingIpAllocate(forms.SelfHandlingForm):
def handle(self, request, data):
try:
fip = api.tenant_floating_ip_allocate(request, pool=data['pool'])
fip = api.nova.tenant_floating_ip_allocate(request,
pool=data['pool'])
messages.success(request,
_('Allocated Floating IP %(ip)s.')
% {"ip": fip.ip})

View File

@ -53,7 +53,7 @@ class ReleaseIPs(tables.BatchAction):
classes = ('btn-danger', 'btn-release')
def action(self, request, obj_id):
api.tenant_floating_ip_release(request, obj_id)
api.nova.tenant_floating_ip_release(request, obj_id)
class AssociateIP(tables.LinkAction):
@ -86,7 +86,8 @@ class DisassociateIP(tables.Action):
def single(self, table, request, obj_id):
try:
fip = table.get_object_by_id(get_int_or_uuid(obj_id))
api.server_remove_floating_ip(request, fip.instance_id, fip.id)
api.nova.server_remove_floating_ip(request, fip.instance_id,
fip.id)
LOG.info('Disassociating Floating IP "%s".' % obj_id)
messages.success(request,
_('Successfully disassociated Floating IP: %s')

View File

@ -127,23 +127,23 @@ class FloatingIpViewTests(test.TestCase):
floating_ip = self.floating_ips.first()
server = self.servers.first()
self.mox.StubOutWithMock(api.nova, 'keypair_list')
self.mox.StubOutWithMock(api, 'security_group_list')
self.mox.StubOutWithMock(api, 'tenant_floating_ip_list')
self.mox.StubOutWithMock(api, 'tenant_floating_ip_get')
self.mox.StubOutWithMock(api, 'server_remove_floating_ip')
self.mox.StubOutWithMock(api.nova, 'security_group_list')
self.mox.StubOutWithMock(api.nova, 'tenant_floating_ip_list')
self.mox.StubOutWithMock(api.nova, 'tenant_floating_ip_get')
self.mox.StubOutWithMock(api.nova, 'server_remove_floating_ip')
self.mox.StubOutWithMock(api.nova, 'server_list')
api.nova.server_list(IsA(http.HttpRequest),
all_tenants=True).AndReturn(self.servers.list())
api.nova.keypair_list(IsA(http.HttpRequest)) \
.AndReturn(self.keypairs.list())
api.security_group_list(IsA(http.HttpRequest)) \
api.nova.security_group_list(IsA(http.HttpRequest)) \
.AndReturn(self.security_groups.list())
api.tenant_floating_ip_list(IsA(http.HttpRequest)) \
api.nova.tenant_floating_ip_list(IsA(http.HttpRequest)) \
.AndReturn(self.floating_ips.list())
api.server_remove_floating_ip(IsA(http.HttpRequest),
server.id,
floating_ip.id)
api.nova.server_remove_floating_ip(IsA(http.HttpRequest),
server.id,
floating_ip.id)
self.mox.ReplayAll()
action = "floating_ips__disassociate__%s" % floating_ip.id
@ -155,25 +155,25 @@ class FloatingIpViewTests(test.TestCase):
floating_ip = self.floating_ips.first()
server = self.servers.first()
self.mox.StubOutWithMock(api.nova, 'keypair_list')
self.mox.StubOutWithMock(api, 'security_group_list')
self.mox.StubOutWithMock(api, 'tenant_floating_ip_list')
self.mox.StubOutWithMock(api, 'tenant_floating_ip_get')
self.mox.StubOutWithMock(api, 'server_remove_floating_ip')
self.mox.StubOutWithMock(api.nova, 'security_group_list')
self.mox.StubOutWithMock(api.nova, 'tenant_floating_ip_list')
self.mox.StubOutWithMock(api.nova, 'tenant_floating_ip_get')
self.mox.StubOutWithMock(api.nova, 'server_remove_floating_ip')
self.mox.StubOutWithMock(api.nova, 'server_list')
api.nova.server_list(IsA(http.HttpRequest),
all_tenants=True).AndReturn(self.servers.list())
api.nova.keypair_list(IsA(http.HttpRequest)) \
.AndReturn(self.keypairs.list())
api.security_group_list(IsA(http.HttpRequest)) \
.AndReturn(self.security_groups.list())
api.tenant_floating_ip_list(IsA(http.HttpRequest)) \
.AndReturn(self.floating_ips.list())
.AndReturn(self.keypairs.list())
api.nova.security_group_list(IsA(http.HttpRequest)) \
.AndReturn(self.security_groups.list())
api.nova.tenant_floating_ip_list(IsA(http.HttpRequest)) \
.AndReturn(self.floating_ips.list())
api.server_remove_floating_ip(IsA(http.HttpRequest),
server.id,
floating_ip.id) \
.AndRaise(self.exceptions.nova)
api.nova.server_remove_floating_ip(IsA(http.HttpRequest),
server.id,
floating_ip.id) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
action = "floating_ips__disassociate__%s" % floating_ip.id

View File

@ -59,7 +59,7 @@ class AllocateView(forms.ModalFormView):
def get_initial(self):
try:
pools = api.floating_ip_pools_list(self.request)
pools = api.nova.floating_ip_pools_list(self.request)
except:
pools = []
exceptions.handle(self.request,

View File

@ -54,9 +54,9 @@ class ImportKeypair(forms.SelfHandlingForm):
try:
# Remove any new lines in the public key
data['public_key'] = NEW_LINES.sub("", data['public_key'])
keypair = api.keypair_import(request,
data['name'],
data['public_key'])
keypair = api.nova.keypair_import(request,
data['name'],
data['public_key'])
messages.success(request, _('Successfully imported public key: %s')
% data['name'])
return keypair

View File

@ -36,15 +36,15 @@ class KeyPairViewTests(test.TestCase):
self.mox.StubOutWithMock(api.nova, 'keypair_list')
self.mox.StubOutWithMock(api.nova, 'keypair_delete')
self.mox.StubOutWithMock(api, 'security_group_list')
self.mox.StubOutWithMock(api, 'tenant_floating_ip_list')
self.mox.StubOutWithMock(api.nova, 'security_group_list')
self.mox.StubOutWithMock(api.nova, 'tenant_floating_ip_list')
self.mox.StubOutWithMock(api.nova, 'server_list')
api.nova.server_list(IsA(http.HttpRequest),
all_tenants=True).AndReturn(self.servers.list())
api.security_group_list(IsA(http.HttpRequest)) \
api.nova.security_group_list(IsA(http.HttpRequest)) \
.AndReturn(self.security_groups.list())
api.tenant_floating_ip_list(IsA(http.HttpRequest)) \
api.nova.tenant_floating_ip_list(IsA(http.HttpRequest)) \
.AndReturn(self.floating_ips.list())
api.nova.keypair_list(IsA(http.HttpRequest)) \
.AndReturn(self.keypairs.list())
@ -59,15 +59,15 @@ class KeyPairViewTests(test.TestCase):
keypair = self.keypairs.first()
self.mox.StubOutWithMock(api.nova, 'keypair_list')
self.mox.StubOutWithMock(api.nova, 'keypair_delete')
self.mox.StubOutWithMock(api, 'security_group_list')
self.mox.StubOutWithMock(api, 'tenant_floating_ip_list')
self.mox.StubOutWithMock(api.nova, 'security_group_list')
self.mox.StubOutWithMock(api.nova, 'tenant_floating_ip_list')
self.mox.StubOutWithMock(api.nova, 'server_list')
api.nova.server_list(IsA(http.HttpRequest),
all_tenants=True).AndReturn(self.servers.list())
api.security_group_list(IsA(http.HttpRequest)) \
api.nova.security_group_list(IsA(http.HttpRequest)) \
.AndReturn(self.security_groups.list())
api.tenant_floating_ip_list(IsA(http.HttpRequest)) \
api.nova.tenant_floating_ip_list(IsA(http.HttpRequest)) \
.AndReturn(self.floating_ips.list())
api.nova.keypair_list(IsA(http.HttpRequest)) \
.AndReturn(self.keypairs.list())
@ -98,9 +98,9 @@ class KeyPairViewTests(test.TestCase):
keypair = self.keypairs.first()
keypair.private_key = "secret"
self.mox.StubOutWithMock(api, 'keypair_create')
api.keypair_create(IsA(http.HttpRequest),
keypair.name).AndReturn(keypair)
self.mox.StubOutWithMock(api.nova, 'keypair_create')
api.nova.keypair_create(IsA(http.HttpRequest),
keypair.name).AndReturn(keypair)
self.mox.ReplayAll()
context = {'keypair_name': keypair.name}
@ -110,15 +110,14 @@ class KeyPairViewTests(test.TestCase):
self.assertTrue(res.has_header('content-disposition'))
@test.create_stubs({api: ("keypair_import",)})
@test.create_stubs({api.nova: ("keypair_import",)})
def test_import_keypair(self):
key1_name = "new key pair"
public_key = "ssh-rsa ABCDEFGHIJKLMNOPQR\r\n" \
"STUVWXYZ1234567890\r" \
"XXYYZZ user@computer\n\n"
api.keypair_import(IsA(http.HttpRequest), key1_name,
public_key.replace("\r", "")
.replace("\n", ""))
api.nova.keypair_import(IsA(http.HttpRequest), key1_name,
public_key.replace("\r", "").replace("\n", ""))
self.mox.ReplayAll()
formData = {'method': 'ImportKeypair',
@ -132,8 +131,8 @@ class KeyPairViewTests(test.TestCase):
key_name = "new key pair"
public_key = "ABCDEF"
self.mox.StubOutWithMock(api, 'keypair_import')
api.keypair_import(IsA(http.HttpRequest), key_name, public_key) \
self.mox.StubOutWithMock(api.nova, 'keypair_import')
api.nova.keypair_import(IsA(http.HttpRequest), key_name, public_key) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
@ -149,8 +148,8 @@ class KeyPairViewTests(test.TestCase):
def test_generate_keypair_exception(self):
keypair = self.keypairs.first()
self.mox.StubOutWithMock(api, 'keypair_create')
api.keypair_create(IsA(http.HttpRequest), keypair.name) \
self.mox.StubOutWithMock(api.nova, 'keypair_create')
api.nova.keypair_create(IsA(http.HttpRequest), keypair.name) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()

View File

@ -67,7 +67,7 @@ class DownloadView(TemplateView):
class GenerateView(View):
def get(self, request, keypair_name=None):
try:
keypair = api.keypair_create(request, keypair_name)
keypair = api.nova.keypair_create(request, keypair_name)
except:
redirect = reverse('horizon:project:access_and_security:index')
exceptions.handle(self.request,

View File

@ -43,9 +43,9 @@ class CreateGroup(forms.SelfHandlingForm):
def handle(self, request, data):
try:
sg = api.security_group_create(request,
data['name'],
data['description'])
sg = api.nova.security_group_create(request,
data['name'],
data['description'])
messages.success(request,
_('Successfully created security group: %s')
% data['name'])
@ -161,13 +161,14 @@ class AddRule(forms.SelfHandlingForm):
def handle(self, request, data):
try:
rule = api.security_group_rule_create(request,
data['security_group_id'],
data['ip_protocol'],
data['from_port'],
data['to_port'],
data['cidr'],
data['source_group'])
rule = api.nova.security_group_rule_create(
request,
data['security_group_id'],
data['ip_protocol'],
data['from_port'],
data['to_port'],
data['cidr'],
data['source_group'])
messages.success(request,
_('Successfully added rule: %s') % unicode(rule))
return rule

View File

@ -37,7 +37,7 @@ class DeleteGroup(tables.DeleteAction):
return security_group.name != 'default'
def delete(self, request, obj_id):
api.security_group_delete(request, obj_id)
api.nova.security_group_delete(request, obj_id)
class CreateGroup(tables.LinkAction):
@ -73,7 +73,7 @@ class DeleteRule(tables.DeleteAction):
data_type_plural = _("Rules")
def delete(self, request, obj_id):
api.security_group_rule_delete(request, obj_id)
api.nova.security_group_rule_delete(request, obj_id)
def get_success_url(self, request):
return reverse("horizon:project:access_and_security:index")

View File

@ -53,10 +53,11 @@ class SecurityGroupsViewTests(test.TestCase):
def test_create_security_groups_post(self):
sec_group = self.security_groups.first()
self.mox.StubOutWithMock(api, 'security_group_create')
api.security_group_create(IsA(http.HttpRequest),
sec_group.name,
sec_group.description).AndReturn(sec_group)
self.mox.StubOutWithMock(api.nova, 'security_group_create')
api.nova.security_group_create(IsA(http.HttpRequest),
sec_group.name,
sec_group.description) \
.AndReturn(sec_group)
self.mox.ReplayAll()
formData = {'method': 'CreateGroup',
@ -67,11 +68,11 @@ class SecurityGroupsViewTests(test.TestCase):
def test_create_security_groups_post_exception(self):
sec_group = self.security_groups.first()
self.mox.StubOutWithMock(api, 'security_group_create')
api.security_group_create(IsA(http.HttpRequest),
sec_group.name,
sec_group.description) \
.AndRaise(self.exceptions.nova)
self.mox.StubOutWithMock(api.nova, 'security_group_create')
api.nova.security_group_create(IsA(http.HttpRequest),
sec_group.name,
sec_group.description) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
formData = {'method': 'CreateGroup',
@ -83,7 +84,7 @@ class SecurityGroupsViewTests(test.TestCase):
def test_create_security_groups_post_wrong_name(self):
sec_group = self.security_groups.first()
self.mox.StubOutWithMock(api, 'security_group_create')
self.mox.StubOutWithMock(api.nova, 'security_group_create')
fail_name = sec_group.name + ' invalid'
self.mox.ReplayAll()
@ -99,12 +100,12 @@ class SecurityGroupsViewTests(test.TestCase):
sec_group = self.security_groups.first()
sec_group_list = self.security_groups.list()
self.mox.StubOutWithMock(api, 'security_group_get')
api.security_group_get(IsA(http.HttpRequest),
sec_group.id).AndReturn(sec_group)
self.mox.StubOutWithMock(api, 'security_group_list')
api.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
self.mox.StubOutWithMock(api.nova, 'security_group_get')
api.nova.security_group_get(IsA(http.HttpRequest),
sec_group.id).AndReturn(sec_group)
self.mox.StubOutWithMock(api.nova, 'security_group_list')
api.nova.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
self.mox.ReplayAll()
res = self.client.get(self.edit_url)
@ -116,11 +117,12 @@ class SecurityGroupsViewTests(test.TestCase):
def test_edit_rules_get_exception(self):
sec_group = self.security_groups.first()
self.mox.StubOutWithMock(api, 'security_group_get')
self.mox.StubOutWithMock(api, 'security_group_list')
self.mox.StubOutWithMock(api.nova, 'security_group_get')
self.mox.StubOutWithMock(api.nova, 'security_group_list')
api.security_group_get(IsA(http.HttpRequest),
sec_group.id).AndRaise(self.exceptions.nova)
api.nova.security_group_get(IsA(http.HttpRequest),
sec_group.id) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
res = self.client.get(self.edit_url)
@ -131,16 +133,16 @@ class SecurityGroupsViewTests(test.TestCase):
sec_group_list = self.security_groups.list()
rule = self.security_group_rules.first()
self.mox.StubOutWithMock(api, 'security_group_rule_create')
self.mox.StubOutWithMock(api, 'security_group_list')
api.security_group_rule_create(IsA(http.HttpRequest),
sec_group.id,
rule.ip_protocol,
int(rule.from_port),
int(rule.to_port),
rule.ip_range['cidr'],
None).AndReturn(rule)
api.security_group_list(
self.mox.StubOutWithMock(api.nova, 'security_group_rule_create')
self.mox.StubOutWithMock(api.nova, 'security_group_list')
api.nova.security_group_rule_create(IsA(http.HttpRequest),
sec_group.id,
rule.ip_protocol,
int(rule.from_port),
int(rule.to_port),
rule.ip_range['cidr'],
None).AndReturn(rule)
api.nova.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
self.mox.ReplayAll()
@ -160,11 +162,11 @@ class SecurityGroupsViewTests(test.TestCase):
sec_group_list = self.security_groups.list()
rule = self.security_group_rules.first()
self.mox.StubOutWithMock(api, 'security_group_get')
self.mox.StubOutWithMock(api, 'security_group_list')
api.security_group_get(IsA(http.HttpRequest),
sec_group.id).AndReturn(sec_group)
api.security_group_list(
self.mox.StubOutWithMock(api.nova, 'security_group_get')
self.mox.StubOutWithMock(api.nova, 'security_group_list')
api.nova.security_group_get(IsA(http.HttpRequest),
sec_group.id).AndReturn(sec_group)
api.nova.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
self.mox.ReplayAll()
@ -185,17 +187,18 @@ class SecurityGroupsViewTests(test.TestCase):
sec_group_list = self.security_groups.list()
rule = self.security_group_rules.get(id=3)
self.mox.StubOutWithMock(api, 'security_group_rule_create')
self.mox.StubOutWithMock(api, 'security_group_list')
api.security_group_rule_create(IsA(http.HttpRequest),
sec_group.id,
rule.ip_protocol,
int(rule.from_port),
int(rule.to_port),
None,
u'%s' % sec_group.id).AndReturn(rule)
api.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
self.mox.StubOutWithMock(api.nova, 'security_group_rule_create')
self.mox.StubOutWithMock(api.nova, 'security_group_list')
api.nova.security_group_rule_create(
IsA(http.HttpRequest),
sec_group.id,
rule.ip_protocol,
int(rule.from_port),
int(rule.to_port),
None,
u'%s' % sec_group.id).AndReturn(rule)
api.nova.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
self.mox.ReplayAll()
formData = {'method': 'AddRule',
@ -213,12 +216,12 @@ class SecurityGroupsViewTests(test.TestCase):
sec_group_list = self.security_groups.list()
rule = self.security_group_rules.first()
self.mox.StubOutWithMock(api, 'security_group_get')
api.security_group_get(IsA(http.HttpRequest),
sec_group.id).AndReturn(sec_group)
self.mox.StubOutWithMock(api, 'security_group_list')
api.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
self.mox.StubOutWithMock(api.nova, 'security_group_get')
api.nova.security_group_get(IsA(http.HttpRequest),
sec_group.id).AndReturn(sec_group)
self.mox.StubOutWithMock(api.nova, 'security_group_list')
api.nova.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
self.mox.ReplayAll()
formData = {'method': 'AddRule',
@ -232,28 +235,29 @@ class SecurityGroupsViewTests(test.TestCase):
self.assertNoMessages()
self.assertContains(res, "greater than or equal to")
@test.create_stubs({api: ('security_group_get', 'security_group_list')})
@test.create_stubs({api.nova: ('security_group_get',
'security_group_list')})
def test_edit_rules_invalid_icmp_rule(self):
sec_group = self.security_groups.first()
sec_group_list = self.security_groups.list()
icmp_rule = self.security_group_rules.list()[1]
api.security_group_get(IsA(http.HttpRequest),
sec_group.id).AndReturn(sec_group)
api.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
api.security_group_get(IsA(http.HttpRequest),
sec_group.id).AndReturn(sec_group)
api.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
api.security_group_get(IsA(http.HttpRequest),
sec_group.id).AndReturn(sec_group)
api.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
api.security_group_get(IsA(http.HttpRequest),
sec_group.id).AndReturn(sec_group)
api.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
api.nova.security_group_get(IsA(http.HttpRequest),
sec_group.id).AndReturn(sec_group)
api.nova.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
api.nova.security_group_get(IsA(http.HttpRequest),
sec_group.id).AndReturn(sec_group)
api.nova.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
api.nova.security_group_get(IsA(http.HttpRequest),
sec_group.id).AndReturn(sec_group)
api.nova.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
api.nova.security_group_get(IsA(http.HttpRequest),
sec_group.id).AndReturn(sec_group)
api.nova.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
self.mox.ReplayAll()
formData = {'method': 'AddRule',
@ -305,17 +309,18 @@ class SecurityGroupsViewTests(test.TestCase):
sec_group_list = self.security_groups.list()
rule = self.security_group_rules.first()
self.mox.StubOutWithMock(api, 'security_group_rule_create')
self.mox.StubOutWithMock(api, 'security_group_list')
api.security_group_rule_create(IsA(http.HttpRequest),
sec_group.id,
rule.ip_protocol,
int(rule.from_port),
int(rule.to_port),
rule.ip_range['cidr'],
None).AndRaise(self.exceptions.nova)
api.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
self.mox.StubOutWithMock(api.nova, 'security_group_rule_create')
self.mox.StubOutWithMock(api.nova, 'security_group_list')
api.nova.security_group_rule_create(
IsA(http.HttpRequest),
sec_group.id,
rule.ip_protocol,
int(rule.from_port),
int(rule.to_port),
rule.ip_range['cidr'],
None).AndRaise(self.exceptions.nova)
api.nova.security_group_list(
IsA(http.HttpRequest)).AndReturn(sec_group_list)
self.mox.ReplayAll()
formData = {'method': 'AddRule',
@ -332,8 +337,8 @@ class SecurityGroupsViewTests(test.TestCase):
sec_group = self.security_groups.first()
rule = self.security_group_rules.first()
self.mox.StubOutWithMock(api, 'security_group_rule_delete')
api.security_group_rule_delete(IsA(http.HttpRequest), rule.id)
self.mox.StubOutWithMock(api.nova, 'security_group_rule_delete')
api.nova.security_group_rule_delete(IsA(http.HttpRequest), rule.id)
self.mox.ReplayAll()
form_data = {"action": "rules__delete__%s" % rule.id}
@ -345,9 +350,10 @@ class SecurityGroupsViewTests(test.TestCase):
def test_edit_rules_delete_rule_exception(self):
rule = self.security_group_rules.first()
self.mox.StubOutWithMock(api, 'security_group_rule_delete')
api.security_group_rule_delete(IsA(http.HttpRequest),
rule.id).AndRaise(self.exceptions.nova)
self.mox.StubOutWithMock(api.nova, 'security_group_rule_delete')
api.nova.security_group_rule_delete(
IsA(http.HttpRequest),
rule.id).AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
form_data = {"action": "rules__delete__%s" % rule.id}
@ -360,8 +366,8 @@ class SecurityGroupsViewTests(test.TestCase):
def test_delete_group(self):
sec_group = self.security_groups.get(name="other_group")
self.mox.StubOutWithMock(api, 'security_group_delete')
api.security_group_delete(IsA(http.HttpRequest), sec_group.id)
self.mox.StubOutWithMock(api.nova, 'security_group_delete')
api.nova.security_group_delete(IsA(http.HttpRequest), sec_group.id)
self.mox.ReplayAll()
form_data = {"action": "security_groups__delete__%s" % sec_group.id}
@ -374,9 +380,10 @@ class SecurityGroupsViewTests(test.TestCase):
def test_delete_group_exception(self):
sec_group = self.security_groups.get(name="other_group")
self.mox.StubOutWithMock(api, 'security_group_delete')
api.security_group_delete(IsA(http.HttpRequest),
sec_group.id).AndRaise(self.exceptions.nova)
self.mox.StubOutWithMock(api.nova, 'security_group_delete')
api.nova.security_group_delete(
IsA(http.HttpRequest),
sec_group.id).AndRaise(self.exceptions.nova)
self.mox.ReplayAll()

View File

@ -49,8 +49,8 @@ class EditRulesView(tables.DataTableView, forms.ModalFormView):
def get_data(self):
security_group_id = int(self.kwargs['security_group_id'])
try:
self.object = api.security_group_get(self.request,
security_group_id)
self.object = api.nova.security_group_get(self.request,
security_group_id)
rules = [api.nova.SecurityGroupRule(rule) for
rule in self.object.rules]
except:
@ -67,7 +67,7 @@ class EditRulesView(tables.DataTableView, forms.ModalFormView):
kwargs = super(EditRulesView, self).get_form_kwargs()
try:
groups = api.security_group_list(self.request)
groups = api.nova.security_group_list(self.request)
except:
groups = []
exceptions.handle(self.request,

View File

@ -34,17 +34,18 @@ class AccessAndSecurityTests(test.TestCase):
keypairs = self.keypairs.list()
sec_groups = self.security_groups.list()
floating_ips = self.floating_ips.list()
self.mox.StubOutWithMock(api, 'tenant_floating_ip_list')
self.mox.StubOutWithMock(api, 'security_group_list')
self.mox.StubOutWithMock(api.nova, 'tenant_floating_ip_list')
self.mox.StubOutWithMock(api.nova, 'security_group_list')
self.mox.StubOutWithMock(api.nova, 'keypair_list')
self.mox.StubOutWithMock(api.nova, 'server_list')
api.nova.server_list(IsA(http.HttpRequest),
all_tenants=True).AndReturn(self.servers.list())
api.nova.keypair_list(IsA(http.HttpRequest)).AndReturn(keypairs)
api.tenant_floating_ip_list(IsA(http.HttpRequest)) \
.AndReturn(floating_ips)
api.security_group_list(IsA(http.HttpRequest)).AndReturn(sec_groups)
api.nova.tenant_floating_ip_list(IsA(http.HttpRequest)) \
.AndReturn(floating_ips)
api.nova.security_group_list(IsA(http.HttpRequest)) \
.AndReturn(sec_groups)
self.mox.ReplayAll()

View File

@ -53,7 +53,7 @@ class IndexView(tables.MultiTableView):
def get_security_groups_data(self):
try:
security_groups = api.security_group_list(self.request)
security_groups = api.nova.security_group_list(self.request)
except:
security_groups = []
exceptions.handle(self.request,
@ -62,7 +62,7 @@ class IndexView(tables.MultiTableView):
def get_floating_ips_data(self):
try:
floating_ips = api.tenant_floating_ip_list(self.request)
floating_ips = api.nova.tenant_floating_ip_list(self.request)
except:
floating_ips = []
exceptions.handle(self.request,

View File

@ -53,7 +53,7 @@ class CreateContainer(forms.SelfHandlingForm):
try:
if not data['parent']:
# Create a container
api.swift_create_container(request, data["name"])
api.swift.swift_create_container(request, data["name"])
messages.success(request, _("Container created successfully."))
else:
# Create a pseudo-folder
@ -62,9 +62,9 @@ class CreateContainer(forms.SelfHandlingForm):
subfolder_name = "/".join([bit for bit
in (remainder, data['name'])
if bit])
api.swift_create_subfolder(request,
container,
subfolder_name)
api.swift.swift_create_subfolder(request,
container,
subfolder_name)
messages.success(request, _("Folder created successfully."))
return True
except:
@ -88,10 +88,10 @@ class UploadObject(forms.SelfHandlingForm):
else:
object_path = data['name']
try:
obj = api.swift_upload_object(request,
data['container_name'],
object_path,
object_file)
obj = api.swift.swift_upload_object(request,
data['container_name'],
object_path,
object_file)
messages.success(request, _("Object was successfully uploaded."))
return obj
except:
@ -143,11 +143,11 @@ class CopyObject(forms.SelfHandlingForm):
# Now copy the object itself.
try:
api.swift_copy_object(request,
orig_container,
orig_object,
new_container,
new_path)
api.swift.swift_copy_object(request,
orig_container,
orig_object,
new_container,
new_path)
dest = "%s/%s" % (new_container, path)
vals = {"dest": dest.rstrip("/"),
"orig": orig_object.split("/")[-1],

View File

@ -24,7 +24,7 @@ from django.utils.translation import ugettext_lazy as _
from horizon import tables
from openstack_dashboard import api
from openstack_dashboard.api import FOLDER_DELIMITER
from openstack_dashboard.api.swift import FOLDER_DELIMITER
LOG = logging.getLogger(__name__)
@ -42,7 +42,7 @@ class DeleteContainer(tables.DeleteAction):
success_url = "horizon:project:containers:index"
def delete(self, request, obj_id):
api.swift_delete_container(request, obj_id)
api.swift.swift_delete_container(request, obj_id)
def get_success_url(self, request=None):
"""
@ -141,7 +141,7 @@ class DeleteObject(tables.DeleteAction):
def delete(self, request, obj_id):
obj = self.table.get_object_by_id(obj_id)
container_name = obj.container_name
api.swift_delete_object(request, container_name, obj_id)
api.swift.swift_delete_object(request, container_name, obj_id)
class DeleteSubfolder(DeleteObject):
@ -190,10 +190,10 @@ class ObjectFilterAction(tables.FilterAction):
container = self.table.kwargs['container_name']
subfolder = self.table.kwargs['subfolder_path']
prefix = wrap_delimiter(subfolder) if subfolder else ''
self.filtered_data = api.swift_filter_objects(request,
filter_string,
container,
prefix=prefix)
self.filtered_data = api.swift.swift_filter_objects(request,
filter_string,
container,
prefix=prefix)
return self.filtered_data
def filter_subfolders_data(self, table, objects, filter_string):

View File

@ -36,11 +36,11 @@ CONTAINER_INDEX_URL = reverse('horizon:project:containers:index')
class SwiftTests(test.TestCase):
@test.create_stubs({api: ('swift_get_containers',)})
@test.create_stubs({api.swift: ('swift_get_containers',)})
def test_index_no_container_selected(self):
containers = self.containers.list()
api.swift_get_containers(IsA(http.HttpRequest), marker=None) \
.AndReturn((containers, False))
api.swift.swift_get_containers(IsA(http.HttpRequest), marker=None) \
.AndReturn((containers, False))
self.mox.ReplayAll()
res = self.client.get(CONTAINER_INDEX_URL)
@ -50,10 +50,10 @@ class SwiftTests(test.TestCase):
resp_containers = res.context['table'].data
self.assertEqual(len(resp_containers), len(containers))
@test.create_stubs({api: ('swift_delete_container',)})
@test.create_stubs({api.swift: ('swift_delete_container',)})
def test_delete_container(self):
container = self.containers.get(name=u"container_two\u6346")
api.swift_delete_container(IsA(http.HttpRequest), container.name)
api.swift.swift_delete_container(IsA(http.HttpRequest), container.name)
self.mox.ReplayAll()
action_string = u"containers__delete__%s" % container.name
@ -63,13 +63,13 @@ class SwiftTests(test.TestCase):
handled = table.maybe_handle()
self.assertEqual(handled['location'], CONTAINER_INDEX_URL)
@test.create_stubs({api: ('swift_delete_container',)})
@test.create_stubs({api.swift: ('swift_delete_container',)})
def test_delete_container_nonempty(self):
container = self.containers.first()
exc = self.exceptions.swift
exc.silence_logging = True
api.swift_delete_container(IsA(http.HttpRequest),
container.name).AndRaise(exc)
api.swift.swift_delete_container(IsA(http.HttpRequest),
container.name).AndRaise(exc)
self.mox.ReplayAll()
action_string = u"containers__delete__%s" % container.name
@ -83,10 +83,10 @@ class SwiftTests(test.TestCase):
res = self.client.get(reverse('horizon:project:containers:create'))
self.assertTemplateUsed(res, 'project/containers/create.html')
@test.create_stubs({api: ('swift_create_container',)})
@test.create_stubs({api.swift: ('swift_create_container',)})
def test_create_container_post(self):
api.swift_create_container(IsA(http.HttpRequest),
self.containers.first().name)
api.swift.swift_create_container(IsA(http.HttpRequest),
self.containers.first().name)
self.mox.ReplayAll()
formData = {'name': self.containers.first().name,
@ -97,16 +97,17 @@ class SwiftTests(test.TestCase):
args=[wrap_delimiter(self.containers.first().name)])
self.assertRedirectsNoFollow(res, url)
@test.create_stubs({api: ('swift_get_containers', 'swift_get_objects')})
@test.create_stubs({api.swift: ('swift_get_containers',
'swift_get_objects')})
def test_index_container_selected(self):
containers = (self.containers.list(), False)
ret = (self.objects.list(), False)
api.swift_get_containers(IsA(http.HttpRequest),
marker=None).AndReturn(containers)
api.swift_get_objects(IsA(http.HttpRequest),
self.containers.first().name,
marker=None,
prefix=None).AndReturn(ret)
api.swift.swift_get_containers(IsA(http.HttpRequest),
marker=None).AndReturn(containers)
api.swift.swift_get_objects(IsA(http.HttpRequest),
self.containers.first().name,
marker=None,
prefix=None).AndReturn(ret)
self.mox.ReplayAll()
res = self.client.get(reverse('horizon:project:containers:index',
@ -120,7 +121,7 @@ class SwiftTests(test.TestCase):
expected,
lambda obj: obj.name.encode('utf8'))
@test.create_stubs({api: ('swift_upload_object',)})
@test.create_stubs({api.swift: ('swift_upload_object',)})
def test_upload(self):
container = self.containers.first()
obj = self.objects.first()
@ -131,10 +132,10 @@ class SwiftTests(test.TestCase):
temp_file.flush()
temp_file.seek(0)
api.swift_upload_object(IsA(http.HttpRequest),
container.name,
obj.name,
IsA(InMemoryUploadedFile)).AndReturn(obj)
api.swift.swift_upload_object(IsA(http.HttpRequest),
container.name,
obj.name,
IsA(InMemoryUploadedFile)).AndReturn(obj)
self.mox.ReplayAll()
upload_url = reverse('horizon:project:containers:object_upload',
@ -162,15 +163,15 @@ class SwiftTests(test.TestCase):
self.assertNoMessages()
self.assertContains(res, "Slash is not an allowed character.")
@test.create_stubs({api: ('swift_delete_object',)})
@test.create_stubs({api.swift: ('swift_delete_object',)})
def test_delete(self):
container = self.containers.first()
obj = self.objects.first()
index_url = reverse('horizon:project:containers:index',
args=[wrap_delimiter(container.name)])
api.swift_delete_object(IsA(http.HttpRequest),
container.name,
obj.name)
api.swift.swift_delete_object(IsA(http.HttpRequest),
container.name,
obj.name)
self.mox.ReplayAll()
action_string = "objects__delete_object__%s" % obj.name
@ -197,10 +198,10 @@ class SwiftTests(test.TestCase):
self.assertEqual(res.content, obj.data)
self.assertTrue(res.has_header('Content-Disposition'))
@test.create_stubs({api: ('swift_get_containers',)})
@test.create_stubs({api.swift: ('swift_get_containers',)})
def test_copy_index(self):
ret = (self.containers.list(), False)
api.swift_get_containers(IsA(http.HttpRequest)).AndReturn(ret)
api.swift.swift_get_containers(IsA(http.HttpRequest)).AndReturn(ret)
self.mox.ReplayAll()
res = self.client.get(reverse('horizon:project:containers:object_copy',
@ -208,19 +209,20 @@ class SwiftTests(test.TestCase):
self.objects.first().name]))
self.assertTemplateUsed(res, 'project/containers/copy.html')
@test.create_stubs({api: ('swift_get_containers', 'swift_copy_object')})
@test.create_stubs({api.swift: ('swift_get_containers',
'swift_copy_object')})
def test_copy(self):
container_1 = self.containers.get(name=u"container_one\u6346")
container_2 = self.containers.get(name=u"container_two\u6346")
obj = self.objects.first()
ret = (self.containers.list(), False)
api.swift_get_containers(IsA(http.HttpRequest)).AndReturn(ret)
api.swift_copy_object(IsA(http.HttpRequest),
container_1.name,
obj.name,
container_2.name,
obj.name)
api.swift.swift_get_containers(IsA(http.HttpRequest)).AndReturn(ret)
api.swift.swift_copy_object(IsA(http.HttpRequest),
container_1.name,
obj.name,
container_2.name,
obj.name)
self.mox.ReplayAll()
formData = {'method': forms.CopyObject.__name__,

View File

@ -32,7 +32,7 @@ from horizon import exceptions
from horizon import forms
from openstack_dashboard import api
from openstack_dashboard.api import FOLDER_DELIMITER
from openstack_dashboard.api.swift import FOLDER_DELIMITER
from .browsers import ContainerBrowser
from .forms import CreateContainer, UploadObject, CopyObject
from .tables import wrap_delimiter
@ -47,8 +47,8 @@ class ContainerView(browsers.ResourceBrowserView):
self._more = None
marker = self.request.GET.get('marker', None)
try:
containers, self._more = api.swift_get_containers(self.request,
marker=marker)
containers, self._more = api.swift.swift_get_containers(
self.request, marker=marker)
except:
msg = _('Unable to retrieve container list.')
exceptions.handle(self.request, msg)
@ -72,10 +72,11 @@ class ContainerView(browsers.ResourceBrowserView):
if subfolder:
prefix = subfolder
try:
objects, self._more = api.swift_get_objects(self.request,
container_name,
marker=marker,
prefix=prefix)
objects, self._more = api.swift.swift_get_objects(
self.request,
container_name,
marker=marker,
prefix=prefix)
except:
self._more = None
objects = []
@ -194,7 +195,7 @@ class CopyView(forms.ModalFormView):
def get_form_kwargs(self):
kwargs = super(CopyView, self).get_form_kwargs()
try:
containers = api.swift_get_containers(self.request)
containers = api.swift.swift_get_containers(self.request)
except:
redirect = reverse("horizon:project:containers:index")
exceptions.handle(self.request,

View File

@ -158,7 +158,7 @@ class UpdateImageForm(forms.SelfHandlingForm):
meta['purge_props'] = False
try:
image = api.image_update(request, image_id, **meta)
image = api.glance.image_update(request, image_id, **meta)
messages.success(request, _('Image was successfully updated.'))
return image
except:

View File

@ -53,7 +53,7 @@ class DeleteImage(tables.DeleteAction):
return True
def delete(self, request, obj_id):
api.image_delete(request, obj_id)
api.glance.image_delete(request, obj_id)
class CreateImage(tables.LinkAction):
@ -94,7 +94,7 @@ class UpdateRow(tables.Row):
ajax = True
def get_data(self, request, image_id):
image = api.image_get(request, image_id)
image = api.glance.image_get(request, image_id)
return image

View File

@ -95,12 +95,12 @@ class ImageViewTests(test.TestCase):
res = self.client.get(url)
self.assertRedirectsNoFollow(res, IMAGES_INDEX_URL)
@test.create_stubs({api: ('image_get',)})
@test.create_stubs({api.glance: ('image_get',)})
def test_image_update_get(self):
image = self.images.first()
image.disk_format = "ami"
image.is_public = True
api.image_get(IsA(http.HttpRequest), str(image.id)) \
api.glance.image_get(IsA(http.HttpRequest), str(image.id)) \
.AndReturn(image)
self.mox.ReplayAll()

View File

@ -55,8 +55,8 @@ class UpdateView(forms.ModalFormView):
def get_object(self):
if not hasattr(self, "_object"):
try:
self._object = api.image_get(self.request,
self.kwargs['image_id'])
self._object = api.glance.image_get(self.request,
self.kwargs['image_id'])
except:
msg = _('Unable to retrieve image.')
url = reverse('horizon:project:images_and_snapshots:index')

View File

@ -41,11 +41,11 @@ class CreateSnapshot(forms.SelfHandlingForm):
def handle(self, request, data):
try:
snapshot = api.snapshot_create(request,
data['instance_id'],
data['name'])
snapshot = api.nova.snapshot_create(request,
data['instance_id'],
data['name'])
# NOTE(gabriel): This API call is only to display a pretty name.
instance = api.server_get(request, data['instance_id'])
instance = api.nova.server_get(request, data['instance_id'])
vals = {"name": data['name'], "inst": instance.name}
messages.success(request, _('Snapshot "%(name)s" created for '
'instance "%(inst)s"') % vals)

View File

@ -33,8 +33,8 @@ INDEX_URL = reverse('horizon:project:images_and_snapshots:index')
class SnapshotsViewTests(test.TestCase):
def test_create_snapshot_get(self):
server = self.servers.first()
self.mox.StubOutWithMock(api, 'server_get')
api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
self.mox.StubOutWithMock(api.nova, 'server_get')
api.nova.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
self.mox.ReplayAll()
url = reverse('horizon:project:images_and_snapshots:snapshots:create',
@ -45,8 +45,8 @@ class SnapshotsViewTests(test.TestCase):
def test_create_get_server_exception(self):
server = self.servers.first()
self.mox.StubOutWithMock(api, 'server_get')
api.server_get(IsA(http.HttpRequest), server.id) \
self.mox.StubOutWithMock(api.nova, 'server_get')
api.nova.server_get(IsA(http.HttpRequest), server.id) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
@ -60,11 +60,11 @@ class SnapshotsViewTests(test.TestCase):
server = self.servers.first()
snapshot = self.snapshots.first()
self.mox.StubOutWithMock(api, 'server_get')
self.mox.StubOutWithMock(api, 'snapshot_create')
api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.snapshot_create(IsA(http.HttpRequest), server.id, snapshot.name) \
.AndReturn(snapshot)
self.mox.StubOutWithMock(api.nova, 'server_get')
self.mox.StubOutWithMock(api.nova, 'snapshot_create')
api.nova.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.nova.snapshot_create(IsA(http.HttpRequest), server.id,
snapshot.name).AndReturn(snapshot)
self.mox.ReplayAll()
formData = {'method': 'CreateSnapshot',
@ -81,10 +81,10 @@ class SnapshotsViewTests(test.TestCase):
server = self.servers.first()
snapshot = self.snapshots.first()
self.mox.StubOutWithMock(api, 'server_get')
self.mox.StubOutWithMock(api, 'snapshot_create')
api.snapshot_create(IsA(http.HttpRequest), server.id, snapshot.name) \
.AndRaise(self.exceptions.nova)
self.mox.StubOutWithMock(api.nova, 'server_get')
self.mox.StubOutWithMock(api.nova, 'snapshot_create')
api.nova.snapshot_create(IsA(http.HttpRequest), server.id,
snapshot.name).AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
formData = {'method': 'CreateSnapshot',

View File

@ -45,8 +45,8 @@ class CreateView(forms.ModalFormView):
def get_object(self):
if not hasattr(self, "_object"):
try:
self._object = api.server_get(self.request,
self.kwargs["instance_id"])
self._object = api.nova.server_get(self.request,
self.kwargs["instance_id"])
except:
redirect = reverse('horizon:project:instances:index')
exceptions.handle(self.request,

View File

@ -32,8 +32,9 @@ INDEX_URL = reverse('horizon:project:images_and_snapshots:index')
class ImagesAndSnapshotsTests(test.TestCase):
@test.create_stubs({api: ('image_list_detailed', 'snapshot_list_detailed',
'volume_snapshot_list', 'volume_get',)})
@test.create_stubs({api.glance: ('image_list_detailed',
'snapshot_list_detailed'),
api.cinder: ('volume_snapshot_list', 'volume_get')})
def test_index(self):
images = self.images.list()
snapshots = self.snapshots.list()
@ -42,19 +43,19 @@ class ImagesAndSnapshotsTests(test.TestCase):
for volume in volumes:
volume.volume_id = volume.id
for volume in volumes:
api.volume_get(IsA(http.HttpRequest), volume.volume_id) \
api.cinder.volume_get(IsA(http.HttpRequest), volume.volume_id) \
.AndReturn(volume)
for volume in volumes:
api.volume_get(IsA(http.HttpRequest), volume.volume_id) \
api.cinder.volume_get(IsA(http.HttpRequest), volume.volume_id) \
.AndReturn(volume)
api.volume_get(IsA(http.HttpRequest), volume.volume_id)
api.cinder.volume_get(IsA(http.HttpRequest), volume.volume_id)
api.volume_snapshot_list(IsA(http.HttpRequest)) \
api.cinder.volume_snapshot_list(IsA(http.HttpRequest)) \
.AndReturn(volumes)
api.image_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn([images, False])
api.snapshot_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn([snapshots, False])
api.glance.image_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn([images, False])
api.glance.snapshot_list_detailed(IsA(http.HttpRequest), marker=None) \
.AndReturn([snapshots, False])
self.mox.ReplayAll()
res = self.client.get(INDEX_URL)
@ -65,60 +66,64 @@ class ImagesAndSnapshotsTests(test.TestCase):
filtered_images = filter(filter_func, images)
self.assertItemsEqual(images, filtered_images)
@test.create_stubs({api: ('image_list_detailed', 'snapshot_list_detailed',
'volume_snapshot_list', 'volume_get',)})
@test.create_stubs({api.glance: ('image_list_detailed',
'snapshot_list_detailed'),
api.cinder: ('volume_snapshot_list', 'volume_get')})
def test_index_no_images(self):
volumes = self.volumes.list()
for volume in volumes:
volume.volume_id = volume.id
for volume in volumes:
api.volume_get(IsA(http.HttpRequest), volume.volume_id) \
api.cinder.volume_get(IsA(http.HttpRequest), volume.volume_id) \
.AndReturn(volume)
for volume in volumes:
api.volume_get(IsA(http.HttpRequest), volume.volume_id) \
api.cinder.volume_get(IsA(http.HttpRequest), volume.volume_id) \
.AndReturn(volume)
api.volume_get(IsA(http.HttpRequest), volume.volume_id)
api.cinder.volume_get(IsA(http.HttpRequest), volume.volume_id)
api.volume_snapshot_list(IsA(http.HttpRequest)) \
api.cinder.volume_snapshot_list(IsA(http.HttpRequest)) \
.AndReturn(volumes)
api.image_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn([(), False])
api.snapshot_list_detailed(IsA(http.HttpRequest), marker=None) \
api.glance.image_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn([(), False])
api.glance.snapshot_list_detailed(IsA(http.HttpRequest), marker=None) \
.AndReturn([self.snapshots.list(), False])
self.mox.ReplayAll()
res = self.client.get(INDEX_URL)
self.assertTemplateUsed(res, 'project/images_and_snapshots/index.html')
@test.create_stubs({api: ('image_list_detailed', 'snapshot_list_detailed',
'volume_snapshot_list', 'volume_get',)})
@test.create_stubs({api.glance: ('image_list_detailed',
'snapshot_list_detailed'),
api.cinder: ('volume_snapshot_list', 'volume_get')})
def test_index_error(self):
volumes = self.volumes.list()
for volume in volumes:
volume.volume_id = volume.id
for volume in volumes:
api.volume_get(IsA(http.HttpRequest), volume.volume_id) \
api.cinder.volume_get(IsA(http.HttpRequest), volume.volume_id) \
.AndReturn(volume)
for volume in volumes:
api.volume_get(IsA(http.HttpRequest), volume.volume_id) \
api.cinder.volume_get(IsA(http.HttpRequest), volume.volume_id) \
.AndReturn(volume)
api.volume_get(IsA(http.HttpRequest), volume.volume_id)
api.cinder.volume_get(IsA(http.HttpRequest), volume.volume_id)
api.volume_snapshot_list(IsA(http.HttpRequest)) \
api.cinder.volume_snapshot_list(IsA(http.HttpRequest)) \
.AndReturn(volumes)
api.image_list_detailed(IsA(http.HttpRequest),
marker=None).AndRaise(self.exceptions.glance)
api.snapshot_list_detailed(IsA(http.HttpRequest), marker=None) \
api.glance.image_list_detailed(IsA(http.HttpRequest),
marker=None) \
.AndRaise(self.exceptions.glance)
api.glance.snapshot_list_detailed(IsA(http.HttpRequest), marker=None) \
.AndReturn([self.snapshots.list(), False])
self.mox.ReplayAll()
res = self.client.get(INDEX_URL)
self.assertTemplateUsed(res, 'project/images_and_snapshots/index.html')
@test.create_stubs({api: ('image_list_detailed', 'snapshot_list_detailed',
'volume_snapshot_list', 'volume_get',)})
@test.create_stubs({api.glance: ('image_list_detailed',
'snapshot_list_detailed'),
api.cinder: ('volume_snapshot_list', 'volume_get')})
def test_queued_snapshot_actions(self):
images = self.images.list()
snapshots = self.snapshots.list()
@ -127,19 +132,19 @@ class ImagesAndSnapshotsTests(test.TestCase):
for volume in volumes:
volume.volume_id = volume.id
for volume in volumes:
api.volume_get(IsA(http.HttpRequest), volume.volume_id) \
api.cinder.volume_get(IsA(http.HttpRequest), volume.volume_id) \
.AndReturn(volume)
for volume in volumes:
api.volume_get(IsA(http.HttpRequest), volume.volume_id) \
api.cinder.volume_get(IsA(http.HttpRequest), volume.volume_id) \
.AndReturn(volume)
api.volume_get(IsA(http.HttpRequest), volume.volume_id)
api.cinder.volume_get(IsA(http.HttpRequest), volume.volume_id)
api.volume_snapshot_list(IsA(http.HttpRequest)) \
.AndReturn(volumes)
api.image_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn([images, False])
api.snapshot_list_detailed(IsA(http.HttpRequest), marker=None) \
.AndReturn([snapshots, False])
api.cinder.volume_snapshot_list(IsA(http.HttpRequest)) \
.AndReturn(volumes)
api.glance.image_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn([images, False])
api.glance.snapshot_list_detailed(IsA(http.HttpRequest), marker=None) \
.AndReturn([snapshots, False])
self.mox.ReplayAll()
res = self.client.get(INDEX_URL)

View File

@ -54,8 +54,8 @@ class IndexView(tables.MultiTableView):
# FIXME(gabriel): The paging is going to be strange here due to
# our filtering after the fact.
(all_images,
self._more_images) = api.image_list_detailed(self.request,
marker=marker)
self._more_images) = api.glance.image_list_detailed(self.request,
marker=marker)
images = [im for im in all_images
if im.container_format not in ['aki', 'ari'] and
im.properties.get("image_type", '') != "snapshot"]
@ -68,8 +68,8 @@ class IndexView(tables.MultiTableView):
req = self.request
marker = req.GET.get(SnapshotsTable._meta.pagination_param, None)
try:
snaps, self._more_snapshots = api.snapshot_list_detailed(req,
marker=marker)
snaps, self._more_snapshots = api.glance.snapshot_list_detailed(
req, marker=marker)
except:
snaps = []
exceptions.handle(req, _("Unable to retrieve snapshots."))
@ -78,7 +78,7 @@ class IndexView(tables.MultiTableView):
def get_volume_snapshots_data(self):
if is_service_enabled(self.request, 'volume'):
try:
snapshots = api.volume_snapshot_list(self.request)
snapshots = api.cinder.volume_snapshot_list(self.request)
except:
snapshots = []
exceptions.handle(self.request, _("Unable to retrieve "

View File

@ -37,7 +37,7 @@ class DeleteVolumeSnapshot(tables.DeleteAction):
action_past = _("Scheduled deletion of")
def delete(self, request, obj_id):
api.volume_snapshot_delete(request, obj_id)
api.cinder.volume_snapshot_delete(request, obj_id)
class CreateVolumeFromSnapshot(tables.LinkAction):
@ -66,11 +66,13 @@ class UpdateRow(tables.Row):
class SnapshotVolumeNameColumn(tables.Column):
def get_raw_data(self, snapshot):
request = self.table.request
volume_name = api.volume_get(request, snapshot.volume_id).display_name
volume_name = api.cinder.volume_get(request,
snapshot.volume_id).display_name
return safestring.mark_safe(volume_name)
def get_link_url(self, snapshot):
volume_id = api.volume_get(self.table.request, snapshot.volume_id).id
volume_id = api.cinder.volume_get(self.table.request,
snapshot.volume_id).id
return reverse(self.link, args=(volume_id,))

View File

@ -61,27 +61,27 @@ class VolumeSnapshotsViewTests(test.TestCase):
res = self.client.post(url, formData)
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ['image_list_detailed',
'snapshot_list_detailed',
'volume_snapshot_list',
'volume_snapshot_delete', ], })
@test.create_stubs({api.glance: ('image_list_detailed',
'snapshot_list_detailed'),
api.cinder: ('volume_snapshot_list',
'volume_snapshot_delete')})
def test_delete_volume_snapshot(self):
vol_snapshots = self.volume_snapshots.list()
snapshot = self.volume_snapshots.first()
api.image_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn(([], False))
api.snapshot_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn(([], False))
api.volume_snapshot_list(IsA(http.HttpRequest)). \
AndReturn(vol_snapshots)
api.volume_snapshot_delete(IsA(http.HttpRequest), snapshot.id)
api.image_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn(([], False))
api.snapshot_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn(([], False))
api.volume_snapshot_list(IsA(http.HttpRequest)). \
AndReturn([])
api.glance.image_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn(([], False))
api.glance.snapshot_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn(([], False))
api.cinder.volume_snapshot_list(IsA(http.HttpRequest)). \
AndReturn(vol_snapshots)
api.cinder.volume_snapshot_delete(IsA(http.HttpRequest), snapshot.id)
api.glance.image_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn(([], False))
api.glance.snapshot_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn(([], False))
api.cinder.volume_snapshot_list(IsA(http.HttpRequest)). \
AndReturn([])
self.mox.ReplayAll()
formData = {'action':

View File

@ -40,7 +40,8 @@ class UpdateInstance(forms.SelfHandlingForm):
def handle(self, request, data):
try:
server = api.server_update(request, data['instance'], data['name'])
server = api.nova.server_update(request, data['instance'],
data['name'])
messages.success(request,
_('Instance "%s" updated.') % data['name'])
return server

View File

@ -83,7 +83,7 @@ class TerminateInstance(tables.BatchAction):
return True
def action(self, request, obj_id):
api.server_delete(request, obj_id)
api.nova.server_delete(request, obj_id)
class RebootInstance(tables.BatchAction):
@ -100,7 +100,7 @@ class RebootInstance(tables.BatchAction):
and not is_deleting(instance))
def action(self, request, obj_id):
api.server_reboot(request, obj_id)
api.nova.server_reboot(request, obj_id)
class TogglePause(tables.BatchAction):
@ -125,10 +125,10 @@ class TogglePause(tables.BatchAction):
def action(self, request, obj_id):
if self.paused:
api.server_unpause(request, obj_id)
api.nova.server_unpause(request, obj_id)
self.current_past_action = UNPAUSE
else:
api.server_pause(request, obj_id)
api.nova.server_pause(request, obj_id)
self.current_past_action = PAUSE
@ -154,10 +154,10 @@ class ToggleSuspend(tables.BatchAction):
def action(self, request, obj_id):
if self.suspended:
api.server_resume(request, obj_id)
api.nova.server_resume(request, obj_id)
self.current_past_action = RESUME
else:
api.server_suspend(request, obj_id)
api.nova.server_suspend(request, obj_id)
self.current_past_action = SUSPEND
@ -169,7 +169,7 @@ class LaunchLink(tables.LinkAction):
def allowed(self, request, datum):
try:
limits = api.tenant_absolute_limits(request, reserved=True)
limits = api.nova.tenant_absolute_limits(request, reserved=True)
instances_available = limits['maxTotalInstances'] \
- limits['totalInstancesUsed']
@ -254,7 +254,7 @@ class ConfirmResize(tables.Action):
return instance.status == 'VERIFY_RESIZE'
def single(self, table, request, instance):
api.server_confirm_resize(request, instance)
api.nova.server_confirm_resize(request, instance)
class RevertResize(tables.Action):
@ -266,7 +266,7 @@ class RevertResize(tables.Action):
return instance.status == 'VERIFY_RESIZE'
def single(self, table, request, instance):
api.server_revert_resize(request, instance)
api.nova.server_revert_resize(request, instance)
class AssociateIP(tables.LinkAction):
@ -355,8 +355,9 @@ class UpdateRow(tables.Row):
ajax = True
def get_data(self, request, instance_id):
instance = api.server_get(request, instance_id)
instance.full_flavor = api.flavor_get(request, instance.flavor["id"])
instance = api.nova.server_get(request, instance_id)
instance.full_flavor = api.nova.flavor_get(request,
instance.flavor["id"])
return instance

View File

@ -41,9 +41,9 @@ class LogTab(tabs.Tab):
def get_context_data(self, request):
instance = self.tab_group.kwargs['instance']
try:
data = api.server_console_output(request,
instance.id,
tail_length=35)
data = api.nova.server_console_output(request,
instance.id,
tail_length=35)
except:
data = _('Unable to get log for instance "%s".') % instance.id
exceptions.handle(request, ignore=True)

View File

@ -40,12 +40,15 @@ INDEX_URL = reverse('horizon:project:instances:index')
class InstanceTests(test.TestCase):
@test.create_stubs({api: ('flavor_list', 'server_list',
'tenant_absolute_limits')})
@test.create_stubs({api.nova: ('flavor_list',
'server_list',
'tenant_absolute_limits')})
def test_index(self):
api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors.list())
api.server_list(IsA(http.HttpRequest)).AndReturn(self.servers.list())
api.tenant_absolute_limits(IsA(http.HttpRequest), reserved=True) \
api.nova.flavor_list(IsA(http.HttpRequest)) \
.AndReturn(self.flavors.list())
api.nova.server_list(IsA(http.HttpRequest)) \
.AndReturn(self.servers.list())
api.nova.tenant_absolute_limits(IsA(http.HttpRequest), reserved=True) \
.MultipleTimes().AndReturn(self.limits['absolute'])
self.mox.ReplayAll()
@ -59,10 +62,12 @@ class InstanceTests(test.TestCase):
self.assertItemsEqual(instances, self.servers.list())
@test.create_stubs({api: ('server_list', 'tenant_absolute_limits')})
@test.create_stubs({api.nova: ('server_list',
'tenant_absolute_limits')})
def test_index_server_list_exception(self):
api.server_list(IsA(http.HttpRequest)).AndRaise(self.exceptions.nova)
api.tenant_absolute_limits(IsA(http.HttpRequest), reserved=True) \
api.nova.server_list(IsA(http.HttpRequest)) \
.AndRaise(self.exceptions.nova)
api.nova.tenant_absolute_limits(IsA(http.HttpRequest), reserved=True) \
.MultipleTimes().AndReturn(self.limits['absolute'])
self.mox.ReplayAll()
@ -73,19 +78,22 @@ class InstanceTests(test.TestCase):
self.assertEqual(len(res.context['instances_table'].data), 0)
self.assertMessageCount(res, error=1)
@test.create_stubs({api: ('flavor_list', 'server_list', 'flavor_get',
'tenant_absolute_limits')})
@test.create_stubs({api.nova: ('flavor_list',
'server_list',
'flavor_get',
'tenant_absolute_limits')})
def test_index_flavor_list_exception(self):
servers = self.servers.list()
flavors = self.flavors.list()
full_flavors = SortedDict([(f.id, f) for f in flavors])
api.server_list(IsA(http.HttpRequest)).AndReturn(servers)
api.flavor_list(IsA(http.HttpRequest)).AndRaise(self.exceptions.nova)
api.nova.server_list(IsA(http.HttpRequest)).AndReturn(servers)
api.nova.flavor_list(IsA(http.HttpRequest)) \
.AndRaise(self.exceptions.nova)
for server in servers:
api.flavor_get(IsA(http.HttpRequest), server.flavor["id"]). \
api.nova.flavor_get(IsA(http.HttpRequest), server.flavor["id"]). \
AndReturn(full_flavors[server.flavor["id"]])
api.tenant_absolute_limits(IsA(http.HttpRequest), reserved=True) \
api.nova.tenant_absolute_limits(IsA(http.HttpRequest), reserved=True) \
.MultipleTimes().AndReturn(self.limits['absolute'])
self.mox.ReplayAll()
@ -97,8 +105,10 @@ class InstanceTests(test.TestCase):
self.assertItemsEqual(instances, self.servers.list())
@test.create_stubs({api: ('flavor_list', 'server_list', 'flavor_get',
'tenant_absolute_limits')})
@test.create_stubs({api.nova: ('flavor_list',
'server_list',
'flavor_get',
'tenant_absolute_limits')})
def test_index_flavor_get_exception(self):
servers = self.servers.list()
flavors = self.flavors.list()
@ -107,12 +117,12 @@ class InstanceTests(test.TestCase):
for i, server in enumerate(servers):
server.flavor['id'] = str(uuid.UUID(int=i))
api.server_list(IsA(http.HttpRequest)).AndReturn(servers)
api.flavor_list(IsA(http.HttpRequest)).AndReturn(flavors)
api.nova.server_list(IsA(http.HttpRequest)).AndReturn(servers)
api.nova.flavor_list(IsA(http.HttpRequest)).AndReturn(flavors)
for server in servers:
api.flavor_get(IsA(http.HttpRequest), server.flavor["id"]). \
api.nova.flavor_get(IsA(http.HttpRequest), server.flavor["id"]). \
AndRaise(self.exceptions.nova)
api.tenant_absolute_limits(IsA(http.HttpRequest), reserved=True) \
api.nova.tenant_absolute_limits(IsA(http.HttpRequest), reserved=True) \
.MultipleTimes().AndReturn(self.limits['absolute'])
self.mox.ReplayAll()
@ -125,15 +135,16 @@ class InstanceTests(test.TestCase):
self.assertMessageCount(res, error=len(servers))
self.assertItemsEqual(instances, self.servers.list())
@test.create_stubs({api: ('server_list',
'flavor_list',
'server_delete',)})
@test.create_stubs({api.nova: ('server_list',
'flavor_list',
'server_delete',)})
def test_terminate_instance(self):
server = self.servers.first()
api.server_list(IsA(http.HttpRequest)).AndReturn(self.servers.list())
api.flavor_list(IgnoreArg()).AndReturn(self.flavors.list())
api.server_delete(IsA(http.HttpRequest), server.id)
api.nova.server_list(IsA(http.HttpRequest)) \
.AndReturn(self.servers.list())
api.nova.flavor_list(IgnoreArg()).AndReturn(self.flavors.list())
api.nova.server_delete(IsA(http.HttpRequest), server.id)
self.mox.ReplayAll()
@ -142,15 +153,16 @@ class InstanceTests(test.TestCase):
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('server_list',
'flavor_list',
'server_delete',)})
@test.create_stubs({api.nova: ('server_list',
'flavor_list',
'server_delete',)})
def test_terminate_instance_exception(self):
server = self.servers.first()
api.server_list(IsA(http.HttpRequest)).AndReturn(self.servers.list())
api.flavor_list(IgnoreArg()).AndReturn(self.flavors.list())
api.server_delete(IsA(http.HttpRequest), server.id) \
api.nova.server_list(IsA(http.HttpRequest)) \
.AndReturn(self.servers.list())
api.nova.flavor_list(IgnoreArg()).AndReturn(self.flavors.list())
api.nova.server_delete(IsA(http.HttpRequest), server.id) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
@ -160,15 +172,17 @@ class InstanceTests(test.TestCase):
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('server_pause',
'server_list',
'flavor_list',)})
@test.create_stubs({api.nova: ('server_pause',
'server_list',
'flavor_list',)})
def test_pause_instance(self):
server = self.servers.first()
api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors.list())
api.server_list(IsA(http.HttpRequest)).AndReturn(self.servers.list())
api.server_pause(IsA(http.HttpRequest), server.id)
api.nova.flavor_list(IsA(http.HttpRequest)) \
.AndReturn(self.flavors.list())
api.nova.server_list(IsA(http.HttpRequest)) \
.AndReturn(self.servers.list())
api.nova.server_pause(IsA(http.HttpRequest), server.id)
self.mox.ReplayAll()
@ -177,15 +191,17 @@ class InstanceTests(test.TestCase):
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('server_pause',
'server_list',
'flavor_list',)})
@test.create_stubs({api.nova: ('server_pause',
'server_list',
'flavor_list',)})
def test_pause_instance_exception(self):
server = self.servers.first()
api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors.list())
api.server_list(IsA(http.HttpRequest)).AndReturn(self.servers.list())
api.server_pause(IsA(http.HttpRequest), server.id) \
api.nova.flavor_list(IsA(http.HttpRequest)) \
.AndReturn(self.flavors.list())
api.nova.server_list(IsA(http.HttpRequest)) \
.AndReturn(self.servers.list())
api.nova.server_pause(IsA(http.HttpRequest), server.id) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
@ -195,16 +211,18 @@ class InstanceTests(test.TestCase):
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('server_unpause',
'server_list',
'flavor_list',)})
@test.create_stubs({api.nova: ('server_unpause',
'server_list',
'flavor_list',)})
def test_unpause_instance(self):
server = self.servers.first()
server.status = "PAUSED"
api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors.list())
api.server_list(IsA(http.HttpRequest)).AndReturn(self.servers.list())
api.server_unpause(IsA(http.HttpRequest), server.id)
api.nova.flavor_list(IsA(http.HttpRequest)) \
.AndReturn(self.flavors.list())
api.nova.server_list(IsA(http.HttpRequest)) \
.AndReturn(self.servers.list())
api.nova.server_unpause(IsA(http.HttpRequest), server.id)
self.mox.ReplayAll()
@ -213,16 +231,18 @@ class InstanceTests(test.TestCase):
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('server_unpause',
'server_list',
'flavor_list',)})
@test.create_stubs({api.nova: ('server_unpause',
'server_list',
'flavor_list',)})
def test_unpause_instance_exception(self):
server = self.servers.first()
server.status = "PAUSED"
api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors.list())
api.server_list(IsA(http.HttpRequest)).AndReturn(self.servers.list())
api.server_unpause(IsA(http.HttpRequest), server.id) \
api.nova.flavor_list(IsA(http.HttpRequest)) \
.AndReturn(self.flavors.list())
api.nova.server_list(IsA(http.HttpRequest)) \
.AndReturn(self.servers.list())
api.nova.server_unpause(IsA(http.HttpRequest), server.id) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
@ -232,15 +252,17 @@ class InstanceTests(test.TestCase):
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('server_reboot',
'server_list',
'flavor_list',)})
@test.create_stubs({api.nova: ('server_reboot',
'server_list',
'flavor_list',)})
def test_reboot_instance(self):
server = self.servers.first()
api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors.list())
api.server_list(IsA(http.HttpRequest)).AndReturn(self.servers.list())
api.server_reboot(IsA(http.HttpRequest), server.id)
api.nova.flavor_list(IsA(http.HttpRequest)) \
.AndReturn(self.flavors.list())
api.nova.server_list(IsA(http.HttpRequest)) \
.AndReturn(self.servers.list())
api.nova.server_reboot(IsA(http.HttpRequest), server.id)
self.mox.ReplayAll()
@ -249,16 +271,18 @@ class InstanceTests(test.TestCase):
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('server_reboot',
'server_list',
'flavor_list',)})
@test.create_stubs({api.nova: ('server_reboot',
'server_list',
'flavor_list',)})
def test_reboot_instance_exception(self):
server = self.servers.first()
api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors.list())
api.server_list(IsA(http.HttpRequest)).AndReturn(self.servers.list())
api.server_reboot(IsA(http.HttpRequest), server.id) \
.AndRaise(self.exceptions.nova)
api.nova.flavor_list(IsA(http.HttpRequest)) \
.AndReturn(self.flavors.list())
api.nova.server_list(IsA(http.HttpRequest)) \
.AndReturn(self.servers.list())
api.nova.server_reboot(IsA(http.HttpRequest), server.id) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
@ -267,15 +291,17 @@ class InstanceTests(test.TestCase):
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('server_suspend',
'server_list',
'flavor_list',)})
@test.create_stubs({api.nova: ('server_suspend',
'server_list',
'flavor_list',)})
def test_suspend_instance(self):
server = self.servers.first()
api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors.list())
api.server_list(IsA(http.HttpRequest)).AndReturn(self.servers.list())
api.server_suspend(IsA(http.HttpRequest), unicode(server.id))
api.nova.flavor_list(IsA(http.HttpRequest)) \
.AndReturn(self.flavors.list())
api.nova.server_list(IsA(http.HttpRequest)) \
.AndReturn(self.servers.list())
api.nova.server_suspend(IsA(http.HttpRequest), unicode(server.id))
self.mox.ReplayAll()
@ -284,16 +310,18 @@ class InstanceTests(test.TestCase):
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('server_suspend',
'server_list',
'flavor_list',)})
@test.create_stubs({api.nova: ('server_suspend',
'server_list',
'flavor_list',)})
def test_suspend_instance_exception(self):
server = self.servers.first()
api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors.list())
api.server_list(IsA(http.HttpRequest)).AndReturn(self.servers.list())
api.server_suspend(IsA(http.HttpRequest),
unicode(server.id)).AndRaise(self.exceptions.nova)
api.nova.flavor_list(IsA(http.HttpRequest)) \
.AndReturn(self.flavors.list())
api.nova.server_list(IsA(http.HttpRequest)) \
.AndReturn(self.servers.list())
api.nova.server_suspend(IsA(http.HttpRequest), unicode(server.id)) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
@ -302,16 +330,18 @@ class InstanceTests(test.TestCase):
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('server_resume',
'server_list',
'flavor_list',)})
@test.create_stubs({api.nova: ('server_resume',
'server_list',
'flavor_list',)})
def test_resume_instance(self):
server = self.servers.first()
server.status = "SUSPENDED"
api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors.list())
api.server_list(IsA(http.HttpRequest)).AndReturn(self.servers.list())
api.server_resume(IsA(http.HttpRequest), unicode(server.id))
api.nova.flavor_list(IsA(http.HttpRequest)) \
.AndReturn(self.flavors.list())
api.nova.server_list(IsA(http.HttpRequest)) \
.AndReturn(self.servers.list())
api.nova.server_resume(IsA(http.HttpRequest), unicode(server.id))
self.mox.ReplayAll()
@ -320,17 +350,20 @@ class InstanceTests(test.TestCase):
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('server_resume',
'server_list',
'flavor_list',)})
@test.create_stubs({api.nova: ('server_resume',
'server_list',
'flavor_list',)})
def test_resume_instance_exception(self):
server = self.servers.first()
server.status = "SUSPENDED"
api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors.list())
api.server_list(IsA(http.HttpRequest)).AndReturn(self.servers.list())
api.server_resume(IsA(http.HttpRequest),
unicode(server.id)).AndRaise(self.exceptions.nova)
api.nova.flavor_list(IsA(http.HttpRequest)) \
.AndReturn(self.flavors.list())
api.nova.server_list(IsA(http.HttpRequest)) \
.AndReturn(self.servers.list())
api.nova.server_resume(IsA(http.HttpRequest),
unicode(server.id)) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
@ -339,21 +372,21 @@ class InstanceTests(test.TestCase):
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ("server_get",
"instance_volumes_list",
"flavor_get",
"server_security_groups")})
@test.create_stubs({api.nova: ("server_get",
"instance_volumes_list",
"flavor_get",
"server_security_groups")})
def test_instance_details_volumes(self):
server = self.servers.first()
volumes = [self.volumes.list()[1]]
api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.instance_volumes_list(IsA(http.HttpRequest),
server.id).AndReturn(volumes)
api.flavor_get(IsA(http.HttpRequest),
server.flavor['id']).AndReturn(self.flavors.first())
api.server_security_groups(IsA(http.HttpRequest),
server.id).AndReturn(self.security_groups.first())
api.nova.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.nova.instance_volumes_list(IsA(http.HttpRequest),
server.id).AndReturn(volumes)
api.nova.flavor_get(IsA(http.HttpRequest), server.flavor['id']) \
.AndReturn(self.flavors.first())
api.nova.server_security_groups(IsA(http.HttpRequest), server.id) \
.AndReturn(self.security_groups.first())
self.mox.ReplayAll()
@ -363,21 +396,21 @@ class InstanceTests(test.TestCase):
self.assertItemsEqual(res.context['instance'].volumes, volumes)
@test.create_stubs({api: ("server_get",
"instance_volumes_list",
"flavor_get",
"server_security_groups")})
@test.create_stubs({api.nova: ("server_get",
"instance_volumes_list",
"flavor_get",
"server_security_groups")})
def test_instance_details_volume_sorting(self):
server = self.servers.first()
volumes = self.volumes.list()[1:3]
api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.instance_volumes_list(IsA(http.HttpRequest),
server.id).AndReturn(volumes)
api.flavor_get(IsA(http.HttpRequest),
server.flavor['id']).AndReturn(self.flavors.first())
api.server_security_groups(IsA(http.HttpRequest),
server.id).AndReturn(self.security_groups.first())
api.nova.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.nova.instance_volumes_list(IsA(http.HttpRequest),
server.id).AndReturn(volumes)
api.nova.flavor_get(IsA(http.HttpRequest), server.flavor['id']) \
.AndReturn(self.flavors.first())
api.nova.server_security_groups(IsA(http.HttpRequest), server.id) \
.AndReturn(self.security_groups.first())
self.mox.ReplayAll()
@ -391,20 +424,20 @@ class InstanceTests(test.TestCase):
self.assertEquals(res.context['instance'].volumes[1].device,
"/dev/hdk")
@test.create_stubs({api: ("server_get",
"instance_volumes_list",
"flavor_get",
"server_security_groups",)})
@test.create_stubs({api.nova: ("server_get",
"instance_volumes_list",
"flavor_get",
"server_security_groups",)})
def test_instance_details_metadata(self):
server = self.servers.first()
api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.instance_volumes_list(IsA(http.HttpRequest),
server.id).AndReturn([])
api.flavor_get(IsA(http.HttpRequest),
server.flavor['id']).AndReturn(self.flavors.first())
api.server_security_groups(IsA(http.HttpRequest),
server.id).AndReturn(self.security_groups.list())
api.nova.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.nova.instance_volumes_list(IsA(http.HttpRequest),
server.id).AndReturn([])
api.nova.flavor_get(IsA(http.HttpRequest), server.flavor['id']) \
.AndReturn(self.flavors.first())
api.nova.server_security_groups(IsA(http.HttpRequest), server.id) \
.AndReturn(self.security_groups.list())
self.mox.ReplayAll()
@ -423,13 +456,13 @@ class InstanceTests(test.TestCase):
self.assertContains(res, "<dt>empty</dt>", 1)
self.assertContains(res, "<dd><em>N/A</em></dd>", 1)
@test.create_stubs({api: ('server_console_output',)})
@test.create_stubs({api.nova: ('server_console_output',)})
def test_instance_log(self):
server = self.servers.first()
CONSOLE_OUTPUT = 'output'
api.server_console_output(IsA(http.HttpRequest),
server.id, tail_length=None) \
api.nova.server_console_output(IsA(http.HttpRequest),
server.id, tail_length=None) \
.AndReturn(CONSOLE_OUTPUT)
self.mox.ReplayAll()
@ -444,12 +477,12 @@ class InstanceTests(test.TestCase):
self.assertIsInstance(res, http.HttpResponse)
self.assertContains(res, CONSOLE_OUTPUT)
@test.create_stubs({api: ('server_console_output',)})
@test.create_stubs({api.nova: ('server_console_output',)})
def test_instance_log_exception(self):
server = self.servers.first()
api.server_console_output(IsA(http.HttpRequest),
server.id, tail_length=None) \
api.nova.server_console_output(IsA(http.HttpRequest),
server.id, tail_length=None) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
@ -466,13 +499,15 @@ class InstanceTests(test.TestCase):
server = self.servers.first()
CONSOLE_OUTPUT = '/vncserver'
console_mock = self.mox.CreateMock(api.VNCConsole)
console_mock = self.mox.CreateMock(api.nova.VNCConsole)
console_mock.url = CONSOLE_OUTPUT
self.mox.StubOutWithMock(api, 'server_vnc_console')
self.mox.StubOutWithMock(api, 'server_get')
api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.server_vnc_console(IgnoreArg(), server.id).AndReturn(console_mock)
self.mox.StubOutWithMock(api.nova, 'server_vnc_console')
self.mox.StubOutWithMock(api.nova, 'server_get')
api.nova.server_get(IsA(http.HttpRequest), server.id) \
.AndReturn(server)
api.nova.server_vnc_console(IgnoreArg(), server.id) \
.AndReturn(console_mock)
self.mox.ReplayAll()
url = reverse('horizon:project:instances:vnc',
@ -481,11 +516,11 @@ class InstanceTests(test.TestCase):
redirect = CONSOLE_OUTPUT + '&title=%s(1)' % server.name
self.assertRedirectsNoFollow(res, redirect)
@test.create_stubs({api: ('server_vnc_console',)})
@test.create_stubs({api.nova: ('server_vnc_console',)})
def test_instance_vnc_exception(self):
server = self.servers.first()
api.server_vnc_console(IsA(http.HttpRequest), server.id) \
api.nova.server_vnc_console(IsA(http.HttpRequest), server.id) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
@ -496,27 +531,27 @@ class InstanceTests(test.TestCase):
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('server_get',
'snapshot_create',
'snapshot_list_detailed',
'image_list_detailed',
'volume_snapshot_list',
'server_list',
'flavor_list',
'server_delete',)})
@test.create_stubs({api.nova: ('server_get',
'snapshot_create',
'server_list',
'flavor_list',
'server_delete'),
cinder: ('volume_snapshot_list',),
api.glance: ('snapshot_list_detailed',
'image_list_detailed')})
def test_create_instance_snapshot(self):
server = self.servers.first()
api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.snapshot_create(IsA(http.HttpRequest),
server.id,
"snapshot1").AndReturn(self.snapshots.first())
api.nova.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.nova.snapshot_create(IsA(http.HttpRequest),
server.id,
"snapshot1").AndReturn(self.snapshots.first())
api.snapshot_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn([[], False])
api.image_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn([[], False])
api.volume_snapshot_list(IsA(http.HttpRequest)).AndReturn([])
api.glance.snapshot_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn([[], False])
api.glance.image_list_detailed(IsA(http.HttpRequest),
marker=None).AndReturn([[], False])
cinder.volume_snapshot_list(IsA(http.HttpRequest)).AndReturn([])
self.mox.ReplayAll()
@ -529,11 +564,11 @@ class InstanceTests(test.TestCase):
res = self.client.post(url, formData)
self.assertRedirects(res, redir_url)
@test.create_stubs({api: ('server_get',)})
@test.create_stubs({api.nova: ('server_get',)})
def test_instance_update_get(self):
server = self.servers.first()
api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.nova.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
self.mox.ReplayAll()
@ -542,11 +577,11 @@ class InstanceTests(test.TestCase):
self.assertTemplateUsed(res, 'project/instances/update.html')
@test.create_stubs({api: ('server_get',)})
@test.create_stubs({api.nova: ('server_get',)})
def test_instance_update_get_server_get_exception(self):
server = self.servers.first()
api.server_get(IsA(http.HttpRequest), server.id) \
api.nova.server_get(IsA(http.HttpRequest), server.id) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
@ -557,14 +592,14 @@ class InstanceTests(test.TestCase):
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('server_get', 'server_update')})
@test.create_stubs({api.nova: ('server_get', 'server_update')})
def test_instance_update_post(self):
server = self.servers.first()
api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.server_update(IsA(http.HttpRequest),
server.id,
server.name).AndReturn(server)
api.nova.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.nova.server_update(IsA(http.HttpRequest),
server.id,
server.name).AndReturn(server)
self.mox.ReplayAll()
@ -578,12 +613,12 @@ class InstanceTests(test.TestCase):
self.assertRedirectsNoFollow(res, INDEX_URL)
@test.create_stubs({api: ('server_get', 'server_update')})
@test.create_stubs({api.nova: ('server_get', 'server_update')})
def test_instance_update_post_api_exception(self):
server = self.servers.first()
api.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.server_update(IsA(http.HttpRequest), server.id, server.name) \
api.nova.server_get(IsA(http.HttpRequest), server.id).AndReturn(server)
api.nova.server_update(IsA(http.HttpRequest), server.id, server.name) \
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
@ -617,7 +652,7 @@ class InstanceTests(test.TestCase):
api.glance.image_list_detailed(IsA(http.HttpRequest),
filters={'is_public': True,
'status': 'active'}) \
.AndReturn([self.images.list(), False])
.AndReturn([self.images.list(), False])
api.glance.image_list_detailed(IsA(http.HttpRequest),
filters={'property-owner_id': self.tenant.id,
'status': 'active'}) \
@ -995,16 +1030,18 @@ class InstanceTests(test.TestCase):
self.assertContains(res, "greater than or equal to 1")
@test.create_stubs({api: ('flavor_list', 'server_list',
'tenant_absolute_limits',)})
@test.create_stubs({api.nova: ('flavor_list', 'server_list',
'tenant_absolute_limits',)})
def test_launch_button_disabled_when_quota_exceeded(self):
limits = self.limits['absolute']
limits['totalInstancesUsed'] = limits['maxTotalInstances']
api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors.list())
api.server_list(IsA(http.HttpRequest)).AndReturn(self.servers.list())
api.tenant_absolute_limits(IsA(http.HttpRequest), reserved=True) \
.MultipleTimes().AndReturn(limits)
api.nova.flavor_list(IsA(http.HttpRequest)) \
.AndReturn(self.flavors.list())
api.nova.server_list(IsA(http.HttpRequest)) \
.AndReturn(self.servers.list())
api.nova.tenant_absolute_limits(IsA(http.HttpRequest), reserved=True) \
.MultipleTimes().AndReturn(limits)
self.mox.ReplayAll()
@ -1021,15 +1058,17 @@ class InstanceTests(test.TestCase):
html=True,
msg_prefix="The launch button is not disabled")
@test.create_stubs({api: ('flavor_list', 'server_list',
'tenant_absolute_limits')})
@test.create_stubs({api.nova: ('flavor_list', 'server_list',
'tenant_absolute_limits')})
def test_index_options_after_migrate(self):
server = self.servers.first()
server.status = "VERIFY_RESIZE"
api.flavor_list(IsA(http.HttpRequest)).AndReturn(self.flavors.list())
api.server_list(IsA(http.HttpRequest)).AndReturn(self.servers.list())
api.tenant_absolute_limits(IsA(http.HttpRequest), reserved=True) \
api.nova.flavor_list(IsA(http.HttpRequest)) \
.AndReturn(self.flavors.list())
api.nova.server_list(IsA(http.HttpRequest)) \
.AndReturn(self.servers.list())
api.nova.tenant_absolute_limits(IsA(http.HttpRequest), reserved=True) \
.MultipleTimes().AndReturn(self.limits['absolute'])
self.mox.ReplayAll()

View File

@ -52,7 +52,7 @@ class IndexView(tables.DataTableView):
def get_data(self):
# Gather our instances
try:
instances = api.server_list(self.request)
instances = api.nova.server_list(self.request)
except:
instances = []
exceptions.handle(self.request,
@ -60,7 +60,7 @@ class IndexView(tables.DataTableView):
# Gather our flavors and correlate our instances to them
if instances:
try:
flavors = api.flavor_list(self.request)
flavors = api.nova.flavor_list(self.request)
except:
flavors = []
exceptions.handle(self.request, ignore=True)
@ -76,8 +76,8 @@ class IndexView(tables.DataTableView):
else:
# If the flavor_id is not in full_flavors list,
# get it via nova api.
instance.full_flavor = api.flavor_get(self.request,
flavor_id)
instance.full_flavor = api.nova.flavor_get(
self.request, flavor_id)
except:
msg = _('Unable to retrieve instance size information.')
exceptions.handle(self.request, msg)
@ -99,9 +99,9 @@ def console(request, instance_id):
try:
# TODO(jakedahn): clean this up once the api supports tailing.
tail = request.GET.get('length', None)
data = api.server_console_output(request,
instance_id,
tail_length=tail)
data = api.nova.server_console_output(request,
instance_id,
tail_length=tail)
except:
data = _('Unable to get log for instance "%s".') % instance_id
exceptions.handle(request, ignore=True)
@ -113,8 +113,8 @@ def console(request, instance_id):
def vnc(request, instance_id):
try:
console = api.server_vnc_console(request, instance_id)
instance = api.server_get(request, instance_id)
console = api.nova.server_vnc_console(request, instance_id)
instance = api.nova.server_get(request, instance_id)
return shortcuts.redirect(console.url +
("&title=%s(%s)" % (instance.name, instance_id)))
except:
@ -138,7 +138,7 @@ class UpdateView(forms.ModalFormView):
if not hasattr(self, "_object"):
instance_id = self.kwargs['instance_id']
try:
self._object = api.server_get(self.request, instance_id)
self._object = api.nova.server_get(self.request, instance_id)
except:
redirect = reverse("horizon:project:instances:index")
msg = _('Unable to retrieve instance details.')
@ -164,14 +164,14 @@ class DetailView(tabs.TabView):
if not hasattr(self, "_instance"):
try:
instance_id = self.kwargs['instance_id']
instance = api.server_get(self.request, instance_id)
instance.volumes = api.instance_volumes_list(self.request,
instance_id)
instance = api.nova.server_get(self.request, instance_id)
instance.volumes = api.nova.instance_volumes_list(self.request,
instance_id)
# Sort by device name
instance.volumes.sort(key=lambda vol: vol.device)
instance.full_flavor = api.flavor_get(self.request,
instance.flavor["id"])
instance.security_groups = api.server_security_groups(
instance.full_flavor = api.nova.flavor_get(
self.request, instance.flavor["id"])
instance.security_groups = api.nova.server_security_groups(
self.request, instance_id)
except:
redirect = reverse('horizon:project:instances:index')

View File

@ -30,6 +30,7 @@ from horizon import workflows
from openstack_dashboard import api
from openstack_dashboard.api import cinder
from openstack_dashboard.api import glance
from openstack_dashboard.usage import quotas
@ -119,7 +120,7 @@ class VolumeOptionsAction(workflows.Action):
volume_options = [("", _("Select Volume"))]
try:
volumes = [v for v in cinder.volume_list(self.request)
if v.status == api.VOLUME_STATE_AVAILABLE]
if v.status == api.cinder.VOLUME_STATE_AVAILABLE]
volume_options.extend([self._get_volume_display_name(vol)
for vol in volumes])
except:
@ -132,7 +133,7 @@ class VolumeOptionsAction(workflows.Action):
try:
snapshots = cinder.volume_snapshot_list(self.request)
snapshots = [s for s in snapshots
if s.status == api.VOLUME_STATE_AVAILABLE]
if s.status == api.cinder.VOLUME_STATE_AVAILABLE]
volume_options.extend([self._get_volume_display_name(snap)
for snap in snapshots])
except:
@ -223,8 +224,8 @@ class SetInstanceDetailsAction(workflows.Action):
public = {"is_public": True,
"status": "active"}
try:
public_images, _more = api.glance.image_list_detailed(request,
filters=public)
public_images, _more = glance.image_list_detailed(
request, filters=public)
except:
public_images = []
exceptions.handle(request,
@ -239,8 +240,8 @@ class SetInstanceDetailsAction(workflows.Action):
owner = {"property-owner_id": project_id,
"status": "active"}
try:
owned_images, _more = api.glance.image_list_detailed(request,
filters=owner)
owned_images, _more = glance.image_list_detailed(
request, filters=owner)
except:
exceptions.handle(request,
_("Unable to retrieve images for "

View File

@ -40,12 +40,12 @@ class UsageViewTests(test.TestCase):
now = timezone.now()
usage_obj = api.nova.NovaUsage(self.usages.first())
quota_data = self.quota_usages.first()
self.mox.StubOutWithMock(api, 'usage_get')
self.mox.StubOutWithMock(api.nova, 'usage_get')
self.mox.StubOutWithMock(quotas, 'tenant_quota_usages')
api.usage_get(IsA(http.HttpRequest), self.tenant.id,
datetime.datetime(now.year, now.month, 1, 0, 0, 0),
Func(usage.almost_now)) \
.AndReturn(usage_obj)
api.nova.usage_get(IsA(http.HttpRequest), self.tenant.id,
datetime.datetime(now.year, now.month, 1, 0, 0, 0),
Func(usage.almost_now)) \
.AndReturn(usage_obj)
quotas.tenant_quota_usages(IsA(http.HttpRequest)).AndReturn(quota_data)
self.mox.ReplayAll()
@ -57,11 +57,11 @@ class UsageViewTests(test.TestCase):
def test_unauthorized(self):
exc = self.exceptions.keystone_unauthorized
now = timezone.now()
self.mox.StubOutWithMock(api, 'usage_get')
api.usage_get(IsA(http.HttpRequest), self.tenant.id,
datetime.datetime(now.year, now.month, 1, 0, 0, 0),
Func(usage.almost_now)) \
.AndRaise(exc)
self.mox.StubOutWithMock(api.nova, 'usage_get')
api.nova.usage_get(IsA(http.HttpRequest), self.tenant.id,
datetime.datetime(now.year, now.month, 1, 0, 0, 0),
Func(usage.almost_now)) \
.AndRaise(exc)
self.mox.ReplayAll()
url = reverse('horizon:project:overview:index')
@ -72,14 +72,14 @@ class UsageViewTests(test.TestCase):
now = timezone.now()
usage_obj = api.nova.NovaUsage(self.usages.first())
quota_data = self.quota_usages.first()
self.mox.StubOutWithMock(api, 'usage_get')
self.mox.StubOutWithMock(api.nova, 'usage_get')
self.mox.StubOutWithMock(quotas, 'tenant_quota_usages')
timestamp = datetime.datetime(now.year, now.month, 1, 0, 0, 0)
api.usage_get(IsA(http.HttpRequest),
self.tenant.id,
timestamp,
Func(usage.almost_now)) \
.AndReturn(usage_obj)
api.nova.usage_get(IsA(http.HttpRequest),
self.tenant.id,
timestamp,
Func(usage.almost_now)) \
.AndReturn(usage_obj)
quotas.tenant_quota_usages(IsA(http.HttpRequest)).AndReturn(quota_data)
self.mox.ReplayAll()
@ -91,14 +91,14 @@ class UsageViewTests(test.TestCase):
def test_usage_exception_usage(self):
now = timezone.now()
quota_data = self.quota_usages.first()
self.mox.StubOutWithMock(api, 'usage_get')
self.mox.StubOutWithMock(api.nova, 'usage_get')
self.mox.StubOutWithMock(quotas, 'tenant_quota_usages')
timestamp = datetime.datetime(now.year, now.month, 1, 0, 0, 0)
api.usage_get(IsA(http.HttpRequest),
self.tenant.id,
timestamp,
Func(usage.almost_now)) \
.AndRaise(self.exceptions.nova)
api.nova.usage_get(IsA(http.HttpRequest),
self.tenant.id,
timestamp,
Func(usage.almost_now)) \
.AndRaise(self.exceptions.nova)
quotas.tenant_quota_usages(IsA(http.HttpRequest)).AndReturn(quota_data)
self.mox.ReplayAll()
@ -109,14 +109,14 @@ class UsageViewTests(test.TestCase):
def test_usage_exception_quota(self):
now = timezone.now()
usage_obj = api.nova.NovaUsage(self.usages.first())
self.mox.StubOutWithMock(api, 'usage_get')
self.mox.StubOutWithMock(api.nova, 'usage_get')
self.mox.StubOutWithMock(quotas, 'tenant_quota_usages')
timestamp = datetime.datetime(now.year, now.month, 1, 0, 0, 0)
api.usage_get(IsA(http.HttpRequest),
self.tenant.id,
timestamp,
Func(usage.almost_now)) \
.AndReturn(usage_obj)
api.nova.usage_get(IsA(http.HttpRequest),
self.tenant.id,
timestamp,
Func(usage.almost_now)) \
.AndReturn(usage_obj)
quotas.tenant_quota_usages(IsA(http.HttpRequest))\
.AndRaise(self.exceptions.nova)
self.mox.ReplayAll()
@ -129,14 +129,14 @@ class UsageViewTests(test.TestCase):
now = timezone.now()
usage_obj = api.nova.NovaUsage(self.usages.first())
quota_data = self.quota_usages.first()
self.mox.StubOutWithMock(api, 'usage_get')
self.mox.StubOutWithMock(api.nova, 'usage_get')
self.mox.StubOutWithMock(quotas, 'tenant_quota_usages')
timestamp = datetime.datetime(now.year, now.month, 1, 0, 0, 0)
api.usage_get(IsA(http.HttpRequest),
self.tenant.id,
timestamp,
Func(usage.almost_now)) \
.AndReturn(usage_obj)
api.nova.usage_get(IsA(http.HttpRequest),
self.tenant.id,
timestamp,
Func(usage.almost_now)) \
.AndReturn(usage_obj)
quotas.tenant_quota_usages(IsA(http.HttpRequest)).AndReturn(quota_data)
self.mox.ReplayAll()

View File

@ -38,7 +38,7 @@ class DeleteRouter(tables.DeleteAction):
obj = self.table.get_object_by_id(obj_id)
name = self.table.get_object_display(obj)
try:
api.router_delete(request, obj_id)
api.quantum.router_delete(request, obj_id)
except q_ext.QuantumClientException as e:
msg = _('Unable to delete router "%s"') % e.message
LOG.info(msg)
@ -65,7 +65,7 @@ class UpdateRow(tables.Row):
ajax = True
def get_data(self, request, router_id):
router = api.router_get(request, router_id)
router = api.quantum.router_get(request, router_id)
return router

View File

@ -31,7 +31,7 @@ class OverviewTab(tabs.Tab):
def get_context_data(self, request):
router_id = self.tab_group.kwargs['router_id']
try:
router = api.router_get(request, router_id)
router = api.quantum.router_get(request, router_id)
except:
redirect = reverse(redirect_url)
exceptions.handle(self.request,

View File

@ -188,10 +188,10 @@ class AttachForm(forms.SelfHandlingForm):
# it, so let's slice that off...
instance_name = instance_name.rsplit(" (")[0]
try:
attach = api.instance_volume_attach(request,
data['volume_id'],
data['instance'],
data.get('device', ''))
attach = api.nova.instance_volume_attach(request,
data['volume_id'],
data['instance'],
data.get('device', ''))
volume = cinder.volume_get(request, data['volume_id'])
if not volume.display_name:
volume_name = volume.id

View File

@ -196,9 +196,9 @@ class DetachVolume(tables.BatchAction):
def action(self, request, obj_id):
attachment = self.table.get_object_by_id(obj_id)
api.instance_volume_detach(request,
attachment.get('server_id', None),
obj_id)
api.nova.instance_volume_detach(request,
attachment.get('server_id', None),
obj_id)
def get_success_url(self, request):
return reverse('horizon:project:volumes:index')

View File

@ -73,13 +73,14 @@ class DownloadX509Credentials(forms.SelfHandlingForm):
keys = find_or_create_access_keys(request, data.get('tenant'))
context = {'ec2_access_key': keys.access,
'ec2_secret_key': keys.secret,
'ec2_endpoint': api.url_for(request,
'ec2',
endpoint_type='publicURL')}
'ec2_endpoint': api.base.url_for(
request,
'ec2',
endpoint_type='publicURL')}
try:
s3_endpoint = api.url_for(request,
's3',
endpoint_type='publicURL')
s3_endpoint = api.base.url_for(request,
's3',
endpoint_type='publicURL')
except exceptions.ServiceCatalogException:
s3_endpoint = None
context['s3_endpoint'] = s3_endpoint

View File

@ -41,7 +41,7 @@ class DownloadOpenRCForm(forms.SelfHandlingForm):
# Populate tenant choices
tenant_choices = []
try:
tenants = api.tenant_list(request)
tenants = api.keystone.tenant_list(request)
except:
tenants = []
exceptions.handle(request, _("Unable to retrieve project list."))
@ -55,9 +55,9 @@ class DownloadOpenRCForm(forms.SelfHandlingForm):
tenant_id = data['tenant']
tenant_name = dict(self.fields['tenant'].choices)[tenant_id]
keystone_url = api.url_for(request,
'identity',
endpoint_type='publicURL')
keystone_url = api.base.url_for(request,
'identity',
endpoint_type='publicURL')
context = {'user': request.user,
'auth_url': keystone_url,

View File

@ -41,7 +41,7 @@ class ServerWrapperTests(test.TestCase):
image.id).AndReturn(image)
self.mox.ReplayAll()
server = api.Server(self.servers.first(), self.request)
server = api.nova.Server(self.servers.first(), self.request)
self.assertEqual(server.image_name, image.name)
@ -70,9 +70,9 @@ class ComputeApiTests(test.APITestCase):
console_type).AndReturn(console)
self.mox.ReplayAll()
ret_val = api.server_vnc_console(self.request,
server.id,
console_type)
ret_val = api.nova.server_vnc_console(self.request,
server.id,
console_type)
self.assertIsInstance(ret_val, api.nova.VNCConsole)
def test_server_list(self):
@ -85,7 +85,7 @@ class ComputeApiTests(test.APITestCase):
ret_val = api.nova.server_list(self.request, all_tenants=True)
for server in ret_val:
self.assertIsInstance(server, api.Server)
self.assertIsInstance(server, api.nova.Server)
def test_usage_get(self):
novaclient = self.stub_novaclient()
@ -95,7 +95,8 @@ class ComputeApiTests(test.APITestCase):
'end').AndReturn(self.usages.first())
self.mox.ReplayAll()
ret_val = api.usage_get(self.request, self.tenant.id, 'start', 'end')
ret_val = api.nova.usage_get(self.request, self.tenant.id,
'start', 'end')
self.assertIsInstance(ret_val, api.nova.NovaUsage)
def test_usage_list(self):
@ -106,9 +107,9 @@ class ComputeApiTests(test.APITestCase):
novaclient.usage.list('start', 'end', True).AndReturn(usages)
self.mox.ReplayAll()
ret_val = api.usage_list(self.request, 'start', 'end')
ret_val = api.nova.usage_list(self.request, 'start', 'end')
for usage in ret_val:
self.assertIsInstance(usage, api.NovaUsage)
self.assertIsInstance(usage, api.nova.NovaUsage)
def test_server_get(self):
server = self.servers.first()
@ -118,7 +119,7 @@ class ComputeApiTests(test.APITestCase):
novaclient.servers.get(server.id).AndReturn(server)
self.mox.ReplayAll()
ret_val = api.server_get(self.request, server.id)
ret_val = api.nova.server_get(self.request, server.id)
self.assertIsInstance(ret_val, api.nova.Server)
def test_server_remove_floating_ip(self):
@ -134,9 +135,9 @@ class ComputeApiTests(test.APITestCase):
.AndReturn(server)
self.mox.ReplayAll()
server = api.server_remove_floating_ip(self.request,
server.id,
floating_ip.id)
server = api.nova.server_remove_floating_ip(self.request,
server.id,
floating_ip.id)
self.assertIsInstance(server, api.nova.Server)
def test_server_add_floating_ip(self):
@ -152,9 +153,9 @@ class ComputeApiTests(test.APITestCase):
.AndReturn(server)
self.mox.ReplayAll()
server = api.server_add_floating_ip(self.request,
server.id,
floating_ip.id)
server = api.nova.server_add_floating_ip(self.request,
server.id,
floating_ip.id)
self.assertIsInstance(server, api.nova.Server)
def test_absolute_limits_handle_unlimited(self):
@ -172,7 +173,7 @@ class ComputeApiTests(test.APITestCase):
novaclient.limits.get(reserved=True).AndReturn(limits)
self.mox.ReplayAll()
ret_val = api.tenant_absolute_limits(self.request, reserved=True)
ret_val = api.nova.tenant_absolute_limits(self.request, reserved=True)
expected_results = {"maxTotalCores": float("inf"),
"maxTotalInstances": 10}
for key in expected_results.keys():

View File

@ -37,7 +37,7 @@ class SwiftApiTests(test.APITestCase):
full_listing=True).AndReturn([{}, cont_data])
self.mox.ReplayAll()
(conts, more) = api.swift_get_containers(self.request)
(conts, more) = api.swift.swift_get_containers(self.request)
self.assertEqual(len(conts), len(containers))
self.assertFalse(more)
@ -50,7 +50,7 @@ class SwiftApiTests(test.APITestCase):
swift_api.put_container(container.name).AndReturn(container)
self.mox.ReplayAll()
# Verification handled by mox, no assertions needed.
api.swift_create_container(self.request, container.name)
api.swift.swift_create_container(self.request, container.name)
def test_swift_create_container(self):
container = self.containers.first()
@ -59,7 +59,7 @@ class SwiftApiTests(test.APITestCase):
self.mox.ReplayAll()
# Verification handled by mox, no assertions needed.
with self.assertRaises(exceptions.AlreadyExists):
api.swift_create_container(self.request, container.name)
api.swift.swift_create_container(self.request, container.name)
def test_swift_get_objects(self):
container = self.containers.first()
@ -74,7 +74,8 @@ class SwiftApiTests(test.APITestCase):
full_listing=True).AndReturn([{}, objects])
self.mox.ReplayAll()
(objs, more) = api.swift_get_objects(self.request, container.name)
(objs, more) = api.swift.swift_get_objects(self.request,
container.name)
self.assertEqual(len(objs), len(objects))
self.assertFalse(more)
@ -98,10 +99,10 @@ class SwiftApiTests(test.APITestCase):
headers=headers)
self.mox.ReplayAll()
api.swift_upload_object(self.request,
container.name,
obj.name,
FakeFile())
api.swift.swift_upload_object(self.request,
container.name,
obj.name,
FakeFile())
def test_swift_object_exists(self):
container = self.containers.first()
@ -115,6 +116,6 @@ class SwiftApiTests(test.APITestCase):
self.mox.ReplayAll()
args = self.request, container.name, obj.name
self.assertTrue(api.swift_object_exists(*args))
self.assertTrue(api.swift.swift_object_exists(*args))
# Again, for a "non-existent" object
self.assertFalse(api.swift_object_exists(*args))
self.assertFalse(api.swift.swift_object_exists(*args))

View File

@ -127,7 +127,7 @@ class GlobalUsage(BaseUsage):
show_terminated = True
def get_usage_list(self, start, end):
return api.usage_list(self.request, start, end)
return api.nova.usage_list(self.request, start, end)
class TenantUsage(BaseUsage):
@ -139,7 +139,7 @@ class TenantUsage(BaseUsage):
self.show_terminated)
instances = []
terminated_instances = []
usage = api.usage_get(self.request, self.tenant_id, start, end)
usage = api.nova.usage_get(self.request, self.tenant_id, start, end)
# Attribute may not exist if there are no instances
if hasattr(usage, 'server_usages'):
now = self.today