diff --git a/tripleoclient/tests/workflows/test_deployment.py b/tripleoclient/tests/workflows/test_deployment.py index 7b6dae359..57b1c888f 100644 --- a/tripleoclient/tests/workflows/test_deployment.py +++ b/tripleoclient/tests/workflows/test_deployment.py @@ -52,16 +52,16 @@ class TestDeploymentWorkflows(utils.TestCommand): @mock.patch('tripleoclient.workflows.deployment.open') @mock.patch('tripleoclient.workflows.deployment.tempfile') @mock.patch('tripleoclient.workflows.deployment.subprocess.check_call') - def test_enable_ssh_admin(self, mock_check_call, mock_tempfile, - mock_open, mock_rmtree, mock_sleep, - mock_wait_for_ssh_port): + def test_enable_ssh_admin(self, mock_check_call, mock_tempfile, mock_open, + mock_rmtree, mock_sleep, mock_wait_for_ssh_port): log = mock.Mock() hosts = 'a', 'b', 'c' ssh_user = 'test-user' ssh_key = 'test-key' mock_tempfile.mkdtemp.return_value = '/foo' - mock_open.return_value = FakeFile('key') + mock_open.side_effect = [FakeFile('DEVNULL'), FakeFile('pubkey'), + FakeFile('key')] mock_state = mock.Mock() mock_state.state = 'SUCCESS' self.workflow.executions.get.return_value = mock_state @@ -101,7 +101,8 @@ class TestDeploymentWorkflows(utils.TestCommand): ssh_key = 'test-key' mock_tempfile.mkdtemp.return_value = '/foo' - mock_open.side_effect = [FakeFile('pubkey'), FakeFile('privkey')] + mock_open.side_effect = [FakeFile('DEVNULL'), FakeFile('pubkey'), + FakeFile('privkey')] mock_state = mock.Mock() mock_state.state = 'ERROR' mock_state.to_dict.return_value = dict(state_info='an error') diff --git a/tripleoclient/workflows/deployment.py b/tripleoclient/workflows/deployment.py index ebda105ed..254fcfc52 100644 --- a/tripleoclient/workflows/deployment.py +++ b/tripleoclient/workflows/deployment.py @@ -247,7 +247,17 @@ def enable_ssh_admin(log, clients, plan_name, hosts, ssh_user, ssh_key): try: tmp_key_command = ["ssh-keygen", "-N", "", "-t", "rsa", "-b", "4096", "-f", tmp_key_private, "-C", tmp_key_comment] - subprocess.check_call(tmp_key_command, stderr=subprocess.STDOUT) + DEVNULL = open(os.devnull, 'w') + try: + subprocess.check_call(tmp_key_command, stdout=DEVNULL, + stderr=subprocess.STDOUT) + except subprocess.CalledProcessError as exc: + log.error("ssh-keygen has failed with return code {0}". + format(exc.returncode)) + else: + log.info("ssh-keygen has been run successfully") + DEVNULL.close() + with open(tmp_key_public) as pubkey: tmp_key_public_contents = pubkey.read() with open(tmp_key_private) as privkey: