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:
parent
b8071bcce7
commit
12faaa5c30
@ -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
|
||||
|
@ -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__)
|
||||
|
@ -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)
|
||||
|
@ -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):
|
||||
|
@ -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.'))
|
||||
|
@ -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')
|
||||
|
@ -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.')
|
||||
|
@ -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):
|
||||
|
@ -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)
|
||||
|
@ -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"
|
||||
|
@ -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()
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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))
|
||||
|
@ -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,
|
||||
|
@ -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})
|
||||
|
@ -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')
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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],
|
||||
|
@ -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):
|
||||
|
@ -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__,
|
||||
|
@ -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,
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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')
|
||||
|
@ -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)
|
||||
|
@ -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',
|
||||
|
@ -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,
|
||||
|
@ -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)
|
||||
|
@ -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 "
|
||||
|
@ -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,))
|
||||
|
||||
|
||||
|
@ -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':
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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()
|
||||
|
@ -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')
|
||||
|
@ -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 "
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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')
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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():
|
||||
|
@ -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))
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user