diff --git a/nova/compute/manager.py b/nova/compute/manager.py index a24743c2044c..09ad4f4fb0b0 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -5366,7 +5366,10 @@ class ComputeManager(manager.Manager): else: console_info = self.driver.get_vnc_console(ctxt, instance) - return console_info.port == port + # Some drivers may return an int on console_info.port but the port + # variable in this method is a string, so cast to be sure we are + # comparing the correct types. + return str(console_info.port) == port @wrap_exception() @reverts_task_state diff --git a/nova/tests/unit/compute/test_compute.py b/nova/tests/unit/compute/test_compute.py index 370033468d94..561d26bf6278 100644 --- a/nova/tests/unit/compute/test_compute.py +++ b/nova/tests/unit/compute/test_compute.py @@ -3831,7 +3831,7 @@ class ComputeTestCase(BaseTestCase, fake_driver_get_console) self.assertTrue(self.compute.validate_console_port( - context=self.context, instance=instance, port=5900, + context=self.context, instance=instance, port="5900", console_type="novnc")) def test_validate_console_port_spice(self): @@ -3846,7 +3846,7 @@ class ComputeTestCase(BaseTestCase, fake_driver_get_console) self.assertTrue(self.compute.validate_console_port( - context=self.context, instance=instance, port=5900, + context=self.context, instance=instance, port="5900", console_type="spice-html5")) def test_validate_console_port_rdp(self): @@ -3860,9 +3860,23 @@ class ComputeTestCase(BaseTestCase, fake_driver_get_console) self.assertTrue(self.compute.validate_console_port( - context=self.context, instance=instance, port=5900, + context=self.context, instance=instance, port="5900", console_type="rdp-html5")) + def test_validate_console_port_serial(self): + self.flags(enabled=True, group='serial_console') + instance = self._create_fake_instance_obj() + + def fake_driver_get_console(*args, **kwargs): + return ctype.ConsoleSerial(host="fake_host", port=5900) + + self.stub_out("nova.virt.fake.FakeDriver.get_serial_console", + fake_driver_get_console) + + self.assertTrue(self.compute.validate_console_port( + context=self.context, instance=instance, port="5900", + console_type="serial")) + def test_validate_console_port_mks(self): self.flags(enabled=True, group='mks') instance = self._create_fake_instance_obj() @@ -3871,7 +3885,7 @@ class ComputeTestCase(BaseTestCase, mock_getmks.return_value = ctype.ConsoleMKS(host="fake_host", port=5900) result = self.compute.validate_console_port(context=self.context, - instance=instance, port=5900, console_type="webmks") + instance=instance, port="5900", console_type="webmks") self.assertTrue(result) def test_validate_console_port_wrong_port(self):