Make newly-added repo available to pkg states

If a package is added using a pkgrepo.managed state, and a pkg.installed
state needs access to this newly-added repo, it will not be able to find
the package since the pkg.refresh_db happens in the call to pkg.install
(just prior to the package installation), and not when the package
targets are initially looked for. This commit adds a pkg.refresh_db
before the targets are checked, and then supresses the refresh_db when
the package is actually installed (because at that point, it would be
redundant).
This commit is contained in:
Erik Johnson 2013-10-30 20:03:04 -05:00
parent b0e03b6803
commit 5a952863ce

View File

@ -418,6 +418,11 @@ def installed(
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)
if salt.utils.is_true(refresh) or os.path.isfile(rtag):
__salt__['pkg.refresh_db']()
if os.path.isfile(rtag):
os.remove(rtag)
result = _find_install_targets(name, version, pkgs, sources, result = _find_install_targets(name, version, pkgs, sources,
fromrepo=fromrepo, **kwargs) fromrepo=fromrepo, **kwargs)
try: try:
@ -449,26 +454,14 @@ def installed(
'comment': comment} 'comment': comment}
comment = [] comment = []
if salt.utils.is_true(refresh) or os.path.isfile(rtag): pkg_ret = __salt__['pkg.install'](name,
pkg_ret = __salt__['pkg.install'](name, refresh=False,
refresh=True, version=version,
version=version, fromrepo=fromrepo,
fromrepo=fromrepo, skip_verify=skip_verify,
skip_verify=skip_verify, pkgs=pkgs,
pkgs=pkgs, sources=sources,
sources=sources, **kwargs)
**kwargs)
if os.path.isfile(rtag):
os.remove(rtag)
else:
pkg_ret = __salt__['pkg.install'](name,
refresh=False,
version=version,
fromrepo=fromrepo,
skip_verify=skip_verify,
pkgs=pkgs,
sources=sources,
**kwargs)
if isinstance(pkg_ret, dict): if isinstance(pkg_ret, dict):
changes = pkg_ret changes = pkg_ret
elif isinstance(pkg_ret, basestring): elif isinstance(pkg_ret, basestring):