diff options
| -rw-r--r-- | nova/tests/test_libvirt.py | 82 | ||||
| -rw-r--r-- | nova/virt/libvirt/connection.py | 2 |
2 files changed, 83 insertions, 1 deletions
diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py index 5a7ac8b80..61cb2a32a 100644 --- a/nova/tests/test_libvirt.py +++ b/nova/tests/test_libvirt.py @@ -1398,6 +1398,88 @@ class LibvirtConnTestCase(test.TestCase): shutil.rmtree(os.path.join(FLAGS.instances_path, FLAGS.base_dir_name)) + @test.skip_if(missing_libvirt(), "Test requires libvirt") + def test_get_console_output_file(self): + + with utils.tempdir() as tmpdir: + self.flags(instances_path=tmpdir) + + instance_ref = self.test_instance + instance_ref['image_ref'] = 123456 + instance = db.instance_create(self.context, instance_ref) + + console_dir = (os.path.join(tmpdir, instance['name'])) + os.mkdir(console_dir) + console_log = '%s/console.log' % (console_dir) + f = open(console_log, "w") + f.write("foo") + f.close() + fake_dom_xml = """ + <domain type='kvm'> + <devices> + <disk type='file'> + <source file='filename'/> + </disk> + <console type='file'> + <source path='%s'/> + <target port='0'/> + </console> + </devices> + </domain> + """ % console_log + + def fake_lookup(id): + return FakeVirtDomain(fake_dom_xml) + + self.create_fake_libvirt_mock() + connection.LibvirtConnection._conn.lookupByName = fake_lookup + connection.libvirt_utils = libvirt_utils + + conn = connection.LibvirtConnection(False) + output = conn.get_console_output(instance) + self.assertEquals("foo", output) + + @test.skip_if(missing_libvirt(), "Test requires libvirt") + def test_get_console_output_pty(self): + + with utils.tempdir() as tmpdir: + self.flags(instances_path=tmpdir) + + instance_ref = self.test_instance + instance_ref['image_ref'] = 123456 + instance = db.instance_create(self.context, instance_ref) + + console_dir = (os.path.join(tmpdir, instance['name'])) + os.mkdir(console_dir) + pty_file = '%s/fake_pty' % (console_dir) + f = open(pty_file, "w") + f.write("foo") + f.close() + fake_dom_xml = """ + <domain type='kvm'> + <devices> + <disk type='file'> + <source file='filename'/> + </disk> + <console type='pty'> + <source path='%s'/> + <target port='0'/> + </console> + </devices> + </domain> + """ % pty_file + + def fake_lookup(id): + return FakeVirtDomain(fake_dom_xml) + + self.create_fake_libvirt_mock() + connection.LibvirtConnection._conn.lookupByName = fake_lookup + connection.libvirt_utils = libvirt_utils + + conn = connection.LibvirtConnection(False) + output = conn.get_console_output(instance) + self.assertEquals("foo", output) + def test_get_host_ip_addr(self): conn = connection.LibvirtConnection(False) ip = conn.get_host_ip_addr() diff --git a/nova/virt/libvirt/connection.py b/nova/virt/libvirt/connection.py index ef95b12ce..3878b8907 100644 --- a/nova/virt/libvirt/connection.py +++ b/nova/virt/libvirt/connection.py @@ -988,7 +988,7 @@ class LibvirtConnection(driver.ComputeDriver): self._chown_console_log_for_instance(instance['name']) data = self._flush_libvirt_console(pty) - console_log = self._get_console_log_path(instance_name) + console_log = self._get_console_log_path(instance['name']) fpath = self._append_to_file(data, console_log) return libvirt_utils.load_file(fpath) |
