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
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
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()
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()
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) ])