public ScriptExecutionFileStorage( ILoggerFactory loggerFactory, ScriptExecutionStorageSettings settings, IFileSystem fileSystem, IScriptExecutionStoreProviderFactory scriptExecutionWriterFactory, IPollingScriptExecutionPersisterFactory scriptExecutionPersisterFactory) { _lastSttingsConfiguration = settings; _loggerFactory = loggerFactory; _logger = loggerFactory.CreateLogger(typeof(ScriptExecutionFileStorage)); _rootFolder = settings.ServiceScriptStorageDir; _fileSystem = fileSystem; _scriptExecutionWriterFactory = scriptExecutionWriterFactory; _scriptExecutionPersisterFactory = scriptExecutionPersisterFactory; _logger.LogInformation("Creating Script Execution Storage with Settings"); _logger.LogInformation($" StorageDir: {settings.ServiceScriptStorageDir}"); _logger.LogInformation($" NumberOfScriptsPerUser: {settings.NumberOfScriptsPerUser}"); _logger.LogInformation($" NoOlderThanDays: {settings.NoOlderThanDays}"); // Create Retention Policy base on settings var lastNumberOf = settings.NumberOfScriptsPerUser > 0 ? settings.NumberOfScriptsPerUser : DEFAULT_NUMBER_OF_SCRIPTS_PER_USER; var noOlderThanDays = settings.NoOlderThanDays > 0 ? settings.NoOlderThanDays : DEFAULT_NO_OLDER_THAN_DAYS; _retentionPolicy = new FolderScriptExecutionsRetentionPolicy( loggerFactory, _fileSystem, _rootFolder, new IScriptsRetentionRule[] { new LastNumberOfRecordsRetentionRule(lastNumberOf), new OlderThanRetentionRule(new TimeSpan(noOlderThanDays, 0, 0, 0)) }); StartRetentionPolicyApplier(); }
public void UpdateConfiguration(ScriptExecutionStorageSettings settings) { if (settings != null && (_lastSttingsConfiguration.NoOlderThanDays != settings.NoOlderThanDays || _lastSttingsConfiguration.NumberOfScriptsPerUser != settings.NumberOfScriptsPerUser || _lastSttingsConfiguration.ServiceScriptStorageDir != settings.ServiceScriptStorageDir)) { _logger.LogInformation("Updating Script Execution Storage Settings"); _logger.LogInformation($" StorageDir: {settings.ServiceScriptStorageDir}"); _logger.LogInformation($" NumberOfScriptsPerUser: {settings.NumberOfScriptsPerUser}"); _logger.LogInformation($" NoOlderThanDays: {settings.NoOlderThanDays}"); // Update Settings _rootFolder = settings.ServiceScriptStorageDir; var lastNumberOf = settings.NumberOfScriptsPerUser > 0 ? settings.NumberOfScriptsPerUser : DEFAULT_NUMBER_OF_SCRIPTS_PER_USER; var noOlderThanDays = settings.NoOlderThanDays > 0 ? settings.NoOlderThanDays : DEFAULT_NO_OLDER_THAN_DAYS; _lastSttingsConfiguration = settings; // Update Retention policy lock (_retentionPolicyUpdateLock) { _retentionPolicy = new FolderScriptExecutionsRetentionPolicy( _loggerFactory, _fileSystem, _rootFolder, new IScriptsRetentionRule[] { new LastNumberOfRecordsRetentionRule(lastNumberOf), new OlderThanRetentionRule(new TimeSpan(noOlderThanDays, 0, 0, 0)) }); } } }
private void ServiceConfigurationChanged() { try { // Update runspace provider configuration. Users can update // service settings runspace provider configuration is updated // before creating new runspaces. var providerSettings = new RunspaceProviderSettings(); Configuration.Bind("RunspaceProviderSettings", providerSettings); if (!providerSettings.IsDefault()) { _logger.LogDebug("RunspaceProviderSettings update:"); _logger.LogDebug($" K8sRunspaceImageName: {providerSettings.K8sRunspaceImageName}"); _logger.LogDebug($" MaxNumberOfRunspaces: {providerSettings.MaxNumberOfRunspaces}"); _logger.LogDebug($" MaxRunspaceActiveTimeMinutes: {providerSettings.MaxRunspaceActiveTimeMinutes}"); _logger.LogDebug($" MaxRunspaceIdleTimeMinutes: {providerSettings.MaxRunspaceIdleTimeMinutes}"); RunspaceProviderSingleton.Instance.RunspaceProvider.UpdateConfiguration(providerSettings); } } catch (Exception configUpdateException) { _logger.LogError(configUpdateException, "An error occured on updating runspace provider settings"); } try { // Update scripts storage configuration. Users can update // service settings for persisting scripts. We update the // scripts store settings on run script request. var scriptStorageSettings = new ScriptExecutionStorageSettings(); Configuration.Bind("ScriptExecutionStorageSettings", scriptStorageSettings); if (!scriptStorageSettings.IsDefault()) { ScriptExecutionMediatorSingleton.Instance.ScriptExecutionMediator.UpdateConfiguration(scriptStorageSettings); } } catch (Exception configUpdateException) { _logger.LogError(configUpdateException, "An error occured on updating script storage settings"); } }
public PersistentScriptExecutionMediator(ILoggerFactory loggerFactory, ScriptExecutionStorageSettings storageSettings) { _scriptExecutionStorage = new ScriptExecutionFileStorage(loggerFactory, storageSettings); _scriptExecutionStorage.ScriptResultStored += (sender, args) => { _scriptIdToRunspaceClient.TryRemove(args.ScriptId, out _); }; _runspaceClientFactory = new RunspaceClientFactory(); }
public void CreateScriptExecutionStorage(ILoggerFactory loggerFactory, ScriptExecutionStorageSettings storageSettings) { ScriptExecutionMediator = new PersistentScriptExecutionMediator(loggerFactory, storageSettings); }
public ScriptExecutionFileStorage(ILoggerFactory loggerFactory, ScriptExecutionStorageSettings settings) : this(loggerFactory, settings, new FileSystem(), new ScriptExecutionFileStoreProviderFactory(), new PollingScriptExecutionPersisterFactory()) { }
public void UpdateConfiguration(ScriptExecutionStorageSettings settings) { _scriptExecutionStorage.UpdateConfiguration(settings); }