yum: check if env groups are installed (#31182)

This commit is contained in:
Martin Krizek 2017-10-09 12:01:34 +02:00 committed by ansibot
parent d025aca66f
commit 13631ececa

View file

@ -322,14 +322,28 @@ def po_to_envra(po):
return '%s:%s-%s-%s.%s' % (po.epoch, po.name, po.version, po.release, po.arch)
def is_group_installed(name):
my = yum_base()
groups_list = my.doGroupLists()
for group in groups_list[0]: # list of the installed groups on the first index
def is_group_env_installed(name):
name_lower = name.lower()
my = yum_base()
if yum.__version__ >= '3.4':
groups_list = my.doGroupLists(return_evgrps=True)
else:
groups_list = my.doGroupLists()
# list of the installed groups on the first index
groups = groups_list[0]
for group in groups:
if name_lower.endswith(group.name.lower()) or name_lower.endswith(group.groupid.lower()):
return True
if yum.__version__ >= '3.4':
# list of the installed env_groups on the third index
envs = groups_list[2]
for env in envs:
if name_lower.endswith(env.name.lower()) or name_lower.endswith(env.environmentid.lower()):
return True
return False
@ -740,7 +754,7 @@ def install(module, items, repoq, yum_basecmd, conf_file, en_repos, dis_repos, i
# groups
elif spec.startswith('@'):
if is_group_installed(spec):
if is_group_env_installed(spec):
continue
pkg = spec
@ -846,7 +860,7 @@ def remove(module, items, repoq, yum_basecmd, conf_file, en_repos, dis_repos, in
for pkg in items:
if pkg.startswith('@'):
installed = is_group_installed(pkg)
installed = is_group_env_installed(pkg)
else:
installed = is_installed(module, repoq, pkg, conf_file, en_repos=en_repos, dis_repos=dis_repos, installroot=installroot)
@ -879,7 +893,7 @@ def remove(module, items, repoq, yum_basecmd, conf_file, en_repos, dis_repos, in
# at this point we check to see if the pkg is no longer present
for pkg in pkgs:
if pkg.startswith('@'):
installed = is_group_installed(pkg)
installed = is_group_env_installed(pkg)
else:
installed = is_installed(module, repoq, pkg, conf_file, en_repos=en_repos, dis_repos=dis_repos, installroot=installroot)