summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-08-01 14:41:12 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-08-01 14:41:12 -0400
commit4b5ce3bd4a71dfcc26983dfdbd00923f1d5d0d6c (patch)
tree8fb0d4637e06efcb02d432ee6467778c3da3d0da /src/lib/Bcfg2/Server/Plugins/Packages/__init__.py
parenta1510cf749295fe10760dabd0a5ecc4e2fc8a725 (diff)
downloadbcfg2-4b5ce3bd4a71dfcc26983dfdbd00923f1d5d0d6c.tar.gz
bcfg2-4b5ce3bd4a71dfcc26983dfdbd00923f1d5d0d6c.tar.bz2
bcfg2-4b5ce3bd4a71dfcc26983dfdbd00923f1d5d0d6c.zip
batch up get_group calls in Packages to improve performance (#1101)
Diffstat (limited to 'src/lib/Bcfg2/Server/Plugins/Packages/__init__.py')
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Packages/__init__.py19
1 files changed, 8 insertions, 11 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py b/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py
index e76f648d0..31670d3a3 100644
--- a/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py
+++ b/src/lib/Bcfg2/Server/Plugins/Packages/__init__.py
@@ -167,26 +167,23 @@ class Packages(Bcfg2.Server.Plugin.Plugin,
# essential pkgs are those marked as such by the distribution
essential = collection.get_essential()
to_remove = []
+ groups = []
for struct in structures:
for pkg in struct.xpath('//Package | //BoundPackage'):
if pkg.get("name"):
initial.add(pkg.get("name"))
elif pkg.get("group"):
- try:
- if pkg.get("type"):
- gpkgs = collection.get_group(pkg.get("group"),
- ptype=pkg.get("type"))
- else:
- gpkgs = collection.get_group(pkg.get("group"))
- base.update(gpkgs)
- except TypeError:
- raise
- self.logger.error("Could not resolve group %s" %
- pkg.get("group"))
+ groups.append((pkg.get("group"),
+ pkg.get("type")))
to_remove.append(pkg)
else:
self.logger.error("Packages: Malformed Package: %s" %
lxml.etree.tostring(pkg))
+
+ gpkgs = collection.get_groups(groups)
+ for group, pkgs in gpkgs.items():
+ base.update(pkgs)
+
base.update(initial | essential)
for el in to_remove:
el.getparent().remove(el)