/// <summary> /// If a scheduler job already exists, this will merge the existing job config values with the request /// </summary> /// <param name="job">Existing Scheduler job</param> /// <param name="jobRequest">Request values</param> /// <param name="type">Http or Storage</param> /// <returns>JobCreateOrUpdateParameters object to use when updating Scheduler job</returns> private JobCreateOrUpdateParameters PopulateExistingJobParams(Job job, PSCreateJobParams jobRequest, JobActionType type) { JobCreateOrUpdateParameters jobUpdateParams = new JobCreateOrUpdateParameters(); if (type.Equals(JobActionType.StorageQueue)) { if (jobRequest.IsStorageActionSet()) { jobUpdateParams.Action = new JobAction(); jobUpdateParams.Action.QueueMessage = new JobQueueMessage(); if (job.Action != null) { jobUpdateParams.Action.Type = job.Action.Type; if (job.Action.QueueMessage != null) { jobUpdateParams.Action.QueueMessage.Message = string.IsNullOrEmpty(jobRequest.StorageQueueMessage) ? job.Action.QueueMessage.Message : jobRequest.StorageQueueMessage; jobUpdateParams.Action.QueueMessage.QueueName = jobRequest.QueueName ?? job.Action.QueueMessage.QueueName; jobUpdateParams.Action.QueueMessage.SasToken = jobRequest.SasToken ?? job.Action.QueueMessage.SasToken; jobUpdateParams.Action.QueueMessage.StorageAccountName = job.Action.QueueMessage.StorageAccountName; } else if (job.Action.QueueMessage == null) { jobUpdateParams.Action.QueueMessage.Message = string.IsNullOrEmpty(jobRequest.StorageQueueMessage) ? string.Empty : jobRequest.StorageQueueMessage; jobUpdateParams.Action.QueueMessage.QueueName = jobRequest.QueueName; jobUpdateParams.Action.QueueMessage.SasToken = jobRequest.SasToken; jobUpdateParams.Action.QueueMessage.StorageAccountName = jobRequest.StorageAccount; } } else { jobUpdateParams.Action.QueueMessage.Message = string.IsNullOrEmpty(jobRequest.StorageQueueMessage) ? string.Empty : jobRequest.StorageQueueMessage; jobUpdateParams.Action.QueueMessage.QueueName = jobRequest.QueueName; jobUpdateParams.Action.QueueMessage.SasToken = jobRequest.SasToken; jobUpdateParams.Action.QueueMessage.StorageAccountName = jobRequest.StorageAccount; } } else { jobUpdateParams.Action = job.Action; } } else //If it is a HTTP job action type { if (jobRequest.IsActionSet()) { jobUpdateParams.Action = new JobAction(); jobUpdateParams.Action.Request = new JobHttpRequest(); if (job.Action != null) { jobUpdateParams.Action.Type = job.Action.Type; if (job.Action.Request != null) { jobUpdateParams.Action.Request.Uri = jobRequest.Uri ?? job.Action.Request.Uri; jobUpdateParams.Action.Request.Method = jobRequest.Method ?? job.Action.Request.Method; jobUpdateParams.Action.Request.Headers = jobRequest.Headers == null ? job.Action.Request.Headers : jobRequest.Headers.ToDictionary(); jobUpdateParams.Action.Request.Body = jobRequest.Body ?? job.Action.Request.Body; } else if (job.Action.Request == null) { jobUpdateParams.Action.Request.Uri = jobRequest.Uri; jobUpdateParams.Action.Request.Method = jobRequest.Method; jobUpdateParams.Action.Request.Headers = jobRequest.Headers.ToDictionary(); jobUpdateParams.Action.Request.Body = jobRequest.Body; } } else { jobUpdateParams.Action.Request.Uri = jobRequest.Uri; jobUpdateParams.Action.Request.Method = jobRequest.Method; jobUpdateParams.Action.Request.Headers = jobRequest.Headers.ToDictionary(); jobUpdateParams.Action.Request.Body = jobRequest.Body; } } else { jobUpdateParams.Action = job.Action; } } if (jobRequest.IsErrorActionSet()) { jobUpdateParams.Action.ErrorAction = new JobErrorAction(); jobUpdateParams.Action.ErrorAction.Request = new JobHttpRequest(); jobUpdateParams.Action.ErrorAction.QueueMessage = new JobQueueMessage(); if (job.Action.ErrorAction != null) { if (job.Action.ErrorAction.Request != null) { jobUpdateParams.Action.ErrorAction.Request.Uri = jobRequest.ErrorActionUri ?? job.Action.ErrorAction.Request.Uri; jobUpdateParams.Action.ErrorAction.Request.Method = jobRequest.ErrorActionMethod ?? job.Action.ErrorAction.Request.Method; jobUpdateParams.Action.ErrorAction.Request.Headers = jobRequest.ErrorActionHeaders == null ? job.Action.ErrorAction.Request.Headers : jobRequest.Headers.ToDictionary(); jobUpdateParams.Action.ErrorAction.Request.Body = jobRequest.ErrorActionBody ?? job.Action.ErrorAction.Request.Body; } else if (job.Action.ErrorAction.Request == null) { jobUpdateParams.Action.ErrorAction.Request.Uri = jobRequest.ErrorActionUri; jobUpdateParams.Action.ErrorAction.Request.Method = jobRequest.ErrorActionMethod; jobUpdateParams.Action.ErrorAction.Request.Headers = jobRequest.ErrorActionHeaders.ToDictionary(); jobUpdateParams.Action.ErrorAction.Request.Body = jobRequest.ErrorActionBody; } if (job.Action.ErrorAction.QueueMessage != null) { jobUpdateParams.Action.ErrorAction.QueueMessage.Message = jobRequest.ErrorActionQueueBody ?? job.Action.ErrorAction.QueueMessage.Message; jobUpdateParams.Action.ErrorAction.QueueMessage.QueueName = jobRequest.ErrorActionQueueName ?? job.Action.ErrorAction.QueueMessage.QueueName; jobUpdateParams.Action.ErrorAction.QueueMessage.SasToken = jobRequest.ErrorActionSasToken ?? job.Action.ErrorAction.QueueMessage.SasToken; jobUpdateParams.Action.ErrorAction.QueueMessage.StorageAccountName = jobRequest.ErrorActionStorageAccount ?? job.Action.ErrorAction.QueueMessage.StorageAccountName; } else if (job.Action.ErrorAction.QueueMessage == null) { jobUpdateParams.Action.ErrorAction.QueueMessage.Message = jobRequest.ErrorActionQueueBody; jobUpdateParams.Action.ErrorAction.QueueMessage.QueueName = jobRequest.ErrorActionQueueName; jobUpdateParams.Action.ErrorAction.QueueMessage.SasToken = jobRequest.ErrorActionSasToken; jobUpdateParams.Action.ErrorAction.QueueMessage.StorageAccountName = jobRequest.ErrorActionStorageAccount; } } else if (job.Action.ErrorAction == null) { jobUpdateParams.Action.ErrorAction.Request.Uri = jobRequest.ErrorActionUri; jobUpdateParams.Action.ErrorAction.Request.Method = jobRequest.ErrorActionMethod; jobUpdateParams.Action.ErrorAction.Request.Headers = jobRequest.ErrorActionHeaders.ToDictionary(); jobUpdateParams.Action.ErrorAction.Request.Body = jobRequest.ErrorActionBody; jobUpdateParams.Action.ErrorAction.QueueMessage.Message = jobRequest.ErrorActionQueueBody; jobUpdateParams.Action.ErrorAction.QueueMessage.QueueName = jobRequest.ErrorActionQueueName; jobUpdateParams.Action.ErrorAction.QueueMessage.SasToken = jobRequest.ErrorActionSasToken; jobUpdateParams.Action.ErrorAction.QueueMessage.StorageAccountName = jobRequest.ErrorActionStorageAccount; } } else { jobUpdateParams.Action.ErrorAction = job.Action.ErrorAction; } if (jobRequest.IsRecurrenceSet()) { jobUpdateParams.Recurrence = new JobRecurrence(); if (job.Recurrence != null) { jobUpdateParams.Recurrence.Count = jobRequest.ExecutionCount ?? job.Recurrence.Count; jobUpdateParams.Recurrence.EndTime = jobRequest.EndTime ?? job.Recurrence.EndTime; jobUpdateParams.Recurrence.Frequency = string.IsNullOrEmpty(jobRequest.Frequency) ? job.Recurrence.Frequency : (JobRecurrenceFrequency)Enum.Parse(typeof(JobRecurrenceFrequency), jobRequest.Frequency); jobUpdateParams.Recurrence.Interval = jobRequest.Interval ?? job.Recurrence.Interval; jobUpdateParams.Recurrence.Schedule = SetRecurrenceSchedule(job.Recurrence.Schedule); } else if (job.Recurrence == null) { jobUpdateParams.Recurrence.Count = jobRequest.ExecutionCount; jobUpdateParams.Recurrence.EndTime = jobRequest.EndTime; jobUpdateParams.Recurrence.Frequency = string.IsNullOrEmpty(jobRequest.Frequency) ? default(JobRecurrenceFrequency) : (JobRecurrenceFrequency)Enum.Parse(typeof(JobRecurrenceFrequency), jobRequest.Frequency); jobUpdateParams.Recurrence.Interval = jobRequest.Interval; jobUpdateParams.Recurrence.Schedule = null; } } else { jobUpdateParams.Recurrence = job.Recurrence; if (jobUpdateParams.Recurrence != null) { jobUpdateParams.Recurrence.Schedule = SetRecurrenceSchedule(job.Recurrence.Schedule); } } jobUpdateParams.Action.RetryPolicy = job.Action.RetryPolicy; jobUpdateParams.StartTime = jobRequest.StartTime ?? job.StartTime; return(jobUpdateParams); }
/// <summary> /// If a scheduler job already exists, this will merge the existing job config values with the request /// </summary> /// <param name="job">Existing Scheduler job</param> /// <param name="jobRequest">Request values</param> /// <param name="type">Http or Storage</param> /// <returns>JobCreateOrUpdateParameters object to use when updating Scheduler job</returns> private JobCreateOrUpdateParameters PopulateExistingJobParams(Job job, PSCreateJobParams jobRequest, JobActionType type) { JobCreateOrUpdateParameters jobUpdateParams = new JobCreateOrUpdateParameters(); if (type.Equals(JobActionType.StorageQueue)) { if (jobRequest.IsStorageActionSet()) { jobUpdateParams.Action = new JobAction(); jobUpdateParams.Action.QueueMessage = new JobQueueMessage(); if (job.Action != null) { jobUpdateParams.Action.Type = job.Action.Type; if (job.Action.QueueMessage != null) { jobUpdateParams.Action.QueueMessage.Message = string.IsNullOrEmpty(jobRequest.StorageQueueMessage) ? job.Action.QueueMessage.Message : jobRequest.StorageQueueMessage; jobUpdateParams.Action.QueueMessage.QueueName = jobRequest.QueueName ?? job.Action.QueueMessage.QueueName; jobUpdateParams.Action.QueueMessage.SasToken = jobRequest.SasToken ?? job.Action.QueueMessage.SasToken; jobUpdateParams.Action.QueueMessage.StorageAccountName = job.Action.QueueMessage.StorageAccountName; } else if (job.Action.QueueMessage == null) { jobUpdateParams.Action.QueueMessage.Message = string.IsNullOrEmpty(jobRequest.StorageQueueMessage) ? string.Empty : jobRequest.StorageQueueMessage; jobUpdateParams.Action.QueueMessage.QueueName = jobRequest.QueueName; jobUpdateParams.Action.QueueMessage.SasToken = jobRequest.SasToken; jobUpdateParams.Action.QueueMessage.StorageAccountName = jobRequest.StorageAccount; } } else { jobUpdateParams.Action.QueueMessage.Message = string.IsNullOrEmpty(jobRequest.StorageQueueMessage) ? string.Empty : jobRequest.StorageQueueMessage; jobUpdateParams.Action.QueueMessage.QueueName = jobRequest.QueueName; jobUpdateParams.Action.QueueMessage.SasToken = jobRequest.SasToken; jobUpdateParams.Action.QueueMessage.StorageAccountName = jobRequest.StorageAccount; } } else { jobUpdateParams.Action = job.Action; } } else //If it is a HTTP job action type { if (jobRequest.IsActionSet()) { jobUpdateParams.Action = new JobAction(); jobUpdateParams.Action.Request = new JobHttpRequest(); if (job.Action != null) { jobUpdateParams.Action.Type = job.Action.Type; if (job.Action.Request != null) { jobUpdateParams.Action.Request.Uri = jobRequest.Uri ?? job.Action.Request.Uri; jobUpdateParams.Action.Request.Method = jobRequest.Method ?? job.Action.Request.Method; jobUpdateParams.Action.Request.Headers = jobRequest.Headers == null ? job.Action.Request.Headers : jobRequest.Headers.ToDictionary(); jobUpdateParams.Action.Request.Body = jobRequest.Body ?? job.Action.Request.Body; //Job has existing authentication if (job.Action.Request.Authentication != null) { if (jobRequest.HttpAuthType.Equals("ClientCertificate", StringComparison.OrdinalIgnoreCase)) { jobUpdateParams.Action.Request.Authentication = SetClientCertAuthentication(jobRequest, jobUpdateParams); } else if (jobRequest.HttpAuthType.Equals("None", StringComparison.OrdinalIgnoreCase)) { if (!string.IsNullOrEmpty(jobRequest.ClientCertPfx) || !string.IsNullOrEmpty(jobRequest.ClientCertPassword)) { throw new InvalidOperationException(Resources.SchedulerInvalidNoneAuthRequest); } else { jobUpdateParams.Action.Request.Authentication = null; } } else { jobUpdateParams.Action.Request.Authentication = job.Action.Request.Authentication; } } else if (job.Action.Request.Authentication == null && jobRequest.HttpAuthType.Equals("ClientCertificate", StringComparison.OrdinalIgnoreCase)) { jobUpdateParams.Action.Request.Authentication = SetClientCertAuthentication(jobRequest, jobUpdateParams); } } else if (job.Action.Request == null) { jobUpdateParams.Action.Request.Uri = jobRequest.Uri; jobUpdateParams.Action.Request.Method = jobRequest.Method; jobUpdateParams.Action.Request.Headers = jobRequest.Headers.ToDictionary(); jobUpdateParams.Action.Request.Body = jobRequest.Body; if (jobRequest.HttpAuthType.Equals("ClientCertificate", StringComparison.OrdinalIgnoreCase)) { jobUpdateParams.Action.Request.Authentication = SetClientCertAuthentication(jobRequest, jobUpdateParams); } } } else { jobUpdateParams.Action.Request.Uri = jobRequest.Uri; jobUpdateParams.Action.Request.Method = jobRequest.Method; jobUpdateParams.Action.Request.Headers = jobRequest.Headers.ToDictionary(); jobUpdateParams.Action.Request.Body = jobRequest.Body; if (jobRequest.HttpAuthType.Equals("ClientCertificate", StringComparison.OrdinalIgnoreCase)) { jobUpdateParams.Action.Request.Authentication = SetClientCertAuthentication(jobRequest, jobUpdateParams); } } } else { jobUpdateParams.Action = job.Action; } } if (jobRequest.IsErrorActionSet()) { jobUpdateParams.Action.ErrorAction = new JobErrorAction(); jobUpdateParams.Action.ErrorAction.Request = new JobHttpRequest(); jobUpdateParams.Action.ErrorAction.QueueMessage = new JobQueueMessage(); if (job.Action.ErrorAction != null) { if (job.Action.ErrorAction.Request != null) { jobUpdateParams.Action.ErrorAction.Request.Uri = jobRequest.ErrorActionUri ?? job.Action.ErrorAction.Request.Uri; jobUpdateParams.Action.ErrorAction.Request.Method = jobRequest.ErrorActionMethod ?? job.Action.ErrorAction.Request.Method; jobUpdateParams.Action.ErrorAction.Request.Headers = jobRequest.ErrorActionHeaders == null ? job.Action.ErrorAction.Request.Headers : jobRequest.Headers.ToDictionary(); jobUpdateParams.Action.ErrorAction.Request.Body = jobRequest.ErrorActionBody ?? job.Action.ErrorAction.Request.Body; } else if (job.Action.ErrorAction.Request == null) { jobUpdateParams.Action.ErrorAction.Request.Uri = jobRequest.ErrorActionUri; jobUpdateParams.Action.ErrorAction.Request.Method = jobRequest.ErrorActionMethod; jobUpdateParams.Action.ErrorAction.Request.Headers = jobRequest.ErrorActionHeaders.ToDictionary(); jobUpdateParams.Action.ErrorAction.Request.Body = jobRequest.ErrorActionBody; } if (job.Action.ErrorAction.QueueMessage != null) { jobUpdateParams.Action.ErrorAction.QueueMessage.Message = jobRequest.ErrorActionQueueBody ?? job.Action.ErrorAction.QueueMessage.Message; jobUpdateParams.Action.ErrorAction.QueueMessage.QueueName = jobRequest.ErrorActionQueueName ?? job.Action.ErrorAction.QueueMessage.QueueName; jobUpdateParams.Action.ErrorAction.QueueMessage.SasToken = jobRequest.ErrorActionSasToken ?? job.Action.ErrorAction.QueueMessage.SasToken; jobUpdateParams.Action.ErrorAction.QueueMessage.StorageAccountName = jobRequest.ErrorActionStorageAccount ?? job.Action.ErrorAction.QueueMessage.StorageAccountName; } else if (job.Action.ErrorAction.QueueMessage == null) { jobUpdateParams.Action.ErrorAction.QueueMessage.Message = jobRequest.ErrorActionQueueBody; jobUpdateParams.Action.ErrorAction.QueueMessage.QueueName = jobRequest.ErrorActionQueueName; jobUpdateParams.Action.ErrorAction.QueueMessage.SasToken = jobRequest.ErrorActionSasToken; jobUpdateParams.Action.ErrorAction.QueueMessage.StorageAccountName = jobRequest.ErrorActionStorageAccount; } } else if (job.Action.ErrorAction == null) { jobUpdateParams.Action.ErrorAction.Request.Uri = jobRequest.ErrorActionUri; jobUpdateParams.Action.ErrorAction.Request.Method = jobRequest.ErrorActionMethod; jobUpdateParams.Action.ErrorAction.Request.Headers = jobRequest.ErrorActionHeaders.ToDictionary(); jobUpdateParams.Action.ErrorAction.Request.Body = jobRequest.ErrorActionBody; jobUpdateParams.Action.ErrorAction.QueueMessage.Message = jobRequest.ErrorActionQueueBody; jobUpdateParams.Action.ErrorAction.QueueMessage.QueueName = jobRequest.ErrorActionQueueName; jobUpdateParams.Action.ErrorAction.QueueMessage.SasToken = jobRequest.ErrorActionSasToken; jobUpdateParams.Action.ErrorAction.QueueMessage.StorageAccountName = jobRequest.ErrorActionStorageAccount; } } else { jobUpdateParams.Action.ErrorAction = job.Action.ErrorAction; } if (jobRequest.IsRecurrenceSet()) { jobUpdateParams.Recurrence = new JobRecurrence(); if (job.Recurrence != null) { jobUpdateParams.Recurrence.Count = jobRequest.ExecutionCount ?? job.Recurrence.Count; jobUpdateParams.Recurrence.EndTime = jobRequest.EndTime ?? job.Recurrence.EndTime; jobUpdateParams.Recurrence.Frequency = string.IsNullOrEmpty(jobRequest.Frequency) ? job.Recurrence.Frequency : (JobRecurrenceFrequency)Enum.Parse(typeof(JobRecurrenceFrequency), jobRequest.Frequency); jobUpdateParams.Recurrence.Interval = jobRequest.Interval ?? job.Recurrence.Interval; jobUpdateParams.Recurrence.Schedule = SetRecurrenceSchedule(job.Recurrence.Schedule); } else if (job.Recurrence == null) { jobUpdateParams.Recurrence.Count = jobRequest.ExecutionCount; jobUpdateParams.Recurrence.EndTime = jobRequest.EndTime; jobUpdateParams.Recurrence.Frequency = string.IsNullOrEmpty(jobRequest.Frequency) ? default(JobRecurrenceFrequency) : (JobRecurrenceFrequency)Enum.Parse(typeof(JobRecurrenceFrequency), jobRequest.Frequency); jobUpdateParams.Recurrence.Interval = jobRequest.Interval; jobUpdateParams.Recurrence.Schedule = null; } } else { jobUpdateParams.Recurrence = job.Recurrence; if (jobUpdateParams.Recurrence != null) { jobUpdateParams.Recurrence.Schedule = SetRecurrenceSchedule(job.Recurrence.Schedule); } } jobUpdateParams.Action.RetryPolicy = job.Action.RetryPolicy; jobUpdateParams.StartTime = jobRequest.StartTime ?? job.StartTime; return(jobUpdateParams); }