Only run refresh_db once per salt run

As presently contstructed, pkg.refresh_db is run for every call of every
pkg.installed and pkg.latest state, and the refresh param for these
states is ignored.

This commit fixes it so that the rtag isn't created for every call, and
that a pkg.refresh_db is only done when refresh == True and the rtag
exists. After the install is run, the rtag is removed, keeping
pkg.refresh_db from being run in subsequent pkg states within the same
state.sls or state.highstate.
This commit is contained in:
Erik Johnson 2013-06-26 12:17:59 -05:00
parent 92457ae21a
commit 439c736e32

View File

@ -342,8 +342,6 @@ def installed(
- baz: ftp://someothersite.org/baz.rpm - baz: ftp://someothersite.org/baz.rpm
- qux: /minion/path/to/qux.rpm - qux: /minion/path/to/qux.rpm
''' '''
rtag = __gen_rtag()
if not isinstance(version, basestring) and version is not None: if not isinstance(version, basestring) and version is not None:
version = str(version) version = str(version)
@ -375,7 +373,7 @@ def installed(
'comment': comment} 'comment': comment}
comment = [] comment = []
if refresh or os.path.isfile(rtag): if salt.utils.is_true(refresh) and os.path.isfile(rtag):
pkg_ret = __salt__['pkg.install'](name, pkg_ret = __salt__['pkg.install'](name,
refresh=True, refresh=True,
version=version, version=version,
@ -494,8 +492,6 @@ def latest(
- bar - bar
- baz - baz
''' '''
rtag = __gen_rtag()
if kwargs.get('sources'): if kwargs.get('sources'):
return {'name': name, return {'name': name,
'changes': {}, 'changes': {},
@ -572,7 +568,7 @@ def latest(
# Build updated list of pkgs to exclude non-targeted ones # Build updated list of pkgs to exclude non-targeted ones
targeted_pkgs = targets.keys() if pkgs else None targeted_pkgs = targets.keys() if pkgs else None
if refresh or os.path.isfile(rtag): if salt.utils.is_true(refresh) and os.path.isfile(rtag):
changes = __salt__['pkg.install'](name, changes = __salt__['pkg.install'](name,
refresh=True, refresh=True,
fromrepo=fromrepo, fromrepo=fromrepo,