Пример #1
0
 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"))
Пример #2
0
    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"])
Пример #3
0
 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"])
Пример #4
0
    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"))
Пример #5
0
 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])
Пример #6
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)
Пример #7
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])
Пример #8
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])
Пример #9
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])
Пример #10
0
  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])