@ -64,7 +64,7 @@ options:
notes :
- See the advanced playbooks chapter for more about using accelerated mode .
requirements :
- " python >= 2. 6 "
- " python >= 2. 4 "
- " python-keyczar "
author : " James Cammarata (@jimi-c) "
'''
@ -168,9 +168,10 @@ def daemonize_self(module, password, port, minutes, pid_file):
vvv ( " exiting pid %s " % pid )
# exit first parent
module . exit_json ( msg = " daemonized accelerate on port %s for %s minutes with pid %s " % ( port , minutes , str ( pid ) ) )
except OSError as e :
log ( " fork #1 failed: %d ( %s ) " % ( e . errno , e . strerror ) )
sys . exit ( 1 )
except OSError :
e = get_exception ( )
message = " fork #2 failed: {} ( {} ) " . format ( e . errno , e . strerror )
module . fail_json ( message )
# decouple from parent environment
os . chdir ( " / " )
@ -187,9 +188,10 @@ def daemonize_self(module, password, port, minutes, pid_file):
pid_file . close ( )
vvv ( " pid file written " )
sys . exit ( 0 )
except OSError as e :
log ( " fork #2 failed: %d ( %s ) " % ( e . errno , e . strerror ) )
sys . exit ( 1 )
except OSError :
e = get_exception ( )
message = ' fork #2 failed: {} ( {} ) ' . format ( e . errno , e . strerror )
module . fail_json ( message )
dev_null = file ( ' /dev/null ' , ' rw ' )
os . dup2 ( dev_null . fileno ( ) , sys . stdin . fileno ( ) )
@ -219,9 +221,9 @@ class LocalSocketThread(Thread):
# make sure the directory is accessible only to this
# user, as socket files derive their permissions from
# the directory that contains them
os . chmod ( dir , Oo700 )
os . chmod ( dir , int ( ' 0700 ' , 8 ) )
elif not os . path . exists ( dir ) :
os . makedirs ( dir , Oo700 )
os . makedirs ( dir , int ( ' O700 ' , 8 ) )
except OSError :
pass
self . s = socket . socket ( socket . AF_UNIX , socket . SOCK_STREAM )
@ -260,7 +262,8 @@ class LocalSocketThread(Thread):
self . server . last_event = datetime . datetime . now ( )
finally :
self . server . last_event_lock . release ( )
except Exception as e :
except Exception :
e = get_exception ( )
vv ( " key loaded locally was invalid, ignoring ( %s ) " % e )
conn . sendall ( " BADKEY \n " )
finally :
@ -520,7 +523,8 @@ class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
if response . get ( ' failed ' , False ) :
log ( " got a failed response from the master " )
return dict ( failed = True , stderr = " Master reported failure, aborting transfer " )
except Exception as e :
except Exception :
e = get_exception ( )
fd . close ( )
tb = traceback . format_exc ( )
log ( " failed to fetch the file: %s " % tb )
@ -541,7 +545,7 @@ class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
tmp_path = os . path . expanduser ( ' ~/.ansible/tmp/ ' )
if not os . path . exists ( tmp_path ) :
try :
os . makedirs ( tmp_path , Oo700 )
os . makedirs ( tmp_path , int ( ' O700 ' , 8 ) )
except :
return dict ( failed = True , msg = ' could not create a temporary directory at %s ' % tmp_path )
( fd , out_path ) = tempfile . mkstemp ( prefix = ' ansible. ' , dir = tmp_path )
@ -618,7 +622,8 @@ def daemonize(module, password, port, timeout, minutes, use_ipv6, pid_file):
server = ThreadedTCPServer ( address , ThreadedTCPRequestHandler , module , password , timeout , use_ipv6 = use_ipv6 )
server . allow_reuse_address = True
break
except Exception as e :
except Exception :
e = get_exception ( )
vv ( " Failed to create the TCP server (tries left = %d ) (error: %s ) " % ( tries , e ) )
tries - = 1
time . sleep ( 0.2 )
@ -641,7 +646,8 @@ def daemonize(module, password, port, timeout, minutes, use_ipv6, pid_file):
v ( " server thread terminated, exiting! " )
sys . exit ( 0 )
except Exception as e :
except Exception :
e = get_exception ( )
tb = traceback . format_exc ( )
log ( " exception caught, exiting accelerated mode: %s \n %s " % ( e , tb ) )
sys . exit ( 0 )
@ -685,11 +691,16 @@ def main():
# process, other than tell the calling program
# whether other signals can be sent
os . kill ( daemon_pid , 0 )
except OSError as e :
except OSError :
e = get_exception ( )
message = ' the accelerate daemon appears to be running '
message + = ' as a different user that this user cannot access '
message + = ' pid= {} ' . format ( daemon_pid )
if e . errno == errno . EPERM :
# no permissions means the pid is probably
# running, but as a different user, so fail
module . fail_json ( msg = " the accelerate daemon appears to be running as a different user that this user cannot access (pid= %d ) " % daemon_pid )
module . fail_json ( msg = message )
else :
daemon_running = True
except ValueError :