summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Server/Plugins/Packages/Pkgng.py
diff options
context:
space:
mode:
authorAlexander Sulfrian <asulfrian@zedat.fu-berlin.de>2022-01-17 17:36:28 +0100
committerAlexander Sulfrian <asulfrian@zedat.fu-berlin.de>2022-01-23 19:58:36 +0100
commitba1a18e060a8614b3dcb41b94a7ad37e89f1dfdf (patch)
treee37d730764210102637c006f2cab4dfed9592b91 /src/lib/Bcfg2/Server/Plugins/Packages/Pkgng.py
parent3ea270b7583bb13b1234680c4bde4ae03701a109 (diff)
parentef568d29698c00bf2c02c99a34b98e6b8ca96653 (diff)
downloadbcfg2-ba1a18e060a8614b3dcb41b94a7ad37e89f1dfdf.tar.gz
bcfg2-ba1a18e060a8614b3dcb41b94a7ad37e89f1dfdf.tar.bz2
bcfg2-ba1a18e060a8614b3dcb41b94a7ad37e89f1dfdf.zip
Merge branch 'packages'
Diffstat (limited to 'src/lib/Bcfg2/Server/Plugins/Packages/Pkgng.py')
-rw-r--r--src/lib/Bcfg2/Server/Plugins/Packages/Pkgng.py25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/lib/Bcfg2/Server/Plugins/Packages/Pkgng.py b/src/lib/Bcfg2/Server/Plugins/Packages/Pkgng.py
index 55dd4e488..5248ad896 100644
--- a/src/lib/Bcfg2/Server/Plugins/Packages/Pkgng.py
+++ b/src/lib/Bcfg2/Server/Plugins/Packages/Pkgng.py
@@ -1,6 +1,5 @@
""" pkgng backend for :mod:`Bcfg2.Server.Plugins.Packages` """
-import lzma
import tarfile
try:
@@ -40,19 +39,30 @@ class PkgngSource(Source):
#: PkgngSource sets the ``type`` on Package entries to "pkgng"
ptype = 'pkgng'
+ #: The "packagesite" files of pkgng repositories are compressed
+ #: with "xz"
+ default_compression = 'xz'
+
+ def _get_extension(self):
+ extension = super(PkgngSource, self)._get_extension()
+ if extension == '':
+ return 'tar'
+ return 't%s' % extension
+
@property
def urls(self):
""" A list of URLs to the base metadata file for each
repository described by this source. """
+ fname = self.build_filename("packagesite")
if not self.rawurl:
rv = []
for part in self.components:
for arch in self.arches:
- rv.append("%s/freebsd:%s:%s/%s/packagesite.txz" %
- (self.url, self.version, arch, part))
+ rv.append("%s/freebsd:%s:%s/%s/%s" %
+ (self.url, self.version, arch, part, fname))
return rv
else:
- return ["%s/packagesite.txz" % self.rawurl]
+ return ["%s/%s" % (self.rawurl, fname)]
def read_files(self):
bdeps = dict()
@@ -70,12 +80,13 @@ class PkgngSource(Source):
if barch not in bdeps:
bdeps[barch] = dict()
try:
- tar = tarfile.open(fileobj=lzma.LZMAFile(fname))
- reader = tar.extractfile('packagesite.yaml')
+ reader = self.open_file(fname)
+ tar = tarfile.open(fileobj=reader)
+ packagesite = tar.extractfile('packagesite.yaml')
except (IOError, tarfile.TarError):
self.logger.error("Packages: Failed to read file %s" % fname)
raise
- for line in reader.readlines():
+ for line in packagesite.readlines():
pkg = json.loads(unicode(line, errors='ignore'))
pkgname = pkg['name']
self.pkgnames.add(pkgname)