Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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;
            }
        }
Beispiel #5
0
        /// <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;
        }
Beispiel #7
0
        /// <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>
        /// 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>
        /// 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;
        }