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)
示例#3
0
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)