Skip to content

Commit

Permalink
Event grid track 2 (#13010)
Browse files Browse the repository at this point in the history
* Event grid track 2 (#12768)

* genereated python client for event grid

* updated readme to use track2 generator

* added sas key auth sample

* added consume sample, not final

* removing old eg

* added track 2 changes needed for api view

* add consumer operations

* cleanup client versions for api view

* remove _initialize_mapping() in BaseEventType class in models

* track 2 design manual changes

* added publisher wrapper in azure/eventgrid for demo

* modified naming for publish sample for demo

* final sample fix for demo

* added response to publish_events(), still need to fix

* added decoder for apiview

* renamed consumer, added Deserialized/CustomEvent

* final for Board Review

* testing changes

* added EventGridSharedAccessSignatureCredential,Policy and modified samples

* added eg_client test

* moving generated code out from event_grid_publisher_client nested folder

* added consumption function samples

* removed eg required package and removed service bus dependency in consumer

* removed unnecessary functions

* changed consumer deserialize_event() to take,return single event of one type of (string, bytes string, dict). changed DeserializedEvent to have to_json() method, instead of extending DictMixin

* added publish tests

* fixed PR, added CustomEvent, added tests/samples

* updated swagger, removed unnecessary imports

* removed unnecessary reqs in dev_requirements

* changed async publisher import path, added type hints

* modified typehints for publishers, based on apiview

* added newlines

* added shared_reqs file

* moved shared_requirement

* fixed non live test

* added changelog, test fix

* changed topic preparer

* added samples to exclude to setup.py

* Packaging update of azure-eventgrid

* Fix Tests (#13024)

* Fix Tests

* other fixes

* Packaging update of azure-eventgrid

* tests fix (#13026)

* other fixes

* p2 compat

* Packaging update of azure-eventgrid

* Update sdk/eventgrid/azure-eventgrid/CHANGELOG.md

* Event grid v2 (#13051)

* other fixes

* auto update

* Update sdk/eventgrid/azure-eventgrid/CHANGELOG.md

* Update sdk/eventgrid/azure-eventgrid/azure/eventgrid/_helpers.py

* Update sdk/eventgrid/azure-eventgrid/CHANGELOG.md

* Update sdk/eventgrid/azure-eventgrid/azure/eventgrid/_version.py

* Event grid v2 (#13177)

* other fixes

* auto update

* Update sdk/eventgrid/azure-eventgrid/CHANGELOG.md

* Update sdk/eventgrid/azure-eventgrid/azure/eventgrid/_helpers.py

* Update sdk/eventgrid/azure-eventgrid/CHANGELOG.md

* Update sdk/eventgrid/azure-eventgrid/azure/eventgrid/_version.py

* comments

* Update sdk/eventgrid/azure-eventgrid/tests/_mocks.py

* Event grid v2 (#13201)

* other fixes

* auto update

* Update sdk/eventgrid/azure-eventgrid/CHANGELOG.md

* Update sdk/eventgrid/azure-eventgrid/azure/eventgrid/_helpers.py

* Update sdk/eventgrid/azure-eventgrid/CHANGELOG.md

* Update sdk/eventgrid/azure-eventgrid/azure/eventgrid/_version.py

* comments

* tests fix

* Update sdk/eventgrid/azure-eventgrid/tests/eventgrid_preparer.py

* Update sdk/eventgrid/azure-eventgrid/azure/eventgrid/_models.py

Co-authored-by: KieranBrantnerMagee <kibrantn@microsoft.com>

* Apply suggestions from code review

Co-authored-by: t-swpill <66144935+t-swpill@users.noreply.github.com>
Co-authored-by: Azure SDK Bot <adxpysdk@microsoft.com>
Co-authored-by: Rakshith Bhyravabhotla <sabhyrav@microsoft.com>
Co-authored-by: KieranBrantnerMagee <kibrantn@microsoft.com>
  • Loading branch information
5 people authored Aug 20, 2020
1 parent 5a60fbf commit af30a10
Show file tree
Hide file tree
Showing 246 changed files with 4,432 additions and 8,626 deletions.
4 changes: 4 additions & 0 deletions sdk/eventgrid/azure-eventgrid/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Release History

## 2.0.0b1 (Unreleased)

- Placeholder - NEEDS TO BE CHANGED

## 1.3.0 (2019-05-20)

- Event Schemas for new event types from IotHub, Media Services,
Expand Down
1 change: 1 addition & 0 deletions sdk/eventgrid/azure-eventgrid/MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
recursive-include tests *.py *.yaml
recursive-include samples *.py
include *.md
include azure/__init__.py

23 changes: 11 additions & 12 deletions sdk/eventgrid/azure-eventgrid/README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,21 @@
## Microsoft Azure SDK for Python
# Microsoft Azure SDK for Python

This is the Microsoft Azure Event Grid Client Library.
This package has been tested with Python 2.7, 3.5, 3.6, 3.7 and 3.8.
For a more complete view of Azure libraries, see the [azure sdk python release](https://aka.ms/azsdk/python/all).

This package has been tested with Python 2.7, 3.4, 3.5, 3.6 and 3.7.

For a more complete set of Azure libraries, see the
[azure sdk python release](https://aka.ms/azsdk/python/all).
# Usage

## Usage

For code examples, see [Event
Grid](https://docs.microsoft.com/python/api/overview/azure/event-grid)
For code examples, see [Event Grid](https://docs.microsoft.com/python/api/overview/azure/event-grid)
on docs.microsoft.com.

## Provide Feedback

If you encounter any bugs or have suggestions, please file an issue in
the [Issues](https://github.com/Azure/azure-sdk-for-python/issues)
# Provide Feedback

If you encounter any bugs or have suggestions, please file an issue in the
[Issues](https://github.com/Azure/azure-sdk-for-python/issues)
section of the project.

![image](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-python%2Fazure-eventgrid%2FREADME.png)

![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-python%2Fazure-eventgrid%2FREADME.png)
21 changes: 10 additions & 11 deletions sdk/eventgrid/azure-eventgrid/azure/eventgrid/__init__.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
# 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.
#
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------

from .event_grid_client import EventGridClient
from .version import VERSION

__all__ = ['EventGridClient']
from ._publisher_client import EventGridPublisherClient
from ._consumer import EventGridConsumer
from ._helpers import generate_shared_access_signature
from ._models import CloudEvent, CustomEvent, EventGridEvent, DeserializedEvent, StorageBlobCreatedEventData
from ._shared_access_signature_credential import EventGridSharedAccessSignatureCredential
from ._version import VERSION

__all__ = ['EventGridPublisherClient', 'EventGridConsumer',
'CloudEvent', 'CustomEvent', 'DeserializedEvent', 'EventGridEvent', 'StorageBlobCreatedEventData'
'generate_shared_access_signature', 'EventGridSharedAccessSignatureCredential']
__version__ = VERSION

9 changes: 9 additions & 0 deletions sdk/eventgrid/azure-eventgrid/azure/eventgrid/_constants.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------

EVENTGRID_KEY_HEADER = 'aeg-sas-key'
EVENTGRID_TOKEN_HEADER = 'aeg-sas-token'
DEFAULT_API_VERSION = "2018-01-01"
SAFE_ENCODE = '~()*!.\''
50 changes: 50 additions & 0 deletions sdk/eventgrid/azure-eventgrid/azure/eventgrid/_consumer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# 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.
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

from typing import TYPE_CHECKING
import json
import six
import logging

from azure.core import PipelineClient
from msrest import Deserializer, Serializer

if TYPE_CHECKING:
# pylint: disable=unused-import,ungrouped-imports
from typing import Any

_LOGGER = logging.getLogger(__name__)

from ._models import DeserializedEvent

class EventGridConsumer(object):
"""
A consumer responsible for deserializing event handler messages, to allow for access to strongly typed Event objects.
"""

def deserialize_event(self, event, **kwargs):
# type: (Union[str, dict, bytes]) -> models.DeserializedEvent
"""Single event following CloudEvent/EventGridEvent schema will be parsed and returned as DeserializedEvent.
:param event: The event to be deserialized.
:type event: Union[str, dict, bytes]
:rtype: models.DeserializedEvent
:raise: :class:`ValueError`, when events do not follow CloudEvent or EventGridEvent schema.
"""
encode = kwargs.pop('encoding', 'utf-8')
try:
if isinstance(event, six.binary_type):
event = json.loads(event.decode(encode))
elif isinstance(event, six.string_types):
event = json.loads(event)
return DeserializedEvent(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/EventGridEvent schema.')
_LOGGER.error('Your event: {}'.format(event))
_LOGGER.error(err)
raise ValueError('Error: cannot deserialize event. Event does not have a valid format. Event must be a string, dict, or bytes following the CloudEvent/EventGridEvent schema.')
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# 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.
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

from ._event_grid_publisher_client import EventGridPublisherClient
__all__ = ['EventGridPublisherClient']

try:
from ._patch import patch_sdk
patch_sdk()
except ImportError:
pass
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# 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.
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

from typing import TYPE_CHECKING

from azure.core.configuration import Configuration
from azure.core.pipeline import policies

if TYPE_CHECKING:
# pylint: disable=unused-import,ungrouped-imports
from typing import Any

VERSION = "unknown"

class EventGridPublisherClientConfiguration(Configuration):
"""Configuration for EventGridPublisherClient.
Note that all parameters used to create this instance are saved as instance
attributes.
"""

def __init__(
self,
**kwargs # type: Any
):
# type: (...) -> None
super(EventGridPublisherClientConfiguration, self).__init__(**kwargs)

self.api_version = "2018-01-01"
kwargs.setdefault('sdk_moniker', 'eventgridpublisherclient/{}'.format(VERSION))
self._configure(**kwargs)

def _configure(
self,
**kwargs # type: Any
):
# type: (...) -> None
self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs)
self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs)
self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs)
self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs)
self.retry_policy = kwargs.get('retry_policy') or policies.RetryPolicy(**kwargs)
self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs)
self.redirect_policy = kwargs.get('redirect_policy') or policies.RedirectPolicy(**kwargs)
self.authentication_policy = kwargs.get('authentication_policy')
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# 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.
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

from typing import TYPE_CHECKING

from azure.core import PipelineClient
from msrest import Deserializer, Serializer

if TYPE_CHECKING:
# pylint: disable=unused-import,ungrouped-imports
from typing import Any

from ._configuration import EventGridPublisherClientConfiguration
from .operations import EventGridPublisherClientOperationsMixin
from . import models


class EventGridPublisherClient(EventGridPublisherClientOperationsMixin):
"""EventGrid Python Publisher Client.
:keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
"""

def __init__(
self,
**kwargs # type: Any
):
# type: (...) -> None
base_url = 'https://{topicHostname}'
self._config = EventGridPublisherClientConfiguration(**kwargs)
self._client = PipelineClient(base_url=base_url, config=self._config, **kwargs)

client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)}
self._serialize = Serializer(client_models)
self._deserialize = Deserializer(client_models)


def close(self):
# type: () -> None
self._client.close()

def __enter__(self):
# type: () -> EventGridPublisherClient
self._client.__enter__()
return self

def __exit__(self, *exc_details):
# type: (Any) -> None
self._client.__exit__(*exc_details)
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# 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.
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

from ._event_grid_publisher_client_async import EventGridPublisherClient
__all__ = ['EventGridPublisherClient']
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# 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.
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

from typing import Any

from azure.core.configuration import Configuration
from azure.core.pipeline import policies

VERSION = "unknown"

class EventGridPublisherClientConfiguration(Configuration):
"""Configuration for EventGridPublisherClient.
Note that all parameters used to create this instance are saved as instance
attributes.
"""

def __init__(
self,
**kwargs: Any
) -> None:
super(EventGridPublisherClientConfiguration, self).__init__(**kwargs)

self.api_version = "2018-01-01"
kwargs.setdefault('sdk_moniker', 'eventgridpublisherclient/{}'.format(VERSION))
self._configure(**kwargs)

def _configure(
self,
**kwargs: Any
) -> None:
self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs)
self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs)
self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs)
self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs)
self.retry_policy = kwargs.get('retry_policy') or policies.AsyncRetryPolicy(**kwargs)
self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs)
self.redirect_policy = kwargs.get('redirect_policy') or policies.AsyncRedirectPolicy(**kwargs)
self.authentication_policy = kwargs.get('authentication_policy')
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# 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.
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

from typing import Any

from azure.core import AsyncPipelineClient
from msrest import Deserializer, Serializer

from ._configuration_async import EventGridPublisherClientConfiguration
from .operations_async import EventGridPublisherClientOperationsMixin
from .. import models


class EventGridPublisherClient(EventGridPublisherClientOperationsMixin):
"""EventGrid Python Publisher Client.
:keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
"""

def __init__(
self,
**kwargs: Any
) -> None:
base_url = 'https://{topicHostname}'
self._config = EventGridPublisherClientConfiguration(**kwargs)
self._client = AsyncPipelineClient(base_url=base_url, config=self._config, **kwargs)

client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)}
self._serialize = Serializer(client_models)
self._deserialize = Deserializer(client_models)


async def close(self) -> None:
await self._client.close()

async def __aenter__(self) -> "EventGridPublisherClient":
await self._client.__aenter__()
return self

async def __aexit__(self, *exc_details) -> None:
await self._client.__aexit__(*exc_details)
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# 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.
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
# --------------------------------------------------------------------------

from ._event_grid_publisher_client_operations_async import EventGridPublisherClientOperationsMixin

__all__ = [
'EventGridPublisherClientOperationsMixin',
]
Loading

0 comments on commit af30a10

Please sign in to comment.