Add whitebox section

Change-Id: Icf23d5446098b774c0ada301e9f62750cf3ad5df
diff --git a/etc/tempest.conf.sample b/etc/tempest.conf.sample
index e1196f0..43277d6 100644
--- a/etc/tempest.conf.sample
+++ b/etc/tempest.conf.sample
@@ -107,9 +107,6 @@
 # Level to log Compute API request/response details.
 log_level = ERROR
 
-# Whitebox options for compute. Whitebox options enable the
-# whitebox test cases, which look at internal Nova database state,
-# SSH into VMs to check instance state, etc.
 
 # Run live migration tests (requires 2 hosts)
 live_migration_available = false
@@ -123,6 +120,12 @@
 # are forced to skip, regardless of the extension status
 disk_config_enabled_override = true
 
+
+[whitebox]
+# Whitebox options for compute. Whitebox options enable the
+# whitebox test cases, which look at internal Nova database state,
+# SSH into VMs to check instance state, etc.
+
 # Should we run whitebox tests for Compute?
 whitebox_enabled = true
 
diff --git a/tempest/config.py b/tempest/config.py
index 89fa2d9..9458ce8 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -171,22 +171,6 @@
                 default=True,
                 help="If false, skip config tests regardless of the "
                      "extension status"),
-    cfg.BoolOpt('whitebox_enabled',
-                default=False,
-                help="Does the test environment support whitebox tests for "
-                     "Compute?"),
-    cfg.StrOpt('db_uri',
-               default=None,
-               help="Connection string to the database of Compute service"),
-    cfg.StrOpt('source_dir',
-               default="/opt/stack/nova",
-               help="Path of nova source directory"),
-    cfg.StrOpt('config_path',
-               default='/etc/nova/nova.conf',
-               help="Path of nova configuration file"),
-    cfg.StrOpt('bin_dir',
-               default="/usr/local/bin/",
-               help="Directory containing nova binaries such as nova-manage"),
 ]
 
 
@@ -219,6 +203,35 @@
         conf.register_opt(opt, group='compute-admin')
 
 
+whitebox_group = cfg.OptGroup(name='whitebox',
+                              title="Whitebox Options")
+
+WhiteboxGroup = [
+    cfg.BoolOpt('whitebox_enabled',
+                default=False,
+                help="Does the test environment support whitebox tests for "
+                     "Compute?"),
+    cfg.StrOpt('db_uri',
+               default=None,
+               help="Connection string to the database of Compute service"),
+    cfg.StrOpt('source_dir',
+               default="/opt/stack/nova",
+               help="Path of nova source directory"),
+    cfg.StrOpt('config_path',
+               default='/etc/nova/nova.conf',
+               help="Path of nova configuration file"),
+    cfg.StrOpt('bin_dir',
+               default="/usr/local/bin/",
+               help="Directory containing nova binaries such as nova-manage"),
+]
+
+
+def register_whitebox_opts(conf):
+    conf.register_group(whitebox_group)
+    for opt in WhiteboxGroup:
+        conf.register_opt(opt, group='whitebox')
+
+
 image_group = cfg.OptGroup(name='image',
                            title="Image Service Options")
 
@@ -418,6 +431,7 @@
 
         register_compute_opts(cfg.CONF)
         register_identity_opts(cfg.CONF)
+        register_whitebox_opts(cfg.CONF)
         register_image_opts(cfg.CONF)
         register_network_opts(cfg.CONF)
         register_volume_opts(cfg.CONF)
@@ -425,6 +439,7 @@
         register_boto_opts(cfg.CONF)
         register_compute_admin_opts(cfg.CONF)
         self.compute = cfg.CONF.compute
+        self.whitebox = cfg.CONF.whitebox
         self.identity = cfg.CONF.identity
         self.images = cfg.CONF.image
         self.network = cfg.CONF.network
diff --git a/tempest/tests/compute/__init__.py b/tempest/tests/compute/__init__.py
index 398f982..cd0160c 100644
--- a/tempest/tests/compute/__init__.py
+++ b/tempest/tests/compute/__init__.py
@@ -29,7 +29,7 @@
 CREATE_IMAGE_ENABLED = CONFIG.compute.create_image_enabled
 RESIZE_AVAILABLE = CONFIG.compute.resize_available
 CHANGE_PASSWORD_AVAILABLE = CONFIG.compute.change_password_available
-WHITEBOX_ENABLED = CONFIG.compute.whitebox_enabled
+WHITEBOX_ENABLED = CONFIG.whitebox.whitebox_enabled
 DISK_CONFIG_ENABLED = False
 DISK_CONFIG_ENABLED_OVERRIDE = CONFIG.compute.disk_config_enabled_override
 FLAVOR_EXTRA_DATA_ENABLED = False
diff --git a/tempest/whitebox.py b/tempest/whitebox.py
index d78b9e0..34b7950 100644
--- a/tempest/whitebox.py
+++ b/tempest/whitebox.py
@@ -64,9 +64,9 @@
         super(ComputeWhiteboxTest, cls).setUpClass()
 
         # Add some convenience attributes that tests use...
-        cls.nova_dir = cls.config.compute.source_dir
-        cls.compute_bin_dir = cls.config.compute.bin_dir
-        cls.compute_config_path = cls.config.compute.config_path
+        cls.nova_dir = cls.config.whitebox.source_dir
+        cls.compute_bin_dir = cls.config.whitebox.bin_dir
+        cls.compute_config_path = cls.config.whitebox.config_path
         cls.servers_client = cls.manager.servers_client
         cls.images_client = cls.manager.images_client
         cls.flavors_client = cls.manager.flavors_client
@@ -127,7 +127,7 @@
                        }
 
         try:
-            engine = create_engine(cls.config.compute.db_uri, **engine_args)
+            engine = create_engine(cls.config.whitebox.db_uri, **engine_args)
             connection = engine.connect()
             meta = MetaData()
             meta.reflect(bind=engine)