def restoreSWUtilizationConfiguration(Framework): InventoryUtils.releaseConnection(Framework) # Framework.setConnectedClient(None) InventoryUtils.acquireConnection(Framework) # try to restore ini files if existed BASEDIR = AgentPlatformParameters.getAgentConfigurationPath(Framework) pluginIniFile = Framework.getProperty("local_plugin_temp_file") discusgeIniFile = Framework.getProperty("local_discusge_temp_file") pluginIniFileSuccess = 1 if pluginIniFile and not InventoryUtils.copyLocalFileToRemote( Framework, pluginIniFile, BASEDIR + "plugin.tni", 0): pluginIniFileSuccess = 0 Framework.reportWarning( "restore plugin.ini file failed, will use default configuration") discusgeIniFileSuccess = 1 if discusgeIniFile and not InventoryUtils.copyLocalFileToRemote( Framework, discusgeIniFile, BASEDIR + "discusge.tni", 0): discusgeIniFileSuccess = 0 Framework.reportWarning( "restore discusge.ini file failed, will use default configuration") client = Framework.getConnectedClient() shell = shellutils.ShellUtils(client, skip_set_session_locale=True) if pluginIniFileSuccess: renameCMD = AgentPlatformParameters.getRenameCMD( Framework, BASEDIR, "plugin.tni", "plugin.ini") logger.debug(renameCMD) shell.execCmd(renameCMD) if discusgeIniFileSuccess: renameCMD = AgentPlatformParameters.getRenameCMD( Framework, BASEDIR, "discusge.tni", "discusge.ini") logger.debug(renameCMD) shell.execCmd(renameCMD) File(pluginIniFile).delete() File(discusgeIniFile).delete() Framework.setStepExecutionStatus(WorkflowStepStatus.SUCCESS)
def restoreSWUtilizationConfiguration(Framework): InventoryUtils.releaseConnection(Framework) # Framework.setConnectedClient(None) InventoryUtils.acquireConnection(Framework) # try to restore ini files if existed BASEDIR = AgentPlatformParameters.getAgentConfigurationPath(Framework) pluginIniFile = Framework.getProperty("local_plugin_temp_file") discusgeIniFile = Framework.getProperty("local_discusge_temp_file") pluginIniFileSuccess = 1 if pluginIniFile and not InventoryUtils.copyLocalFileToRemote(Framework, pluginIniFile, BASEDIR + "plugin.tni", 0): pluginIniFileSuccess = 0 Framework.reportWarning("restore plugin.ini file failed, will use default configuration") discusgeIniFileSuccess = 1 if discusgeIniFile and not InventoryUtils.copyLocalFileToRemote(Framework, discusgeIniFile, BASEDIR + "discusge.tni", 0): discusgeIniFileSuccess = 0 Framework.reportWarning("restore discusge.ini file failed, will use default configuration") client = Framework.getConnectedClient() shell = shellutils.ShellUtils(client, skip_set_session_locale=True) if pluginIniFileSuccess: renameCMD = AgentPlatformParameters.getRenameCMD(Framework, BASEDIR, "plugin.tni", "plugin.ini") logger.debug(renameCMD) shell.execCmd(renameCMD) if discusgeIniFileSuccess: renameCMD = AgentPlatformParameters.getRenameCMD(Framework, BASEDIR, "discusge.tni", "discusge.ini") logger.debug(renameCMD) shell.execCmd(renameCMD) File(pluginIniFile).delete() File(discusgeIniFile).delete() Framework.setStepExecutionStatus(WorkflowStepStatus.SUCCESS)
def upgradeScanner(Framework): scannersConfigFile = Framework.getConfigFile(CollectorsConstants.SCANNERSBYPLATFORM_FILE_NAME) platform = Framework.getProperty(InventoryUtils.STATE_PROPERTY_PLATFORM) architecture = Framework.getProperty(InventoryUtils.STATE_PROPERTY_ARCHITECTURE) logger.debug('Platform:', platform, ', architecture ', architecture) scannerPlatformConfig = scannersConfigFile.getPlatformConfiguration(platform, architecture) preUpgradeCmds = scannerPlatformConfig.getPreUpgradeCommands() client = Framework.getConnectedClient() shell = shellutils.ShellUtils(client, skip_set_session_locale=True) shouldScannerBeInstalled = 0 try: shouldScannerBeInstalled = shouldInstallScanner(scannerPlatformConfig, Framework, shell) except: errorMessage = str(sys.exc_info()[1]) if errorMessage.lower().find('timeout') != -1: logger.debug('Failed to check scanner version, scanner may be corrupted') # in some cases, getting timeout exception client persists get TimoutException on every next command # in order to overwhelm this behaviour disconnect and connect again # in this case (if we got timeout excepton) we assume that scanner was corrupted # so we will install/reinstall it anyway shouldScannerBeInstalled = 1 InventoryUtils.releaseConnection(Framework) InventoryUtils.acquireConnection(Framework) client = Framework.getConnectedClient() shell = shellutils.ShellUtils(client, skip_set_session_locale=True) logger.debug('Executing pre upgrade commands') for cmd in preUpgradeCmds: commandLine = cmd.getCommand() commandLine = InventoryUtils.handleBaseDirPath(Framework, commandLine) logger.debug('Running ', commandLine) shell.execCmd(commandLine) if shouldScannerBeInstalled: if not upgradeScannerExecutable(scannerPlatformConfig, Framework, shell): return else: if not ensureScannerExist(scannerPlatformConfig, Framework): return if not upgradeConfigFile(scannerPlatformConfig, Framework): return upgradePrePostScript(scannersConfigFile, scannerPlatformConfig, Framework) postUpgradeCmds = scannerPlatformConfig.getPostUpgradeCommands() logger.debug('Executing post upgrade commands') for cmd in postUpgradeCmds: commandLine = cmd.getCommand() commandLine = InventoryUtils.handleBaseDirPath(Framework, commandLine) logger.debug('Running ', commandLine) shell.execCmd(commandLine) Framework.setStepExecutionStatus(WorkflowStepStatus.SUCCESS)