Ejemplo n.º 1
0
    def test_run_with_pre_flight_thin_dir_exists(self):
        """
        test Single.run() when ssh_pre_flight is set
        and thin_dir already exists
        """
        target = self.target.copy()
        target["ssh_pre_flight"] = os.path.join(RUNTIME_VARS.TMP, "script.sh")
        single = ssh.Single(self.opts,
                            self.opts["argv"],
                            "localhost",
                            mods={},
                            fsclient=None,
                            thin=salt.utils.thin.thin_path(
                                self.opts["cachedir"]),
                            mine=False,
                            **target)

        cmd_ret = ("", "", 0)
        mock_flight = MagicMock(return_value=cmd_ret)
        mock_cmd = MagicMock(return_value=cmd_ret)
        patch_flight = patch("salt.client.ssh.Single.run_ssh_pre_flight",
                             mock_flight)
        patch_cmd = patch("salt.client.ssh.shell.Shell.exec_cmd", mock_cmd)
        patch_cmd_block = patch("salt.client.ssh.Single.cmd_block", mock_cmd)
        patch_os = patch("os.path.exists", return_value=True)

        with patch_os, patch_flight, patch_cmd, patch_cmd_block:
            ret = single.run()
            mock_cmd.assert_called()
            mock_flight.assert_not_called()
            assert ret == cmd_ret
Ejemplo n.º 2
0
    def test_run_with_pre_flight_with_args(self):
        """
        test Single.run() when ssh_pre_flight is set
        and script successfully runs
        """
        target = self.target.copy()
        target["ssh_pre_flight"] = os.path.join(RUNTIME_VARS.TMP, "script.sh")
        target["ssh_pre_flight_args"] = "foobar"
        single = ssh.Single(
            self.opts,
            self.opts["argv"],
            "localhost",
            mods={},
            fsclient=None,
            thin=salt.utils.thin.thin_path(self.opts["cachedir"]),
            mine=False,
            **target
        )

        cmd_ret = ("Success", "foobar", 0)
        mock_flight = MagicMock(return_value=cmd_ret)
        mock_cmd = MagicMock(return_value=cmd_ret)
        patch_flight = patch("salt.client.ssh.Single.run_ssh_pre_flight", mock_flight)
        patch_cmd = patch("salt.client.ssh.Single.cmd_block", mock_cmd)
        patch_exec_cmd = patch(
            "salt.client.ssh.shell.Shell.exec_cmd", return_value=("", "", 1)
        )
        patch_os = patch("os.path.exists", side_effect=[True])

        with patch_os, patch_flight, patch_cmd, patch_exec_cmd:
            ret = single.run()
            mock_cmd.assert_called()
            mock_flight.assert_called()
            assert ret == cmd_ret
Ejemplo n.º 3
0
def test_running_no_change(test, running):
    """
    running state test, no change required case.
    """
    with patch.dict(virt.__opts__, {"test": test}):
        update_mock = MagicMock(return_value={"definition": False})
        start_mock = MagicMock(return_value=0)
        with patch.dict(
                virt.__salt__,
            {
                "virt.vm_state": MagicMock(return_value={"myvm": running}),
                "virt.start": start_mock,
                "virt.update": MagicMock(return_value={"definition": False}),
                "virt.list_domains": MagicMock(return_value=["myvm"]),
            },
        ):
            assert virt.running("myvm") == {
                "name":
                "myvm",
                "result":
                True,
                "changes": {
                    "myvm": {
                        "started": True
                    }
                } if running == "shutdown" else {},
                "comment":
                "Domain myvm started" if running == "shutdown" else
                "Domain myvm exists and is running",
            }
            if running == "shutdown" and not test:
                start_mock.assert_called()
            else:
                start_mock.assert_not_called()
Ejemplo n.º 4
0
def test_running_update(test, running):
    """
    running state test, update an existing guest
    """
    with patch.dict(virt.__opts__, {"test": test}):
        start_mock = MagicMock(return_value=0)
        with patch.dict(
            virt.__salt__,
            {
                "virt.vm_state": MagicMock(return_value={"myvm": running}),
                "virt.update": MagicMock(
                    return_value={"definition": True, "cpu": True}
                ),
                "virt.start": start_mock,
                "virt.list_domains": MagicMock(return_value=["myvm"]),
            },
        ):
            changes = {"definition": True, "cpu": True}
            if running == "shutdown":
                changes["started"] = True
            assert virt.running("myvm", cpu=2) == {
                "name": "myvm",
                "changes": {"myvm": changes},
                "result": True if not test else None,
                "comment": "Domain myvm updated"
                if running == "running"
                else "Domain myvm updated and started",
            }
            if running == "shutdown" and not test:
                start_mock.assert_called()
            else:
                start_mock.assert_not_called()
Ejemplo n.º 5
0
    def test_root_folder_traversal_spec(self):
        mock_traversal_spec_init = MagicMock(return_value='traversal')
        mock_reference = MagicMock(spec=vim.Folder)
        with patch('salt.utils.vmware.get_managed_object_name',
                   MagicMock(side_effect=['fake_host', 'Datacenters'])):
            with patch(
                    'salt.utils.vmware.vmodl.query.PropertyCollector.TraversalSpec',
                    mock_traversal_spec_init):

                salt.utils.vmware.get_datastores(self.mock_si,
                                                 mock_reference,
                                                 get_all_datastores=True)

        mock_traversal_spec_init.assert_called([
            call(path='childEntity',
                 selectSet=['traversal'],
                 skip=False,
                 type=vim.Folder),
            call(path='datastore', skip=False, type=vim.Datacenter)
        ])