diff --git a/sdk/eventgrid/azure-eventgrid/CHANGELOG.md b/sdk/eventgrid/azure-eventgrid/CHANGELOG.md index 3dfd9d3ff71d..ab2633b61902 100644 --- a/sdk/eventgrid/azure-eventgrid/CHANGELOG.md +++ b/sdk/eventgrid/azure-eventgrid/CHANGELOG.md @@ -7,7 +7,7 @@ - `EventGridConsumer` is now renamed to `EventGridDeserializer`. - `decode_cloud_event` is renamed to `deserialize_cloud_events`. - `decode_eventgrid_event` is renamed to `deserialize_eventgrid_events`. - - The system events now exist in the `azure.eventgrid.systemevents` namespace instead of `azure.eventgrid.models` namespace. + - `azure.eventgrid.models` namespace along with all the models in it are now removed. `azure.eventgrid.SystemEventMappings` can be used to get the event model type mapping. - `topic_hostname` is renamed to `endpoint` in the `EventGridPublisherClient`. - `data` is now a required param for `CloudEvent`. - `azure.eventgrid.generate_shared_access_signature` method is now renamed to `generate_sas`. diff --git a/sdk/eventgrid/azure-eventgrid/azure/eventgrid/__init__.py b/sdk/eventgrid/azure-eventgrid/azure/eventgrid/__init__.py index 2685b6fd6780..9b31b705f32c 100644 --- a/sdk/eventgrid/azure-eventgrid/azure/eventgrid/__init__.py +++ b/sdk/eventgrid/azure-eventgrid/azure/eventgrid/__init__.py @@ -6,11 +6,13 @@ from ._publisher_client import EventGridPublisherClient from ._consumer import EventGridDeserializer +from ._event_mappings import SystemEventMappings from ._helpers import generate_sas from ._models import CloudEvent, CustomEvent, EventGridEvent from ._version import VERSION __all__ = ['EventGridPublisherClient', 'EventGridDeserializer', - 'CloudEvent', 'CustomEvent', 'EventGridEvent', 'generate_sas' + 'CloudEvent', 'CustomEvent', 'EventGridEvent', 'generate_sas', + 'SystemEventMappings' ] __version__ = VERSION diff --git a/sdk/eventgrid/azure-eventgrid/azure/eventgrid/_consumer.py b/sdk/eventgrid/azure-eventgrid/azure/eventgrid/_consumer.py index 0d44de9445c6..9246457378c1 100644 --- a/sdk/eventgrid/azure-eventgrid/azure/eventgrid/_consumer.py +++ b/sdk/eventgrid/azure-eventgrid/azure/eventgrid/_consumer.py @@ -24,6 +24,9 @@ class EventGridDeserializer(object): def deserialize_cloud_events(self, cloud_event, **kwargs): # pylint: disable=no-self-use # type: (Union[str, dict, bytes], Any) -> CloudEvent """Single event following CloudEvent schema will be parsed and returned as Deserialized Event. + Use `.data` to get the data in the raw format. To check the list of recognizable system topics, + visit https://docs.microsoft.com/azure/event-grid/system-topics. + :param cloud_event: The event to be deserialized. :type cloud_event: Union[str, dict, bytes] :rtype: CloudEvent @@ -34,11 +37,8 @@ def deserialize_cloud_events(self, cloud_event, **kwargs): # pylint: disable=no- try: cloud_event = CloudEvent._from_json(cloud_event, encode) # pylint: disable=protected-access deserialized_event = CloudEvent._from_generated(cloud_event) # pylint: disable=protected-access - CloudEvent._deserialize_data(deserialized_event, deserialized_event.type) # pylint: disable=protected-access return deserialized_event except Exception as err: - _LOGGER.error('Error: cannot deserialize event. Event does not have a valid format. \ - Event must be a string, dict, or bytes following the CloudEvent schema.') _LOGGER.error('Your event: %s', cloud_event) _LOGGER.error(err) raise ValueError('Error: cannot deserialize event. Event does not have a valid format. \ @@ -47,6 +47,9 @@ def deserialize_cloud_events(self, cloud_event, **kwargs): # pylint: disable=no- def deserialize_eventgrid_events(self, eventgrid_event, **kwargs): # pylint: disable=no-self-use # type: (Union[str, dict, bytes], Any) -> EventGridEvent """Single event following EventGridEvent schema will be parsed and returned as Deserialized Event. + Use `.data` to get the data in the raw format. To check the list of recognizable system topics, + visit https://docs.microsoft.com/azure/event-grid/system-topics. + :param eventgrid_event: The event to be deserialized. :type eventgrid_event: Union[str, dict, bytes] :rtype: EventGridEvent @@ -57,11 +60,8 @@ def deserialize_eventgrid_events(self, eventgrid_event, **kwargs): # pylint: dis try: eventgrid_event = EventGridEvent._from_json(eventgrid_event, encode) # pylint: disable=protected-access deserialized_event = EventGridEvent.deserialize(eventgrid_event) - EventGridEvent._deserialize_data(deserialized_event, deserialized_event.event_type) # pylint: disable=protected-access return cast(EventGridEvent, deserialized_event) except Exception as err: - _LOGGER.error('Error: cannot deserialize event. Event does not have a valid format. \ - Event must be a string, dict, or bytes following the CloudEvent schema.') _LOGGER.error('Your event: %s', eventgrid_event) _LOGGER.error(err) raise ValueError('Error: cannot deserialize event. Event does not have a valid format. \ diff --git a/sdk/eventgrid/azure-eventgrid/azure/eventgrid/_event_mappings.py b/sdk/eventgrid/azure-eventgrid/azure/eventgrid/_event_mappings.py index f0c760f59b80..8be2cdc39c03 100644 --- a/sdk/eventgrid/azure-eventgrid/azure/eventgrid/_event_mappings.py +++ b/sdk/eventgrid/azure-eventgrid/azure/eventgrid/_event_mappings.py @@ -2,109 +2,110 @@ # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- -from ._generated import models +from enum import Enum -_event_mappings = { - "Microsoft.Communication.ChatMemberAddedToThreadWithUser": models.ACSChatMemberAddedToThreadWithUserEventData, - "Microsoft.Communication.ChatMemberRemovedFromThreadWithUser": - models.ACSChatMemberRemovedFromThreadWithUserEventData, - "Microsoft.Communication.ChatMessageDeleted": models.ACSChatMessageDeletedEventData, - "Microsoft.Communication.ChatMessageEdited": models.ACSChatMessageEditedEventData, - "Microsoft.Communication.ChatMessageReceived": models.ACSChatMessageReceivedEventData, - "Microsoft.Communication.ChatThreadCreatedWithUser": models.ACSChatThreadCreatedWithUserEventData, - "Microsoft.Communication.ChatThreadPropertiesUpdatedPerUser": models.ACSChatThreadPropertiesUpdatedPerUserEventData, - "Microsoft.Communication.ChatThreadWithUserDeleted": models.ACSChatThreadWithUserDeletedEventData, - "Microsoft.Communication.SMSDeliveryReportReceived": models.ACSSMSDeliveryReportReceivedEventData, - "Microsoft.Communication.SMSReceived": models.ACSSMSReceivedEventData, - "Microsoft.AppConfiguration.KeyValueDeleted": models.AppConfigurationKeyValueDeletedEventData, - "Microsoft.AppConfiguration.KeyValueModified": models.AppConfigurationKeyValueModifiedEventData, - "Microsoft.ContainerRegistry.ImagePushed": models.ContainerRegistryImagePushedEventData, - "Microsoft.ContainerRegistry.ImageDeleted": models.ContainerRegistryImageDeletedEventData, - "Microsoft.ContainerRegistry.ChartDeleted": models.ContainerRegistryChartDeletedEventData, - "Microsoft.ContainerRegistry.ChartPushed": models.ContainerRegistryChartPushedEventData, - "Microsoft.Devices.DeviceCreated": models.IotHubDeviceCreatedEventData, - "Microsoft.Devices.DeviceDeleted": models.IotHubDeviceDeletedEventData, - "Microsoft.Devices.DeviceConnected": models.IotHubDeviceConnectedEventData, - "Microsoft.Devices.DeviceDisconnected": models.IotHubDeviceDisconnectedEventData, - "Microsoft.Devices.DeviceTelemetry": models.IotHubDeviceTelemetryEventData, - "Microsoft.EventGrid.SubscriptionValidationEvent": models.SubscriptionValidationEventData, - "Microsoft.EventGrid.SubscriptionDeletedEvent": models.SubscriptionDeletedEventData, - "Microsoft.EventHub.CaptureFileCreated": models.EventHubCaptureFileCreatedEventData, - "Microsoft.KeyVault.CertificateNewVersionCreated": models.KeyVaultCertificateNewVersionCreatedEventData, - "Microsoft.KeyVault.CertificateNearExpiry": models.KeyVaultCertificateNearExpiryEventData, - "Microsoft.KeyVault.CertificateExpired": models.KeyVaultCertificateExpiredEventData, - "Microsoft.KeyVault.KeyNewVersionCreated": models.KeyVaultKeyNewVersionCreatedEventData, - "Microsoft.KeyVault.KeyNearExpiry": models.KeyVaultKeyNearExpiryEventData, - "Microsoft.KeyVault.KeyExpired": models.KeyVaultKeyExpiredEventData, - "Microsoft.KeyVault.SecretNewVersionCreated": models.KeyVaultSecretNewVersionCreatedEventData, - "Microsoft.KeyVault.SecretNearExpiry": models.KeyVaultSecretNearExpiryEventData, - "Microsoft.KeyVault.SecretExpired": models.KeyVaultSecretExpiredEventData, - "Microsoft.KeyVault.VaultAccessPolicyChanged": models.KeyVaultAccessPolicyChangedEventData, - "Microsoft.MachineLearningServices.DatasetDriftDetected": - models.MachineLearningServicesDatasetDriftDetectedEventData, - "Microsoft.MachineLearningServices.ModelDeployed": models.MachineLearningServicesModelDeployedEventData, - "Microsoft.MachineLearningServices.ModelRegistered": models.MachineLearningServicesModelRegisteredEventData, - "Microsoft.MachineLearningServices.RunCompleted": models.MachineLearningServicesRunCompletedEventData, - "Microsoft.MachineLearningServices.RunStatusChanged": models.MachineLearningServicesRunStatusChangedEventData, - "Microsoft.Maps.GeofenceEntered": models.MapsGeofenceEnteredEventData, - "Microsoft.Maps.GeofenceExited": models.MapsGeofenceExitedEventData, - "Microsoft.Maps.GeofenceResult": models.MapsGeofenceResultEventData, - "Microsoft.Media.JobStateChange": models.MediaJobStateChangeEventData, - "Microsoft.Media.JobOutputStateChange": models.MediaJobOutputStateChangeEventData, - "Microsoft.Media.JobScheduled": models.MediaJobScheduledEventData, - "Microsoft.Media.JobProcessing": models.MediaJobProcessingEventData, - "Microsoft.Media.JobCanceling": models.MediaJobCancelingEventData, - "Microsoft.Media.JobFinished": models.MediaJobFinishedEventData, - "Microsoft.Media.JobCanceled": models.MediaJobCanceledEventData, - "Microsoft.Media.JobErrored": models.MediaJobErroredEventData, - "Microsoft.Media.JobOutputCanceled": models.MediaJobOutputCanceledEventData, - "Microsoft.Media.JobOutputCanceling": models.MediaJobOutputCancelingEventData, - "Microsoft.Media.JobOutputErrored": models.MediaJobOutputErroredEventData, - "Microsoft.Media.JobOutputFinished": models.MediaJobOutputFinishedEventData, - "Microsoft.Media.JobOutputProcessing": models.MediaJobOutputProcessingEventData, - "Microsoft.Media.JobOutputScheduled": models.MediaJobOutputScheduledEventData, - "Microsoft.Media.JobOutputProgress": models.MediaJobOutputProgressEventData, - "Microsoft.Media.LiveEventEncoderConnected": models.MediaLiveEventEncoderConnectedEventData, - "Microsoft.Media.LiveEventConnectionRejected": models.MediaLiveEventConnectionRejectedEventData, - "Microsoft.Media.LiveEventEncoderDisconnected": models.MediaLiveEventEncoderDisconnectedEventData, - "Microsoft.Media.LiveEventIncomingStreamReceived": models.MediaLiveEventIncomingStreamReceivedEventData, - "Microsoft.Media.LiveEventIncomingStreamsOutOfSync": models.MediaLiveEventIncomingStreamsOutOfSyncEventData, - "Microsoft.Media.LiveEventIncomingVideoStreamsOutOfSync": - models.MediaLiveEventIncomingVideoStreamsOutOfSyncEventData, - "Microsoft.Media.LiveEventIncomingDataChunkDropped": models.MediaLiveEventIncomingDataChunkDroppedEventData, - "Microsoft.Media.LiveEventIngestHeartbeat": models.MediaLiveEventIngestHeartbeatEventData, - "Microsoft.Media.LiveEventTrackDiscontinuityDetected": models.MediaLiveEventTrackDiscontinuityDetectedEventData, - "Microsoft.Resources.ResourceWriteSuccess": models.ResourceWriteSuccessData, - "Microsoft.Resources.ResourceWriteFailure": models.ResourceWriteFailureData, - "Microsoft.Resources.ResourceWriteCancel": models.ResourceWriteCancelData, - "Microsoft.Resources.ResourceDeleteSuccess": models.ResourceDeleteSuccessData, - "Microsoft.Resources.ResourceDeleteFailure": models.ResourceDeleteFailureData, - "Microsoft.Resources.ResourceDeleteCancel": models.ResourceDeleteCancelData, - "Microsoft.Resources.ResourceActionSuccess": models.ResourceActionSuccessData, - "Microsoft.Resources.ResourceActionFailure": models.ResourceActionFailureData, - "Microsoft.Resources.ResourceActionCancel": models.ResourceActionCancelData, - "Microsoft.ServiceBus.ActiveMessagesAvailableWithNoListeners": - models.ServiceBusActiveMessagesAvailableWithNoListenersEventData, - "Microsoft.ServiceBus.DeadletterMessagesAvailableWithNoListener": - models.ServiceBusDeadletterMessagesAvailableWithNoListenersEventData, - "Microsoft.Storage.BlobCreated": models.StorageBlobCreatedEventData, - "Microsoft.Storage.BlobDeleted": models.StorageBlobDeletedEventData, - "Microsoft.Storage.BlobRenamed": models.StorageBlobRenamedEventData, - "Microsoft.Storage.DirectoryCreated": models.StorageDirectoryCreatedEventData, - "Microsoft.Storage.DirectoryDeleted": models.StorageDirectoryDeletedEventData, - "Microsoft.Storage.DirectoryRenamed": models.StorageDirectoryRenamedEventData, - "Microsoft.Storage.LifecyclePolicyCompleted": models.StorageLifecyclePolicyCompletedEventData, - "Microsoft.Web.AppUpdated": models.WebAppUpdatedEventData, - "Microsoft.Web.BackupOperationStarted": models.WebBackupOperationStartedEventData, - "Microsoft.Web.BackupOperationCompleted": models.WebBackupOperationCompletedEventData, - "Microsoft.Web.BackupOperationFailed": models.WebBackupOperationFailedEventData, - "Microsoft.Web.RestoreOperationStarted": models.WebRestoreOperationStartedEventData, - "Microsoft.Web.RestoreOperationCompleted": models.WebRestoreOperationCompletedEventData, - "Microsoft.Web.RestoreOperationFailed": models.WebRestoreOperationFailedEventData, - "Microsoft.Web.SlotSwapStarted": models.WebSlotSwapStartedEventData, - "Microsoft.Web.SlotSwapCompleted": models.WebSlotSwapCompletedEventData, - "Microsoft.Web.SlotSwapFailed": models.WebSlotSwapFailedEventData, - "Microsoft.Web.SlotSwapWithPreviewStarted": models.WebSlotSwapWithPreviewStartedEventData, - "Microsoft.Web.SlotSwapWithPreviewCancelled": models.WebSlotSwapWithPreviewCancelledEventData, - "Microsoft.Web.AppServicePlanUpdated": models.WebAppServicePlanUpdatedEventData, -} +class SystemEventMappings(str, Enum): + """ + This enum represents the names of the various event types for the system events published to + Azure Event Grid. To check the list of recognizable system topics, + visit https://docs.microsoft.com/azure/event-grid/system-topics. + """ + ACSChatMemberAddedToThreadWithUserEventName = "Microsoft.Communication.ChatMemberAddedToThreadWithUser" + ACSChatMemberRemovedFromThreadWithUserEventName = "Microsoft.Communication.ChatMemberRemovedFromThreadWithUser" + ACSChatMessageDeletedEventName = "Microsoft.Communication.ChatMessageDeleted" + ACSChatMessageEditedEventName = "Microsoft.Communication.ChatMessageEdited" + ACSChatMessageReceivedEventName = "Microsoft.Communication.ChatMessageReceived" + ACSChatThreadCreatedWithUserEventName = "Microsoft.Communication.ChatThreadCreatedWithUser" + ACSChatThreadPropertiesUpdatedPerUserEventName = "Microsoft.Communication.ChatThreadPropertiesUpdatedPerUser" + ACSChatThreadWithUserDeletedEventName = "Microsoft.Communication.ChatThreadWithUserDeleted" + ACSSMSDeliveryReportReceivedEventName = "Microsoft.Communication.SMSDeliveryReportReceived" + ACSSMSReceivedEventName = "Microsoft.Communication.SMSReceived" + AppConfigurationKeyValueDeletedEventName = "Microsoft.AppConfiguration.KeyValueDeleted" + AppConfigurationKeyValueModifiedEventName = "Microsoft.AppConfiguration.KeyValueModified" + ContainerRegistryChartDeletedEventName = "Microsoft.ContainerRegistry.ChartDeleted" + ContainerRegistryChartPushedEventName = "Microsoft.ContainerRegistry.ChartPushed" + ContainerRegistryImageDeletedEventName = "Microsoft.ContainerRegistry.ImageDeleted" + ContainerRegistryImagePushedEventName = "Microsoft.ContainerRegistry.ImagePushed" + EventGridSubscriptionDeletedEventName = "Microsoft.EventGrid.SubscriptionDeletedEvent" + EventGridSubscriptionValidationEventName = "Microsoft.EventGrid.SubscriptionValidationEvent" + EventHubCaptureFileCreatedEventName = "Microsoft.EventHub.CaptureFileCreated" + IoTHubDeviceConnectedEventName = "Microsoft.Devices.DeviceConnected" + IoTHubDeviceCreatedEventName = "Microsoft.Devices.DeviceCreated" + IoTHubDeviceDeletedEventName = "Microsoft.Devices.DeviceDeleted" + IoTHubDeviceDisconnectedEventName = "Microsoft.Devices.DeviceDisconnected" + IotHubDeviceTelemetryEventName = "Microsoft.Devices.DeviceTelemetry" + KeyVaultAccessPolicyChangedEventName = "Microsoft.KeyVault.VaultAccessPolicyChanged" + KeyVaultCertificateExpiredEventName = "Microsoft.KeyVault.CertificateExpired" + KeyVaultCertificateNearExpiryEventName = "Microsoft.KeyVault.CertificateNearExpiry" + KeyVaultCertificateNewVersionCreatedEventName = "Microsoft.KeyVault.CertificateNewVersionCreated" + KeyVaultKeyExpiredEventName = "Microsoft.KeyVault.KeyExpired" + KeyVaultKeyNearExpiryEventName = "Microsoft.KeyVault.KeyNearExpiry" + KeyVaultKeyNewVersionCreatedEventName = "Microsoft.KeyVault.KeyNewVersionCreated" + KeyVaultSecretExpiredEventName = "Microsoft.KeyVault.SecretExpired" + KeyVaultSecretNearExpiryEventName = "Microsoft.KeyVault.SecretNearExpiry" + KeyVaultSecretNewVersionCreatedEventName = "Microsoft.KeyVault.SecretNewVersionCreated" + MachineLearningServicesDatasetDriftDetectedEventName = "Microsoft.MachineLearningServices.DatasetDriftDetected" + MachineLearningServicesModelDeployedEventName = "Microsoft.MachineLearningServices.ModelDeployed" + MachineLearningServicesModelRegisteredEventName = "Microsoft.MachineLearningServices.ModelRegistered" + MachineLearningServicesRunCompletedEventName = "Microsoft.MachineLearningServices.RunCompleted" + MachineLearningServicesRunStatusChangedEventName = "Microsoft.MachineLearningServices.RunStatusChanged" + MapsGeofenceEnteredEventName = "Microsoft.Maps.GeofenceEntered" + MapsGeofenceExitedEventName = "Microsoft.Maps.GeofenceExited" + MapsGeofenceResultEventName = "Microsoft.Maps.GeofenceResult" + MediaJobCanceledEventName = "Microsoft.Media.JobCanceled" + MediaJobCancelingEventName = "Microsoft.Media.JobCanceling" + MediaJobErroredEventName = "Microsoft.Media.JobErrored" + MediaJobFinishedEventName = "Microsoft.Media.JobFinished" + MediaJobOutputCanceledEventName = "Microsoft.Media.JobOutputCanceled" + MediaJobOutputCancelingEventName = "Microsoft.Media.JobOutputCanceling" + MediaJobOutputErroredEventName = "Microsoft.Media.JobOutputErrored" + MediaJobOutputFinishedEventName = "Microsoft.Media.JobOutputFinished" + MediaJobOutputProcessingEventName = "Microsoft.Media.JobOutputProcessing" + MediaJobOutputProgressEventName = "Microsoft.Media.JobOutputProgress" + MediaJobOutputScheduledEventName = "Microsoft.Media.JobOutputScheduled" + MediaJobOutputStateChangeEventName = "Microsoft.Media.JobOutputStateChange" + MediaJobProcessingEventName = "Microsoft.Media.JobProcessing" + MediaJobScheduledEventName = "Microsoft.Media.JobScheduled" + MediaJobStateChangeEventName = "Microsoft.Media.JobStateChange" + MediaLiveEventConnectionRejectedEventName = "Microsoft.Media.LiveEventConnectionRejected" + MediaLiveEventEncoderConnectedEventName = "Microsoft.Media.LiveEventEncoderConnected" + MediaLiveEventEncoderDisconnectedEventName = "Microsoft.Media.LiveEventEncoderDisconnected" + MediaLiveEventIncomingDataChunkDroppedEventName = "Microsoft.Media.LiveEventIncomingDataChunkDropped" + MediaLiveEventIncomingStreamReceivedEventName = "Microsoft.Media.LiveEventIncomingStreamReceived" + MediaLiveEventIncomingStreamsOutOfSyncEventName = "Microsoft.Media.LiveEventIncomingStreamsOutOfSync" + MediaLiveEventIncomingVideoStreamsOutOfSyncEventName = "Microsoft.Media.LiveEventIncomingVideoStreamsOutOfSync" + MediaLiveEventIngestHeartbeatEventName = "Microsoft.Media.LiveEventIngestHeartbeat" + MediaLiveEventTrackDiscontinuityDetectedEventName = "Microsoft.Media.LiveEventTrackDiscontinuityDetected" + ResourceActionCancelEventName = "Microsoft.Resources.ResourceActionCancel" + ResourceActionFailureEventName = "Microsoft.Resources.ResourceActionFailure" + ResourceActionSuccessEventName = "Microsoft.Resources.ResourceActionSuccess" + ResourceDeleteCancelEventName = "Microsoft.Resources.ResourceDeleteCancel" + ResourceDeleteFailureEventName = "Microsoft.Resources.ResourceDeleteFailure" + ResourceDeleteSuccessEventName = "Microsoft.Resources.ResourceDeleteSuccess" + ResourceWriteCancelEventName = "Microsoft.Resources.ResourceWriteCancel" + ResourceWriteFailureEventName = "Microsoft.Resources.ResourceWriteFailure" + ResourceWriteSuccessEventName = "Microsoft.Resources.ResourceWriteSuccess" + ServiceBusActiveMessagesAvailableWithNoListenersEventName = \ + "Microsoft.ServiceBus.ActiveMessagesAvailableWithNoListeners" + ServiceBusDeadletterMessagesAvailableWithNoListenerEventName = \ + "Microsoft.ServiceBus.DeadletterMessagesAvailableWithNoListener" + StorageBlobCreatedEventName = "Microsoft.Storage.BlobCreated" + StorageBlobDeletedEventName = "Microsoft.Storage.BlobDeleted" + StorageBlobRenamedEventName = "Microsoft.Storage.BlobRenamed" + StorageDirectoryCreatedEventName = "Microsoft.Storage.DirectoryCreated" + StorageDirectoryDeletedEventName = "Microsoft.Storage.DirectoryDeleted" + StorageDirectoryRenamedEventName = "Microsoft.Storage.DirectoryRenamed" + StorageLifecyclePolicyCompletedEventName = "Microsoft.Storage.LifecyclePolicyCompleted" + WebAppServicePlanUpdatedEventName = "Microsoft.Web.AppServicePlanUpdated" + WebAppUpdatedEventName = "Microsoft.Web.AppUpdated" + WebBackupOperationCompletedEventName = "Microsoft.Web.BackupOperationCompleted" + WebBackupOperationFailedEventName = "Microsoft.Web.BackupOperationFailed" + WebBackupOperationStartedEventName = "Microsoft.Web.BackupOperationStarted" + WebRestoreOperationCompletedEventName = "Microsoft.Web.RestoreOperationCompleted" + WebRestoreOperationFailedEventName = "Microsoft.Web.RestoreOperationFailed" + WebRestoreOperationStartedEventName = "Microsoft.Web.RestoreOperationStarted" + WebSlotSwapCompletedEventName = "Microsoft.Web.SlotSwapCompleted" + WebSlotSwapFailedEventName = "Microsoft.Web.SlotSwapFailed" + WebSlotSwapStartedEventName = "Microsoft.Web.SlotSwapStarted" + WebSlotSwapWithPreviewCancelledEventName = "Microsoft.Web.SlotSwapWithPreviewCancelled" + WebSlotSwapWithPreviewStartedEventName = "Microsoft.Web.SlotSwapWithPreviewStarted" diff --git a/sdk/eventgrid/azure-eventgrid/azure/eventgrid/_models.py b/sdk/eventgrid/azure-eventgrid/azure/eventgrid/_models.py index b9e23ec5a418..4be822e73ee2 100644 --- a/sdk/eventgrid/azure-eventgrid/azure/eventgrid/_models.py +++ b/sdk/eventgrid/azure-eventgrid/azure/eventgrid/_models.py @@ -11,27 +11,12 @@ from msrest.serialization import UTC from ._generated.models import EventGridEvent as InternalEventGridEvent, CloudEvent as InternalCloudEvent from ._shared.mixins import DictMixin -from ._event_mappings import _event_mappings class EventMixin(object): """ Mixin for the event models comprising of some helper methods. """ - @staticmethod - def _deserialize_data(event, event_type): - """ - Sets the data of the desrialized event to strongly typed event object if event type exists in _event_mappings. - Otherwise, sets it to None. - - :param str event_type: The event_type of the EventGridEvent object or the type of the CloudEvent object. - """ - # if system event type defined, set event.data to system event object - try: - event.data = (_event_mappings[event_type]).deserialize(event.data) - except KeyError: # else, if custom event, then event.data is dict and should be set to None - event.data = None - @staticmethod def _from_json(event, encode): """ diff --git a/sdk/eventgrid/azure-eventgrid/azure/eventgrid/systemevents/__init__.py b/sdk/eventgrid/azure-eventgrid/azure/eventgrid/systemevents/__init__.py deleted file mode 100644 index b5dc04bce69b..000000000000 --- a/sdk/eventgrid/azure-eventgrid/azure/eventgrid/systemevents/__init__.py +++ /dev/null @@ -1,302 +0,0 @@ -# coding=utf-8 -# -------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT License. See License.txt in the project root for license information. -# -------------------------------------------------------------------------- - -from .._generated.models import( - ACSChatEventBaseProperties, - ACSChatMemberAddedToThreadWithUserEventData, - ACSChatMemberRemovedFromThreadWithUserEventData, - ACSChatMessageDeletedEventData, - ACSChatMessageEditedEventData, - ACSChatMessageEventBaseProperties, - ACSChatMessageReceivedEventData, - ACSChatThreadCreatedWithUserEventData, - ACSChatThreadEventBaseProperties, - ACSChatThreadMemberProperties, - ACSChatThreadPropertiesUpdatedPerUserEventData, - ACSChatThreadWithUserDeletedEventData, - ACSSMSDeliveryAttemptProperties, - ACSSMSDeliveryReportReceivedEventData, - ACSSMSEventBaseProperties, - ACSSMSReceivedEventData, - AppConfigurationKeyValueDeletedEventData, - AppConfigurationKeyValueModifiedEventData, - AppEventTypeDetail, - AppServicePlanEventTypeDetail, - ContainerRegistryArtifactEventData, - ContainerRegistryArtifactEventTarget, - ContainerRegistryChartDeletedEventData, - ContainerRegistryChartPushedEventData, - ContainerRegistryEventActor, - ContainerRegistryEventData, - ContainerRegistryEventRequest, - ContainerRegistryEventSource, - ContainerRegistryEventTarget, - ContainerRegistryImageDeletedEventData, - ContainerRegistryImagePushedEventData, - DeviceConnectionStateEventInfo, - DeviceConnectionStateEventProperties, - DeviceLifeCycleEventProperties, - DeviceTelemetryEventProperties, - DeviceTwinInfo, - DeviceTwinInfoProperties, - DeviceTwinInfoX509Thumbprint, - DeviceTwinMetadata, - DeviceTwinProperties, - EventHubCaptureFileCreatedEventData, - IotHubDeviceConnectedEventData, - IotHubDeviceCreatedEventData, - IotHubDeviceDeletedEventData, - IotHubDeviceDisconnectedEventData, - IotHubDeviceTelemetryEventData, - KeyVaultAccessPolicyChangedEventData, - KeyVaultCertificateExpiredEventData, - KeyVaultCertificateNearExpiryEventData, - KeyVaultCertificateNewVersionCreatedEventData, - KeyVaultKeyExpiredEventData, - KeyVaultKeyNearExpiryEventData, - KeyVaultKeyNewVersionCreatedEventData, - KeyVaultSecretExpiredEventData, - KeyVaultSecretNearExpiryEventData, - KeyVaultSecretNewVersionCreatedEventData, - MachineLearningServicesDatasetDriftDetectedEventData, - MachineLearningServicesModelDeployedEventData, - MachineLearningServicesModelRegisteredEventData, - MachineLearningServicesRunCompletedEventData, - MachineLearningServicesRunStatusChangedEventData, - MapsGeofenceEnteredEventData, - MapsGeofenceEventProperties, - MapsGeofenceExitedEventData, - MapsGeofenceGeometry, - MapsGeofenceResultEventData, - MediaJobCanceledEventData, - MediaJobCancelingEventData, - MediaJobError, - MediaJobErrorDetail, - MediaJobErroredEventData, - MediaJobFinishedEventData, - MediaJobOutput, - MediaJobOutputAsset, - MediaJobOutputCanceledEventData, - MediaJobOutputCancelingEventData, - MediaJobOutputErroredEventData, - MediaJobOutputFinishedEventData, - MediaJobOutputProcessingEventData, - MediaJobOutputProgressEventData, - MediaJobOutputScheduledEventData, - MediaJobOutputStateChangeEventData, - MediaJobProcessingEventData, - MediaJobScheduledEventData, - MediaJobStateChangeEventData, - MediaLiveEventConnectionRejectedEventData, - MediaLiveEventEncoderConnectedEventData, - MediaLiveEventEncoderDisconnectedEventData, - MediaLiveEventIncomingDataChunkDroppedEventData, - MediaLiveEventIncomingStreamReceivedEventData, - MediaLiveEventIncomingStreamsOutOfSyncEventData, - MediaLiveEventIncomingVideoStreamsOutOfSyncEventData, - MediaLiveEventIngestHeartbeatEventData, - MediaLiveEventTrackDiscontinuityDetectedEventData, - RedisExportRDBCompletedEventData, - RedisImportRDBCompletedEventData, - RedisPatchingCompletedEventData, - RedisScalingCompletedEventData, - ResourceActionCancelData, - ResourceActionFailureData, - ResourceActionSuccessData, - ResourceDeleteCancelData, - ResourceDeleteFailureData, - ResourceDeleteSuccessData, - ResourceWriteCancelData, - ResourceWriteFailureData, - ResourceWriteSuccessData, - ServiceBusActiveMessagesAvailableWithNoListenersEventData, - ServiceBusDeadletterMessagesAvailableWithNoListenersEventData, - SignalRServiceClientConnectionConnectedEventData, - SignalRServiceClientConnectionDisconnectedEventData, - StorageBlobCreatedEventData, - StorageBlobDeletedEventData, - StorageBlobRenamedEventData, - StorageDirectoryCreatedEventData, - StorageDirectoryDeletedEventData, - StorageDirectoryRenamedEventData, - StorageLifecyclePolicyActionSummaryDetail, - StorageLifecyclePolicyCompletedEventData, - SubscriptionDeletedEventData, - SubscriptionValidationEventData, - SubscriptionValidationResponse, - WebAppServicePlanUpdatedEventData, - WebAppServicePlanUpdatedEventDataSku, - WebAppUpdatedEventData, - WebBackupOperationCompletedEventData, - WebBackupOperationFailedEventData, - WebBackupOperationStartedEventData, - WebRestoreOperationCompletedEventData, - WebRestoreOperationFailedEventData, - WebRestoreOperationStartedEventData, - WebSlotSwapCompletedEventData, - WebSlotSwapFailedEventData, - WebSlotSwapStartedEventData, - WebSlotSwapWithPreviewCancelledEventData, - WebSlotSwapWithPreviewStartedEventData, -) - -from .._generated.models._event_grid_publisher_client_enums import ( - AppAction, - AppServicePlanAction, - AsyncStatus, - MediaJobErrorCategory, - MediaJobErrorCode, - MediaJobRetry, - MediaJobState, - StampKind, -) - -__all__ = [ - 'ACSChatEventBaseProperties', - 'ACSChatMemberAddedToThreadWithUserEventData', - 'ACSChatMemberRemovedFromThreadWithUserEventData', - 'ACSChatMessageDeletedEventData', - 'ACSChatMessageEditedEventData', - 'ACSChatMessageEventBaseProperties', - 'ACSChatMessageReceivedEventData', - 'ACSChatThreadCreatedWithUserEventData', - 'ACSChatThreadEventBaseProperties', - 'ACSChatThreadMemberProperties', - 'ACSChatThreadPropertiesUpdatedPerUserEventData', - 'ACSChatThreadWithUserDeletedEventData', - 'ACSSMSDeliveryAttemptProperties', - 'ACSSMSDeliveryReportReceivedEventData', - 'ACSSMSEventBaseProperties', - 'ACSSMSReceivedEventData', - 'AppConfigurationKeyValueDeletedEventData', - 'AppConfigurationKeyValueModifiedEventData', - 'AppEventTypeDetail', - 'AppServicePlanEventTypeDetail', - 'ContainerRegistryArtifactEventData', - 'ContainerRegistryArtifactEventTarget', - 'ContainerRegistryChartDeletedEventData', - 'ContainerRegistryChartPushedEventData', - 'ContainerRegistryEventActor', - 'ContainerRegistryEventData', - 'ContainerRegistryEventRequest', - 'ContainerRegistryEventSource', - 'ContainerRegistryEventTarget', - 'ContainerRegistryImageDeletedEventData', - 'ContainerRegistryImagePushedEventData', - 'DeviceConnectionStateEventInfo', - 'DeviceConnectionStateEventProperties', - 'DeviceLifeCycleEventProperties', - 'DeviceTelemetryEventProperties', - 'DeviceTwinInfo', - 'DeviceTwinInfoProperties', - 'DeviceTwinInfoX509Thumbprint', - 'DeviceTwinMetadata', - 'DeviceTwinProperties', - 'EventHubCaptureFileCreatedEventData', - 'IotHubDeviceConnectedEventData', - 'IotHubDeviceCreatedEventData', - 'IotHubDeviceDeletedEventData', - 'IotHubDeviceDisconnectedEventData', - 'IotHubDeviceTelemetryEventData', - 'KeyVaultAccessPolicyChangedEventData', - 'KeyVaultCertificateExpiredEventData', - 'KeyVaultCertificateNearExpiryEventData', - 'KeyVaultCertificateNewVersionCreatedEventData', - 'KeyVaultKeyExpiredEventData', - 'KeyVaultKeyNearExpiryEventData', - 'KeyVaultKeyNewVersionCreatedEventData', - 'KeyVaultSecretExpiredEventData', - 'KeyVaultSecretNearExpiryEventData', - 'KeyVaultSecretNewVersionCreatedEventData', - 'MachineLearningServicesDatasetDriftDetectedEventData', - 'MachineLearningServicesModelDeployedEventData', - 'MachineLearningServicesModelRegisteredEventData', - 'MachineLearningServicesRunCompletedEventData', - 'MachineLearningServicesRunStatusChangedEventData', - 'MapsGeofenceEnteredEventData', - 'MapsGeofenceEventProperties', - 'MapsGeofenceExitedEventData', - 'MapsGeofenceGeometry', - 'MapsGeofenceResultEventData', - 'MediaJobCanceledEventData', - 'MediaJobCancelingEventData', - 'MediaJobError', - 'MediaJobErrorDetail', - 'MediaJobErroredEventData', - 'MediaJobFinishedEventData', - 'MediaJobOutput', - 'MediaJobOutputAsset', - 'MediaJobOutputCanceledEventData', - 'MediaJobOutputCancelingEventData', - 'MediaJobOutputErroredEventData', - 'MediaJobOutputFinishedEventData', - 'MediaJobOutputProcessingEventData', - 'MediaJobOutputProgressEventData', - 'MediaJobOutputScheduledEventData', - 'MediaJobOutputStateChangeEventData', - 'MediaJobProcessingEventData', - 'MediaJobScheduledEventData', - 'MediaJobStateChangeEventData', - 'MediaLiveEventConnectionRejectedEventData', - 'MediaLiveEventEncoderConnectedEventData', - 'MediaLiveEventEncoderDisconnectedEventData', - 'MediaLiveEventIncomingDataChunkDroppedEventData', - 'MediaLiveEventIncomingStreamReceivedEventData', - 'MediaLiveEventIncomingStreamsOutOfSyncEventData', - 'MediaLiveEventIncomingVideoStreamsOutOfSyncEventData', - 'MediaLiveEventIngestHeartbeatEventData', - 'MediaLiveEventTrackDiscontinuityDetectedEventData', - 'RedisExportRDBCompletedEventData', - 'RedisImportRDBCompletedEventData', - 'RedisPatchingCompletedEventData', - 'RedisScalingCompletedEventData', - 'ResourceActionCancelData', - 'ResourceActionFailureData', - 'ResourceActionSuccessData', - 'ResourceDeleteCancelData', - 'ResourceDeleteFailureData', - 'ResourceDeleteSuccessData', - 'ResourceWriteCancelData', - 'ResourceWriteFailureData', - 'ResourceWriteSuccessData', - 'ServiceBusActiveMessagesAvailableWithNoListenersEventData', - 'ServiceBusDeadletterMessagesAvailableWithNoListenersEventData', - 'SignalRServiceClientConnectionConnectedEventData', - 'SignalRServiceClientConnectionDisconnectedEventData', - 'StorageBlobCreatedEventData', - 'StorageBlobDeletedEventData', - 'StorageBlobRenamedEventData', - 'StorageDirectoryCreatedEventData', - 'StorageDirectoryDeletedEventData', - 'StorageDirectoryRenamedEventData', - 'StorageLifecyclePolicyActionSummaryDetail', - 'StorageLifecyclePolicyCompletedEventData', - 'SubscriptionDeletedEventData', - 'SubscriptionValidationEventData', - 'SubscriptionValidationResponse', - 'WebAppServicePlanUpdatedEventData', - 'WebAppServicePlanUpdatedEventDataSku', - 'WebAppUpdatedEventData', - 'WebBackupOperationCompletedEventData', - 'WebBackupOperationFailedEventData', - 'WebBackupOperationStartedEventData', - 'WebRestoreOperationCompletedEventData', - 'WebRestoreOperationFailedEventData', - 'WebRestoreOperationStartedEventData', - 'WebSlotSwapCompletedEventData', - 'WebSlotSwapFailedEventData', - 'WebSlotSwapStartedEventData', - 'WebSlotSwapWithPreviewCancelledEventData', - 'WebSlotSwapWithPreviewStartedEventData', - 'AppAction', - 'AppServicePlanAction', - 'AsyncStatus', - 'MediaJobErrorCategory', - 'MediaJobErrorCode', - 'MediaJobRetry', - 'MediaJobState', - 'StampKind', -] diff --git a/sdk/eventgrid/azure-eventgrid/samples/consume_samples/consume_eg_storage_blob_created_data_sample.py b/sdk/eventgrid/azure-eventgrid/samples/consume_samples/consume_eg_storage_blob_created_data_sample.py index dc5ba23f5646..4edd94abd828 100644 --- a/sdk/eventgrid/azure-eventgrid/samples/consume_samples/consume_eg_storage_blob_created_data_sample.py +++ b/sdk/eventgrid/azure-eventgrid/samples/consume_samples/consume_eg_storage_blob_created_data_sample.py @@ -13,7 +13,6 @@ """ import json from azure.eventgrid import EventGridDeserializer, EventGridEvent -from azure.eventgrid.systemevents import StorageBlobCreatedEventData # all types of EventGridEvents below produce same DeserializedEvent eg_storage_dict = { diff --git a/sdk/eventgrid/azure-eventgrid/tests/test_eg_consumer.py b/sdk/eventgrid/azure-eventgrid/tests/test_eg_consumer.py index 33e44b3c2087..16ff5cc68e70 100644 --- a/sdk/eventgrid/azure-eventgrid/tests/test_eg_consumer.py +++ b/sdk/eventgrid/azure-eventgrid/tests/test_eg_consumer.py @@ -14,7 +14,6 @@ from devtools_testutils import AzureMgmtTestCase from msrest.serialization import UTC from azure.eventgrid import EventGridDeserializer, CloudEvent, EventGridEvent -from azure.eventgrid.systemevents import StorageBlobCreatedEventData from _mocks import ( cloud_storage_dict, cloud_storage_string, @@ -37,40 +36,19 @@ def test_eg_consumer_cloud_storage_dict(self, **kwargs): client = EventGridDeserializer() deserialized_event = client.deserialize_cloud_events(cloud_storage_dict) assert deserialized_event.__class__ == CloudEvent - assert deserialized_event.data.__class__ == StorageBlobCreatedEventData + assert deserialized_event.data.__class__ == dict def test_eg_consumer_cloud_storage_string(self, **kwargs): client = EventGridDeserializer() deserialized_event = client.deserialize_cloud_events(cloud_storage_string) assert deserialized_event.__class__ == CloudEvent - assert deserialized_event.data.__class__ == StorageBlobCreatedEventData + assert deserialized_event.data.__class__ == dict def test_eg_consumer_cloud_storage_bytes(self, **kwargs): client = EventGridDeserializer() deserialized_event = client.deserialize_cloud_events(cloud_storage_bytes) assert deserialized_event.__class__ == CloudEvent - assert deserialized_event.data.__class__ == StorageBlobCreatedEventData - - - def test_eg_consumer_cloud_custom_dict(self, **kwargs): - client = EventGridDeserializer() - deserialized_event = client.deserialize_cloud_events(cloud_custom_dict) - assert deserialized_event.__class__ == CloudEvent - assert deserialized_event.data is None - - - def test_eg_consumer_cloud_custom_string(self, **kwargs): - client = EventGridDeserializer() - deserialized_event = client.deserialize_cloud_events(cloud_custom_string) - assert deserialized_event.__class__ == CloudEvent - assert deserialized_event.data is None - - - def test_eg_consumer_cloud_custom_bytes(self, **kwargs): - client = EventGridDeserializer() - deserialized_event = client.deserialize_cloud_events(cloud_custom_bytes) - assert deserialized_event.__class__ == CloudEvent - assert deserialized_event.data is None + assert deserialized_event.data.__class__ == dict # EG Event tests @@ -78,39 +56,18 @@ def test_eg_consumer_eg_storage_dict(self, **kwargs): client = EventGridDeserializer() deserialized_event = client.deserialize_eventgrid_events(eg_storage_dict) assert deserialized_event.__class__ == EventGridEvent - assert deserialized_event.data.__class__ == StorageBlobCreatedEventData + assert deserialized_event.data.__class__ == dict def test_eg_consumer_eg_storage_string(self, **kwargs): client = EventGridDeserializer() deserialized_event = client.deserialize_eventgrid_events(eg_storage_string) assert deserialized_event.__class__ == EventGridEvent - assert deserialized_event.data.__class__ == StorageBlobCreatedEventData + assert deserialized_event.data.__class__ == dict def test_eg_consumer_eg_storage_bytes(self, **kwargs): client = EventGridDeserializer() deserialized_event = client.deserialize_eventgrid_events(eg_storage_bytes) assert deserialized_event.__class__ == EventGridEvent - assert deserialized_event.data.__class__ == StorageBlobCreatedEventData - - - def test_eg_consumer_eg_custom_dict(self, **kwargs): - client = EventGridDeserializer() - deserialized_event = client.deserialize_eventgrid_events(eg_custom_dict) - assert deserialized_event.__class__ == EventGridEvent - assert deserialized_event.data is None - - - def test_eg_consumer_eg_custom_string(self, **kwargs): - client = EventGridDeserializer() - deserialized_event = client.deserialize_eventgrid_events(eg_custom_string) - assert deserialized_event.__class__ == EventGridEvent - assert deserialized_event.data is None - - - def test_eg_consumer_eg_custom_bytes(self, **kwargs): - client = EventGridDeserializer() - deserialized_event = client.deserialize_eventgrid_events(eg_custom_bytes) - assert deserialized_event.__class__ == EventGridEvent - assert deserialized_event.data is None + assert deserialized_event.data.__class__ == dict diff --git a/sdk/eventgrid/azure-eventgrid/tests/test_serialization.py b/sdk/eventgrid/azure-eventgrid/tests/test_serialization.py index 2a72ab2747cd..5e31be63d638 100644 --- a/sdk/eventgrid/azure-eventgrid/tests/test_serialization.py +++ b/sdk/eventgrid/azure-eventgrid/tests/test_serialization.py @@ -15,8 +15,8 @@ from devtools_testutils import AzureMgmtTestCase from msrest.serialization import UTC from azure.eventgrid import CloudEvent, EventGridEvent -from azure.eventgrid import systemevents from azure.eventgrid._generated import models as internal_models +from azure.eventgrid import SystemEventMappings from _mocks import ( cloud_storage_dict, cloud_storage_string, @@ -102,13 +102,6 @@ def test_cloud_event_serialization_extension_string(self, **kwargs): expected['data_base64'] = encoded assert expected['data_base64'] == json['data_base64'] assert 'data' not in json - - def test_models_exist_in_namespace(self): - exposed = dir(systemevents) - generated = dir(internal_models) - - diff = {m for m in list(set(generated) - set(exposed)) if not m.startswith('_')} - assert diff == {'CloudEvent', 'EventGridEvent'} def test_event_grid_event_raises_on_no_data(self): with pytest.raises(TypeError): @@ -117,3 +110,10 @@ def test_event_grid_event_raises_on_no_data(self): event_type="Sample.EventGrid.Event", data_version="2.0" ) + + def test_import_from_sytem_events(self): + var = SystemEventMappings.ACSChatMemberAddedToThreadWithUserEventName + assert var == "Microsoft.Communication.ChatMemberAddedToThreadWithUser" + assert SystemEventMappings.KeyVaultKeyNearExpiryEventName == "Microsoft.KeyVault.KeyNearExpiry" + var = SystemEventMappings.ServiceBusActiveMessagesAvailableWithNoListenersEventName + assert var == "Microsoft.ServiceBus.ActiveMessagesAvailableWithNoListeners"