tests pass again

This commit is contained in:
Sandy Walsh 2011-02-08 14:45:21 -04:00
parent ef93d6ffdf
commit f0c713658f
12 changed files with 37 additions and 72 deletions

@ -103,7 +103,7 @@ class OpenStackShell(object):
help=help,
description=desc,
add_help=False,
formatter_class=CloudserversHelpFormatter
formatter_class=OpenStackHelpFormatter
)
subparser.add_argument('-h', '--help',
action='help',
@ -138,7 +138,7 @@ class OpenStackShell(object):
self.cs = self._api_class(user, apikey, url)
try:
self.cs.authenticate()
except cloudservers.Unauthorized:
except novatools.Unauthorized:
raise CommandError("Invalid OpenStack Nova credentials.")
args.func(args)
@ -181,10 +181,10 @@ class OpenStackShell(object):
# If we have some flags, update the backup
backup = {}
if args.daily:
backup['daily'] = getattr(cloudservers, 'BACKUP_DAILY_%s' %
backup['daily'] = getattr(novatools, 'BACKUP_DAILY_%s' %
args.daily.upper())
if args.weekly:
backup['weekly'] = getattr(cloudservers, 'BACKUP_WEEKLY_%s' %
backup['weekly'] = getattr(novatools, 'BACKUP_WEEKLY_%s' %
args.weekly.upper())
if args.enabled is not None:
backup['enabled'] = args.enabled
@ -369,8 +369,8 @@ class OpenStackShell(object):
@arg('--hard',
dest='reboot_type',
action='store_const',
const=cloudservers.REBOOT_HARD,
default=cloudservers.REBOOT_SOFT,
const=novatools.REBOOT_HARD,
default=novatools.REBOOT_SOFT,
help='Perform a hard reboot (instead of a soft one).')
@arg('server', metavar='<server>', help='Name or ID of server.')
def do_reboot(self, args):
@ -508,7 +508,7 @@ class OpenStackShell(object):
"""Get a flavor by name, ID, or RAM size."""
try:
return self._find_resource(self.cs.flavors, flavor)
except cloudservers.NotFound:
except novatools.NotFound:
return self.cs.flavors.find(ram=flavor)
def _find_resource(self, manager, name_or_id):
@ -518,7 +518,7 @@ class OpenStackShell(object):
return manager.get(int(name_or_id))
else:
return manager.find(name=name_or_id)
except cloudservers.NotFound:
except novatools.NotFound:
raise CommandError("No %s with a name or ID of '%s' exists." %
(manager.resource_class.__name__.lower(), name_or_id))

@ -39,51 +39,16 @@ class ServerManager(base.ManagerWithFind):
"""
return self._list("/zones/detail", "zones")
def create(self, name, image, flavor, ipgroup=None, meta=None, files=None):
def create(self, name, auth_url):
"""
Create a new child zone.
:param name: Something to name the zone.
:param image: The :class:`Image` to boot with.
:param flavor: The :class:`Flavor` to boot onto.
:param ipgroup: An initial :class:`IPGroup` for this server.
:param meta: A dict of arbitrary key/value metadata to store for this
server. A maximum of five entries is allowed, and both
keys and values must be 255 characters or less.
:param files: A dict of files to overrwrite on the server upon boot.
Keys are file names (i.e. ``/etc/passwd``) and values
are the file contents (either as a string or as a
file-like object). A maximum of five entries is allowed,
and each file must be 10k or less.
There's a bunch more info about how a server boots in Rackspace's
official API docs, page 23.
"""
body = {"zone": {
"name": name,
"imageId": base.getid(image),
"flavorId": base.getid(flavor),
"auth_url": auth_url,
}}
if ipgroup:
body["zone"]["sharedIpGroupId"] = base.getid(ipgroup)
if meta:
body["zone"]["metadata"] = meta
# Files are a slight bit tricky. They're passed in a "personality"
# list to the POST. Each item is a dict giving a file name and the
# base64-encoded contents of the file. We want to allow passing
# either an open file *or* some contents as files here.
if files:
personality = body['zone']['personality'] = []
for filepath, file_or_string in files.items():
if hasattr(file_or_string, 'read'):
data = file_or_string.read()
else:
data = file_or_string
personality.append({
'path': filepath,
'contents': data.encode('base64'),
})
return self._create("/zones", body, "zone")

@ -10,12 +10,12 @@ import httplib2
import urlparse
import urllib
from nose.tools import assert_equal
from cloudservers import CloudServers
from cloudservers.client import CloudServersClient
from novatools import OpenStack
from novatools.client import OpenStackClient
from utils import fail, assert_in, assert_not_in, assert_has_keys
class FakeServer(CloudServers):
class FakeServer(OpenStack):
def __init__(self, username=None, password=None, auth_url=None):
super(FakeServer, self).__init__('username', 'apikey', 'auth_url')
self.client = FakeClient()
@ -42,7 +42,7 @@ class FakeServer(CloudServers):
pass
class FakeClient(CloudServersClient):
class FakeClient(OpenStackClient):
def __init__(self):
self.username = 'username'
self.apikey = 'apikey'

@ -1,11 +1,11 @@
import mock
import cloudservers
import novatools
import httplib2
from nose.tools import assert_raises, assert_equal
def test_authenticate_success():
cs = cloudservers.CloudServers("username", "apikey")
cs = novatools.OpenStack("username", "apikey")
auth_response = httplib2.Response({
'status': 204,
'x-server-management-url':
@ -31,19 +31,19 @@ def test_authenticate_success():
def test_authenticate_failure():
cs = cloudservers.CloudServers("username", "apikey")
cs = novatools.OpenStack("username", "apikey")
auth_response = httplib2.Response({'status': 401})
mock_request = mock.Mock(return_value=(auth_response, None))
@mock.patch.object(httplib2.Http, "request", mock_request)
def test_auth_call():
assert_raises(cloudservers.Unauthorized, cs.client.authenticate)
assert_raises(novatools.Unauthorized, cs.client.authenticate)
test_auth_call()
def test_auth_automatic():
client = cloudservers.CloudServers("username", "apikey").client
client = novatools.OpenStack("username", "apikey").client
client.management_url = ''
mock_request = mock.Mock(return_value=(None, None))
@ -58,7 +58,7 @@ def test_auth_automatic():
def test_auth_manual():
cs = cloudservers.CloudServers("username", "password")
cs = novatools.OpenStack("username", "apikey")
@mock.patch.object(cs.client, 'authenticate')
def test_auth_call(m):

@ -1,5 +1,5 @@
from cloudservers.backup_schedules import *
from novatools.backup_schedules import *
from fakeserver import FakeServer
from utils import assert_isinstance

@ -1,9 +1,9 @@
import mock
import cloudservers.base
from cloudservers import Flavor
from cloudservers.exceptions import NotFound
from cloudservers.base import Resource
import novatools.base
from novatools import Flavor
from novatools.exceptions import NotFound
from novatools.base import Resource
from nose.tools import assert_equal, assert_not_equal, assert_raises
from fakeserver import FakeServer
@ -16,11 +16,11 @@ def test_resource_repr():
def test_getid():
assert_equal(cloudservers.base.getid(4), 4)
assert_equal(novatools.base.getid(4), 4)
class O(object):
id = 4
assert_equal(cloudservers.base.getid(O), 4)
assert_equal(novatools.base.getid(O), 4)
def test_resource_lazy_getattr():

@ -1,6 +1,6 @@
import mock
import httplib2
from cloudservers.client import CloudServersClient
from novatools.client import OpenStackClient
from nose.tools import assert_equal
fake_response = httplib2.Response({"status": 200})
@ -9,7 +9,7 @@ mock_request = mock.Mock(return_value=(fake_response, fake_body))
def client():
cl = CloudServersClient("username", "apikey", "auth_test")
cl = OpenStackClient("username", "apikey", "auth_test")
cl.management_url = "http://example.com"
cl.auth_token = "token"
return cl

@ -1,4 +1,4 @@
from cloudservers import Flavor, NotFound
from novatools import Flavor, NotFound
from fakeserver import FakeServer
from utils import assert_isinstance
from nose.tools import assert_raises, assert_equal

@ -1,4 +1,4 @@
from cloudservers import Image
from novatools import Image
from fakeserver import FakeServer
from utils import assert_isinstance
from nose.tools import assert_equal

@ -1,4 +1,4 @@
from cloudservers import IPGroup
from novatools import IPGroup
from fakeserver import FakeServer
from utils import assert_isinstance
from nose.tools import assert_equal

@ -2,7 +2,7 @@ import StringIO
from nose.tools import assert_equal
from fakeserver import FakeServer
from utils import assert_isinstance
from cloudservers import Server
from novatools import Server
cs = FakeServer()

@ -2,7 +2,7 @@ import os
import mock
import httplib2
from nose.tools import assert_raises, assert_equal
from cloudservers.shell import CloudserversShell, CommandError
from novatools.shell import OpenStackShell, CommandError
from fakeserver import FakeServer
from utils import assert_in
@ -11,15 +11,15 @@ from utils import assert_in
def setup():
global _old_env
fake_env = {
'CLOUD_SERVERS_USERNAME': 'username',
'CLOUD_SERVERS_API_KEY': 'password'
'NOVA_TOOLS_USERNAME': 'username',
'NOVA_TOOLS_API_KEY': 'password'
}
_old_env, os.environ = os.environ, fake_env.copy()
# Make a fake shell object, a helping wrapper to call it, and a quick way
# of asserting that certain API calls were made.
global shell, _shell, assert_called
_shell = CloudserversShell()
_shell = OpenStackShell()
_shell._api_class = FakeServer
assert_called = lambda m, u, b=None: _shell.cs.assert_called(m, u, b)
shell = lambda cmd: _shell.main(cmd.split())