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
ade0233d
Commit
ade0233d
authored
Jul 23, 2012
by
bradobro
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactoring test-module to be more like ansible.
parent
08ece6c5
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
85 additions
and
58 deletions
+85
-58
hacking/test-module
+85
-58
No files found.
hacking/test-module
View file @
ade0233d
...
@@ -30,6 +30,7 @@ import sys
...
@@ -30,6 +30,7 @@ import sys
import
os
import
os
import
subprocess
import
subprocess
import
traceback
import
traceback
import
optparse
import
ansible.utils
as
utils
import
ansible.utils
as
utils
import
ansible.module_common
as
module_common
import
ansible.module_common
as
module_common
...
@@ -38,67 +39,93 @@ try:
...
@@ -38,67 +39,93 @@ try:
except
ImportError
:
except
ImportError
:
import
simplejson
as
json
import
simplejson
as
json
modfile
=
None
def
parse
():
"""parse command line
if
len
(
sys
.
argv
)
==
1
:
print
>>
sys
.
stderr
,
"usage: test-module ./library/command [key=value ...]"
:return : (options, args)"""
sys
.
exit
(
1
)
parser
=
optparse
.
OptionParser
()
modfile
=
sys
.
argv
[
1
]
parser
.
usage
=
"
%
prog [options] (-h for help)"
if
len
(
sys
.
argv
)
>
1
:
args
=
" "
.
join
(
sys
.
argv
[
2
:])
parser
.
add_option
(
'-m'
,
'--module-name'
,
dest
=
'module_name'
,
else
:
help
=
"module name to execute"
)
args
=
""
parser
.
add_option
(
'-a'
,
'--args'
,
dest
=
'module_args'
,
default
=
""
,
help
=
"module arguments"
)
argspath
=
os
.
path
.
expanduser
(
"~/.ansible_test_module_arguments"
)
parser
.
add_option
(
'-D'
,
'--debugger'
,
dest
=
'debugger'
,
argsfile
=
open
(
argspath
,
'w'
)
help
=
"path to python debugger (e.g. /usr/bin/pdb)"
)
argsfile
.
write
(
args
)
options
,
args
=
parser
.
parse_args
()
argsfile
.
close
()
if
not
options
.
module_name
:
parser
.
print_help
()
module_fh
=
open
(
modfile
)
sys
.
exit
(
1
)
module_data
=
module_fh
.
read
()
else
:
included_boilerplate
=
module_data
.
find
(
module_common
.
REPLACER
)
!=
-
1
return
options
,
args
module_fh
.
close
()
def
write_argsfile
(
argstring
):
if
included_boilerplate
:
"""Write args to a file for the module's use.
module_data
=
module_data
.
replace
(
module_common
.
REPLACER
,
module_common
.
MODULE_COMMON
)
modfile2_path
=
os
.
path
.
expanduser
(
"~/.ansible_module_generated"
)
print
"* including generated source, if any, saving to:
%
s"
%
modfile2_path
print
"* this will offset any line numbers in tracebacks!"
modfile2
=
open
(
modfile2_path
,
'w'
)
modfile2
.
write
(
module_data
)
modfile2
.
close
()
modfile
=
modfile2_path
else
:
print
"* module boilerplate substitution not requested in module, tracebacks will be unaltered"
os
.
system
(
"chmod +x
%
s"
%
modfile
)
cmd
=
subprocess
.
Popen
(
"
%
s
%
s"
%
(
modfile
,
argspath
),
shell
=
True
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
PIPE
)
(
out
,
err
)
=
cmd
.
communicate
()
try
:
print
"***********************************"
print
"RAW OUTPUT"
print
out
print
err
results
=
utils
.
parse_json
(
out
)
except
:
:return: full path to args file"""
print
"***********************************"
argspath
=
os
.
path
.
expanduser
(
"~/.ansible_test_module_arguments"
)
print
"INVALID OUTPUT FORMAT"
argsfile
=
open
(
argspath
,
'w'
)
print
out
argsfile
.
write
(
argstring
)
traceback
.
print_exc
()
argsfile
.
close
()
sys
.
exit
(
1
)
return
argspath
print
"***********************************"
def
boilerplate_module
(
modfile
):
print
"PARSED OUTPUT"
module_fh
=
open
(
modfile
)
module_data
=
module_fh
.
read
()
included_boilerplate
=
module_data
.
find
(
module_common
.
REPLACER
)
!=
-
1
module_fh
.
close
()
if
included_boilerplate
:
module_data
=
module_data
.
replace
(
module_common
.
REPLACER
,
module_common
.
MODULE_COMMON
)
modfile2_path
=
os
.
path
.
expanduser
(
"~/.ansible_module_generated"
)
print
"* including generated source, if any, saving to:
%
s"
%
modfile2_path
print
"* this will offset any line numbers in tracebacks/debuggers!"
modfile2
=
open
(
modfile2_path
,
'w'
)
modfile2
.
write
(
module_data
)
modfile2
.
close
()
modfile
=
modfile2_path
return
modfile2_path
else
:
print
"* module boilerplate substitution not requested in module, line numbers will be unaltered"
return
modfile
def
main
():
options
,
args
=
parse
()
argspath
=
write_argsfile
(
options
.
module_args
)
modfile
=
boilerplate_module
(
options
.
module_name
)
print
argspath
,
modfile
sys
.
exit
(
0
)
#===== run or debug the module
os
.
system
(
"chmod +x
%
s"
%
modfile
)
cmd
=
subprocess
.
Popen
(
"
%
s
%
s"
%
(
modfile
,
argspath
),
shell
=
True
,
stdout
=
subprocess
.
PIPE
,
stderr
=
subprocess
.
PIPE
)
(
out
,
err
)
=
cmd
.
communicate
()
try
:
print
"***********************************"
print
"RAW OUTPUT"
print
out
print
err
results
=
utils
.
parse_json
(
out
)
except
:
print
"***********************************"
print
"INVALID OUTPUT FORMAT"
print
out
traceback
.
print_exc
()
sys
.
exit
(
1
)
print
utils
.
jsonify
(
results
,
format
=
True
)
print
"***********************************"
print
"PARSED OUTPUT"
sys
.
exit
(
0
)
print
utils
.
jsonify
(
results
,
format
=
True
)
if
__name__
==
"__main__"
:
main
()
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