예제 #1
0
        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);
            }
        }
예제 #2
0
        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));
            }
        }