I'm using fabric through a gateway to configure an EC2 instance. I spin the
instance up through the AWS API and wait for it to come on line by polling the
API. The instance comes "on-line" before the OS is booted though so my code
that uses fabric starts trying to connect before ssh is up. No big deal just
increase the connection_attempts but alas this doesn't work when going through
a gateway.
The problem is in network.py direct_tcpip which throws
paramiko.ChannelException when it times out and this isn't caught anywhere.
Not sure what the best solution is. I hacked the following to get it working.
My sleep call isn't really a timeout but I don't see where I can put a timeout
on opening a channel on an existing transport.
def direct_tcpip(client, host, port):
trans = client.get_transport()
#trans.settimeout(30)
import time
from state import env
import paramiko
tries = env.connection_attempts
while tries:
try:
return trans.open_channel(
'direct-tcpip',
(host, int(port)),
('', 0)
)
except paramiko.ChannelException, e:
tries -= 1
time.sleep(env.timeout)
Thoughts?
-EAD
_______________________________________________
Fab-user mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/fab-user