public JobCreateOrUpdateResponse CreateOrUpdateJOB(string jobCollectionName, string jobID,DateTime startTime, string URL, JobActionType jobActionType = JobActionType.Http, String method = HttpActionMethod.Get, JobRecurrenceFrequency jobRecurrenceFrequency = JobRecurrenceFrequency.Hour, int interval = 1, int executionCount = 1) { var credentials = _credentialManager.GetManagementCredentials(); var schedulerClient = new SchedulerClient(cloudSerivceName, jobCollectionName, credentials); var result = schedulerClient.Jobs.CreateOrUpdate(jobID,new JobCreateOrUpdateParameters() { Action = new JobAction() { Type = jobActionType, Request = new JobHttpRequest() { Method = HttpActionMethod.Post, Uri = new Uri(URL) } }, StartTime = startTime, Recurrence = new JobRecurrence() { Frequency = jobRecurrenceFrequency, Interval = interval, Count = executionCount } }); return result; }
/// <summary> /// Convert an enum of type JobActionType to a string. /// </summary> /// <param name='value'> /// The value to convert to a string. /// </param> /// <returns> /// The enum value as a string. /// </returns> internal static string JobActionTypeToString(JobActionType value) { if (value == JobActionType.Http) { return("http"); } if (value == JobActionType.Https) { return("https"); } if (value == JobActionType.StorageQueue) { return("storageQueue"); } throw new ArgumentOutOfRangeException("value"); }
/// <summary> /// Gets service bus action details. /// </summary> /// <param name="jobActionType">Job action type.</param> /// <param name="serviceBusMessage">Service bus message.</param> /// <returns>PSServiceBusJobActionDetails</returns> internal static PSServiceBusJobActionDetails GetServiceBusJobActionDetails(JobActionType jobActionType, ServiceBusMessage serviceBusMessage) { if (serviceBusMessage == null) { throw new ArgumentNullException(paramName: "serviceBusMessage"); } var psServieBusJobActionDetails = new PSServiceBusJobActionDetails(jobActionType) { ServiceBusAuthentication = Converter.GetServiceBusActionAuthenticationDetails(serviceBusMessage.Authentication), ServiceBusMessage = serviceBusMessage.Message, ServiceBusNamespaceProperty = serviceBusMessage.NamespaceProperty, ServiceBusTransportType = serviceBusMessage.TransportType.ToString() }; return(psServieBusJobActionDetails); }
/// <summary> /// Gets http job action details. /// </summary> /// <param name="jobActionType">Job action type.</param> /// <param name="request">Job actions http request.</param> /// <returns>PSHttpJobActionDetails</returns> internal static PSHttpJobActionDetails GetSchedulerHttpJobActionDetails(JobActionType jobActionType, HttpRequest request) { if (request == null) { throw new ArgumentNullException(paramName: "request"); } var psHttpJobActionDetails = new PSHttpJobActionDetails(jobActionType) { RequestBody = request.Body, RequestHeaders = request.Headers, RequestMethod = request.Method, Uri = request.Uri, HttpJobAuthentication = Converter.GetSchedulerHttpJobAuthenticationDetails(request.Authentication), }; return(psHttpJobActionDetails); }
internal static string ToSerializedValue(this JobActionType value) { switch (value) { case JobActionType.Http: return("Http"); case JobActionType.Https: return("Https"); case JobActionType.StorageQueue: return("StorageQueue"); case JobActionType.ServiceBusQueue: return("ServiceBusQueue"); case JobActionType.ServiceBusTopic: return("ServiceBusTopic"); } return(null); }
/// <summary> /// Gets http job action details. /// </summary> /// <param name="jobActionType">Job action type.</param> /// <param name="request">Job actions http request.</param> /// <returns>PSHttpJobActionDetails</returns> internal static PSHttpJobActionDetails GetSchedulerHttpJobActionDetails(JobActionType jobActionType, HttpRequest request) { if (request == null) { throw new ArgumentNullException(paramName: "request"); } var psHttpJobActionDetails = new PSHttpJobActionDetails(jobActionType) { RequestBody = request.Body, RequestHeaders = request.Headers, RequestMethod = request.Method, Uri = request.Uri, HttpJobAuthentication = Converter.GetSchedulerHttpJobAuthenticationDetails(request.Authentication), }; return psHttpJobActionDetails; }
/// <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; }
/// <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 (!string.IsNullOrEmpty(jobRequest.HttpAuthType)) { jobUpdateParams.Action.Request.Authentication = SetHttpAuthentication(jobRequest, jobUpdateParams); } //the new request doesn't have any changes to auth, so preserve it else { jobUpdateParams.Action.Request.Authentication = job.Action.Request.Authentication; } } else if (job.Action.Request.Authentication == null) { jobUpdateParams.Action.Request.Authentication = SetHttpAuthentication(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; jobUpdateParams.Action.Request.Authentication = SetHttpAuthentication(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; jobUpdateParams.Action.Request.Authentication = SetHttpAuthentication(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; }
/// <summary> /// Initializes a new instance of the JobErrorAction class with /// required arguments. /// </summary> public JobErrorAction(JobActionType type) : this() { this.Type = type; }
/// <summary> /// Gets service bus topic job action details. /// </summary> /// <param name="jobActionType">Job action type.</param> /// <param name="storageQueue">Stervice bus topic message.</param> /// <returns>PSServiceBusJobActionDetails.</returns> internal static PSServiceBusJobActionDetails GetSchedulerServiceBusTopicJobActionDetails(JobActionType jobActionType, ServiceBusTopicMessage serviceBusTopicMessage) { var psServiceBusjobActionDetails = Converter.GetServiceBusJobActionDetails(jobActionType, serviceBusTopicMessage); psServiceBusjobActionDetails.ServiceBusTopicPath = serviceBusTopicMessage.TopicPath; return psServiceBusjobActionDetails; }
/// <summary> /// Gets service bus topic job action details. /// </summary> /// <param name="jobActionType">Job action type.</param> /// <param name="storageQueue">Stervice bus topic message.</param> /// <returns>PSServiceBusJobActionDetails.</returns> internal static PSServiceBusJobActionDetails GetSchedulerServiceBusTopicJobActionDetails(JobActionType jobActionType, ServiceBusTopicMessage serviceBusTopicMessage) { var psServiceBusjobActionDetails = Converter.GetServiceBusJobActionDetails(jobActionType, serviceBusTopicMessage); psServiceBusjobActionDetails.ServiceBusTopicPath = serviceBusTopicMessage.TopicPath; return(psServiceBusjobActionDetails); }
/// <summary> /// Gets service bus queue job action details. /// </summary> /// <param name="jobActionType">Job action type.</param> /// <param name="storageQueue">Stervice bus queue message.</param> /// <returns>PSServiceBusJobActionDetails.</returns> internal static PSServiceBusJobActionDetails GetSchedulerServiceBusQueueJobActionDetails(JobActionType jobActionType, ServiceBusQueueMessage serviceBusQueueMessage) { var psServiceBusjobActionDetails = Converter.GetServiceBusJobActionDetails(jobActionType, serviceBusQueueMessage); psServiceBusjobActionDetails.ServiceBusQueueName = serviceBusQueueMessage.QueueName; return(psServiceBusjobActionDetails); }
/// <summary> /// Gets storage queue job action details. /// </summary> /// <param name="jobActionType">Job action type.</param> /// <param name="storageQueue">Storage queue message.</param> /// <returns>PSStorageJobActionDetails.</returns> internal static PSStorageJobActionDetails GetSchedulerStorageJobActionDetails(JobActionType jobActionType, StorageQueueMessage storageQueue) { if (storageQueue == null) { throw new ArgumentNullException(paramName: "storageQueue"); } var psStorageJobActionDetails = new PSStorageJobActionDetails(jobActionType) { StorageAccount = storageQueue.StorageAccount, StorageQueueMessage = storageQueue.Message, StorageQueueName = storageQueue.QueueName, StorageSasToken = storageQueue.SasToken }; return(psStorageJobActionDetails); }
/// <summary> /// Gets storage queue job action details. /// </summary> /// <param name="jobActionType">Job action type.</param> /// <param name="storageQueue">Storage queue message.</param> /// <returns>PSStorageJobActionDetails.</returns> internal static PSStorageJobActionDetails GetSchedulerStorageJobActionDetails(JobActionType jobActionType, StorageQueueMessage storageQueue) { if (storageQueue == null) { throw new ArgumentNullException(paramName: "storageQueue"); } var psStorageJobActionDetails = new PSStorageJobActionDetails(jobActionType) { StorageAccount = storageQueue.StorageAccount, StorageQueueMessage = storageQueue.Message, StorageQueueName = storageQueue.QueueName, StorageSasToken = storageQueue.SasToken }; return psStorageJobActionDetails; }
/// <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> /// Gets service bus queue job action details. /// </summary> /// <param name="jobActionType">Job action type.</param> /// <param name="storageQueue">Stervice bus queue message.</param> /// <returns>PSServiceBusJobActionDetails.</returns> internal static PSServiceBusJobActionDetails GetSchedulerServiceBusQueueJobActionDetails(JobActionType jobActionType, ServiceBusQueueMessage serviceBusQueueMessage) { var psServiceBusjobActionDetails = Converter.GetServiceBusJobActionDetails(jobActionType, serviceBusQueueMessage); psServiceBusjobActionDetails.ServiceBusQueueName = serviceBusQueueMessage.QueueName; return psServiceBusjobActionDetails; }
/// <summary> /// Initializes a new instance of the JobErrorAction class with /// required arguments. /// </summary> public JobErrorAction(JobActionType type) : this() { this.Type = type; }
/// <summary> /// Gets service bus action details. /// </summary> /// <param name="jobActionType">Job action type.</param> /// <param name="serviceBusMessage">Service bus message.</param> /// <returns>PSServiceBusJobActionDetails</returns> internal static PSServiceBusJobActionDetails GetServiceBusJobActionDetails(JobActionType jobActionType, ServiceBusMessage serviceBusMessage) { if (serviceBusMessage == null) { throw new ArgumentNullException(paramName: "serviceBusMessage"); } var psServieBusJobActionDetails = new PSServiceBusJobActionDetails(jobActionType) { ServiceBusAuthentication = Converter.GetServiceBusActionAuthenticationDetails(serviceBusMessage.Authentication), ServiceBusMessage = serviceBusMessage.Message, ServiceBusNamespaceProperty = serviceBusMessage.NamespaceProperty, ServiceBusTransportType = serviceBusMessage.TransportType.ToString() }; return psServieBusJobActionDetails; }
/// <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); }