/// <summary> /// Gets error action details. /// </summary> /// <param name="erroJobAction">Job error action.</param> /// <returns>PSJobActionDetail.</returns> internal static PSJobActionDetails GetSchedulerJobErrorActionDetails(JobErrorAction erroJobAction) { if (erroJobAction == null) { return(null); } switch (erroJobAction.Type) { case JobActionType.Http: case JobActionType.Https: return(Converter.GetSchedulerHttpJobActionDetails(erroJobAction.Type.Value, erroJobAction.Request)); case JobActionType.StorageQueue: return(Converter.GetSchedulerStorageJobActionDetails(erroJobAction.Type.Value, erroJobAction.QueueMessage)); case JobActionType.ServiceBusQueue: return(Converter.GetSchedulerServiceBusQueueJobActionDetails(erroJobAction.Type.Value, erroJobAction.ServiceBusQueueMessage)); case JobActionType.ServiceBusTopic: return(Converter.GetSchedulerServiceBusTopicJobActionDetails(erroJobAction.Type.Value, erroJobAction.ServiceBusTopicMessage)); default: return(null); } }
/// <summary> /// Get JobAction instance. /// </summary> /// <param name="jobParams">Job properties specified via PowerShell.</param> /// <returns>JobActio instance.</returns> private JobAction GetJobAction(PSJobParams jobParams) { var jobAction = new JobAction(); this.PopulateJobAction(jobParams.JobAction, ref jobAction); // Populate error job action. if (jobParams.JobErrorAction != null) { var jobErrorAction = new JobErrorAction(); this.PopulateJobErrorAction(jobParams.JobErrorAction, ref jobErrorAction); jobAction.ErrorAction = jobErrorAction; } return(jobAction); }
/// <summary> /// Populates ErrorAction values from the request /// </summary> /// <param name="jobRequest">Request values</param> /// <returns>Populated JobErrorAction object</returns> private JobErrorAction PopulateErrorAction(PSCreateJobParams jobRequest) { if (!string.IsNullOrEmpty(jobRequest.ErrorActionMethod) && jobRequest.ErrorActionUri != null) { JobErrorAction errorAction = new JobErrorAction { Request = new JobHttpRequest { Uri = jobRequest.ErrorActionUri, Method = jobRequest.ErrorActionMethod } }; if (jobRequest.ErrorActionHeaders != null) { errorAction.Request.Headers = jobRequest.ErrorActionHeaders.ToDictionary(); } if (jobRequest.ErrorActionMethod.Equals("PUT", StringComparison.OrdinalIgnoreCase) || jobRequest.ErrorActionMethod.Equals("POST", StringComparison.OrdinalIgnoreCase)) { errorAction.Request.Body = jobRequest.ErrorActionBody; } return(errorAction); } if (!string.IsNullOrEmpty(jobRequest.ErrorActionSasToken) && !string.IsNullOrEmpty(jobRequest.ErrorActionStorageAccount) && !string.IsNullOrEmpty(jobRequest.ErrorActionQueueName)) { return(new JobErrorAction { QueueMessage = new JobQueueMessage { QueueName = jobRequest.ErrorActionQueueName, StorageAccountName = jobRequest.ErrorActionStorageAccount, SasToken = jobRequest.ErrorActionSasToken, Message = jobRequest.ErrorActionQueueBody ?? "" } }); } return(null); }
/// <summary> /// Populate job error action values. /// </summary> /// <param name="jobErrorActionParams">Job error action properties specified via PowerShell.</param> /// <param name="jobErrorAction">JobErrorAction object to be populated.</param> private void PopulateJobErrorAction(PSJobActionParams jobErrorActionParams, ref JobErrorAction jobErrorAction) { if (jobErrorActionParams != null) { if (jobErrorAction == null) { jobErrorAction = new JobErrorAction(); } switch (jobErrorActionParams.JobActionType) { case JobActionType.Http: case JobActionType.Https: jobErrorAction.Type = jobErrorActionParams.JobActionType; jobErrorAction.Request = this.GetHttpJobAction(jobErrorActionParams.HttpJobAction); break; case JobActionType.StorageQueue: jobErrorAction.Type = JobActionType.StorageQueue; jobErrorAction.QueueMessage = this.GetStorageQueue(jobErrorActionParams.StorageJobAction); break; case JobActionType.ServiceBusQueue: jobErrorAction.Type = JobActionType.ServiceBusQueue; jobErrorAction.ServiceBusQueueMessage = this.GetServiceBusQueue(jobErrorActionParams.ServiceBusAction); break; case JobActionType.ServiceBusTopic: jobErrorAction.Type = JobActionType.ServiceBusTopic; jobErrorAction.ServiceBusTopicMessage = this.GetServiceBusTopic(jobErrorActionParams.ServiceBusAction); break; } } else { jobErrorAction = null; } }
/// <summary> /// Gets error action details. /// </summary> /// <param name="erroJobAction">Job error action.</param> /// <returns>PSJobActionDetail.</returns> internal static PSJobActionDetails GetSchedulerJobErrorActionDetails(JobErrorAction erroJobAction) { if (erroJobAction == null) { return null; } switch (erroJobAction.Type) { case JobActionType.Http: case JobActionType.Https: return Converter.GetSchedulerHttpJobActionDetails(erroJobAction.Type.Value, erroJobAction.Request); case JobActionType.StorageQueue: return Converter.GetSchedulerStorageJobActionDetails(erroJobAction.Type.Value, erroJobAction.QueueMessage); case JobActionType.ServiceBusQueue: return Converter.GetSchedulerServiceBusQueueJobActionDetails(erroJobAction.Type.Value, erroJobAction.ServiceBusQueueMessage); case JobActionType.ServiceBusTopic: return Converter.GetSchedulerServiceBusTopicJobActionDetails(erroJobAction.Type.Value, erroJobAction.ServiceBusTopicMessage); default: return null; } }
/// <summary> /// Get job error action. /// </summary> /// <param name="updateJobErrorActionParams">Error action properties specified via PowerShell.</param> /// <param name="existingJobErrorAction">Existing error action properties.</param> /// <returns>JobErrorAction object.</returns> private JobErrorAction GetExistingJobErrorAction(PSJobActionParams updateJobErrorActionParams, JobErrorAction existingJobErrorAction) { if (updateJobErrorActionParams != null) { if (existingJobErrorAction != null && (existingJobErrorAction.Type == updateJobErrorActionParams.JobActionType || ((existingJobErrorAction.Type == JobActionType.Http || existingJobErrorAction.Type == JobActionType.Https) && (updateJobErrorActionParams.JobActionType == JobActionType.Http || updateJobErrorActionParams.JobActionType == JobActionType.Https)))) { switch (updateJobErrorActionParams.JobActionType) { case JobActionType.Http: case JobActionType.Https: PSHttpJobActionParams httpJobAction = updateJobErrorActionParams.HttpJobAction; HttpRequest existinghHttpRequest = existingJobErrorAction.Request; existingJobErrorAction.Type = updateJobErrorActionParams.JobActionType; existinghHttpRequest.Method = httpJobAction.RequestMethod.GetValueOrDefault(defaultValue: existinghHttpRequest.Method); existinghHttpRequest.Uri = httpJobAction.Uri != null ? httpJobAction.Uri.ToString() : existinghHttpRequest.Uri; existinghHttpRequest.Body = httpJobAction.RequestBody.GetValueOrDefault(defaultValue: existinghHttpRequest.Body); existinghHttpRequest.Authentication = this.GetExistingAuthentication(httpJobAction.RequestAuthentication, existinghHttpRequest.Authentication); break; case JobActionType.StorageQueue: PSStorageJobActionParams storageJobAction = updateJobErrorActionParams.StorageJobAction; StorageQueueMessage existingStorageQueue = existingJobErrorAction.QueueMessage; existingStorageQueue.StorageAccount = storageJobAction.StorageAccount.GetValueOrDefault(defaultValue: existingStorageQueue.StorageAccount); existingStorageQueue.Message = storageJobAction.StorageQueueMessage.GetValueOrDefault(defaultValue: existingStorageQueue.Message); existingStorageQueue.QueueName = storageJobAction.StorageQueueName.GetValueOrDefault(existingStorageQueue.QueueName); existingStorageQueue.SasToken = storageJobAction.StorageSasToken.GetValueOrDefault(existingStorageQueue.SasToken); break; case JobActionType.ServiceBusQueue: PSServiceBusParams serviceBusParams = updateJobErrorActionParams.ServiceBusAction; ServiceBusQueueMessage existingServiceBusQueueMessage = existingJobErrorAction.ServiceBusQueueMessage; this.UpdateServiceBus(serviceBusParams, existingServiceBusQueueMessage); existingServiceBusQueueMessage.QueueName = serviceBusParams.QueueName.GetValueOrDefault(defaultValue: existingServiceBusQueueMessage.QueueName); break; case JobActionType.ServiceBusTopic: PSServiceBusParams serviceBusTopicParams = updateJobErrorActionParams.ServiceBusAction; ServiceBusTopicMessage existingServiceBusTopicMessage = existingJobErrorAction.ServiceBusTopicMessage; this.UpdateServiceBus(serviceBusTopicParams, existingServiceBusTopicMessage); existingServiceBusTopicMessage.TopicPath = serviceBusTopicParams.TopicPath.GetValueOrDefault(defaultValue: existingServiceBusTopicMessage.TopicPath); break; } } else { this.PopulateJobErrorAction(updateJobErrorActionParams, ref existingJobErrorAction); } } return existingJobErrorAction; }
/// <summary> /// Get job error action. /// </summary> /// <param name="updateJobErrorActionParams">Error action properties specified via PowerShell.</param> /// <param name="existingJobErrorAction">Existing error action properties.</param> /// <returns>JobErrorAction object.</returns> private JobErrorAction GetExistingJobErrorAction(PSJobActionParams updateJobErrorActionParams, JobErrorAction existingJobErrorAction) { if (updateJobErrorActionParams != null) { if (existingJobErrorAction != null && (existingJobErrorAction.Type == updateJobErrorActionParams.JobActionType || ((existingJobErrorAction.Type == JobActionType.Http || existingJobErrorAction.Type == JobActionType.Https) && (updateJobErrorActionParams.JobActionType == JobActionType.Http || updateJobErrorActionParams.JobActionType == JobActionType.Https)))) { switch (updateJobErrorActionParams.JobActionType) { case JobActionType.Http: case JobActionType.Https: PSHttpJobActionParams httpJobAction = updateJobErrorActionParams.HttpJobAction; HttpRequest existinghHttpRequest = existingJobErrorAction.Request; existingJobErrorAction.Type = updateJobErrorActionParams.JobActionType; existinghHttpRequest.Method = httpJobAction.RequestMethod.GetValueOrDefault(defaultValue: existinghHttpRequest.Method); existinghHttpRequest.Uri = httpJobAction.Uri != null ? httpJobAction.Uri.OriginalString : existinghHttpRequest.Uri; existinghHttpRequest.Body = httpJobAction.RequestBody.GetValueOrDefault(defaultValue: existinghHttpRequest.Body); existinghHttpRequest.Authentication = this.GetExistingAuthentication(httpJobAction.RequestAuthentication, existinghHttpRequest.Authentication); break; case JobActionType.StorageQueue: PSStorageJobActionParams storageJobAction = updateJobErrorActionParams.StorageJobAction; StorageQueueMessage existingStorageQueue = existingJobErrorAction.QueueMessage; existingStorageQueue.StorageAccount = storageJobAction.StorageAccount.GetValueOrDefault(defaultValue: existingStorageQueue.StorageAccount); existingStorageQueue.Message = storageJobAction.StorageQueueMessage.GetValueOrDefault(defaultValue: existingStorageQueue.Message); existingStorageQueue.QueueName = storageJobAction.StorageQueueName.GetValueOrDefault(existingStorageQueue.QueueName); existingStorageQueue.SasToken = storageJobAction.StorageSasToken.GetValueOrDefault(existingStorageQueue.SasToken); break; case JobActionType.ServiceBusQueue: PSServiceBusParams serviceBusParams = updateJobErrorActionParams.ServiceBusAction; ServiceBusQueueMessage existingServiceBusQueueMessage = existingJobErrorAction.ServiceBusQueueMessage; this.UpdateServiceBus(serviceBusParams, existingServiceBusQueueMessage); existingServiceBusQueueMessage.QueueName = serviceBusParams.QueueName.GetValueOrDefault(defaultValue: existingServiceBusQueueMessage.QueueName); break; case JobActionType.ServiceBusTopic: PSServiceBusParams serviceBusTopicParams = updateJobErrorActionParams.ServiceBusAction; ServiceBusTopicMessage existingServiceBusTopicMessage = existingJobErrorAction.ServiceBusTopicMessage; this.UpdateServiceBus(serviceBusTopicParams, existingServiceBusTopicMessage); existingServiceBusTopicMessage.TopicPath = serviceBusTopicParams.TopicPath.GetValueOrDefault(defaultValue: existingServiceBusTopicMessage.TopicPath); break; } } else { this.PopulateJobErrorAction(updateJobErrorActionParams, ref existingJobErrorAction); } } return(existingJobErrorAction); }
/// <summary> /// Get JobAction instance. /// </summary> /// <param name="jobParams">Job properties specified via PowerShell.</param> /// <returns>JobActio instance.</returns> private JobAction GetJobAction(PSJobParams jobParams) { var jobAction = new JobAction(); this.PopulateJobAction(jobParams.JobAction, ref jobAction); // Populate error job action. if (jobParams.JobErrorAction != null) { var jobErrorAction = new JobErrorAction(); this.PopulateJobErrorAction(jobParams.JobErrorAction, ref jobErrorAction); jobAction.ErrorAction = jobErrorAction; } return jobAction; }