diff --git a/common/config.py b/common/config.py
index 8081282..3cef5aa 100644
--- a/common/config.py
+++ b/common/config.py
@@ -10,13 +10,9 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-import os
-
 from oslo_config import cfg
 
-import heat_integrationtests
-
-_CONF = None
+CONF = None
 
 service_available_group = cfg.OptGroup(name="service_available",
                                        title="Available OpenStack Services")
@@ -155,28 +151,6 @@
 ]
 
 
-def init_conf(read_conf=True):
-    global _CONF
-    if _CONF:
-        return _CONF
-
-    default_config_files = None
-    if read_conf:
-        confpath = os.path.join(
-            os.path.dirname(os.path.realpath(heat_integrationtests.__file__)),
-            'heat_integrationtests.conf')
-        if os.path.isfile(confpath):
-            default_config_files = [confpath]
-
-    _CONF = cfg.ConfigOpts()
-    _CONF(args=[], project='heat_integrationtests',
-          default_config_files=default_config_files)
-
-    for group, opts in list_opts():
-        _CONF.register_opts(opts, group=group)
-    return _CONF
-
-
 def list_opts():
     yield heat_group.name, HeatGroup
     yield service_available_group.name, ServiceAvailableGroup
diff --git a/common/test.py b/common/test.py
index 2bf7771..ce825c7 100644
--- a/common/test.py
+++ b/common/test.py
@@ -73,7 +73,7 @@
     def setUp(self):
         super(HeatIntegrationTest, self).setUp()
 
-        self.conf = config.init_conf().heat_plugin
+        self.conf = config.CONF.heat_plugin
 
         self.assertIsNotNone(self.conf.auth_url,
                              'No auth_url configured')
