diff --git a/cinder_tempest_plugin/plugin.py b/cinder_tempest_plugin/plugin.py
new file mode 100644
index 0000000..eed4016
--- /dev/null
+++ b/cinder_tempest_plugin/plugin.py
@@ -0,0 +1,43 @@
+# Copyright 2015
+# 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.
+
+import cinder
+import os
+
+from cinder_tempest_plugin import config as project_config
+
+from tempest import config
+from tempest.test_discover import plugins
+
+
+class CinderTempestPlugin(plugins.TempestPlugin):
+    def load_tests(self):
+        base_path = os.path.split(os.path.dirname(
+            os.path.abspath(cinder.__file__)))[0]
+        test_dir = "cinder_tempest_plugin"
+        full_test_dir = os.path.join(base_path, test_dir)
+        return full_test_dir, base_path
+
+    def register_opts(self, conf):
+        config.register_opt_group(
+            conf, config.volume_feature_group,
+            project_config.cinder_option
+        )
+
+    def get_opt_lists(self):
+        return [
+            (config.volume_feature_group.name,
+             project_config.cinder_option),
+        ]
