From: Michael Tremer Date: Sun, 26 Jun 2022 15:21:42 +0000 (+0000) Subject: pakfire: Move generating an instance to main backend X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=074e04cf6e72c070e27679f4cbafea91d0c33460;p=pbs.git pakfire: Move generating an instance to main backend Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/__init__.py b/src/buildservice/__init__.py index 7a1eae2c..04fc902e 100644 --- a/src/buildservice/__init__.py +++ b/src/buildservice/__init__.py @@ -5,6 +5,7 @@ import configparser import logging import os import pakfire +import tempfile from . import aws from . import bugtracker @@ -124,6 +125,35 @@ class Backend(object): return database.Connection(hostname, name, user=user, password=password) + def pakfire(self, config, offline=True, **kwargs): + """ + Launches a new Pakfire instance with the given configuration + """ + log.debug("Launching pakfire with configuration:\n%s" % config) + + # Write configuration to file + t = self._write_tempfile(config) + + # Launch a new Pakfire instance + try: + return pakfire.Pakfire(conf=t, logger=log.log, offline=offline, **kwargs) + + finally: + # Delete the configuration file + os.unlink(t) + + def _write_tempfile(self, content): + """ + Writes the content to a temporary file and returns its path + """ + t = tempfile.NamedTemporaryFile(delete=False) + + # Write the content + t.write(content.encode()) + t.close() + + return t.name + async def open(self, path): """ Opens a package and returns the archive diff --git a/src/buildservice/distribution.py b/src/buildservice/distribution.py index a117cd51..eb7ce75b 100644 --- a/src/buildservice/distribution.py +++ b/src/buildservice/distribution.py @@ -1,15 +1,15 @@ #!/usr/bin/python import logging -import os import pakfire -import tempfile from . import base from . import packages from . import sources from .decorators import * +log = logging.getLogger("pakfire.distros") + class Distributions(base.Object): def _get_distribution(self, query, *args): res = self.db.get(query, *args) @@ -47,28 +47,14 @@ class Distribution(base.DataObject): def __str__(self): return self.name - def pakfire(self, arch=None, **kwargs): + def pakfire(self, **kwargs): """ Returns a Pakfire instance for this distribution """ - # Fetch a logger - logger = logging.getLogger("pakfire") - # Generate configuration config = self.get_config(local=True) - # Write configuration to file - t = tempfile.NamedTemporaryFile(delete=False) - t.write(config.encode()) - t.close() - - # Launch a new Pakfire instance - try: - return pakfire.Pakfire(arch=arch, conf=t.name, logger=logger.log, **kwargs) - - finally: - # Delete the configuration file - os.unlink(t.name) + return self.backend.pakfire(config=config, **kwargs) def get_config(self, local=False): try: