private void LogSettingsDifferences(string taskName, TaskSettingsCompareResult settingsCompareResult) { if (settingsCompareResult.AreEqual) { PostDiagnosticMessage(string.Format("Scheduler task settings and configuration are equal, taskName: [{0}]", taskName), DiagnosticMessageType.Trace); return; } PostDiagnosticMessage(string.Format("Differences between scheduler task settings and configuration for scheduler task: [{0}]", taskName), DiagnosticMessageType.Trace); foreach (var settingDifference in settingsCompareResult.Differencies) { PostDiagnosticMessage( string.Format( "Scheduler task settings difference, option name: [{0}], current task value: [{1}], configuration value: [{2}]", settingDifference.OptionName, settingDifference.CurrentTaskValue, settingDifference.ExpectedConfigurationValue), DiagnosticMessageType.Trace); } }
private void AddTaskConfigurationSteps(EnvironmentInfo environmentInfo, string schedulerServerTasksMachineName, SchedulerAppTask schedulerAppTask, ScheduledTaskDetails taskDetails = null) { TaskSettingsCompareResult settingsCompareResult = CompareTaskSettings(taskDetails, schedulerAppTask, environmentInfo); bool hasSettingsChanged = settingsCompareResult.AreEqual == false; bool taskExists = taskDetails != null; if (taskExists) { LogSettingsDifferences(schedulerAppTask.Name, settingsCompareResult); } else { PostDiagnosticMessage(string.Format("Scheduler task [{0}] doesn't exist.", schedulerAppTask.Name), DiagnosticMessageType.Trace); } EnvironmentUser environmentUser = environmentInfo.GetEnvironmentUser(schedulerAppTask.UserId); string environmentUserPassword = null; if (!taskExists || hasSettingsChanged) { // collect password if not already collected if (!_collectedPasswordsByUserName.TryGetValue(environmentUser.UserName, out environmentUserPassword)) { environmentUserPassword = PasswordCollectorHelper.CollectPasssword( _passwordCollector, DeploymentInfo.DeploymentId, environmentInfo, schedulerServerTasksMachineName, environmentUser, OnDiagnosticMessagePosted); _collectedPasswordsByUserName.Add(environmentUser.UserName, environmentUserPassword); } } string taskExecutablePath = GetTaskExecutablePath(schedulerAppTask, environmentInfo); if (!taskExists) { // create a step for scheduling a new app AddSubTask( new CreateSchedulerTaskDeploymentStep( schedulerServerTasksMachineName, schedulerAppTask.Name, taskExecutablePath, environmentUser.UserName, environmentUserPassword, schedulerAppTask.ScheduledHour, schedulerAppTask.ScheduledMinute, schedulerAppTask.ExecutionTimeLimitInMinutes, schedulerAppTask.Repetition, _taskScheduler)); } else if (hasSettingsChanged) { // create a step for updating an existing scheduler app AddSubTask( new UpdateSchedulerTaskDeploymentStep( schedulerServerTasksMachineName, schedulerAppTask.Name, taskExecutablePath, environmentUser.UserName, environmentUserPassword, schedulerAppTask.ScheduledHour, schedulerAppTask.ScheduledMinute, schedulerAppTask.ExecutionTimeLimitInMinutes, schedulerAppTask.Repetition, _taskScheduler)); } }