public override void ExecuteCmdlet() { if (this.ShouldProcess(this.EventSubscriptionName, $"Create a new Event Grid subscription {this.EventSubscriptionName}")) { string scope; bool isSubjectCaseSensitive = this.SubjectCaseSensitive.IsPresent; if (!string.IsNullOrEmpty(this.ResourceId)) { scope = this.ResourceId; } else if (this.InputObject != null) { scope = this.InputObject.Id; } else { // ResourceID not specified, build the scope for the event subscription for either the // subscription, or resource group, or custom topic depending on which of the parameters are provided. scope = EventGridUtils.GetScope(this.DefaultContext.Subscription.Id, this.ResourceGroupName, this.TopicName); } EventSubscription eventSubscription = this.Client.CreateEventSubscription(scope, this.EventSubscriptionName, this.Endpoint, this.EndpointType, this.SubjectBeginsWith, this.SubjectEndsWith, isSubjectCaseSensitive, this.IncludedEventType, this.Label); PSEventSubscription psEventSubscription = new PSEventSubscription(eventSubscription); this.WriteObject(psEventSubscription); } }
public override void ExecuteCmdlet() { if (string.IsNullOrEmpty(this.EventSubscriptionName)) { // This can happen with the InputObject parameter set where the // event subscription name needs to be determined based on the piped in // EventSubscriptionObject if (this.InputObject == null) { throw new Exception("Unexpected condition: Event Subscription name cannot be determined."); } this.EventSubscriptionName = this.InputObject.EventSubscriptionName; } if (this.ShouldProcess(this.EventSubscriptionName, $"Update existing Event Grid subscription {this.EventSubscriptionName}")) { string scope; if (!string.IsNullOrEmpty(this.ResourceId)) { scope = this.ResourceId; } else if (this.InputObject != null) { scope = this.InputObject.Topic; } else { // ResourceID not specified, build the scope for the event subscription for either the // subscription, or resource group, or custom topic depending on which of the parameters are provided. scope = EventGridUtils.GetScope(this.DefaultContext.Subscription.Id, this.ResourceGroupName, this.TopicName); } EventSubscription existingEventSubscription = this.Client.GetEventSubscription(scope, this.EventSubscriptionName); if (existingEventSubscription == null) { throw new Exception($"Cannot find an existing event subscription with name {this.EventSubscriptionName}."); } EventSubscription eventSubscription = this.Client.UpdateEventSubscription( scope: scope, eventSubscriptionName: this.EventSubscriptionName, endpoint: this.Endpoint, endpointType: this.EndpointType, subjectBeginsWith: this.SubjectBeginsWith ?? existingEventSubscription.Filter.SubjectBeginsWith, subjectEndsWith: this.SubjectEndsWith ?? existingEventSubscription.Filter.SubjectEndsWith, isSubjectCaseSensitive: existingEventSubscription.Filter.IsSubjectCaseSensitive, includedEventTypes: this.IncludedEventType, labels: this.Label); PSEventSubscription psEventSubscription = new PSEventSubscription(eventSubscription); this.WriteObject(psEventSubscription); } }
public override void ExecuteCmdlet() { if (this.ShouldProcess(this.EventSubscriptionName, $"Create a new Event Grid subscription {this.EventSubscriptionName}")) { string scope; bool isSubjectCaseSensitive = this.SubjectCaseSensitive.IsPresent; RetryPolicy retryPolicy = null; if (!string.IsNullOrEmpty(this.ResourceId)) { scope = this.ResourceId; } else if (this.InputObject != null) { scope = this.InputObject.Id; } else { // ResourceID not specified, build the scope for the event subscription for either the // subscription, or resource group, or custom topic depending on which of the parameters are provided. scope = EventGridUtils.GetScope(this.DefaultContext.Subscription.Id, this.ResourceGroupName, this.TopicName); } if (this.IsParameterBound(c => c.MaxDeliveryAttempt) || this.IsParameterBound(c => c.EventTtl)) { retryPolicy = new RetryPolicy( maxDeliveryAttempts: this.MaxDeliveryAttempt == 0 ? (int?)null : this.MaxDeliveryAttempt, eventTimeToLiveInMinutes: this.EventTtl == 0 ? (int?)null : this.EventTtl); } if (EventGridUtils.ShouldShowEventSubscriptionWarningMessage(this.Endpoint, this.EndpointType)) { WriteWarning(EventGridConstants.EventSubscriptionHandshakeValidationMessage); } EventSubscription eventSubscription = this.Client.CreateEventSubscription( scope, this.EventSubscriptionName, this.Endpoint, this.EndpointType, this.SubjectBeginsWith, this.SubjectEndsWith, isSubjectCaseSensitive, this.IncludedEventType, this.Label, retryPolicy, this.DeadLetterEndpoint); PSEventSubscription psEventSubscription = new PSEventSubscription(eventSubscription); this.WriteObject(psEventSubscription, true); } }
void RetrieveAndWriteEventSubscription(string scope, string eventSubscriptionName, bool includeFullEndpointUrl) { EventSubscription eventSubscription = this.Client.GetEventSubscription(scope, eventSubscriptionName); PSEventSubscription psEventSubscription; if (includeFullEndpointUrl && eventSubscription.Destination is WebHookEventSubscriptionDestination) { EventSubscriptionFullUrl fullUrl = this.Client.GetEventSubscriptionFullUrl(scope, eventSubscriptionName); psEventSubscription = new PSEventSubscription(eventSubscription, fullUrl.EndpointUrl); } else { psEventSubscription = new PSEventSubscription(eventSubscription); } this.WriteObject(psEventSubscription); }
public override void ExecuteCmdlet() { PSEventSubscription psEventSubscription = null; if (this.ShouldProcess(this.EventSubscriptionName, $"Create a new Event Grid subscription {this.EventSubscriptionName}")) { bool isSubjectCaseSensitive = this.SubjectCaseSensitive.IsPresent; bool enableAdvancedFilteringOnArrays = this.AdvancedFilteringOnArray.IsPresent; if (EventGridUtils.ShouldShowEventSubscriptionWarningMessage(this.Endpoint, this.EndpointType)) { WriteWarning(EventGridConstants.EventSubscriptionHandshakeValidationMessage); } if (this.IncludedEventType != null && this.IncludedEventType.Length == 1 && string.Equals(this.IncludedEventType[0], "All", StringComparison.OrdinalIgnoreCase)) { // Show Warning message for user this.IncludedEventType = null; WriteWarning(EventGridConstants.IncludedEventTypeDeprecationMessage); } EventSubscription eventSubscription = this.Client.UpdateSystemTopicEventSubscriptiion( this.EventSubscriptionName, this.ResourceGroupName, this.SystemTopicName, this.DeadLetterEndpoint, this.DeliveryAttributeMapping, this.Endpoint, this.EndpointType, this.Label, this.StorageQueueMessageTtl, this.AdvancedFilter, enableAdvancedFilteringOnArrays, this.IncludedEventType, this.SubjectBeginsWith, this.SubjectEndsWith, isSubjectCaseSensitive); psEventSubscription = new PSEventSubscription(eventSubscription); } this.WriteObject(psEventSubscription, true); }
public override void ExecuteCmdlet() { if (string.IsNullOrEmpty(this.EventSubscriptionName)) { // This can happen with the InputObject parameter set where the // event subscription name needs to be determined based on the piped in // EventSubscriptionObject if (this.InputObject == null) { throw new Exception("Unexpected condition: Event Subscription name cannot be determined."); } this.EventSubscriptionName = this.InputObject.EventSubscriptionName; } if (this.ShouldProcess(this.EventSubscriptionName, $"Update existing Event Grid subscription {this.EventSubscriptionName}")) { string scope; RetryPolicy retryPolicy = null; int? maxEventsPerBatch = null; int? preferredBatchSizeInKiloByte = null; string aadAppIdOrUri = string.Empty; string aadTenantId = string.Empty; if (!string.IsNullOrEmpty(this.ResourceId)) { scope = this.ResourceId; } else if (this.InputObject != null) { scope = this.InputObject.Topic; } else { // ResourceID not specified, build the scope for the event subscription for either the // subscription, or resource group, or custom topic depending on which of the parameters are provided. scope = EventGridUtils.GetScope( this.DefaultContext.Subscription.Id, this.ResourceGroupName, this.TopicName, this.DomainName, this.DomainTopicName); } EventSubscription existingEventSubscription = this.Client.GetEventSubscription(scope, this.EventSubscriptionName); if (existingEventSubscription == null) { throw new Exception($"Cannot find an existing event subscription with name {this.EventSubscriptionName}."); } if (this.IsParameterBound(c => c.MaxDeliveryAttempt) || this.IsParameterBound(c => c.EventTtl)) { retryPolicy = new RetryPolicy(existingEventSubscription.RetryPolicy?.MaxDeliveryAttempts, existingEventSubscription.RetryPolicy?.EventTimeToLiveInMinutes); // Only override the new values if any. if (this.IsParameterBound(c => c.MaxDeliveryAttempt)) { retryPolicy.MaxDeliveryAttempts = this.MaxDeliveryAttempt; } if (this.IsParameterBound(c => c.EventTtl)) { retryPolicy.EventTimeToLiveInMinutes = this.EventTtl; } } else { retryPolicy = existingEventSubscription.RetryPolicy; } if (string.Equals(this.EndpointType, EventGridConstants.Webhook, StringComparison.OrdinalIgnoreCase)) { WebHookEventSubscriptionDestination dest = existingEventSubscription.Destination as WebHookEventSubscriptionDestination; if (dest != null) { maxEventsPerBatch = this.IsParameterBound(c => c.MaxEventsPerBatch) ? (int?)this.MaxEventsPerBatch : dest.MaxEventsPerBatch.HasValue ? dest.MaxEventsPerBatch : null; preferredBatchSizeInKiloByte = this.IsParameterBound(c => c.PreferredBatchSizeInKiloByte) ? (int?)this.PreferredBatchSizeInKiloByte : dest.PreferredBatchSizeInKilobytes.HasValue ? dest.PreferredBatchSizeInKilobytes : null; aadAppIdOrUri = this.IsParameterBound(c => c.AzureActiveDirectoryApplicationIdOrUri) ? this.AzureActiveDirectoryApplicationIdOrUri : dest.AzureActiveDirectoryApplicationIdOrUri; aadTenantId = this.IsParameterBound(c => c.AzureActiveDirectoryTenantId) ? this.AzureActiveDirectoryTenantId : dest.AzureActiveDirectoryTenantId; } else { maxEventsPerBatch = this.IsParameterBound(c => c.MaxEventsPerBatch) ? (int?)this.MaxEventsPerBatch : null; preferredBatchSizeInKiloByte = this.IsParameterBound(c => c.PreferredBatchSizeInKiloByte) ? (int?)this.PreferredBatchSizeInKiloByte : null; aadAppIdOrUri = this.IsParameterBound(c => c.AzureActiveDirectoryApplicationIdOrUri) ? this.AzureActiveDirectoryApplicationIdOrUri : string.Empty; aadTenantId = this.IsParameterBound(c => c.AzureActiveDirectoryTenantId) ? this.AzureActiveDirectoryTenantId : string.Empty; } } else { if (this.IsParameterBound(c => c.MaxEventsPerBatch) || this.IsParameterBound(c => c.PreferredBatchSizeInKiloByte)) { throw new ArgumentException("MaxEventsPerBatch and PreferredBatchSizeInKiloByte are supported when EndpointType is webhook only."); } if (this.IsParameterBound(c => c.AzureActiveDirectoryApplicationIdOrUri) || this.IsParameterBound(c => c.AzureActiveDirectoryTenantId)) { throw new ArgumentException("AzureActiveDirectoryApplicationIdOrUri and AzureActiveDirectoryTenantId are supported when EndpointType is webhook only."); } } if (EventGridUtils.ShouldShowEventSubscriptionWarningMessage(this.Endpoint, this.EndpointType)) { WriteWarning(EventGridConstants.EventSubscriptionHandshakeValidationMessage); } if (this.IncludedEventType != null && this.IncludedEventType.Length == 1 && string.Equals(this.IncludedEventType[0], "All", StringComparison.OrdinalIgnoreCase)) { // Show Warning message for user this.IncludedEventType = null; WriteWarning(EventGridConstants.IncludedEventTypeDeprecationMessage); } EventSubscription eventSubscription = this.Client.UpdateEventSubscription( scope: scope, eventSubscriptionName: this.EventSubscriptionName, endpoint: this.Endpoint, endpointType: this.EndpointType, subjectBeginsWith: this.SubjectBeginsWith ?? existingEventSubscription.Filter.SubjectBeginsWith, subjectEndsWith: this.SubjectEndsWith ?? existingEventSubscription.Filter.SubjectEndsWith, isSubjectCaseSensitive: existingEventSubscription.Filter.IsSubjectCaseSensitive, includedEventTypes: this.IncludedEventType, labels: this.Label, retryPolicy: retryPolicy, deadLetterEndpoint: this.DeadLetterEndpoint, expirationDate: this.ExpirationDate, advancedFilter: this.AdvancedFilter, maxEventsPerBatch: maxEventsPerBatch, preferredBatchSizeInKiloByte: preferredBatchSizeInKiloByte, aadAppIdOrUri: aadAppIdOrUri, aadTenantId: aadTenantId); PSEventSubscription psEventSubscription = new PSEventSubscription(eventSubscription); this.WriteObject(psEventSubscription); } }
public override void ExecuteCmdlet() { if (this.ShouldProcess(this.EventSubscriptionName, $"Create a new Event Grid subscription {this.EventSubscriptionName}")) { string scope; bool isSubjectCaseSensitive = this.SubjectCaseSensitive.IsPresent; RetryPolicy retryPolicy = null; if (!string.IsNullOrEmpty(this.ResourceId)) { scope = this.ResourceId; } else if (this.InputObject != null) { scope = this.InputObject.Id; } else if (this.DomainInputObject != null) { scope = this.DomainInputObject.Id; } else if (this.DomainTopicInputObject != null) { scope = this.DomainTopicInputObject.Id; } else { // ResourceID not specified, build the scope for the event subscription for either the // subscription, or resource group, or custom topic depending on which of the parameters are provided. scope = EventGridUtils.GetScope( this.DefaultContext.Subscription.Id, this.ResourceGroupName, this.TopicName, this.DomainName, this.DomainTopicName); } if (this.IsParameterBound(c => c.MaxDeliveryAttempt) || this.IsParameterBound(c => c.EventTtl)) { retryPolicy = new RetryPolicy( maxDeliveryAttempts: this.MaxDeliveryAttempt == 0 ? (int?)null : this.MaxDeliveryAttempt, eventTimeToLiveInMinutes: this.EventTtl == 0 ? (int?)null : this.EventTtl); } if (!string.Equals(this.EndpointType, EventGridConstants.Webhook, StringComparison.OrdinalIgnoreCase)) { if (this.IsParameterBound(c => c.MaxEventsPerBatch) || this.IsParameterBound(c => c.PreferredBatchSizeInKiloByte)) { throw new ArgumentException("MaxEventsPerBatch and PreferredBatchSizeInKiloByte are supported when EndpointType is webhook only."); } if (this.IsParameterBound(c => c.AzureActiveDirectoryApplicationIdOrUri) || this.IsParameterBound(c => c.AzureActiveDirectoryTenantId)) { throw new ArgumentException("AzureActiveDirectoryApplicationIdOrUri and AzureActiveDirectoryTenantId are supported when EndpointType is webhook only."); } } if (EventGridUtils.ShouldShowEventSubscriptionWarningMessage(this.Endpoint, this.EndpointType)) { WriteWarning(EventGridConstants.EventSubscriptionHandshakeValidationMessage); } if (this.IncludedEventType != null && this.IncludedEventType.Length == 1 && string.Equals(this.IncludedEventType[0], "All", StringComparison.OrdinalIgnoreCase)) { // Show Warning message for user this.IncludedEventType = null; WriteWarning(EventGridConstants.IncludedEventTypeDeprecationMessage); } EventSubscription eventSubscription = this.Client.CreateEventSubscription( scope, this.EventSubscriptionName, this.Endpoint, this.EndpointType, this.SubjectBeginsWith, this.SubjectEndsWith, isSubjectCaseSensitive, this.IncludedEventType, this.Label, retryPolicy, this.DeliverySchema, this.DeadLetterEndpoint, this.ExpirationDate, this.AdvancedFilter, this.MaxEventsPerBatch, this.PreferredBatchSizeInKiloByte, this.AzureActiveDirectoryTenantId, this.AzureActiveDirectoryApplicationIdOrUri); PSEventSubscription psEventSubscription = new PSEventSubscription(eventSubscription); this.WriteObject(psEventSubscription, true); } }
public override void ExecuteCmdlet() { if (string.IsNullOrEmpty(this.EventSubscriptionName)) { // This can happen with the InputObject parameter set where the // event subscription name needs to be determined based on the piped in // EventSubscriptionObject if (this.InputObject == null) { throw new Exception("Unexpected condition: Event Subscription name cannot be determined."); } this.EventSubscriptionName = this.InputObject.EventSubscriptionName; } if (this.ShouldProcess(this.EventSubscriptionName, $"Update existing Event Grid subscription {this.EventSubscriptionName}")) { string scope; RetryPolicy retryPolicy = null; if (!string.IsNullOrEmpty(this.ResourceId)) { scope = this.ResourceId; } else if (this.InputObject != null) { scope = this.InputObject.Topic; } else { // ResourceID not specified, build the scope for the event subscription for either the // subscription, or resource group, or custom topic depending on which of the parameters are provided. scope = EventGridUtils.GetScope(this.DefaultContext.Subscription.Id, this.ResourceGroupName, this.TopicName); } EventSubscription existingEventSubscription = this.Client.GetEventSubscription(scope, this.EventSubscriptionName); if (existingEventSubscription == null) { throw new Exception($"Cannot find an existing event subscription with name {this.EventSubscriptionName}."); } if (this.IsParameterBound(c => c.MaxDeliveryAttempt) || this.IsParameterBound(c => c.EventTtl)) { retryPolicy = new RetryPolicy(existingEventSubscription.RetryPolicy?.MaxDeliveryAttempts, existingEventSubscription.RetryPolicy?.EventTimeToLiveInMinutes); // Only override the new values if any. if (this.IsParameterBound(c => c.MaxDeliveryAttempt)) { retryPolicy.MaxDeliveryAttempts = this.MaxDeliveryAttempt; } if (this.IsParameterBound(c => c.EventTtl)) { retryPolicy.EventTimeToLiveInMinutes = this.EventTtl; } } else { retryPolicy = existingEventSubscription.RetryPolicy; } if (EventGridUtils.ShouldShowEventSubscriptionWarningMessage(this.Endpoint, this.EndpointType)) { WriteWarning(EventGridConstants.EventSubscriptionHandshakeValidationMessage); } EventSubscription eventSubscription = this.Client.UpdateEventSubscription( scope: scope, eventSubscriptionName: this.EventSubscriptionName, endpoint: this.Endpoint, endpointType: this.EndpointType, subjectBeginsWith: this.SubjectBeginsWith ?? existingEventSubscription.Filter.SubjectBeginsWith, subjectEndsWith: this.SubjectEndsWith ?? existingEventSubscription.Filter.SubjectEndsWith, isSubjectCaseSensitive: existingEventSubscription.Filter.IsSubjectCaseSensitive, includedEventTypes: this.IncludedEventType, labels: this.Label, retryPolicy: retryPolicy, deadLetterEndpoint: this.DeadLetterEndpoint); PSEventSubscription psEventSubscription = new PSEventSubscription(eventSubscription); this.WriteObject(psEventSubscription); } }
public override void ExecuteCmdlet() { PSEventSubscription psEventSubscription = null; if (this.ShouldProcess(this.EventSubscriptionName, $"Create a new Event Grid subscription {this.EventSubscriptionName}")) { bool isSubjectCaseSensitive = this.SubjectCaseSensitive.IsPresent; bool enableAdvancedFilteringOnArrays = this.AdvancedFilteringOnArray.IsPresent; RetryPolicy retryPolicy = null; if (this.IsParameterBound(c => c.MaxDeliveryAttempt) || this.IsParameterBound(c => c.EventTtl)) { retryPolicy = new RetryPolicy( maxDeliveryAttempts: this.MaxDeliveryAttempt == 0 ? (int?)null : this.MaxDeliveryAttempt, eventTimeToLiveInMinutes: this.EventTtl == 0 ? (int?)null : this.EventTtl); } if (!string.Equals(this.EndpointType, EventGridConstants.Webhook, StringComparison.OrdinalIgnoreCase)) { if (this.IsParameterBound(c => c.MaxEventsPerBatch) || this.IsParameterBound(c => c.PreferredBatchSizeInKiloByte)) { throw new ArgumentException("MaxEventsPerBatch and PreferredBatchSizeInKiloByte are supported when EndpointType is webhook only."); } if (this.IsParameterBound(c => c.AzureActiveDirectoryApplicationIdOrUri) || this.IsParameterBound(c => c.AzureActiveDirectoryTenantId)) { throw new ArgumentException("AzureActiveDirectoryApplicationIdOrUri and AzureActiveDirectoryTenantId are supported when EndpointType is webhook only."); } } if (EventGridUtils.ShouldShowEventSubscriptionWarningMessage(this.Endpoint, this.EndpointType)) { WriteWarning(EventGridConstants.EventSubscriptionHandshakeValidationMessage); } if (this.IncludedEventType != null && this.IncludedEventType.Length == 1 && string.Equals(this.IncludedEventType[0], "All", StringComparison.OrdinalIgnoreCase)) { // Show Warning message for user this.IncludedEventType = null; WriteWarning(EventGridConstants.IncludedEventTypeDeprecationMessage); } EventSubscription eventSubscription = this.Client.createSystemTopicEventSubscriptiion( this.EventSubscriptionName, this.ResourceGroupName, this.SystemTopicName, this.AzureActiveDirectoryApplicationIdOrUri, this.AzureActiveDirectoryTenantId, this.DeadLetterEndpoint, this.DeliveryAttributeMapping, this.Endpoint, this.EndpointType, this.DeliverySchema, retryPolicy, this.ExpirationDate, this.Label, this.MaxEventsPerBatch, this.PreferredBatchSizeInKiloByte, this.StorageQueueMessageTtl, this.AdvancedFilter, enableAdvancedFilteringOnArrays, this.IncludedEventType, this.SubjectBeginsWith, this.SubjectEndsWith, isSubjectCaseSensitive); psEventSubscription = new PSEventSubscription(eventSubscription); } this.WriteObject(psEventSubscription, true); }
public override void ExecuteCmdlet() { string newNextLink = null; int? providedTop = null; bool includeFullEndpointUrl = this.IncludeFullEndpointUrl.IsPresent; if (string.IsNullOrEmpty(this.ResourceGroupName)) { throw new ArgumentNullException( this.ResourceGroupName, "Resource Group Name should be specified to retrieve event subscriptions for a system topic"); } if (string.IsNullOrEmpty(this.SystemTopicName)) { throw new ArgumentNullException( this.SystemTopicName, "System topic Name should be specified to retrieve event subscriptions for a system topic"); } if (MyInvocation.BoundParameters.ContainsKey(nameof(this.Top))) { providedTop = this.Top; } if (!string.IsNullOrEmpty(this.EventSubscriptionName)) { EventSubscription eventSubscription = this.Client.GetSystemTopicEventSubscriptiion(this.ResourceGroupName, this.SystemTopicName, this.EventSubscriptionName); PSEventSubscription psEventSubscription; if (includeFullEndpointUrl && eventSubscription.Destination is WebHookEventSubscriptionDestination) { EventSubscriptionFullUrl fullUrl = this.Client.GetAzFullUrlForSystemTopicEventSubscription(this.ResourceGroupName, this.SystemTopicName, this.EventSubscriptionName); psEventSubscription = new PSEventSubscription(eventSubscription, fullUrl.EndpointUrl); } else { psEventSubscription = new PSEventSubscription(eventSubscription); } this.WriteObject(psEventSubscription); } else { // EventSubscription name was not specified, we need to retrieve a list of // event subscriptions based on the provided parameters. IEnumerable <EventSubscription> eventSubscriptionsList = null; // Other parameters should be null or ignored if this.NextLink is specified. if (!string.IsNullOrEmpty(this.NextLink)) { (eventSubscriptionsList, newNextLink) = this.Client.ListSystemTopicEventSubscriptionsNext(this.NextLink); } else { (eventSubscriptionsList, newNextLink) = this.Client.ListSystemTopicEventSubscriptions(this.ResourceGroupName, this.SystemTopicName, this.ODataQuery, providedTop); } this.WritePSEventSubscriptionsList(eventSubscriptionsList, includeFullEndpointUrl, newNextLink); } }