--- /dev/null
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+# Copyright 2011 OpenStack LLC.
+# 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.
+from abc import abstractmethod
+
+from quantum.common import extensions
+from quantum.common import wsgi
+
+
+class StubExtension(object):
+
+ def __init__(self, alias="stub_extension"):
+ self.alias = alias
+
+ def get_name(self):
+ return "Stub Extension"
+
+ def get_alias(self):
+ return self.alias
+
+ def get_description(self):
+ return ""
+
+ def get_namespace(self):
+ return ""
+
+ def get_updated(self):
+ return ""
+
+
+class StubPlugin(object):
+
+ def __init__(self, supported_extensions=[]):
+ self.supported_extension_aliases = supported_extensions
+
+
+class ExtensionExpectingPluginInterface(StubExtension):
+ """
+ This extension expects plugin to implement all the methods defined
+ in StubPluginInterface
+ """
+
+ def get_plugin_interface(self):
+ return StubPluginInterface
+
+
+class StubPluginInterface(extensions.PluginInterface):
+
+ @abstractmethod
+ def get_foo(self, bar=None):
+ pass
+
+
+class StubBaseAppController(wsgi.Controller):
+
+ def index(self, request):
+ return "base app index"
+
+ def show(self, request, id):
+ return {'fort': 'knox'}
+
+ def update(self, request, id):
+ return {'uneditable': 'original_value'}