summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Prince <dan.prince@rackspace.com>2011-03-13 13:51:42 -0400
committerDan Prince <dan.prince@rackspace.com>2011-03-13 13:51:42 -0400
commit2bfa7b29c7882da559041cea771b9243555828fa (patch)
treee2090a81d319192da4c91acf8395775434424ee2
parentae7ab4346d851a8284e004ed8efb44a3d4fc95f2 (diff)
downloadnova-2bfa7b29c7882da559041cea771b9243555828fa.tar.gz
nova-2bfa7b29c7882da559041cea771b9243555828fa.tar.xz
nova-2bfa7b29c7882da559041cea771b9243555828fa.zip
The extension name is constructed from the camel cased module_name +
'Extension'.
-rw-r--r--nova/api/openstack/extensions.py9
-rw-r--r--nova/tests/api/openstack/extensions/widgets.py14
2 files changed, 13 insertions, 10 deletions
diff --git a/nova/api/openstack/extensions.py b/nova/api/openstack/extensions.py
index 24846d9cd..13789863b 100644
--- a/nova/api/openstack/extensions.py
+++ b/nova/api/openstack/extensions.py
@@ -38,6 +38,12 @@ class ExtensionManager(object):
return resources
def _load_extensions(self):
+ """
+ Load extensions from the configured path. The extension name is
+ constructed from the camel cased module_name + 'Extension'. If your
+ extension module was named widgets.py the extension class within that
+ module should be 'WidgetsExtension'.
+ """
if not os.path.exists(self.path):
return
@@ -46,7 +52,8 @@ class ExtensionManager(object):
ext_path = os.path.join(self.path, f)
if file_ext.lower() == '.py':
mod = imp.load_source(mod_name, ext_path)
- self.extensions.append(getattr(mod, 'get_extension')())
+ ext_name = mod_name[0].upper() + mod_name[1:] + 'Extension'
+ self.extensions.append(getattr(mod, ext_name)())
class ExtensionResource(object):
diff --git a/nova/tests/api/openstack/extensions/widgets.py b/nova/tests/api/openstack/extensions/widgets.py
index bc0947223..e03fc7776 100644
--- a/nova/tests/api/openstack/extensions/widgets.py
+++ b/nova/tests/api/openstack/extensions/widgets.py
@@ -1,27 +1,23 @@
from nova import wsgi
-class WidgetController(wsgi.Controller):
+class WidgetsController(wsgi.Controller):
def index(self, req):
return "Buy more widgets!"
-class WidgetExtensionResource(object):
+class WidgetsExtensionResource(object):
def __init__(self):
pass
def add_routes(self, mapper):
- mapper.resource('widget', 'widgets', controller=WidgetController())
+ mapper.resource('widget', 'widgets', controller=WidgetsController())
-class WidgetExtension(object):
+class WidgetsExtension(object):
def __init__(self):
pass
def get_resources(self):
- return WidgetExtensionResource()
-
-
-def get_extension():
- return WidgetExtension()
+ return WidgetsExtensionResource()