Began refactoring django_nova into django_openstack and submodules

This commit is contained in:
Devin Carlen 2011-05-12 14:25:06 -07:00
parent 03dce1929d
commit 9ff4f407d1
94 changed files with 86 additions and 85 deletions

View File

@ -1,10 +1,10 @@
django-nova/.installed.cfg django-openstack/.installed.cfg
django-nova/bin django-openstack/bin
django-nova/develop-eggs/ django-openstack/develop-eggs/
django-nova/downloads/ django-openstack/downloads/
django-nova/eggs/ django-openstack/eggs/
django-nova/parts/ django-openstack/parts/
django-nova/src/django_nova.egg-info django-openstack/src/django_nova.egg-info
django-nova-syspanel/src/django_nova_syspanel.egg-info django-nova-syspanel/src/django_nova_syspanel.egg-info
openstack-dashboard/.dashboard-venv openstack-dashboard/.dashboard-venv
openstack-dashboard/local/dashboard_openstack.sqlite3 openstack-dashboard/local/dashboard_openstack.sqlite3

View File

@ -1,7 +1,7 @@
[buildout] [buildout]
parts = python django parts = python django
develop = . develop = .
eggs = django-nova eggs = django-openstack
[python] [python]
recipe = zc.recipe.egg recipe = zc.recipe.egg
@ -11,9 +11,9 @@ eggs = ${buildout:eggs}
[django] [django]
recipe = djangorecipe recipe = djangorecipe
version = 1.2.4 version = 1.2.4
project = django_nova project = django_openstack
projectegg = django_nova projectegg = django_openstack
settings = testsettings settings = testsettings
test = django_nova test = django_openstack
eggs = ${buildout:eggs} eggs = ${buildout:eggs}

View File

@ -5,11 +5,11 @@ def read(fname):
return open(os.path.join(os.path.dirname(__file__), fname)).read() return open(os.path.join(os.path.dirname(__file__), fname)).read()
setup( setup(
name = "django-nova", name = "django-openstack",
version = "0.1", version = "0.2",
url = 'https://launchpad.net/django-nova/', url = 'https://launchpad.net/django-openstack/',
license = 'Apache 2.0', license = 'Apache 2.0',
description = "A Django interface for OpenStack Nova.", description = "A Django interface for OpenStack.",
long_description = read('README'), long_description = read('README'),
author = 'Devin Carlen', author = 'Devin Carlen',
author_email = 'devin.carlen@gmail.com', author_email = 'devin.carlen@gmail.com',

View File

@ -24,8 +24,8 @@ import re
from django import forms from django import forms
from django.contrib.auth import models as auth_models from django.contrib.auth import models as auth_models
from django_nova.connection import get_nova_admin_connection from django_openstack.connection import get_nova_admin_connection
from django_nova.exceptions import wrap_nova_error from django_openstack.exceptions import wrap_nova_error
# TODO: Store this in settings. # TODO: Store this in settings.

View File

@ -24,8 +24,8 @@ import boto.ec2.volume
import boto.exception import boto.exception
import boto.s3 import boto.s3
from django.conf import settings from django.conf import settings
from django_nova.connection import get_nova_admin_connection from django_openstack.connection import get_nova_admin_connection
from django_nova.exceptions import wrap_nova_error from django_openstack.exceptions import wrap_nova_error
class ProjectManager(object): class ProjectManager(object):
@ -35,12 +35,12 @@ class ProjectManager(object):
self.projectManagerId = project.projectManagerId self.projectManagerId = project.projectManagerId
self.region = region self.region = region
def get_nova_connection(self): def get_openstack_connection(self):
""" """
Returns a boto connection for a user's project. Returns a boto connection for a user's project.
""" """
nova = get_nova_admin_connection() openstack = get_nova_admin_connection()
return nova.connection_for(self.username, return openstack.connection_for(self.username,
self.projectname, self.projectname,
clc_url=self.region['endpoint'], clc_url=self.region['endpoint'],
region=self.region['name']) region=self.region['name'])
@ -50,16 +50,16 @@ class ProjectManager(object):
Returns a buffer of a zip file containing signed credentials Returns a buffer of a zip file containing signed credentials
for the project's Nova user. for the project's Nova user.
""" """
nova = get_nova_admin_connection() openstack = get_nova_admin_connection()
return nova.get_zip(self.username, self.projectname) return openstack.get_zip(self.username, self.projectname)
def get_images(self, image_ids=None): def get_images(self, image_ids=None):
conn = self.get_nova_connection() conn = self.get_openstack_connection()
images = conn.get_all_images(image_ids=image_ids) images = conn.get_all_images(image_ids=image_ids)
sorted_images = [i for i in images if i.ownerId == self.username] + \ sorted_images = [i for i in images if i.ownerId == self.username] + \
[i for i in images if i.ownerId != self.username] [i for i in images if i.ownerId != self.username]
return [i for i in sorted_images if i.type == 'machine' and i.location.split('/')[0] != 'nova'] return [i for i in sorted_images if i.type == 'machine' and i.location.split('/')[0] != 'openstack']
def get_image(self, image_id): def get_image(self, image_id):
try: try:
@ -73,12 +73,12 @@ class ProjectManager(object):
Removes the image's listing but leaves the image Removes the image's listing but leaves the image
and manifest in the object store in tact. and manifest in the object store in tact.
""" """
conn = self.get_nova_connection() conn = self.get_openstack_connection()
return conn.deregister_image(image_id) return conn.deregister_image(image_id)
@wrap_nova_error @wrap_nova_error
def update_image(self, image_id, display_name=None, description=None): def update_image(self, image_id, display_name=None, description=None):
conn = self.get_nova_connection() conn = self.get_openstack_connection()
params = { params = {
'ImageId': image_id, 'ImageId': image_id,
'DisplayName': display_name, 'DisplayName': display_name,
@ -89,7 +89,7 @@ class ProjectManager(object):
@wrap_nova_error @wrap_nova_error
def modify_image_attribute(self, image_id, attribute=None, operation=None, def modify_image_attribute(self, image_id, attribute=None, operation=None,
groups='all'): groups='all'):
conn = self.get_nova_connection() conn = self.get_openstack_connection()
return conn.modify_image_attribute(image_id, return conn.modify_image_attribute(image_id,
attribute=attribute, attribute=attribute,
operation=operation, operation=operation,
@ -101,7 +101,7 @@ class ProjectManager(object):
""" """
Runs instances of the specified image id. Runs instances of the specified image id.
""" """
conn = self.get_nova_connection() conn = self.get_openstack_connection()
return conn.run_instances(image_id, **kwargs) return conn.run_instances(image_id, **kwargs)
def get_instance_count(self): def get_instance_count(self):
@ -118,7 +118,7 @@ class ProjectManager(object):
""" """
Returns all instances in this project. Returns all instances in this project.
""" """
conn = self.get_nova_connection() conn = self.get_openstack_connection()
reservations = conn.get_all_instances() reservations = conn.get_all_instances()
instances = [] instances = []
for reservation in reservations: for reservation in reservations:
@ -131,8 +131,8 @@ class ProjectManager(object):
""" """
Returns detail about the specified instance. Returns detail about the specified instance.
""" """
conn = self.get_nova_connection() conn = self.get_openstack_connection()
# TODO: Refactor this once nova's describe_instances filters by instance_id. # TODO: Refactor this once openstack's describe_instances filters by instance_id.
reservations = conn.get_all_instances() reservations = conn.get_all_instances()
for reservation in reservations: for reservation in reservations:
for instance in reservation.instances: for instance in reservation.instances:
@ -142,7 +142,7 @@ class ProjectManager(object):
@wrap_nova_error @wrap_nova_error
def update_instance(self, instance_id, updates): def update_instance(self, instance_id, updates):
conn = self.get_nova_connection() conn = self.get_openstack_connection()
params = {'InstanceId': instance_id, 'DisplayName': updates['nickname'], params = {'InstanceId': instance_id, 'DisplayName': updates['nickname'],
'DisplayDescription': updates['description']} 'DisplayDescription': updates['description']}
return conn.get_object('UpdateInstance', params, return conn.get_object('UpdateInstance', params,
@ -176,7 +176,7 @@ class ProjectManager(object):
@wrap_nova_error @wrap_nova_error
def terminate_instance(self, instance_id): def terminate_instance(self, instance_id):
""" Terminates the specified instance within this project. """ """ Terminates the specified instance within this project. """
conn = self.get_nova_connection() conn = self.get_openstack_connection()
conn.terminate_instances([instance_id]) conn.terminate_instances([instance_id])
@wrap_nova_error @wrap_nova_error
@ -184,7 +184,7 @@ class ProjectManager(object):
""" """
Returns all security groups associated with this project. Returns all security groups associated with this project.
""" """
conn = self.get_nova_connection() conn = self.get_openstack_connection()
groups = [] groups = []
for g in conn.get_all_security_groups(): for g in conn.get_all_security_groups():
@ -199,7 +199,7 @@ class ProjectManager(object):
""" """
Returns the specified security group for this project. Returns the specified security group for this project.
""" """
conn = self.get_nova_connection() conn = self.get_openstack_connection()
try: try:
return conn.get_all_security_groups(groupnames=name.encode('ASCII'))[0] return conn.get_all_security_groups(groupnames=name.encode('ASCII'))[0]
@ -218,7 +218,7 @@ class ProjectManager(object):
""" """
Creates a new security group in this project. Creates a new security group in this project.
""" """
conn = self.get_nova_connection() conn = self.get_openstack_connection()
return conn.create_security_group(name, description) return conn.create_security_group(name, description)
@wrap_nova_error @wrap_nova_error
@ -226,7 +226,7 @@ class ProjectManager(object):
""" """
Deletes a security group from the project. Deletes a security group from the project.
""" """
conn = self.get_nova_connection() conn = self.get_openstack_connection()
return conn.delete_security_group(name = name) return conn.delete_security_group(name = name)
@wrap_nova_error @wrap_nova_error
@ -234,7 +234,7 @@ class ProjectManager(object):
""" """
Authorizes a rule for the specified security group. Authorizes a rule for the specified security group.
""" """
conn = self.get_nova_connection() conn = self.get_openstack_connection()
return conn.authorize_security_group ( return conn.authorize_security_group (
group_name = group_name, group_name = group_name,
ip_protocol = ip_protocol, ip_protocol = ip_protocol,
@ -248,7 +248,7 @@ class ProjectManager(object):
""" """
Revokes a rule for the specified security group. Revokes a rule for the specified security group.
""" """
conn = self.get_nova_connection() conn = self.get_openstack_connection()
return conn.revoke_security_group ( return conn.revoke_security_group (
group_name = group_name, group_name = group_name,
ip_protocol = ip_protocol, ip_protocol = ip_protocol,
@ -262,7 +262,7 @@ class ProjectManager(object):
""" """
Returns all key pairs associated with this project. Returns all key pairs associated with this project.
""" """
conn = self.get_nova_connection() conn = self.get_openstack_connection()
keys = [] keys = []
for k in conn.get_all_key_pairs(): for k in conn.get_all_key_pairs():
@ -277,7 +277,7 @@ class ProjectManager(object):
""" """
Returns the specified security group for this project. Returns the specified security group for this project.
""" """
conn = self.get_nova_connection() conn = self.get_openstack_connection()
try: try:
return conn.get_all_key_pairs(keynames=name.encode('ASCII'))[0] return conn.get_all_key_pairs(keynames=name.encode('ASCII'))[0]
@ -296,7 +296,7 @@ class ProjectManager(object):
""" """
Creates a new key pair for this project. Creates a new key pair for this project.
""" """
conn = self.get_nova_connection() conn = self.get_openstack_connection()
return conn.create_key_pair(name) return conn.create_key_pair(name)
@wrap_nova_error @wrap_nova_error
@ -304,7 +304,7 @@ class ProjectManager(object):
""" """
Deletes a new key pair from this project. Deletes a new key pair from this project.
""" """
conn = self.get_nova_connection() conn = self.get_openstack_connection()
conn.delete_key_pair(name) conn.delete_key_pair(name)
@wrap_nova_error @wrap_nova_error
@ -312,29 +312,29 @@ class ProjectManager(object):
""" """
Returns all volumes in this project. Returns all volumes in this project.
""" """
conn = self.get_nova_connection() conn = self.get_openstack_connection()
return conn.get_all_volumes() return conn.get_all_volumes()
@wrap_nova_error @wrap_nova_error
def create_volume(self, size, display_name=None, display_description=None, def create_volume(self, size, display_name=None, display_description=None,
snapshot=None): snapshot=None):
conn = self.get_nova_connection() conn = self.get_openstack_connection()
params = {'Size': size, 'DisplayName': display_name, params = {'Size': size, 'DisplayName': display_name,
'DisplayDescription': display_description} 'DisplayDescription': display_description}
return conn.get_object('CreateVolume', params, boto.ec2.volume.Volume) return conn.get_object('CreateVolume', params, boto.ec2.volume.Volume)
@wrap_nova_error @wrap_nova_error
def delete_volume(self, volume_id): def delete_volume(self, volume_id):
conn = self.get_nova_connection() conn = self.get_openstack_connection()
return conn.delete_volume(volume_id) return conn.delete_volume(volume_id)
@wrap_nova_error @wrap_nova_error
def attach_volume(self, volume_id, instance_id, device): def attach_volume(self, volume_id, instance_id, device):
conn = self.get_nova_connection() conn = self.get_openstack_connection()
return conn.attach_volume(volume_id, instance_id, device) return conn.attach_volume(volume_id, instance_id, device)
@wrap_nova_error @wrap_nova_error
def detach_volume(self, volume_id): def detach_volume(self, volume_id):
conn = self.get_nova_connection() conn = self.get_openstack_connection()
return conn.detach_volume(volume_id) return conn.detach_volume(volume_id)

View File

@ -30,7 +30,7 @@ from django.core import mail
from django.db import models from django.db import models
from django.db.models.signals import post_save from django.db.models.signals import post_save
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django_nova.connection import get_nova_admin_connection from django_openstack.connection import get_nova_admin_connection
SHA1_RE=re.compile('^[a-f0-9]{40}$') SHA1_RE=re.compile('^[a-f0-9]{40}$')
@ -102,7 +102,7 @@ def credentials_post_save(sender, instance, created, *args, **kwargs):
message.send(fail_silently=False) message.send(fail_silently=False)
post_save.connect(credentials_post_save, post_save.connect(credentials_post_save,
CredentialsAuthorization, CredentialsAuthorization,
dispatch_uid='django_nova.CredentialsAuthorization.post_save') dispatch_uid='django_openstack.CredentialsAuthorization.post_save')
def user_post_save(sender, instance, created, *args, **kwargs): def user_post_save(sender, instance, created, *args, **kwargs):
@ -120,4 +120,4 @@ def user_post_save(sender, instance, created, *args, **kwargs):
nova.create_user(instance.username) nova.create_user(instance.username)
post_save.connect(user_post_save, post_save.connect(user_post_save,
auth_models.User, auth_models.User,
dispatch_uid='django_nova.User.post_save') dispatch_uid='django_openstack.User.post_save')

View File

@ -24,9 +24,9 @@ from django.conf import settings
from django.core.cache import cache from django.core.cache import cache
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.http import Http404 from django.http import Http404
from django_nova import manager from django_openstack import manager
from django_nova.connection import get_nova_admin_connection from django_openstack.connection import get_nova_admin_connection
from django_nova.exceptions import wrap_nova_error from django_openstack.exceptions import wrap_nova_error
@wrap_nova_error @wrap_nova_error

View File

@ -26,8 +26,8 @@ import nova_adminclient as adminclient
from django import test from django import test
from django.conf import settings from django.conf import settings
from django.contrib.auth import models as auth_models from django.contrib.auth import models as auth_models
from django_nova import manager from django_openstack import manager
from django_nova import shortcuts from django_openstack import shortcuts
TEST_PROJECT = 'test' TEST_PROJECT = 'test'

View File

@ -23,8 +23,8 @@ Unit tests for credential views.
import mox import mox
from django.conf import settings from django.conf import settings
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django_nova import models from django_openstack import models
from django_nova.tests.view_tests.base import BaseViewTests from django_openstack.tests.view_tests.base import BaseViewTests
class CredentialViewTests(BaseViewTests): class CredentialViewTests(BaseViewTests):
@ -36,9 +36,9 @@ class CredentialViewTests(BaseViewTests):
.AndReturn(None) .AndReturn(None)
self.mox.ReplayAll() self.mox.ReplayAll()
res = self.client.get(reverse('nova_credentials_authorize', res = self.client.get(reverse('openstack_credentials_authorize',
args=[auth_token])) args=[auth_token]))
self.assertTemplateUsed(res, 'django_nova/credentials/expired.html') self.assertTemplateUsed(res, 'django_openstack/credentials/expired.html')
self.mox.VerifyAll() self.mox.VerifyAll()
@ -59,7 +59,7 @@ class CredentialViewTests(BaseViewTests):
self.mox.ReplayAll() self.mox.ReplayAll()
res = self.client.get(reverse('nova_credentials_authorize', res = self.client.get(reverse('openstack_credentials_authorize',
args=[auth_token])) args=[auth_token]))
self.assertEqual(res.status_code, 200) self.assertEqual(res.status_code, 200)
self.assertEqual(res['Content-Disposition'], self.assertEqual(res['Content-Disposition'],

View File

@ -25,9 +25,9 @@ import boto.ec2.instance
import mox import mox
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django_nova import forms from django_openstack import forms
from django_nova import shortcuts from django_openstack import shortcuts
from django_nova.tests.view_tests.base import BaseProjectViewTests, TEST_PROJECT from django_openstack.tests.view_tests.base import BaseProjectViewTests, TEST_PROJECT
TEST_IMAGE_ID = 'ami_test' TEST_IMAGE_ID = 'ami_test'
@ -56,7 +56,7 @@ class ImageViewTests(BaseProjectViewTests):
res = self.client.get(reverse('nova_images', args=[TEST_PROJECT])) res = self.client.get(reverse('nova_images', args=[TEST_PROJECT]))
self.assertEqual(res.status_code, 200) self.assertEqual(res.status_code, 200)
self.assertTemplateUsed(res, 'django_nova/images/index.html') self.assertTemplateUsed(res, 'django_openstack/images/index.html')
self.assertEqual(len(res.context['image_lists']), 3) self.assertEqual(len(res.context['image_lists']), 3)
self.mox.VerifyAll() self.mox.VerifyAll()
@ -75,7 +75,7 @@ class ImageViewTests(BaseProjectViewTests):
args = [TEST_PROJECT, TEST_IMAGE_ID] args = [TEST_PROJECT, TEST_IMAGE_ID]
res = self.client.get(reverse('nova_images_launch', args=args)) res = self.client.get(reverse('nova_images_launch', args=args))
self.assertEqual(res.status_code, 200) self.assertEqual(res.status_code, 200)
self.assertTemplateUsed(res, 'django_nova/images/launch.html') self.assertTemplateUsed(res, 'django_openstack/images/launch.html')
self.assertEqual(res.context['ami'].id, TEST_IMAGE_ID) self.assertEqual(res.context['ami'].id, TEST_IMAGE_ID)
self.mox.VerifyAll() self.mox.VerifyAll()
@ -133,7 +133,7 @@ class ImageViewTests(BaseProjectViewTests):
res = self.client.get(reverse('nova_images_detail', res = self.client.get(reverse('nova_images_detail',
args=[TEST_PROJECT, TEST_IMAGE_ID])) args=[TEST_PROJECT, TEST_IMAGE_ID]))
self.assertEqual(res.status_code, 200) self.assertEqual(res.status_code, 200)
self.assertTemplateUsed(res, 'django_nova/images/index.html') self.assertTemplateUsed(res, 'django_openstack/images/index.html')
self.assertEqual(res.context['ami'].id, TEST_IMAGE_ID) self.assertEqual(res.context['ami'].id, TEST_IMAGE_ID)
self.mox.VerifyAll() self.mox.VerifyAll()
@ -202,7 +202,7 @@ class ImageViewTests(BaseProjectViewTests):
args = [TEST_PROJECT, TEST_IMAGE_ID] args = [TEST_PROJECT, TEST_IMAGE_ID]
res = self.client.get(reverse('nova_images_update', args=args)) res = self.client.get(reverse('nova_images_update', args=args))
self.assertEqual(res.status_code, 200) self.assertEqual(res.status_code, 200)
self.assertTemplateUsed(res, 'django_nova/images/edit.html') self.assertTemplateUsed(res, 'django_openstack/images/edit.html')
self.assertEqual(res.context['ami'].id, TEST_IMAGE_ID) self.assertEqual(res.context['ami'].id, TEST_IMAGE_ID)
self.mox.VerifyAll() self.mox.VerifyAll()

View File

@ -24,7 +24,8 @@ import boto.ec2.instance
import mox import mox
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django_nova.tests.view_tests.base import BaseProjectViewTests, TEST_PROJECT from django_openstack.tests.view_tests.base import (BaseProjectViewTests,
TEST_PROJECT)
TEST_INSTANCE_ID = 'i-abcdefgh' TEST_INSTANCE_ID = 'i-abcdefgh'
@ -39,7 +40,7 @@ class InstanceViewTests(BaseProjectViewTests):
res = self.client.get(reverse('nova_instances', args=[TEST_PROJECT])) res = self.client.get(reverse('nova_instances', args=[TEST_PROJECT]))
self.assertEqual(res.status_code, 200) self.assertEqual(res.status_code, 200)
self.assertTemplateUsed(res, 'django_nova/instances/index.html') self.assertTemplateUsed(res, 'django_openstack/instances/index.html')
self.assertEqual(len(res.context['instances']), 0) self.assertEqual(len(res.context['instances']), 0)
self.mox.VerifyAll() self.mox.VerifyAll()
@ -60,7 +61,7 @@ class InstanceViewTests(BaseProjectViewTests):
res = self.client.get(reverse('nova_instances_detail', res = self.client.get(reverse('nova_instances_detail',
args=[TEST_PROJECT, TEST_INSTANCE_ID])) args=[TEST_PROJECT, TEST_INSTANCE_ID]))
self.assertEqual(res.status_code, 200) self.assertEqual(res.status_code, 200)
self.assertTemplateUsed(res, 'django_nova/instances/index.html') self.assertTemplateUsed(res, 'django_openstack/instances/index.html')
self.assertEqual(res.context['selected_instance'].id, instance.id) self.assertEqual(res.context['selected_instance'].id, instance.id)
self.mox.VerifyAll() self.mox.VerifyAll()

View File

@ -24,8 +24,8 @@ import boto.ec2.keypair
import mox import mox
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django_nova.tests.view_tests.base import (BaseProjectViewTests, from django_openstack.tests.view_tests.base import (BaseProjectViewTests,
TEST_PROJECT) TEST_PROJECT)
TEST_KEY = 'test_key' TEST_KEY = 'test_key'
@ -41,7 +41,7 @@ class KeyPairViewTests(BaseProjectViewTests):
response = self.client.get(reverse('nova_keypairs', response = self.client.get(reverse('nova_keypairs',
args=[TEST_PROJECT])) args=[TEST_PROJECT]))
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'django_nova/keypairs/index.html') self.assertTemplateUsed(response, 'django_openstack/keypairs/index.html')
self.assertEqual(len(response.context['keypairs']), 0) self.assertEqual(len(response.context['keypairs']), 0)
self.mox.VerifyAll() self.mox.VerifyAll()

View File

@ -21,8 +21,8 @@ Unit tests for region views.
""" """
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django_nova.tests.view_tests.base import BaseViewTests from django_openstack.tests.view_tests.base import BaseViewTests
from django_nova import shortcuts from django_openstack import shortcuts
TEST_REGION = 'one' TEST_REGION = 'one'

View File

@ -24,9 +24,9 @@ import boto.ec2.volume
import mox import mox
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django_nova import forms from django_openstack import forms
from django_nova.tests.view_tests.base import (BaseProjectViewTests, from django_openstack.tests.view_tests.base import (BaseProjectViewTests,
TEST_PROJECT) TEST_PROJECT)
TEST_VOLUME = 'vol-0000001' TEST_VOLUME = 'vol-0000001'
@ -55,7 +55,7 @@ class VolumeTests(BaseProjectViewTests):
response = self.client.get(reverse('nova_volumes', response = self.client.get(reverse('nova_volumes',
args=[TEST_PROJECT])) args=[TEST_PROJECT]))
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'django_nova/volumes/index.html') self.assertTemplateUsed(response, 'django_openstack/volumes/index.html')
self.assertEqual(len(response.context['volumes']), 0) self.assertEqual(len(response.context['volumes']), 0)
self.mox.VerifyAll() self.mox.VerifyAll()

View File

@ -4,12 +4,12 @@ ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
DEBUG = True DEBUG = True
TESTSERVER = 'http://testserver' TESTSERVER = 'http://testserver'
DATABASE_ENGINE = 'sqlite3' DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = '/tmp/django-nova.db' DATABASE_NAME = '/tmp/django-openstack.db'
INSTALLED_APPS = ['django.contrib.auth', INSTALLED_APPS = ['django.contrib.auth',
'django.contrib.contenttypes', 'django.contrib.contenttypes',
'django.contrib.sessions', 'django.contrib.sessions',
'django_nova'] 'django_openstack']
ROOT_URLCONF = 'django_nova.tests.urls' ROOT_URLCONF = 'django_openstack.tests.urls'
TEMPLATE_DIRS = ( TEMPLATE_DIRS = (
os.path.join(ROOT_PATH, 'tests', 'templates') os.path.join(ROOT_PATH, 'tests', 'templates')
) )