]> git.ipfire.org Git - pbs.git/commitdiff
pakfire: Move generating an instance to main backend
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 26 Jun 2022 15:21:42 +0000 (15:21 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 26 Jun 2022 15:21:42 +0000 (15:21 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/__init__.py
src/buildservice/distribution.py

index 7a1eae2cf155b7e2cbd73922f8a118ac36c572b5..04fc902ea8e18fe5cccef441d6a8baf9d06e04c9 100644 (file)
@@ -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
index a117cd51df1b70ee121aca7a91279f606268e238..eb7ce75b8efafc2c984f726289ee9d6b81a01f42 100644 (file)
@@ -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: