diff --git a/cinder_tempest_plugin/plugin.py b/cinder_tempest_plugin/plugin.py
index eed4016..5b7723d 100644
--- a/cinder_tempest_plugin/plugin.py
+++ b/cinder_tempest_plugin/plugin.py
@@ -13,31 +13,45 @@
 #    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
 
+from cinder_tempest_plugin import config as project_config
+
 
 class CinderTempestPlugin(plugins.TempestPlugin):
     def load_tests(self):
+        """Provides information to load the plugin tests.
+
+        :return: A tuple with the first value being the test dir and the
+                 second being the top level dir.
+        """
         base_path = os.path.split(os.path.dirname(
-            os.path.abspath(cinder.__file__)))[0]
+            os.path.abspath(__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
-        )
+        """Adds additional configuration options to tempest.
+
+        This method will be run for the plugin during the register_opts()
+        function in tempest.config
+
+        :param conf: The conf object that can be used to register additional
+                     options.
+        """
+        config.register_opt_group(conf, config.volume_feature_group,
+                                  project_config.cinder_option)
 
     def get_opt_lists(self):
+        """Get a list of options for sample config generation.
+
+        :return: A list of tuples with the group name and options in that
+                 group.
+        """
         return [
-            (config.volume_feature_group.name,
-             project_config.cinder_option),
+            (config.volume_feature_group.name, project_config.cinder_option),
         ]
