diff --git a/cli/__init__.py b/cli/__init__.py
index 6ffe229..e244811 100644
--- a/cli/__init__.py
+++ b/cli/__init__.py
@@ -60,10 +60,11 @@
         return self.cmd_with_auth(
             'nova', action, flags, params, admin, fail_ok)
 
-    def nova_manage(self, action, flags='', params='', fail_ok=False):
+    def nova_manage(self, action, flags='', params='', fail_ok=False,
+                    merge_stderr=True):
         """Executes nova-manage command for the given action."""
         return self.cmd(
-            'nova-manage', action, flags, params, fail_ok)
+            'nova-manage', action, flags, params, fail_ok, merge_stderr)
 
     def keystone(self, action, flags='', params='', admin=True, fail_ok=False):
         """Executes keystone command for the given action."""
@@ -81,14 +82,19 @@
         flags = creds + ' ' + flags
         return self.cmd(cmd, action, flags, params, fail_ok)
 
-    def cmd(self, cmd, action, flags='', params='', fail_ok=False):
+    def cmd(self, cmd, action, flags='', params='', fail_ok=False,
+            merge_stderr=True):
+        #TODO(jogo): make merge_stderr default to False.
         """Executes specified command for the given action."""
         cmd = ' '.join([CONF.cli.cli_dir + cmd,
                         flags, action, params])
         LOG.info("running: '%s'" % cmd)
         cmd = shlex.split(cmd)
         try:
-            result = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
+            if merge_stderr:
+                result = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
+            else:
+                result = subprocess.check_output(cmd)
         except subprocess.CalledProcessError, e:
             LOG.error("command output:\n%s" % e.output)
             raise
diff --git a/cli/simple_read_only/test_compute_manage.py b/cli/simple_read_only/test_compute_manage.py
index 5768c74..0fa84bd 100644
--- a/cli/simple_read_only/test_compute_manage.py
+++ b/cli/simple_read_only/test_compute_manage.py
@@ -50,6 +50,7 @@
         self.nova_manage('', '-h')
 
     def test_version_flag(self):
+        # Bug 1159957: nova-manage --version writes to stderr
         self.assertNotEqual("", self.nova_manage('', '--version'))
         self.assertEqual(self.nova_manage('version'),
                          self.nova_manage('', '--version'))
@@ -68,8 +69,9 @@
 
     def test_flavor_list(self):
         self.assertNotEqual("", self.nova_manage('flavor list'))
-        self.assertNotEqual(self.nova_manage('instance_type list'),
-                            self.nova_manage('flavor list'))
+        self.assertEqual(self.nova_manage('instance_type list',
+                                          merge_stderr=False),
+                         self.nova_manage('flavor list', merge_stderr=False))
 
     def test_db_archive_deleted_rows(self):
         # make sure command doesn't error out
