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
58e8a97e
Commit
58e8a97e
authored
Jun 16, 2013
by
Michael DeHaan
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #3225 from eest/openbsd_pkg-check_mode
openbsd_pkg: Add check_mode support.
parents
613df1d6
9dfc4209
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
51 additions
and
22 deletions
+51
-22
library/packaging/openbsd_pkg
+51
-22
No files found.
library/packaging/openbsd_pkg
View file @
58e8a97e
...
...
@@ -102,16 +102,26 @@ def get_package_state(name, specific_version):
return
False
# Function used to make sure a package is present.
def
package_present
(
name
,
installed_state
):
def
package_present
(
name
,
installed_state
,
module
):
if
module
.
check_mode
:
install_cmd
=
'pkg_add -In'
else
:
install_cmd
=
'pkg_add -I'
if
installed_state
is
False
:
rc
,
stdout
,
stderr
=
execute_command
(
"
%
s
%
s"
%
(
install_cmd
,
name
),
syslogging
)
# Attempt to install the package
(
rc
,
stdout
,
stderr
)
=
execute_command
(
"
%
s
%
s"
%
(
install_cmd
,
name
),
syslogging
)
# pkg_add returns 0 even if the package does not exist
# so depend on stderr instead if something bad happened.
if
stderr
:
rc
=
1
changed
=
False
else
:
if
module
.
check_mode
:
module
.
exit_json
(
changed
=
True
)
changed
=
True
else
:
rc
=
0
...
...
@@ -122,47 +132,65 @@ def package_present(name, installed_state):
return
(
rc
,
stdout
,
stderr
,
changed
)
# Function used to make sure a package is the latest available version.
def
package_latest
(
name
,
installed_state
,
specific_version
):
def
package_latest
(
name
,
installed_state
,
specific_version
,
module
):
if
module
.
check_mode
:
upgrade_cmd
=
'pkg_add -umn'
else
:
upgrade_cmd
=
'pkg_add -um'
upgrade_cmd
=
'pkg_add -u'
pre_upgrade_name
=
''
post_upgrade_name
=
''
if
installed_state
is
True
:
# pkg_add -u exits 0 even if no update was needed, so compare the
# installed package before and after to know if we changed anything.
# Fetch name of currently installed package
pre_upgrade_name
=
get_current_name
(
name
,
specific_version
)
# Attempt to upgrade the package
(
rc
,
stdout
,
stderr
)
=
execute_command
(
"
%
s
%
s"
%
(
upgrade_cmd
,
name
),
syslogging
)
# 'pkg_add -u' returns 0 even when something strange happened, stdout
# should be empty if everything went fine.
if
stdout
:
rc
=
1
post_upgrade_name
=
get_current_name
(
name
,
specific_version
)
# Look for output looking something like "nmap-6.01->6.25: ok" to see if
# something changed (or would have changed). Use \W to delimit the match
# from progress meter output.
match
=
re
.
search
(
"
\
W
%
s->.+: ok
\
W"
%
pre_upgrade_name
,
stdout
)
if
match
:
if
module
.
check_mode
:
module
.
exit_json
(
changed
=
True
)
if
pre_upgrade_name
==
post_upgrade_name
:
changed
=
False
else
:
changed
=
True
else
:
changed
=
False
# 'pkg_add -u' returns 0 even when something strange happened, stderr
# should be empty if everything went fine.
if
stderr
:
rc
=
1
return
(
rc
,
stdout
,
stderr
,
changed
)
else
:
# If package was not installed at all just make it present.
return
package_present
(
name
,
installed_state
)
return
package_present
(
name
,
installed_state
,
module
)
# Function used to make sure a package is not installed.
def
package_absent
(
name
,
installed_state
):
def
package_absent
(
name
,
installed_state
,
module
):
if
module
.
check_mode
:
remove_cmd
=
'pkg_delete -In'
else
:
remove_cmd
=
'pkg_delete -I'
if
installed_state
is
True
:
# Attempt to remove the package
rc
,
stdout
,
stderr
=
execute_command
(
"
%
s
%
s"
%
(
remove_cmd
,
name
),
syslogging
)
if
rc
==
0
:
if
module
.
check_mode
:
module
.
exit_json
(
changed
=
True
)
changed
=
True
else
:
changed
=
False
else
:
rc
=
0
stdout
=
''
...
...
@@ -179,7 +207,8 @@ def main():
argument_spec
=
dict
(
name
=
dict
(
required
=
True
),
state
=
dict
(
required
=
True
,
choices
=
[
'absent'
,
'installed'
,
'latest'
,
'present'
,
'removed'
]),
)
),
supports_check_mode
=
True
)
name
=
module
.
params
[
'name'
]
...
...
@@ -205,11 +234,11 @@ def main():
# Perform requested action
if
state
in
[
'installed'
,
'present'
]:
(
rc
,
stdout
,
stderr
,
changed
)
=
package_present
(
name
,
installed_state
)
(
rc
,
stdout
,
stderr
,
changed
)
=
package_present
(
name
,
installed_state
,
module
)
elif
state
in
[
'absent'
,
'removed'
]:
(
rc
,
stdout
,
stderr
,
changed
)
=
package_absent
(
name
,
installed_state
)
(
rc
,
stdout
,
stderr
,
changed
)
=
package_absent
(
name
,
installed_state
,
module
)
elif
state
==
'latest'
:
(
rc
,
stdout
,
stderr
,
changed
)
=
package_latest
(
name
,
installed_state
,
specific_version
)
(
rc
,
stdout
,
stderr
,
changed
)
=
package_latest
(
name
,
installed_state
,
specific_version
,
module
)
if
rc
!=
0
:
if
stderr
:
...
...
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