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
096607ee
Commit
096607ee
authored
Nov 14, 2012
by
Michael DeHaan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Allow fireball to transfer binary files, fixup fireball docs, make fetch work with fireball.
parent
8c0f83a2
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
18 additions
and
9 deletions
+18
-9
docsite/rst/playbooks2.rst
+1
-2
lib/ansible/runner/connection_plugins/fireball.py
+6
-2
library/fireball
+11
-5
No files found.
docsite/rst/playbooks2.rst
View file @
096607ee
...
...
@@ -623,7 +623,7 @@ if you have a large number of hosts::
# set up the fireball transport
- hosts: all
gather_facts: False
connection: ssh
connection: ssh
# or paramiko
sudo: True
tasks:
- action: fireball
...
...
@@ -631,7 +631,6 @@ if you have a large number of hosts::
# these operations will occur over the fireball transport
- hosts: all
connection: fireball
sudo: True
tasks:
- action: shell echo "Hello ${item}"
with_items:
...
...
lib/ansible/runner/connection_plugins/fireball.py
View file @
096607ee
...
...
@@ -17,6 +17,7 @@
import
json
import
os
import
base64
from
ansible.callbacks
import
vvv
from
ansible
import
utils
from
ansible
import
errors
...
...
@@ -97,8 +98,10 @@ class Connection(object):
if
not
os
.
path
.
exists
(
in_path
):
raise
errors
.
AnsibleFileNotFound
(
"file or module does not exist:
%
s"
%
in_path
)
data
=
file
(
in_path
)
.
read
()
data
=
base64
.
b64encode
(
data
)
data
=
dict
(
mode
=
'put'
,
data
=
data
,
out_path
=
out_path
)
# TODO: support chunked file transfer
data
=
utils
.
jsonify
(
data
)
data
=
utils
.
encrypt
(
self
.
key
,
data
)
self
.
socket
.
send
(
data
)
...
...
@@ -113,7 +116,7 @@ class Connection(object):
''' save a remote file to the specified path '''
vvv
(
"FETCH
%
s TO
%
s"
%
(
in_path
,
out_path
),
host
=
self
.
host
)
data
=
dict
(
mode
=
'fetch'
,
file
=
in_path
)
data
=
dict
(
mode
=
'fetch'
,
in_path
=
in_path
)
data
=
utils
.
jsonify
(
data
)
data
=
utils
.
encrypt
(
self
.
key
,
data
)
self
.
socket
.
send
(
data
)
...
...
@@ -122,6 +125,7 @@ class Connection(object):
response
=
utils
.
decrypt
(
self
.
key
,
response
)
response
=
utils
.
parse_json
(
response
)
response
=
response
[
'data'
]
response
=
base64
.
b64decode
(
response
)
fh
=
open
(
out_path
,
"w"
)
fh
.
write
(
response
)
...
...
library/fireball
View file @
096607ee
...
...
@@ -162,13 +162,15 @@ def command(data):
return
dict
(
stdout
=
stdout
,
stderr
=
stderr
)
def
fetch
(
data
):
if
'data'
not
in
data
:
return
dict
(
failed
=
True
,
msg
=
'internal error: data is required'
)
if
'in_path'
not
in
data
:
return
dict
(
failed
=
True
,
msg
=
'internal error: out_path is required'
)
return
dict
(
failed
=
True
,
msg
=
'internal error: in_path is required'
)
# FIXME: should probably support chunked file transfer for binary files
# at some point. For now, just base64 encodes the file
# so don't use it to move ISOs, use rsync.
fh
=
open
(
data
[
'in_path'
])
data
=
fh
.
read
(
)
data
=
base64
.
b64encode
(
fh
.
read
()
)
return
dict
(
data
=
data
)
def
put
(
data
):
...
...
@@ -177,9 +179,13 @@ def put(data):
return
dict
(
failed
=
True
,
msg
=
'internal error: data is required'
)
if
'out_path'
not
in
data
:
return
dict
(
failed
=
True
,
msg
=
'internal error: out_path is required'
)
# FIXME: should probably support chunked file transfer for binary files
# at some point. For now, just base64 encodes the file
# so don't use it to move ISOs, use rsync.
fh
=
open
(
data
[
'out_path'
],
'w'
)
fh
.
write
(
data
[
'data'
]
)
fh
.
write
(
base64
.
b64decode
(
data
[
'data'
])
)
fh
.
close
()
return
dict
()
...
...
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