diff -Naur ceilometer-2013.2.b1.orig/ceilometer/__init__.py ceilometer-2013.2.b1/ceilometer/__init__.py --- ceilometer-2013.2.b1.orig/ceilometer/__init__.py 2013-05-30 15:09:28.000000000 +0000 +++ ceilometer-2013.2.b1/ceilometer/__init__.py 2013-05-31 16:05:56.366704819 +0000 @@ -13,3 +13,25 @@ # License for the specific language governing permissions and limitations # under the License. # + +import sys +import pkg_resources + +# If there is a conflicting non egg module, +# i.e. an older standard system module installed, +# then replace it with this requirement +def replace_dist(requirement): + try: + return pkg_resources.require(requirement) + except pkg_resources.VersionConflict: + e = sys.exc_info()[1] + dist=e.args[0] + req=e.args[1] + if dist.key == req.key and not dist.location.endswith('.egg'): + del pkg_resources.working_set.by_key[dist.key] + # We assume there is no need to adjust sys.path + # and the associated pkg_resources.working_set.entries + return pkg_resources.require(requirement) + +replace_dist("WebOb >= 1.2") +replace_dist("SQLAlchemy >= 0.7.3") diff -Naur ceilometer-2013.2.b1.orig/ceilometer/storage/sqlalchemy/migration.py ceilometer-2013.2.b1/ceilometer/storage/sqlalchemy/migration.py --- ceilometer-2013.2.b1.orig/ceilometer/storage/sqlalchemy/migration.py 2013-05-30 15:09:28.000000000 +0000 +++ ceilometer-2013.2.b1/ceilometer/storage/sqlalchemy/migration.py 2013-05-31 16:03:43.209551099 +0000 @@ -52,7 +52,13 @@ # NOTE(jkoelker) Delay importing migrate until we are patched -from migrate import exceptions as versioning_exceptions +try: + # Try the more specific path first (migrate <= 0.6) + from migrate.versioning import exceptions as versioning_exceptions +except ImportError: + # Use the newer path (migrate >= 0.7) + from migrate import exceptions as versioning_exceptions + from migrate.versioning import api as versioning_api from migrate.versioning.repository import Repository