def setUp(self): self._test_hv_a = self._TestHypervisor() self._test_hv_a.GetInstanceConsole = mock.Mock( return_value=objects.InstanceConsole(instance="inst", kind="aHy")) self._test_hv_b = self._TestHypervisor() self._test_hv_b.GetInstanceConsole = mock.Mock( return_value=objects.InstanceConsole(instance="inst", kind="bHy"))
def GetInstanceConsole( cls, instance, primary_node, # pylint: disable=W0221 node_group, hvparams, beparams, root_dir=None): """Return information for connecting to the console of an instance. """ if root_dir is None: root_dir = cls._InstanceDir(instance.name) if not os.path.ismount(root_dir): raise HypervisorError("Instance %s is not running" % instance.name) ndparams = node_group.FillND(primary_node) return objects.InstanceConsole(instance=instance.name, kind=constants.CONS_SSH, host=primary_node.name, port=ndparams.get( constants.ND_SSH_PORT), user=constants.SSH_CONSOLE_USER, command=["chroot", root_dir, "/bin/sh"])
def testMessage(self): cons = objects.InstanceConsole(instance="inst98.example.com", kind=constants.CONS_MESSAGE, message="Hello World") self.assertEqual(self._Test(cons, False, "cluster.example.com"), constants.EXIT_SUCCESS) self.assertEqual(len(self._cmds), 0) self.assertEqual(self._output, ["Hello World"])
def GetInstanceConsole(cls, instance, primary_node, node_group, hvparams, beparams): """Return information for connecting to the console of an instance. """ return objects.InstanceConsole( instance=instance.name, kind=constants.CONS_MESSAGE, message=("Console not available for fake" " hypervisor"))
def testSshShow(self): cons = objects.InstanceConsole(instance="inst31.example.com", kind=constants.CONS_SSH, host="node93.example.com", user="******", command="xm console x.y.z") self.assertEqual(self._Test(cons, True, "cluster.example.com"), constants.EXIT_SUCCESS) self.assertEqual(len(self._cmds), 0) self.assertEqual(len(self._output), 1) self.assertTrue(" [email protected] " in self._output[0]) self.assertTrue("'xm console x.y.z'" in self._output[0])
def testSshRunFail(self): cons = objects.InstanceConsole(instance="inst31.example.com", kind=constants.CONS_SSH, host="node93.example.com", user="******", command=["xm", "console", "x.y.z"]) self._next_cmd_exitcode = 100 self.assertRaises(errors.OpExecError, self._Test, cons, False, "cluster.example.com") self.assertEqual(len(self._cmds), 1) self.assertEqual(len(self._output), 0)
def testVnc(self): cons = objects.InstanceConsole(instance="inst1.example.com", kind=constants.CONS_VNC, host="node1.example.com", port=5901, display=1) self.assertEqual(self._Test(cons, False, "cluster.example.com"), constants.EXIT_SUCCESS) self.assertEqual(len(self._cmds), 0) self.assertEqual(len(self._output), 1) self.assertTrue(" inst1.example.com " in self._output[0]) self.assertTrue(" node1.example.com:5901 " in self._output[0]) self.assertTrue("vnc://node1.example.com:5901/" in self._output[0])
def testSshRun(self): cons = objects.InstanceConsole(instance="inst31.example.com", kind=constants.CONS_SSH, host="node93.example.com", user="******", command=["xm", "console", "x.y.z"]) self.assertEqual(self._Test(cons, False, "cluster.example.com"), constants.EXIT_SUCCESS) self.assertEqual(len(self._cmds), 1) self.assertEqual(len(self._output), 0) # This is very important to prevent escapes from the console self.assertTrue("-oEscapeChar=none" in self._cmds[0])
def GetInstanceConsole(cls, instance, primary_node, node_group, hvparams, beparams): """Return a command for connecting to the console of an instance. """ ndparams = node_group.FillND(primary_node) return objects.InstanceConsole( instance=instance.name, kind=constants.CONS_SSH, host=primary_node.name, port=ndparams.get(constants.ND_SSH_PORT), user=constants.SSH_CONSOLE_USER, command=["lxc-console", "-n", instance.name])
def GetInstanceConsole(cls, instance, primary_node, node_group, hvparams, beparams): """Return a command for connecting to the console of an instance. """ xen_cmd = XenHypervisor._GetCommandFromHvparams(hvparams) ndparams = node_group.FillND(primary_node) return objects.InstanceConsole(instance=instance.name, kind=constants.CONS_SSH, host=primary_node.name, port=ndparams.get(constants.ND_SSH_PORT), user=constants.SSH_CONSOLE_USER, command=[pathutils.XEN_CONSOLE_WRAPPER, xen_cmd, instance.name])