Merge ~bjornt/maas:bug-2053033-failed-login-virsh into maas:master

Proposed by Björn Tillenius
Status: Merged
Approved by: Björn Tillenius
Approved revision: 38785a9d631fd9d8d71101f8614717d395491207
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~bjornt/maas:bug-2053033-failed-login-virsh
Merge into: maas:master
Diff against target: 49 lines (+25/-1)
2 files modified
src/provisioningserver/drivers/pod/tests/test_virsh.py (+23/-0)
src/provisioningserver/drivers/pod/virsh.py (+2/-1)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Adam Collard (community) Approve
Review via email: mp+460490@code.launchpad.net

Commit message

Bug #2053033: Creating MAAS Virsh VM does not work (libvirt: error)

For some reason virsh prints out an error about executing
pkttyagent. This happens only on some machines, and we don't know why.

But the error seems harmless. This patch ignores the error and
lets the connection succeed.

To post a comment you must log in.
Revision history for this message
Adam Collard (adam-collard) wrote :

Nice find, +1

review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b bug-2053033-failed-login-virsh lp:~bjornt/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 38785a9d631fd9d8d71101f8614717d395491207

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/provisioningserver/drivers/pod/tests/test_virsh.py b/src/provisioningserver/drivers/pod/tests/test_virsh.py
2index 89e5f6d..479804f 100644
3--- a/src/provisioningserver/drivers/pod/tests/test_virsh.py
4+++ b/src/provisioningserver/drivers/pod/tests/test_virsh.py
5@@ -572,7 +572,30 @@ class TestVirshSSH(MAASTestCase):
6 self.assertFalse(conn.login(poweraddr=factory.make_name("poweraddr")))
7 mock_close.assert_called_once_with()
8
9+ def test_pkttyagent_permission_denied(self):
10+ # Sometimes pkttyagent can't be executed in the snap. The connection
11+ # itself still works, though.
12+ # See https://bugs.launchpad.net/maas/+bug/2053033
13+ virsh_outputs = [
14+ "libvirt: error : cannot execute binary /usr/bin/pkttyagent: Permission denied",
15+ "Welcome to virsh, the virtualization interactive terminal.",
16+ "",
17+ "Type: 'help' for help with commands",
18+ " 'quit' to quit",
19+ "",
20+ "virsh # ",
21+ ]
22+ conn = self.configure_virshssh_pexpect(virsh_outputs)
23+ self.assertTrue(conn.login(poweraddr=factory.make_name("poweraddr")))
24+
25 def test_login_invalid(self):
26+ virsh_outputs = ["Permission denied, please try again."]
27+ conn = self.configure_virshssh_pexpect(virsh_outputs)
28+ mock_close = self.patch(conn, "close")
29+ self.assertFalse(conn.login(poweraddr=factory.make_name("poweraddr")))
30+ mock_close.assert_called_once_with()
31+
32+ def test_unknown(self):
33 virsh_outputs = [factory.make_string()]
34 conn = self.configure_virshssh_pexpect(virsh_outputs)
35 mock_close = self.patch(conn, "close")
36diff --git a/src/provisioningserver/drivers/pod/virsh.py b/src/provisioningserver/drivers/pod/virsh.py
37index fb2bff3..f357205 100644
38--- a/src/provisioningserver/drivers/pod/virsh.py
39+++ b/src/provisioningserver/drivers/pod/virsh.py
40@@ -286,7 +286,8 @@ class VirshSSH(pexpect.spawn):
41 PROMPT = r"virsh \#"
42 PROMPT_SSHKEY = "(?i)are you sure you want to continue connecting"
43 PROMPT_PASSWORD = "(?i)(?:password)|(?:passphrase for key)"
44- PROMPT_DENIED = "(?i)permission denied"
45+ # Credential problems
46+ PROMPT_DENIED = "(?i)permission denied, please try again"
47 PROMPT_CLOSED = "(?i)connection closed by remote host"
48
49 PROMPTS = [

Subscribers

People subscribed via source and target branches