From 3140508cfbd8d25aaf25916315ed71dd0d43b52a8147364dbf36982253664660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9nich=20Bon=20=C4=86iri=C4=87?= Date: Tue, 16 Jun 2026 12:11:10 -0600 Subject: [PATCH] fix(sign): read DB options from hub config files in sign spooler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-developed-by: Gemini AI Signed-off-by: Rénich Bon Ćirić --- roles/koji_hub/files/koji-sign-spooler | 35 +++++++++++++++++++++----- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/roles/koji_hub/files/koji-sign-spooler b/roles/koji_hub/files/koji-sign-spooler index e88e7e0..19e58d0 100644 --- a/roles/koji_hub/files/koji-sign-spooler +++ b/roles/koji_hub/files/koji-sign-spooler @@ -93,25 +93,48 @@ def process_queue(): import kojihub import koji - # Read configuration file to get KojiDir + # Read configuration file to get KojiDir and DB options config = configparser.ConfigParser() config_files = ['/etc/koji-hub/hub.conf'] + sorted(glob.glob('/etc/koji-hub/hub.conf.d/*.conf')) config.read(config_files) koji_dir = config.get('hub', 'KojiDir', fallback='/mnt/koji') - # Get list of files in spool directory - files = sorted(os.listdir(SPOOL_DIR)) - if not files: - return + # Connect to database using configuration parameters + db_opts = {} + if config.has_option('hub', 'DBConnectionString'): + db_opts['dsn'] = config.get('hub', 'DBConnectionString') + else: + if config.has_option('hub', 'DBName'): + db_opts['database'] = config.get('hub', 'DBName') + if config.has_option('hub', 'DBUser'): + db_opts['user'] = config.get('hub', 'DBUser') + if config.has_option('hub', 'DBPass'): + db_opts['password'] = config.get('hub', 'DBPass') + if config.has_option('hub', 'DBHost'): + db_opts['host'] = config.get('hub', 'DBHost') + elif config.has_option('hub', 'DBhost'): + db_opts['host'] = config.get('hub', 'DBhost') + if config.has_option('hub', 'DBPort'): + try: + db_opts['port'] = config.getint('hub', 'DBPort') + except ValueError: + pass + + db_opts = {k: v for k, v in db_opts.items() if v is not None} + kojihub.db.setDBopts(**db_opts) - # Connect to database try: kojihub.db.connect() except Exception as e: logger.error(f"Failed to connect to Koji Hub DB: {e}") return + # Get list of files in spool directory + files = sorted(os.listdir(SPOOL_DIR)) + if not files: + return + for filename in files: file_path = os.path.join(SPOOL_DIR, filename) if not os.path.isfile(file_path):