/// <summary> /// Executes the command. /// </summary> public override void ExecuteCmdlet() { base.ExecuteCmdlet(); var serviceBusAuthentication = new PSServiceBusAuthenticationParams() { SasKey = this.ServiceBusSasKeyValue, SasKeyName = this.ServiceBusSasKeyName, Type = Constants.SharedAccessKey }; var servicBusQueue = new PSServiceBusParams() { Authentication = serviceBusAuthentication, Message = this.ServiceBusMessage, NamespaceProperty = this.ServiceBusNamespace, QueueName = this.ServiceBusQueueName, TransportType = this.ServiceBusTransportType }; var jobAction = new PSJobActionParams() { JobActionType = SchedulerModels.JobActionType.ServiceBusQueue, ServiceBusAction = servicBusQueue }; var jobRecurrence = new PSJobRecurrenceParams() { Interval = this.Interval, Frequency = this.Frequency, EndTime = this.EndTime, ExecutionCount = this.ExecutionCount }; var jobParams = new PSJobParams() { ResourceGroupName = this.ResourceGroupName, JobCollectionName = this.JobCollectionName, JobName = this.JobName, JobState = this.JobState, StartTime = this.StartTime, JobAction = jobAction, JobRecurrence = jobRecurrence, JobErrorAction = this.GetErrorActionParamsValue(this.ErrorActionType) }; this.ConfirmAction( processMessage: string.Format(Resources.NewServiceBusQueueJobResourceDescription, this.JobName), target: this.JobCollectionName, action: () => { this.WriteObject(this.SchedulerClient.CreateJob(jobParams)); } ); }
/// <summary> /// Populates Service bus message object with valid values. /// </summary> /// <param name="serviceBusQueueActionParams">Service bus properties specified via PowerShell.</param> /// <param name="serviceBusMessage">Servce message object to be populated.</param> private void PopulateServiceBusMessage(PSServiceBusParams serviceBusQueueActionParams, ServiceBusMessage serviceBusMessage) { if (string.IsNullOrWhiteSpace(serviceBusQueueActionParams.NamespaceProperty) || string.IsNullOrWhiteSpace(serviceBusQueueActionParams.Message) || string.IsNullOrWhiteSpace(serviceBusQueueActionParams.TransportType)) { throw new PSManagement.PSArgumentException(Resources.SchedulerInvalidServiceBus); } if (serviceBusMessage == null) { throw new ArgumentException("serviceBusMessage: Object must be initialized"); } ServiceBusAuthentication authentication = this.GetServiceBusAuthentication(serviceBusQueueActionParams.Authentication); serviceBusMessage.Authentication = this.GetServiceBusAuthentication(serviceBusQueueActionParams.Authentication); serviceBusMessage.Message = serviceBusQueueActionParams.Message; serviceBusMessage.NamespaceProperty = serviceBusQueueActionParams.NamespaceProperty; serviceBusMessage.TransportType = serviceBusQueueActionParams.TransportType.GetValueOrDefaultEnum<ServiceBusTransportType>(defaultValue: ServiceBusTransportType.NetMessaging); }
/// <summary> /// Update service bus properties. /// </summary> /// <param name="serviceBusParams">Service bus message properties specified via PowerShell.</param> /// <param name="existingServiceBusMessage">Existing job's service bus message properties.</param> private void UpdateServiceBus(PSServiceBusParams serviceBusParams, ServiceBusMessage existingServiceBusMessage) { if (existingServiceBusMessage != null) { existingServiceBusMessage.TransportType = serviceBusParams.TransportType.GetValueOrDefaultEnum<ServiceBusTransportType?>(defaultValue: existingServiceBusMessage.TransportType); existingServiceBusMessage.NamespaceProperty = serviceBusParams.NamespaceProperty.GetValueOrDefault(defaultValue: existingServiceBusMessage.NamespaceProperty); existingServiceBusMessage.Message = serviceBusParams.Message.GetValueOrDefault(defaultValue: existingServiceBusMessage.Message); this.PopulateServiceBusAuthentication(serviceBusParams.Authentication, existingServiceBusMessage.Authentication); } }
/// <summary> /// Get Service bus topic. /// </summary> /// <param name="serviceBusQueueActionParams">Servie bus properities specified via PowerShell.</param> /// <returns>ServiceBusTopicMessage object.</returns> private ServiceBusTopicMessage GetServiceBusTopic(PSServiceBusParams serviceBusQueueActionParams) { if (string.IsNullOrWhiteSpace(serviceBusQueueActionParams.TopicPath)) { throw new PSManagement.PSArgumentException(Resources.SchedulerInvalidServiceBusTopicPath); } var serviceBusTopicMessage = new ServiceBusTopicMessage() { TopicPath = serviceBusQueueActionParams.TopicPath }; this.PopulateServiceBusMessage(serviceBusQueueActionParams, serviceBusTopicMessage); return serviceBusTopicMessage; }