diff options
| author | Yuriy Taraday <yorik.sar@gmail.com> | 2011-05-06 18:01:42 +0000 |
|---|---|---|
| committer | Tarmac <> | 2011-05-06 18:01:42 +0000 |
| commit | 016be4ccdfe3f7791021bc717a1445b36cde371f (patch) | |
| tree | 8d90c045d63df0f67372cb5573008567ece42a1c | |
| parent | 114a55d0243f79db7ea1ef29830a9428dbf1aa33 (diff) | |
| parent | 6160e3dbdf0dcc736fb650d025da89b269edbf59 (diff) | |
Sanitize get_console_output results. See bug #758054
| -rw-r--r-- | Authors | 1 | ||||
| -rw-r--r-- | nova/compute/manager.py | 3 | ||||
| -rw-r--r-- | nova/tests/test_cloud.py | 2 | ||||
| -rw-r--r-- | nova/virt/fake.py | 2 |
4 files changed, 5 insertions, 3 deletions
@@ -80,4 +80,5 @@ Vasiliy Shlykov <vash@vasiliyshlykov.org> Vishvananda Ishaya <vishvananda@gmail.com> Yoshiaki Tamura <yoshi@midokura.jp> Youcef Laribi <Youcef.Laribi@eu.citrix.com> +Yuriy Taraday <yorik.sar@gmail.com> Zhixue Wu <Zhixue.Wu@citrix.com> diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 1ff78007b..c6f957073 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -749,7 +749,8 @@ class ComputeManager(manager.SchedulerDependentManager): instance_ref = self.db.instance_get(context, instance_id) LOG.audit(_("Get console output for instance %s"), instance_id, context=context) - return self.driver.get_console_output(instance_ref) + output = self.driver.get_console_output(instance_ref) + return output.decode('utf-8', 'replace').encode('ascii', 'replace') @exception.wrap_exception def get_ajax_console(self, context, instance_id): diff --git a/nova/tests/test_cloud.py b/nova/tests/test_cloud.py index c45bdd12c..f271c03f2 100644 --- a/nova/tests/test_cloud.py +++ b/nova/tests/test_cloud.py @@ -290,7 +290,7 @@ class CloudTestCase(test.TestCase): instance_id = rv['instancesSet'][0]['instanceId'] output = self.cloud.get_console_output(context=self.context, instance_id=[instance_id]) - self.assertEquals(b64decode(output['output']), 'FAKE CONSOLE OUTPUT') + self.assertEquals(b64decode(output['output']), 'FAKE CONSOLE?OUTPUT') # TODO(soren): We need this until we can stop polling in the rpc code # for unit tests. greenthread.sleep(0.3) diff --git a/nova/virt/fake.py b/nova/virt/fake.py index 33f37b512..5ac376e46 100644 --- a/nova/virt/fake.py +++ b/nova/virt/fake.py @@ -367,7 +367,7 @@ class FakeConnection(driver.ComputeDriver): return [0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L] def get_console_output(self, instance): - return 'FAKE CONSOLE OUTPUT' + return 'FAKE CONSOLE\xffOUTPUT' def get_ajax_console(self, instance): return {'token': 'FAKETOKEN', |
