diff --git a/stress/config.py b/stress/config.py
index ca86ce5..25cb910 100755
--- a/stress/config.py
+++ b/stress/config.py
@@ -12,8 +12,6 @@
 #    See the License for the specific language governing permissions and
 #    limitations under the License.
 
-import ConfigParser
-
 
 class StressConfig(object):
     """Provides configuration information for whitebox stress tests."""
@@ -21,33 +19,27 @@
     def __init__(self, conf):
         self.conf = conf
 
-    def get(self, item_name, default_value=None):
-        try:
-            return self.conf.get("stress", item_name)
-        except (ConfigParser.NoSectionError, ConfigParser.NoOptionError):
-            return default_value
-
     @property
     def host_private_key_path(self):
         """Path to ssh key for logging into compute nodes."""
-        return self.get("host_private_key_path", None)
+        return self.conf.compute.path_to_private_key
 
     @property
     def host_admin_user(self):
         """Username for logging into compute nodes."""
-        return self.get("host_admin_user", None)
+        return self.conf.compute.ssh_user
 
     @property
     def nova_logdir(self):
         """Directory containing log files on the compute nodes."""
-        return self.get("nova_logdir", None)
+        return self.conf.stress.nova_logdir
 
     @property
     def controller(self):
         """Controller host."""
-        return self.get("controller", None)
+        return self.conf.stress.controller
 
     @property
     def max_instances(self):
         """Maximum number of instances to create during test."""
-        return self.get("max_instances", 16)
+        return self.conf.stress.max_instances
diff --git a/stress/driver.py b/stress/driver.py
index 8dc88cf..f80e765 100644
--- a/stress/driver.py
+++ b/stress/driver.py
@@ -18,6 +18,7 @@
 import datetime
 import random
 import time
+from urlparse import urlparse
 
 from config import StressConfig
 from state import ClusterState
@@ -162,7 +163,7 @@
                                    (default: 32)
                     `seed`       = random seed (default: None)
     """
-    stress_config = StressConfig(manager.config._conf)
+    stress_config = StressConfig(manager.config)
     # get keyword arguments
     duration = kwargs.get('duration', datetime.timedelta(seconds=10))
     seed = kwargs.get('seed', None)
@@ -173,7 +174,8 @@
     keypath = stress_config.host_private_key_path
     user = stress_config.host_admin_user
     logdir = stress_config.nova_logdir
-    computes = _get_compute_nodes(keypath, user, manager.config.identity.host)
+    host = urlparse(manager.config.identity.uri).hostname
+    computes = _get_compute_nodes(keypath, user, host)
     stress.utils.execute_on_all(keypath, user, computes,
                                 "rm -f %s/*.log" % logdir)
     random.seed(seed)
