Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
ansible
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenEdx
ansible
Commits
912e3a7b
Commit
912e3a7b
authored
Oct 01, 2013
by
James Cammarata
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'accelerate_improvements' into devel
Conflicts: library/utilities/accelerate
parents
351c4d74
fa80a17a
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
34 additions
and
12 deletions
+34
-12
lib/ansible/constants.py
+2
-0
lib/ansible/playbook/__init__.py
+1
-1
lib/ansible/runner/connection_plugins/accelerate.py
+31
-11
library/utilities/accelerate
+0
-0
No files found.
lib/ansible/constants.py
View file @
912e3a7b
...
...
@@ -136,6 +136,8 @@ ANSIBLE_SSH_CONTROL_PATH = get_config(p, 'ssh_connection', 'control_path',
PARAMIKO_RECORD_HOST_KEYS
=
get_config
(
p
,
'paramiko_connection'
,
'record_host_keys'
,
'ANSIBLE_PARAMIKO_RECORD_HOST_KEYS'
,
True
,
boolean
=
True
)
ZEROMQ_PORT
=
get_config
(
p
,
'fireball_connection'
,
'zeromq_port'
,
'ANSIBLE_ZEROMQ_PORT'
,
5099
,
integer
=
True
)
ACCELERATE_PORT
=
get_config
(
p
,
'accelerate'
,
'accelerate_port'
,
'ACCELERATE_PORT'
,
5099
,
integer
=
True
)
ACCELERATE_TIMEOUT
=
int
(
get_config
(
p
,
'accelerate'
,
'accelerate_timeout'
,
'ACCELERATE_TIMEOUT'
,
30
))
ACCELERATE_CONNECT_TIMEOUT
=
float
(
get_config
(
p
,
'accelerate'
,
'accelerate_connect_timeout'
,
'ACCELERATE_CONNECT_TIMEOUT'
,
1.0
))
DEFAULT_UNDEFINED_VAR_BEHAVIOR
=
get_config
(
p
,
DEFAULTS
,
'error_on_undefined_vars'
,
'ANSIBLE_ERROR_ON_UNDEFINED_VARS'
,
True
,
boolean
=
True
)
HOST_KEY_CHECKING
=
get_config
(
p
,
DEFAULTS
,
'host_key_checking'
,
'ANSIBLE_HOST_KEY_CHECKING'
,
True
,
boolean
=
True
)
...
...
lib/ansible/playbook/__init__.py
View file @
912e3a7b
...
...
@@ -454,7 +454,7 @@ class PlayBook(object):
setup_cache
=
self
.
SETUP_CACHE
,
callbacks
=
self
.
runner_callbacks
,
sudo
=
play
.
sudo
,
sudo_user
=
play
.
sudo_user
,
transport
=
play
.
transport
,
sudo_pass
=
self
.
sudo_pass
,
is_playbook
=
True
,
module_vars
=
play
.
vars
,
default_vars
=
play
.
default_vars
,
check
=
self
.
check
,
diff
=
self
.
diff
,
accelerate
=
play
.
accelerate
,
accelerate_port
=
play
.
accelerate_port
accelerate
=
play
.
accelerate
,
accelerate_port
=
play
.
accelerate_port
,
)
.
run
()
self
.
stats
.
compute
(
setup_results
,
setup
=
True
)
...
...
lib/ansible/runner/connection_plugins/accelerate.py
View file @
912e3a7b
...
...
@@ -21,7 +21,7 @@ import base64
import
socket
import
struct
import
time
from
ansible.callbacks
import
vvv
from
ansible.callbacks
import
vvv
,
vvvv
from
ansible.runner.connection_plugins.ssh
import
Connection
as
SSHConnection
from
ansible.runner.connection_plugins.paramiko_ssh
import
Connection
as
ParamikoConnection
from
ansible
import
utils
...
...
@@ -84,12 +84,13 @@ class Connection(object):
utils
.
AES_KEYS
=
self
.
runner
.
aes_keys
def
_execute_accelerate_module
(
self
):
args
=
"password=
%
s port=
%
s
"
%
(
base64
.
b64encode
(
self
.
key
.
__str__
()),
str
(
self
.
accport
))
args
=
"password=
%
s port=
%
s
debug=
%
d"
%
(
base64
.
b64encode
(
self
.
key
.
__str__
()),
str
(
self
.
accport
),
int
(
utils
.
VERBOSITY
))
inject
=
dict
(
password
=
self
.
key
)
if
self
.
runner
.
accelerate_inventory_host
:
inject
=
utils
.
combine_vars
(
inject
,
self
.
runner
.
inventory
.
get_variables
(
self
.
runner
.
accelerate_inventory_host
))
else
:
inject
=
utils
.
combine_vars
(
inject
,
self
.
runner
.
inventory
.
get_variables
(
self
.
host
))
vvvv
(
"attempting to start up the accelerate daemon..."
)
self
.
ssh
.
connect
()
tmp_path
=
self
.
runner
.
_make_tmp_path
(
self
.
ssh
)
return
self
.
runner
.
_execute_module
(
self
.
ssh
,
tmp_path
,
'accelerate'
,
args
,
inject
=
inject
)
...
...
@@ -99,20 +100,22 @@ class Connection(object):
try
:
if
not
self
.
is_connected
:
# TODO: make the timeout and retries configurable?
tries
=
3
self
.
conn
=
socket
.
socket
()
self
.
conn
.
settimeout
(
300.0
)
self
.
conn
.
settimeout
(
constants
.
ACCELERATE_CONNECT_TIMEOUT
)
vvvv
(
"attempting connection to
%
s via the accelerated port
%
d"
%
(
self
.
host
,
self
.
accport
))
while
tries
>
0
:
try
:
self
.
conn
.
connect
((
self
.
host
,
self
.
accport
))
break
except
:
vvvv
(
"failed, retrying..."
)
time
.
sleep
(
0.1
)
tries
-=
1
if
tries
==
0
:
vvv
(
"Could not connect via the accelerated connection, exceeded # of tries"
)
raise
errors
.
AnsibleError
(
"Failed to connect"
)
self
.
conn
.
settimeout
(
constants
.
ACCELERATE_TIMEOUT
)
except
:
if
allow_ssh
:
vvv
(
"Falling back to ssh to startup accelerated mode"
)
...
...
@@ -133,18 +136,24 @@ class Connection(object):
header_len
=
8
# size of a packed unsigned long long
data
=
b
""
try
:
vvvv
(
"
%
s: in recv_data(), waiting for the header"
%
self
.
host
)
while
len
(
data
)
<
header_len
:
d
=
self
.
conn
.
recv
(
1024
)
d
=
self
.
conn
.
recv
(
header_len
-
len
(
data
)
)
if
not
d
:
vvvv
(
"
%
s: received nothing, bailing out"
%
self
.
host
)
return
None
data
+=
d
vvvv
(
"
%
s: got the header, unpacking"
%
self
.
host
)
data_len
=
struct
.
unpack
(
'Q'
,
data
[:
header_len
])[
0
]
data
=
data
[
header_len
:]
vvvv
(
"
%
s: data received so far (expecting
%
d):
%
d"
%
(
self
.
host
,
data_len
,
len
(
data
)))
while
len
(
data
)
<
data_len
:
d
=
self
.
conn
.
recv
(
1024
)
d
=
self
.
conn
.
recv
(
data_len
-
len
(
data
)
)
if
not
d
:
vvvv
(
"
%
s: received nothing, bailing out"
%
self
.
host
)
return
None
data
+=
d
vvvv
(
"
%
s: received all of the data, returning"
%
self
.
host
)
return
data
except
socket
.
timeout
:
raise
errors
.
AnsibleError
(
"timed out while waiting to receive data"
)
...
...
@@ -171,11 +180,22 @@ class Connection(object):
if
self
.
send_data
(
data
):
raise
errors
.
AnsibleError
(
"Failed to send command to
%
s"
%
self
.
host
)
response
=
self
.
recv_data
()
if
not
response
:
raise
errors
.
AnsibleError
(
"Failed to get a response from
%
s"
%
self
.
host
)
response
=
utils
.
decrypt
(
self
.
key
,
response
)
response
=
utils
.
parse_json
(
response
)
while
True
:
# we loop here while waiting for the response, because a
# long running command may cause us to receive keepalive packets
# ({"pong":"true"}) rather than the response we want.
response
=
self
.
recv_data
()
if
not
response
:
raise
errors
.
AnsibleError
(
"Failed to get a response from
%
s"
%
self
.
host
)
response
=
utils
.
decrypt
(
self
.
key
,
response
)
response
=
utils
.
parse_json
(
response
)
if
"pong"
in
response
:
# it's a keepalive, go back to waiting
vvvv
(
"
%
s: received a keepalive packet"
%
self
.
host
)
continue
else
:
vvvv
(
"
%
s: received the response"
%
self
.
host
)
break
return
(
response
.
get
(
'rc'
,
None
),
''
,
response
.
get
(
'stdout'
,
''
),
response
.
get
(
'stderr'
,
''
))
...
...
library/utilities/accelerate
View file @
912e3a7b
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment