From a32a20b42f33c885dbf0dbc74210065c63deccaa Mon Sep 17 00:00:00 2001 From: Federico Stagni Date: Mon, 24 Feb 2025 17:55:13 +0100 Subject: [PATCH] fix: monitoring the installation takes a user --- src/DIRAC/Core/scripts/dirac_install_db.py | 31 +++++++++++++++---- .../Client/SystemAdministratorClientCLI.py | 17 ++++++---- .../Utilities/MonitoringUtilities.py | 21 ++----------- 3 files changed, 38 insertions(+), 31 deletions(-) diff --git a/src/DIRAC/Core/scripts/dirac_install_db.py b/src/DIRAC/Core/scripts/dirac_install_db.py index ed61e8226d2..dbf16c095dd 100755 --- a/src/DIRAC/Core/scripts/dirac_install_db.py +++ b/src/DIRAC/Core/scripts/dirac_install_db.py @@ -2,6 +2,8 @@ """ Create a new DB in the MySQL server """ +from DIRAC import exit as DIRACExit +from DIRAC import gConfig, gLogger from DIRAC.Core.Base.Script import Script @@ -12,7 +14,8 @@ def main(): _, args = Script.parseCommandLine() # Script imports - from DIRAC import gConfig + from DIRAC.ConfigurationSystem.Client.Helpers.CSGlobals import useServerCertificate + from DIRAC.Core.Security.ProxyInfo import getProxyInfo from DIRAC.FrameworkSystem.Client.ComponentInstaller import gComponentInstaller from DIRAC.FrameworkSystem.Utilities import MonitoringUtilities @@ -21,15 +24,31 @@ def main(): for db in args: result = gComponentInstaller.installDatabase(db) if not result["OK"]: - print(f"ERROR: failed to correctly install {db}", result["Message"]) - continue + gLogger.error(f"ERROR: failed to correctly install {db}", result["Message"]) + DIRACExit(1) extension, system = result["Value"] - gComponentInstaller.addDatabaseOptionsToCS(gConfig, system, db, overwrite=True) + result = gComponentInstaller.addDatabaseOptionsToCS(gConfig, system, db, overwrite=True) + if not result["OK"]: + gLogger.error(f"ERROR: failed to add database options to CS: {result['Message']}") + DIRACExit(1) if db != "InstalledComponentsDB": - result = MonitoringUtilities.monitorInstallation("DB", system, db) + + # get the user that installed the DB + if useServerCertificate(): + user = "DIRAC" + else: + result = getProxyInfo() + if not result["OK"]: + return result + proxyInfo = result["Value"] + if "username" in proxyInfo: + user = proxyInfo["username"] + + result = MonitoringUtilities.monitorInstallation("DB", system, db, user=user) if not result["OK"]: - print(f"ERROR: failed to register installation in database: {result['Message']}") + gLogger.error(f"ERROR: failed to register installation in database: {result['Message']}") + DIRACExit(1) if __name__ == "__main__": diff --git a/src/DIRAC/FrameworkSystem/Client/SystemAdministratorClientCLI.py b/src/DIRAC/FrameworkSystem/Client/SystemAdministratorClientCLI.py index e1303de123c..9b65a237518 100644 --- a/src/DIRAC/FrameworkSystem/Client/SystemAdministratorClientCLI.py +++ b/src/DIRAC/FrameworkSystem/Client/SystemAdministratorClientCLI.py @@ -11,7 +11,6 @@ import time from DIRAC import gConfig, gLogger -from DIRAC.ConfigurationSystem.Client.Helpers import CSGlobals from DIRAC.Core.Base.CLI import CLI, colorize from DIRAC.Core.Security.ProxyInfo import getProxyInfo from DIRAC.Core.Utilities import List @@ -623,6 +622,11 @@ def do_install(self, args): install agent [-m ] [-p