summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2010-07-18 13:25:43 -0500
committerVishvananda Ishaya <vishvananda@gmail.com>2010-07-18 13:25:43 -0500
commit5d647826d6345bfdd87bad10995319679f39679f (patch)
tree979b3fa11717c38b868b08239cbf3a50b4e27f49
parent0b396e1315a76112ab978a677e96d7b3a371faa9 (diff)
parentb09e69c5579526fcc1a08c7e3c3a3c880fa09297 (diff)
merged in trunk and fixed import merge errors
-rw-r--r--HACKING4
-rwxr-xr-xbin/nova-api2
-rwxr-xr-xbin/nova-compute2
-rwxr-xr-xbin/nova-dhcpbridge4
-rwxr-xr-xbin/nova-import-canonical-imagestore2
-rwxr-xr-xbin/nova-instancemonitor2
-rwxr-xr-xbin/nova-manage3
-rwxr-xr-xbin/nova-objectstore2
-rwxr-xr-xbin/nova-rsapi4
-rwxr-xr-xbin/nova-volume2
-rw-r--r--docs/auth.rst4
-rw-r--r--docs/conf.py2
-rw-r--r--docs/index.rst2
-rw-r--r--nova/adminclient.py2
-rw-r--r--nova/auth/signer.py5
-rw-r--r--nova/auth/users.py28
-rw-r--r--nova/cloudpipe/api.py5
-rw-r--r--nova/cloudpipe/pipelib.py9
-rw-r--r--nova/compute/disk.py3
-rw-r--r--nova/compute/exception.py1
-rw-r--r--nova/compute/linux_net.py3
-rw-r--r--nova/compute/model.py2
-rw-r--r--nova/compute/monitor.py16
-rw-r--r--nova/compute/network.py21
-rw-r--r--nova/compute/node.py6
-rw-r--r--nova/crypto.py4
-rw-r--r--nova/datastore.py6
-rwxr-xr-xnova/endpoint/api.py9
-rw-r--r--nova/endpoint/cloud.py5
-rw-r--r--nova/endpoint/images.py7
-rw-r--r--nova/endpoint/rackspace.py6
-rw-r--r--nova/exception.py2
-rw-r--r--nova/fakerabbit.py3
-rw-r--r--nova/flags.py2
-rw-r--r--nova/objectstore/bucket.py3
-rw-r--r--nova/objectstore/handler.py5
-rw-r--r--nova/objectstore/stored.py5
-rw-r--r--nova/process.py2
-rw-r--r--nova/rpc.py6
-rw-r--r--nova/server.py6
-rw-r--r--nova/test.py6
-rw-r--r--nova/tests/access_unittest.py5
-rw-r--r--nova/tests/api_integration.py3
-rw-r--r--nova/tests/api_unittest.py6
-rw-r--r--nova/tests/cloud_unittest.py6
-rw-r--r--nova/tests/future_unittest.py8
-rw-r--r--nova/tests/model_unittest.py2
-rw-r--r--nova/tests/network_unittest.py4
-rw-r--r--nova/tests/node_unittest.py6
-rw-r--r--nova/tests/objectstore_unittest.py4
-rw-r--r--nova/tests/process_unittest.py4
-rw-r--r--nova/tests/storage_unittest.py2
-rw-r--r--nova/tests/users_unittest.py4
-rw-r--r--nova/tests/validator_unittest.py2
-rw-r--r--nova/twistd.py7
-rw-r--r--nova/utils.py2
-rw-r--r--nova/vendor.py24
-rw-r--r--nova/volume/storage.py4
-rw-r--r--run_tests.py2
-rw-r--r--setup.cfg4
-rw-r--r--smoketests/flags.py2
-rw-r--r--smoketests/novatestcase.py2
-rw-r--r--smoketests/smoketest.py2
63 files changed, 122 insertions, 196 deletions
diff --git a/HACKING b/HACKING
index 77e42b8e6..3af2381bf 100644
--- a/HACKING
+++ b/HACKING
@@ -10,16 +10,12 @@ Imports
- thou shalt not import objects, only modules
- thou shalt not import more than one module per line
- thou shalt not make relative imports
-- thou shalt "from nova import vendor" before importing third party code
- thou shalt organize your imports according to the following template
::
# vim: tabstop=4 shiftwidth=4 softtabstop=4
{{stdlib imports in human alphabetical order}}
\n
- from nova import vendor
- {{vendor imports in human alphabetical order}}
- \n
{{nova imports in human alphabetical order}}
\n
\n
diff --git a/bin/nova-api b/bin/nova-api
index 7bc9166b8..26f5dbc87 100755
--- a/bin/nova-api
+++ b/bin/nova-api
@@ -22,8 +22,6 @@ Tornado daemon for the main API endpoint.
"""
import logging
-
-from nova import vendor
from tornado import httpserver
from tornado import ioloop
diff --git a/bin/nova-compute b/bin/nova-compute
index 803887039..5635efbaf 100755
--- a/bin/nova-compute
+++ b/bin/nova-compute
@@ -33,7 +33,7 @@ NOVA_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'nova')
if os.path.exists(NOVA_PATH):
sys.path.insert(0, os.path.dirname(NOVA_PATH))
-from nova import vendor
+
from carrot import connection
from carrot import messaging
from twisted.internet import task
diff --git a/bin/nova-dhcpbridge b/bin/nova-dhcpbridge
index cd0eab2a8..d15924e57 100755
--- a/bin/nova-dhcpbridge
+++ b/bin/nova-dhcpbridge
@@ -32,13 +32,13 @@ import sys
# not true the ugly line below can be removed
sys.path.append(os.path.abspath(os.path.join(__file__, "../../")))
+from nova import flags
from nova import rpc
from nova import utils
-
from nova.compute import linux_net
from nova.compute import network
-from nova import flags
+
FLAGS = flags.FLAGS
diff --git a/bin/nova-import-canonical-imagestore b/bin/nova-import-canonical-imagestore
index 82daf61ce..2e79f09b7 100755
--- a/bin/nova-import-canonical-imagestore
+++ b/bin/nova-import-canonical-imagestore
@@ -29,9 +29,9 @@ import subprocess
import sys
import urllib2
-from nova.objectstore import image
from nova import flags
from nova import utils
+from nova.objectstore import image
FLAGS = flags.FLAGS
diff --git a/bin/nova-instancemonitor b/bin/nova-instancemonitor
index d3f0ae221..b195089b7 100755
--- a/bin/nova-instancemonitor
+++ b/bin/nova-instancemonitor
@@ -22,8 +22,6 @@
"""
import logging
-
-from nova import vendor
from twisted.internet import task
from twisted.application import service
diff --git a/bin/nova-manage b/bin/nova-manage
index 5693a40f6..56f89ce30 100755
--- a/bin/nova-manage
+++ b/bin/nova-manage
@@ -23,6 +23,7 @@
"""
import sys
+import time
from nova import flags
from nova import utils
@@ -31,7 +32,7 @@ from nova.compute import model
from nova.compute import network
from nova.cloudpipe import pipelib
from nova.endpoint import cloud
-import time
+
FLAGS = flags.FLAGS
diff --git a/bin/nova-objectstore b/bin/nova-objectstore
index 7876864c0..521f3d5d1 100755
--- a/bin/nova-objectstore
+++ b/bin/nova-objectstore
@@ -22,8 +22,6 @@
"""
import logging
-
-from nova import vendor
from tornado import httpserver
from tornado import ioloop
diff --git a/bin/nova-rsapi b/bin/nova-rsapi
index c2f2c9d70..5cbe2d8c1 100755
--- a/bin/nova-rsapi
+++ b/bin/nova-rsapi
@@ -21,10 +21,8 @@
"""
import logging
-from wsgiref import simple_server
-
-from nova import vendor
from tornado import ioloop
+from wsgiref import simple_server
from nova import flags
from nova import rpc
diff --git a/bin/nova-volume b/bin/nova-volume
index 9b7787c96..df9fb5c7a 100755
--- a/bin/nova-volume
+++ b/bin/nova-volume
@@ -22,8 +22,6 @@
"""
import logging
-
-from nova import vendor
from tornado import ioloop
from nova import flags
diff --git a/docs/auth.rst b/docs/auth.rst
index 476ca9154..70aca704a 100644
--- a/docs/auth.rst
+++ b/docs/auth.rst
@@ -172,10 +172,10 @@ Further Challenges
-The :mod:`access` Module
+The :mod:`rbac` Module
--------------------------
-.. automodule:: nova.auth.access
+.. automodule:: nova.auth.rbac
:members:
:undoc-members:
:show-inheritance:
diff --git a/docs/conf.py b/docs/conf.py
index 784d8c096..fb3fd1a30 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -18,7 +18,7 @@ import sys, os
# documentation root, use os.path.abspath to make it absolute, like shown here.
sys.path.append(os.path.abspath('/Users/jmckenty/Projects/cc'))
sys.path.append([os.path.abspath('../nova'),os.path.abspath('../'),os.path.abspath('../vendor')])
-from nova import vendor
+
# -- General configuration -----------------------------------------------------
diff --git a/docs/index.rst b/docs/index.rst
index 039bf00ff..ef2e8f63e 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -44,6 +44,8 @@ Contents:
fakes
binaries
todo
+ modules
+ packages
Indices and tables
==================
diff --git a/nova/adminclient.py b/nova/adminclient.py
index 1a5f41418..db392feb1 100644
--- a/nova/adminclient.py
+++ b/nova/adminclient.py
@@ -20,8 +20,6 @@ Nova User API client library.
"""
import base64
-
-from nova import vendor
import boto
from boto.ec2.regioninfo import RegionInfo
diff --git a/nova/auth/signer.py b/nova/auth/signer.py
index a3d3c5329..83831bfac 100644
--- a/nova/auth/signer.py
+++ b/nova/auth/signer.py
@@ -43,11 +43,12 @@
Utility class for parsing signed AMI manifests.
"""
-import logging
+import base64
import hashlib
import hmac
+import logging
import urllib
-import base64
+
from nova.exception import Error
class Signer(object):
diff --git a/nova/auth/users.py b/nova/auth/users.py
index 72edcc2aa..fc08dc34d 100644
--- a/nova/auth/users.py
+++ b/nova/auth/users.py
@@ -26,7 +26,6 @@ import os
import shutil
import signer
import string
-from string import Template
import tempfile
import uuid
import zipfile
@@ -44,8 +43,6 @@ from nova import exception
from nova import flags
from nova import crypto
from nova import utils
-
-
from nova import objectstore # for flags
FLAGS = flags.FLAGS
@@ -462,11 +459,11 @@ class UserManager(object):
description=None, member_users=None):
if member_users:
member_users = [User.safe_id(u) for u in member_users]
+ # NOTE(vish): try to associate a vpn ip and port first because
+ # if it throws an exception, we save having to
+ # create and destroy a project
+ Vpn.create(name)
with LDAPWrapper() as conn:
- # NOTE(vish): try to associate a vpn ip and port first because
- # if it throws an exception, we save having to
- # create and destroy a project
- Vpn.create(name)
return conn.create_project(name,
User.safe_id(manager_user),
description,
@@ -527,15 +524,16 @@ class UserManager(object):
with LDAPWrapper() as conn:
user = User.safe_id(user)
result = conn.create_user(user, access, secret, admin)
- if create_project:
- # NOTE(vish): if the project creation fails, we delete
- # the user and return an exception
- try:
- conn.create_project(user, user, user)
- except Exception:
+ if create_project:
+ # NOTE(vish): if the project creation fails, we delete
+ # the user and return an exception
+ try:
+ conn.create_project(user, user, user)
+ except Exception:
+ with LDAPWrapper() as conn:
conn.delete_user(user)
- raise
- return result
+ raise
+ return result
def delete_user(self, user, delete_project=True):
with LDAPWrapper() as conn:
diff --git a/nova/cloudpipe/api.py b/nova/cloudpipe/api.py
index 99a0a1d6d..a5f78a16d 100644
--- a/nova/cloudpipe/api.py
+++ b/nova/cloudpipe/api.py
@@ -21,14 +21,13 @@ Tornado REST API Request Handlers for CloudPipe
"""
import logging
-import urllib
-
-from nova import vendor
import tornado.web
+import urllib
from nova import crypto
from nova.auth import users
+
_log = logging.getLogger("api")
_log.setLevel(logging.DEBUG)
diff --git a/nova/cloudpipe/pipelib.py b/nova/cloudpipe/pipelib.py
index de5326c5e..63f7ae222 100644
--- a/nova/cloudpipe/pipelib.py
+++ b/nova/cloudpipe/pipelib.py
@@ -22,18 +22,19 @@ an instance with it.
"""
+import base64
import logging
import os
import tempfile
-import base64
-from zipfile import ZipFile, ZIP_DEFLATED
+import zipfile
from nova import exception
from nova import flags
-from nova.auth import users
from nova import utils
+from nova.auth import users
from nova.endpoint import api
+
FLAGS = flags.FLAGS
flags.DEFINE_string('boot_script_template',
@@ -52,7 +53,7 @@ class CloudPipe(object):
tmpfolder = tempfile.mkdtemp()
filename = "payload.zip"
zippath = os.path.join(tmpfolder, filename)
- z = ZipFile(zippath, "w", ZIP_DEFLATED)
+ z = zipfile.ZipFile(zippath, "w", zipfile.ZIP_DEFLATED)
z.write(FLAGS.boot_script_template,'autorun.sh')
z.close()
diff --git a/nova/compute/disk.py b/nova/compute/disk.py
index b24a90d7f..08a22556e 100644
--- a/nova/compute/disk.py
+++ b/nova/compute/disk.py
@@ -24,12 +24,11 @@ Includes injection of SSH PGP keys into authorized_keys file.
import logging
import os
import tempfile
-
-from nova import vendor
from twisted.internet import defer
from nova import exception
+
@defer.inlineCallbacks
def partition(infile, outfile, local_bytes=0, local_type='ext2', execute=None):
"""Takes a single partition represented by infile and writes a bootable
diff --git a/nova/compute/exception.py b/nova/compute/exception.py
index fefa7451d..13e4f0a51 100644
--- a/nova/compute/exception.py
+++ b/nova/compute/exception.py
@@ -22,6 +22,7 @@ Exceptions for Compute Node errors, mostly network addressing.
from nova.exception import Error
+
class NoMoreAddresses(Error):
pass
diff --git a/nova/compute/linux_net.py b/nova/compute/linux_net.py
index 2e5f2519f..eb9614194 100644
--- a/nova/compute/linux_net.py
+++ b/nova/compute/linux_net.py
@@ -19,11 +19,12 @@
import logging
import signal
import os
-import nova.utils
import subprocess
# todo(ja): does the definition of network_path belong here?
+from nova import utils
+
from nova import flags
FLAGS=flags.FLAGS
diff --git a/nova/compute/model.py b/nova/compute/model.py
index f1eb99e74..cda188183 100644
--- a/nova/compute/model.py
+++ b/nova/compute/model.py
@@ -42,8 +42,6 @@ True
import logging
import time
-
-from nova import vendor
import redis
from nova import datastore
diff --git a/nova/compute/monitor.py b/nova/compute/monitor.py
index b9fe20a71..fdc86b031 100644
--- a/nova/compute/monitor.py
+++ b/nova/compute/monitor.py
@@ -24,11 +24,18 @@ Instance Monitoring:
in the object store.
"""
+import boto
+import boto.s3
import datetime
+import libxml2
import logging
import os
+import rrdtool
import sys
import time
+from twisted.internet import defer
+from twisted.internet import task
+from twisted.application import service
try:
import libvirt
@@ -36,14 +43,7 @@ except Exception, err:
logging.warning('no libvirt found')
from nova import flags
-from nova import vendor
-import boto
-import boto.s3
-import libxml2
-import rrdtool
-from twisted.internet import defer
-from twisted.internet import task
-from twisted.application import service
+
FLAGS = flags.FLAGS
flags.DEFINE_integer(
diff --git a/nova/compute/network.py b/nova/compute/network.py
index 3904fcff0..bdb8a22f9 100644
--- a/nova/compute/network.py
+++ b/nova/compute/network.py
@@ -20,22 +20,19 @@
Classes for network control, including VLANs, DHCP, and IP allocation.
"""
+import IPy
import logging
import os
import time
-# TODO(termie): clean up these imports
-from nova import vendor
-import IPy
-
from nova import datastore
+from nova import exception
from nova import flags
from nova import utils
-from nova import exception
-from nova.compute import exception as compute_exception
from nova.auth import users
+from nova.compute import exception as compute_exception
+from nova.compute import linux_net
-import linux_net
FLAGS = flags.FLAGS
flags.DEFINE_string('networks_path', utils.abspath('../networks'),
@@ -130,8 +127,9 @@ class Vlan(datastore.BasicModel):
@datastore.absorb_connection_error
def all(cls):
set_name = cls._redis_set_name(cls.__name__)
- for project,vlan in datastore.Redis.instance().hgetall(set_name):
- yield cls(project, vlan)
+ elements = datastore.Redis.instance().hgetall(set_name)
+ for project in elements:
+ yield cls(project, elements[project])
@datastore.absorb_connection_error
def save(self):
@@ -291,6 +289,7 @@ class BridgedNetwork(BaseNetwork):
netmask
"""
+ bridge_gets_ip = False
override_type = 'network'
@classmethod
@@ -532,6 +531,10 @@ def get_vlan_for_project(project_id):
return Vlan.create(project_id, vnum)
raise compute_exception.AddressNotAllocated("Out of VLANs")
+def get_network_by_interface(iface, security_group='default'):
+ vlan = iface.rpartition("br")[2]
+ return get_project_network(Vlan.dict_by_vlan().get(vlan), security_group)
+
def get_network_by_address(address):
logging.debug("Get Network By Address: %s" % address)
for project in users.UserManager.instance().get_projects():
diff --git a/nova/compute/node.py b/nova/compute/node.py
index 7e4277f58..d681ec661 100644
--- a/nova/compute/node.py
+++ b/nova/compute/node.py
@@ -30,12 +30,11 @@ import logging
import os
import shutil
import sys
-
-from nova import vendor
from twisted.internet import defer
from twisted.internet import task
from twisted.application import service
+
try:
import libvirt
except Exception, err:
@@ -49,8 +48,9 @@ from nova import utils
from nova.compute import disk
from nova.compute import model
from nova.compute import network
-from nova.volume import storage
from nova.objectstore import image # for image_path flag
+from nova.volume import storage
+
FLAGS = flags.FLAGS
flags.DEFINE_string('libvirt_xml_template',
diff --git a/nova/crypto.py b/nova/crypto.py
index 98d412687..cc84f5e45 100644
--- a/nova/crypto.py
+++ b/nova/crypto.py
@@ -24,6 +24,7 @@ SSH keypairs and x509 certificates.
import base64
import hashlib
import logging
+import M2Crypto
import os
import shutil
import struct
@@ -31,9 +32,6 @@ import tempfile
import time
import utils
-from nova import vendor
-import M2Crypto
-
from nova import exception
from nova import flags
diff --git a/nova/datastore.py b/nova/datastore.py
index 8d6272ada..e57177e04 100644
--- a/nova/datastore.py
+++ b/nova/datastore.py
@@ -24,8 +24,6 @@ before trying to run this.
"""
import logging
-
-from nova import vendor
import redis
from nova import exception
@@ -105,7 +103,7 @@ class BasicModel(object):
@classmethod
def _redis_name(cls):
- return self.override_type or cls.__name__
+ return cls.override_type or cls.__name__
@classmethod
def lookup(cls, identifier):
@@ -147,7 +145,7 @@ class BasicModel(object):
@property
def __redis_key(self):
- return '%s:%s' % (self.__class__.__name__.lower(), self.identifier)
+ return '%s:%s' % (self._redis_name(), self.identifier)
def __repr__(self):
return "<%s:%s>" % (self.__class__.__name__, self.identifier)
diff --git a/nova/endpoint/api.py b/nova/endpoint/api.py
index 255519198..79a2aaddb 100755
--- a/nova/endpoint/api.py
+++ b/nova/endpoint/api.py
@@ -25,21 +25,20 @@ import logging
import multiprocessing
import random
import re
+import tornado.web
+from twisted.internet import defer
import urllib
# TODO(termie): replace minidom with etree
from xml.dom import minidom
-from nova import vendor
-import tornado.web
-from twisted.internet import defer
-
from nova import crypto
from nova import exception
from nova import flags
from nova import utils
-from nova.endpoint import cloud
from nova.auth import users
import nova.cloudpipe.api
+from nova.endpoint import cloud
+
FLAGS = flags.FLAGS
flags.DEFINE_integer('cc_port', 8773, 'cloud controller port')
diff --git a/nova/endpoint/cloud.py b/nova/endpoint/cloud.py
index 5b713feb9..3b7b4804b 100644
--- a/nova/endpoint/cloud.py
+++ b/nova/endpoint/cloud.py
@@ -27,15 +27,13 @@ import json
import logging
import os
import time
-
-from nova import vendor
from twisted.internet import defer
from nova import datastore
+from nova import exception
from nova import flags
from nova import rpc
from nova import utils
-from nova import exception
from nova.auth import rbac
from nova.auth import users
from nova.compute import model
@@ -44,6 +42,7 @@ from nova.compute import node
from nova.endpoint import images
from nova.volume import storage
+
FLAGS = flags.FLAGS
flags.DEFINE_string('cloud_topic', 'cloud', 'the topic clouds listen on')
diff --git a/nova/endpoint/images.py b/nova/endpoint/images.py
index b17e96819..12876da30 100644
--- a/nova/endpoint/images.py
+++ b/nova/endpoint/images.py
@@ -21,17 +21,16 @@ Proxy AMI-related calls from the cloud controller, to the running
objectstore daemon.
"""
+import boto
+import boto.s3
import json
import random
import urllib
-from nova import vendor
-import boto
-import boto.s3
-
from nova import flags
from nova import utils
+
FLAGS = flags.FLAGS
def modify(context, image_id, operation):
diff --git a/nova/endpoint/rackspace.py b/nova/endpoint/rackspace.py
index 29a077b24..9208ddab7 100644
--- a/nova/endpoint/rackspace.py
+++ b/nova/endpoint/rackspace.py
@@ -26,21 +26,19 @@ import logging
import multiprocessing
import os
import time
-
-from nova import vendor
import tornado.web
from twisted.internet import defer
from nova import datastore
+from nova import exception
from nova import flags
from nova import rpc
from nova import utils
-from nova import exception
from nova.auth import users
from nova.compute import model
from nova.compute import network
-from nova.endpoint import wsgi
from nova.endpoint import images
+from nova.endpoint import wsgi
from nova.volume import storage
diff --git a/nova/exception.py b/nova/exception.py
index 09d894e4b..bda002d1e 100644
--- a/nova/exception.py
+++ b/nova/exception.py
@@ -22,8 +22,8 @@ Nova-type exceptions. SHOULD include dedicated exception logging.
"""
import logging
-import traceback
import sys
+import traceback
class Error(Exception):
def __init__(self, message=None):
diff --git a/nova/fakerabbit.py b/nova/fakerabbit.py
index 00eb18327..689194513 100644
--- a/nova/fakerabbit.py
+++ b/nova/fakerabbit.py
@@ -18,11 +18,10 @@
""" Based a bit on the carrot.backeds.queue backend... but a lot better """
+from carrot.backends import base
import logging
import Queue as queue
-from carrot.backends import base
-
class Message(base.BaseMessage):
pass
diff --git a/nova/flags.py b/nova/flags.py
index 22e00a44a..60245a349 100644
--- a/nova/flags.py
+++ b/nova/flags.py
@@ -23,7 +23,7 @@ where they're used.
import socket
-from nova import vendor
+
from gflags import *
# This keeps pylint from barfing on the imports
diff --git a/nova/objectstore/bucket.py b/nova/objectstore/bucket.py
index 61feb4a4c..090ef4e61 100644
--- a/nova/objectstore/bucket.py
+++ b/nova/objectstore/bucket.py
@@ -20,17 +20,18 @@
Simple object store using Blobs and JSON files on disk.
"""
+import bisect
import datetime
import glob
import json
import os
-import bisect
from nova import exception
from nova import flags
from nova import utils
from nova.objectstore import stored
+
FLAGS = flags.FLAGS
flags.DEFINE_string('buckets_path', utils.abspath('../buckets'),
'path to s3 buckets')
diff --git a/nova/objectstore/handler.py b/nova/objectstore/handler.py
index 22cfca5fd..8377a57a6 100644
--- a/nova/objectstore/handler.py
+++ b/nova/objectstore/handler.py
@@ -38,14 +38,11 @@ S3 client with this module::
import datetime
import os
-import urllib
import json
import logging
import multiprocessing
-
-
-from nova import vendor
from tornado import escape, web
+import urllib
from nova import exception
from nova import flags
diff --git a/nova/objectstore/stored.py b/nova/objectstore/stored.py
index f1730cbc7..81c047b22 100644
--- a/nova/objectstore/stored.py
+++ b/nova/objectstore/stored.py
@@ -20,10 +20,11 @@
Properties of an object stored within a bucket.
"""
-from nova.exception import NotFound, NotAuthorized
-
import os
+
import nova.crypto
+from nova.exception import NotFound, NotAuthorized
+
class Object(object):
def __init__(self, bucket, key):
diff --git a/nova/process.py b/nova/process.py
index 00ec4a267..ff789a08a 100644
--- a/nova/process.py
+++ b/nova/process.py
@@ -23,8 +23,6 @@ Process pool, still buggy right now.
import logging
import multiprocessing
import StringIO
-
-from nova import vendor
from twisted.internet import defer
from twisted.internet import error
from twisted.internet import process
diff --git a/nova/rpc.py b/nova/rpc.py
index 72a84b7f7..58a2b29cf 100644
--- a/nova/rpc.py
+++ b/nova/rpc.py
@@ -21,14 +21,12 @@ AMQP-based RPC. Queues have consumers and publishers.
No fan-out support yet.
"""
+from carrot import connection
+from carrot import messaging
import json
import logging
import sys
import uuid
-
-from nova import vendor
-from carrot import connection
-from carrot import messaging
from twisted.internet import defer
from twisted.internet import reactor
from twisted.internet import task
diff --git a/nova/server.py b/nova/server.py
index 1a6f33876..7a1901a2f 100644
--- a/nova/server.py
+++ b/nova/server.py
@@ -20,6 +20,8 @@
Base functionality for nova daemons - gradually being replaced with twistd.py.
"""
+import daemon
+from daemon import pidlockfile
import logging
import logging.handlers
import os
@@ -27,10 +29,6 @@ import signal
import sys
import time
-from nova import vendor
-import daemon
-from daemon import pidlockfile
-
from nova import flags
diff --git a/nova/test.py b/nova/test.py
index 1f8a5ff47..5dcf0b9b0 100644
--- a/nova/test.py
+++ b/nova/test.py
@@ -23,16 +23,14 @@ and some black magic for inline callbacks.
"""
import logging
+import mox
+import stubout
import time
import unittest
-
-from nova import vendor
-import mox
from tornado import ioloop
from twisted.internet import defer
from twisted.python import failure
from twisted.trial import unittest as trial_unittest
-import stubout
from nova import fakerabbit
from nova import flags
diff --git a/nova/tests/access_unittest.py b/nova/tests/access_unittest.py
index 609bda901..8500dd0cb 100644
--- a/nova/tests/access_unittest.py
+++ b/nova/tests/access_unittest.py
@@ -19,11 +19,12 @@
import unittest
import logging
-from nova.auth.users import UserManager
-from nova.auth import rbac
from nova import exception
from nova import flags
from nova import test
+from nova.auth.users import UserManager
+from nova.auth import rbac
+
FLAGS = flags.FLAGS
class Context(object):
diff --git a/nova/tests/api_integration.py b/nova/tests/api_integration.py
index 0ccf69525..23a88f083 100644
--- a/nova/tests/api_integration.py
+++ b/nova/tests/api_integration.py
@@ -16,10 +16,11 @@
# License for the specific language governing permissions and limitations
# under the License.
-import unittest
import boto
from boto.ec2.regioninfo import RegionInfo
+import unittest
+
ACCESS_KEY = 'fake'
SECRET_KEY = 'fake'
diff --git a/nova/tests/api_unittest.py b/nova/tests/api_unittest.py
index aee57b514..e5e2afe26 100644
--- a/nova/tests/api_unittest.py
+++ b/nova/tests/api_unittest.py
@@ -16,13 +16,11 @@
# License for the specific language governing permissions and limitations
# under the License.
+import boto
+from boto.ec2 import regioninfo
import httplib
import random
import StringIO
-
-from nova import vendor
-import boto
-from boto.ec2 import regioninfo
from tornado import httpserver
from twisted.internet import defer
diff --git a/nova/tests/cloud_unittest.py b/nova/tests/cloud_unittest.py
index 9df83ec62..b8614fdc8 100644
--- a/nova/tests/cloud_unittest.py
+++ b/nova/tests/cloud_unittest.py
@@ -19,12 +19,10 @@
import logging
import StringIO
import time
-import unittest
-from xml.etree import ElementTree
-
-from nova import vendor
from tornado import ioloop
from twisted.internet import defer
+import unittest
+from xml.etree import ElementTree
from nova import flags
from nova import rpc
diff --git a/nova/tests/future_unittest.py b/nova/tests/future_unittest.py
index be4218c39..da5470ffe 100644
--- a/nova/tests/future_unittest.py
+++ b/nova/tests/future_unittest.py
@@ -17,15 +17,13 @@
# under the License.
import logging
+import mox
import StringIO
import time
-import unittest
-from xml.etree import ElementTree
-
-from nova import vendor
-import mox
from tornado import ioloop
from twisted.internet import defer
+import unittest
+from xml.etree import ElementTree
from nova import cloud
from nova import exception
diff --git a/nova/tests/model_unittest.py b/nova/tests/model_unittest.py
index f70cab40d..1bd7e527f 100644
--- a/nova/tests/model_unittest.py
+++ b/nova/tests/model_unittest.py
@@ -18,8 +18,6 @@
import logging
import time
-
-from nova import vendor
from twisted.internet import defer
from nova import exception
diff --git a/nova/tests/network_unittest.py b/nova/tests/network_unittest.py
index d24ae133c..444063d0f 100644
--- a/nova/tests/network_unittest.py
+++ b/nova/tests/network_unittest.py
@@ -16,12 +16,10 @@
# License for the specific language governing permissions and limitations
# under the License.
+import IPy
import os
import logging
-from nova import vendor
-import IPy
-
from nova import flags
from nova import test
from nova import utils
diff --git a/nova/tests/node_unittest.py b/nova/tests/node_unittest.py
index 4f7bbd587..93942d79e 100644
--- a/nova/tests/node_unittest.py
+++ b/nova/tests/node_unittest.py
@@ -18,11 +18,8 @@
import logging
import time
-
-from xml.etree import ElementTree
-
-from nova import vendor
from twisted.internet import defer
+from xml.etree import ElementTree
from nova import exception
from nova import flags
@@ -31,6 +28,7 @@ from nova import utils
from nova.compute import model
from nova.compute import node
+
FLAGS = flags.FLAGS
diff --git a/nova/tests/objectstore_unittest.py b/nova/tests/objectstore_unittest.py
index ca2d31159..f47ca7f00 100644
--- a/nova/tests/objectstore_unittest.py
+++ b/nova/tests/objectstore_unittest.py
@@ -23,15 +23,13 @@ import os
import shutil
import tempfile
-from nova import vendor
-
from nova import flags
from nova import objectstore
from nova import test
from nova.auth import users
-FLAGS = flags.FLAGS
+FLAGS = flags.FLAGS
oss_tempdir = tempfile.mkdtemp(prefix='test_oss-')
diff --git a/nova/tests/process_unittest.py b/nova/tests/process_unittest.py
index 671ab05cd..01648961f 100644
--- a/nova/tests/process_unittest.py
+++ b/nova/tests/process_unittest.py
@@ -17,11 +17,9 @@
# under the License.
import logging
-from xml.etree import ElementTree
-
-from nova import vendor
from twisted.internet import defer
from twisted.internet import reactor
+from xml.etree import ElementTree
from nova import exception
from nova import flags
diff --git a/nova/tests/storage_unittest.py b/nova/tests/storage_unittest.py
index b04602b71..60576d74f 100644
--- a/nova/tests/storage_unittest.py
+++ b/nova/tests/storage_unittest.py
@@ -69,13 +69,11 @@ class StorageTestCase(test.TrialTestCase):
vols = []
for i in xrange(total_slots):
vid = self.mystorage.create_volume(vol_size, user_id, project_id)
- print vid
vols.append(vid)
self.assertRaises(storage.NoMoreVolumes,
self.mystorage.create_volume,
vol_size, user_id, project_id)
for id in vols:
- print id
self.mystorage.delete_volume(id)
def test_run_attach_detach_volume(self):
diff --git a/nova/tests/users_unittest.py b/nova/tests/users_unittest.py
index 6110248b5..301721075 100644
--- a/nova/tests/users_unittest.py
+++ b/nova/tests/users_unittest.py
@@ -17,12 +17,10 @@
# under the License.
import logging
-import unittest
-
-from nova import vendor
from M2Crypto import BIO
from M2Crypto import RSA
from M2Crypto import X509
+import unittest
from nova import crypto
from nova import flags
diff --git a/nova/tests/validator_unittest.py b/nova/tests/validator_unittest.py
index 38cddfef1..84daa135e 100644
--- a/nova/tests/validator_unittest.py
+++ b/nova/tests/validator_unittest.py
@@ -19,8 +19,6 @@
import logging
import unittest
-from nova import vendor
-
from nova import flags
from nova import test
from nova import validate
diff --git a/nova/twistd.py b/nova/twistd.py
index 03de2d0ab..32a46ce03 100644
--- a/nova/twistd.py
+++ b/nova/twistd.py
@@ -22,22 +22,21 @@ manage pid files and support syslogging.
"""
import logging
+import logging.handlers
import os
import signal
import sys
import time
-import UserDict
-import logging.handlers
-
-from nova import vendor
from twisted.scripts import twistd
from twisted.python import log
from twisted.python import reflect
from twisted.python import runtime
from twisted.python import usage
+import UserDict
from nova import flags
+
if runtime.platformType == "win32":
from twisted.scripts._twistw import ServerOptions
else:
diff --git a/nova/utils.py b/nova/utils.py
index 25181332d..c5b935673 100644
--- a/nova/utils.py
+++ b/nova/utils.py
@@ -20,6 +20,7 @@
System-level utilities and helper functions.
"""
+from datetime import datetime
import inspect
import logging
import os
@@ -27,7 +28,6 @@ import random
import subprocess
import socket
import sys
-from datetime import datetime
from nova import flags
diff --git a/nova/vendor.py b/nova/vendor.py
deleted file mode 100644
index db75f30ec..000000000
--- a/nova/vendor.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-# Copyright 2010 United States Government as represented by the
-# Administrator of the National Aeronautics and Space Administration.
-# All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-"""
-Get our vendor folders into the system path.
-"""
-
-print 'sorry, we cannot include vendor open source libraries... :('
-
diff --git a/nova/volume/storage.py b/nova/volume/storage.py
index 1507b4ec7..de20f30b5 100644
--- a/nova/volume/storage.py
+++ b/nova/volume/storage.py
@@ -25,12 +25,10 @@ Currently uses Ata-over-Ethernet.
import glob
import logging
import os
-import socket
import shutil
+import socket
import tempfile
import time
-
-from nova import vendor
from tornado import ioloop
from twisted.internet import defer
diff --git a/run_tests.py b/run_tests.py
index bd1587d43..eb26459c5 100644
--- a/run_tests.py
+++ b/run_tests.py
@@ -41,7 +41,7 @@ Due to our use of multiprocessing it we frequently get some ignorable
import __main__
import sys
-from nova import vendor
+
from twisted.scripts import trial as trial_script
from nova import datastore
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 000000000..278586962
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,4 @@
+[build_sphinx]
+source-dir = docs
+build-dir = docs/_build
+all_files = 1
diff --git a/smoketests/flags.py b/smoketests/flags.py
index ae0001e89..3617fb797 100644
--- a/smoketests/flags.py
+++ b/smoketests/flags.py
@@ -21,7 +21,7 @@ Package-level global flags are defined here, the rest are defined
where they're used.
"""
-from nova import vendor
+
from gflags import *
# This keeps pylint from barfing on the imports
diff --git a/smoketests/novatestcase.py b/smoketests/novatestcase.py
index 11c8661ba..513e0ca91 100644
--- a/smoketests/novatestcase.py
+++ b/smoketests/novatestcase.py
@@ -22,7 +22,7 @@ import random
import sys
import unittest
-from nova import vendor
+
import paramiko
from nova import adminclient
diff --git a/smoketests/smoketest.py b/smoketests/smoketest.py
index 61967d3b7..ad95114d4 100644
--- a/smoketests/smoketest.py
+++ b/smoketests/smoketest.py
@@ -25,7 +25,7 @@ import time
import unittest
import zipfile
-from nova import vendor
+
import paramiko
from smoketests import flags