Skip to content

Commit e4c4daa

Browse files
author
Rakshith Bhyravabhotla
authored
Replace EventgridSharedAccessSignatureCredential with AzureSasCredential (Azure#16147)
* AzureSasCred * fix * Update sdk/eventgrid/azure-eventgrid/azure/eventgrid/_signature_credential_policy.py * Update sdk/eventgrid/azure-eventgrid/azure/eventgrid/_signature_credential_policy.py * sample * changelog * test async * Apply suggestions from code review
1 parent 3c25df0 commit e4c4daa

14 files changed

+47
-82
lines changed

sdk/eventgrid/azure-eventgrid/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## 2.0.0b5 (Unreleased)
44

5+
**Breaking Changes**
6+
- `EventGridSharedAccessSignatureCredential` is deprecated in favor of `AzureSasCredential`.
57

68
## 2.0.0b4 (2020-11-11)
79

sdk/eventgrid/azure-eventgrid/azure/eventgrid/__init__.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@
88
from ._consumer import EventGridConsumer
99
from ._helpers import generate_shared_access_signature
1010
from ._models import CloudEvent, CustomEvent, EventGridEvent
11-
from ._shared_access_signature_credential import EventGridSharedAccessSignatureCredential
1211
from ._version import VERSION
1312

1413
__all__ = ['EventGridPublisherClient', 'EventGridConsumer',
15-
'CloudEvent', 'CustomEvent', 'EventGridEvent', 'generate_shared_access_signature',
16-
'EventGridSharedAccessSignatureCredential']
14+
'CloudEvent', 'CustomEvent', 'EventGridEvent', 'generate_shared_access_signature'
15+
]
1716
__version__ = VERSION

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@
1313
from urllib2 import quote # type: ignore
1414

1515
from azure.core.pipeline.policies import AzureKeyCredentialPolicy
16-
from azure.core.credentials import AzureKeyCredential
17-
from ._shared_access_signature_credential import EventGridSharedAccessSignatureCredential
18-
from ._signature_credential_policy import EventGridSharedAccessSignatureCredentialPolicy
16+
from azure.core.credentials import AzureKeyCredential, AzureSasCredential
17+
from ._signature_credential_policy import EventGridSasCredentialPolicy
1918
from . import _constants as constants
2019

2120
if TYPE_CHECKING:
@@ -79,8 +78,8 @@ def _get_authentication_policy(credential):
7978
raise ValueError("Parameter 'self._credential' must not be None.")
8079
if isinstance(credential, AzureKeyCredential):
8180
authentication_policy = AzureKeyCredentialPolicy(credential=credential, name=constants.EVENTGRID_KEY_HEADER)
82-
if isinstance(credential, EventGridSharedAccessSignatureCredential):
83-
authentication_policy = EventGridSharedAccessSignatureCredentialPolicy(
81+
if isinstance(credential, AzureSasCredential):
82+
authentication_policy = EventGridSasCredentialPolicy(
8483
credential=credential,
8584
name=constants.EVENTGRID_TOKEN_HEADER
8685
)

sdk/eventgrid/azure-eventgrid/azure/eventgrid/_publisher_client.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@
3636

3737
if TYPE_CHECKING:
3838
# pylint: disable=unused-import,ungrouped-imports
39-
from azure.core.credentials import AzureKeyCredential
40-
from ._shared_access_signature_credential import EventGridSharedAccessSignatureCredential
39+
from azure.core.credentials import AzureKeyCredential, AzureSasCredential
4140
SendType = Union[
4241
CloudEvent,
4342
EventGridEvent,
@@ -63,11 +62,11 @@ class EventGridPublisherClient(object):
6362
:param str topic_hostname: The topic endpoint to send the events to.
6463
:param credential: The credential object used for authentication which
6564
implements SAS key authentication or SAS token authentication.
66-
:type credential: ~azure.core.credentials.AzureKeyCredential or EventGridSharedAccessSignatureCredential
65+
:type credential: ~azure.core.credentials.AzureKeyCredential or ~azure.core.credentials.AzureSasCredential
6766
"""
6867

6968
def __init__(self, topic_hostname, credential, **kwargs):
70-
# type: (str, Union[AzureKeyCredential, EventGridSharedAccessSignatureCredential], Any) -> None
69+
# type: (str, Union[AzureKeyCredential, AzureSasCredential], Any) -> None
7170
topic_hostname = _get_topic_hostname_only_fqdn(topic_hostname)
7271

7372
self._topic_hostname = topic_hostname
@@ -78,7 +77,7 @@ def __init__(self, topic_hostname, credential, **kwargs):
7877

7978
@staticmethod
8079
def _policies(credential, **kwargs):
81-
# type: (Union[AzureKeyCredential, EventGridSharedAccessSignatureCredential], Any) -> List[Any]
80+
# type: (Union[AzureKeyCredential, AzureSasCredential], Any) -> List[Any]
8281
auth_policy = _get_authentication_policy(credential)
8382
sdk_moniker = 'eventgrid/{}'.format(VERSION)
8483
policies = [

sdk/eventgrid/azure-eventgrid/azure/eventgrid/_shared_access_signature_credential.py

Lines changed: 0 additions & 33 deletions
This file was deleted.

sdk/eventgrid/azure-eventgrid/azure/eventgrid/_signature_credential_policy.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,19 @@
1010
from azure.core.pipeline.policies import SansIOHTTPPolicy
1111

1212
if TYPE_CHECKING:
13-
from ._shared_access_signature_credential import EventGridSharedAccessSignatureCredential
13+
from azure.core.credentials import AzureSasCredential
1414

1515

16-
class EventGridSharedAccessSignatureCredentialPolicy(SansIOHTTPPolicy):
16+
class EventGridSasCredentialPolicy(SansIOHTTPPolicy):
1717
"""Adds a token header for the provided credential.
1818
:param credential: The credential used to authenticate requests.
19-
:type credential: ~azure.eventgrid.EventGridSharedAccessSignatureCredential
19+
:type credential: ~azure.core.credentials.AzureSasCredential
2020
:param str name: The name of the token header used for the credential.
2121
:raises: ValueError or TypeError
2222
"""
2323
def __init__(self, credential, name, **kwargs): # pylint: disable=unused-argument
24-
# type: (EventGridSharedAccessSignatureCredential, str, Any) -> None
25-
super(EventGridSharedAccessSignatureCredentialPolicy, self).__init__()
24+
# type: (AzureSasCredential, str, Any) -> None
25+
super(EventGridSasCredentialPolicy, self).__init__()
2626
self._credential = credential
2727
if not name:
2828
raise ValueError("name can not be None or empty")
@@ -31,4 +31,5 @@ def __init__(self, credential, name, **kwargs): # pylint: disable=unused-argume
3131
self._name = name
3232

3333
def on_request(self, request):
34+
# Request must contain one of the following authorization signature: aeg-sas-token, aeg-sas-key
3435
request.http_request.headers[self._name] = self._credential.signature

sdk/eventgrid/azure-eventgrid/azure/eventgrid/aio/_publisher_client_async.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
# --------------------------------------------------------------------------
88

99
from typing import Any, Union, List, Dict, cast
10-
from azure.core.credentials import AzureKeyCredential
10+
from azure.core.credentials import AzureKeyCredential, AzureSasCredential
1111
from azure.core.tracing.decorator_async import distributed_trace_async
1212
from azure.core.pipeline.policies import (
1313
RequestIdPolicy,
@@ -32,7 +32,6 @@
3232
)
3333
from .._generated.aio import EventGridPublisherClient as EventGridPublisherClientAsync
3434
from .._generated.models import CloudEvent as InternalCloudEvent, EventGridEvent as InternalEventGridEvent
35-
from .._shared_access_signature_credential import EventGridSharedAccessSignatureCredential
3635
from .._version import VERSION
3736

3837
SendType = Union[
@@ -59,13 +58,13 @@ class EventGridPublisherClient():
5958
:param str topic_hostname: The topic endpoint to send the events to.
6059
:param credential: The credential object used for authentication which implements
6160
SAS key authentication or SAS token authentication.
62-
:type credential: ~azure.core.credentials.AzureKeyCredential or EventGridSharedAccessSignatureCredential
61+
:type credential: ~azure.core.credentials.AzureKeyCredential or ~azure.core.credentials.AzureSasCredential
6362
"""
6463

6564
def __init__(
6665
self,
6766
topic_hostname: str,
68-
credential: Union[AzureKeyCredential, EventGridSharedAccessSignatureCredential],
67+
credential: Union[AzureKeyCredential, AzureSasCredential],
6968
**kwargs: Any) -> None:
7069
self._client = EventGridPublisherClientAsync(
7170
policies=EventGridPublisherClient._policies(credential, **kwargs),
@@ -76,7 +75,7 @@ def __init__(
7675

7776
@staticmethod
7877
def _policies(
79-
credential: Union[AzureKeyCredential, EventGridSharedAccessSignatureCredential],
78+
credential: Union[AzureKeyCredential, AzureSasCredential],
8079
**kwargs: Any
8180
) -> List[Any]:
8281
auth_policy = _get_authentication_policy(credential)

sdk/eventgrid/azure-eventgrid/samples/champion_scenarios/cs1b_publish_custom_events_to_a_topic_with_signature.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,16 @@
1515
"<YOUR-TOPIC-NAME>.<REGION-NAME>.eventgrid.azure.net".
1616
"""
1717
import os
18-
from azure.eventgrid import EventGridPublisherClient, EventGridEvent, generate_shared_access_signature, EventGridSharedAccessSignatureCredential
19-
from azure.core.credentials import AzureKeyCredential
18+
from azure.eventgrid import EventGridPublisherClient, EventGridEvent, generate_shared_access_signature
19+
from azure.core.credentials import AzureKeyCredential, AzureSasCredential
2020
from datetime import datetime, timedelta
2121

2222
topic_key = os.environ["EG_ACCESS_KEY"]
2323
topic_hostname = os.environ["EG_TOPIC_HOSTNAME"]
2424
expiration_date_utc = datetime.utcnow() + timedelta(hours=1)
2525

2626
signature = generate_shared_access_signature(topic_hostname, topic_key, expiration_date_utc)
27-
credential = EventGridSharedAccessSignatureCredential(signature)
27+
credential = AzureSasCredential(signature)
2828
client = EventGridPublisherClient(topic_hostname, credential)
2929

3030
client.send([

sdk/eventgrid/azure-eventgrid/samples/publish_samples/publish_with_shared_access_signature_sample.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
import time
2121

2222
from datetime import datetime, timedelta
23-
24-
from azure.eventgrid import EventGridPublisherClient, CloudEvent, generate_shared_access_signature, EventGridSharedAccessSignatureCredential
23+
from azure.core.credentials import AzureSasCredential
24+
from azure.eventgrid import EventGridPublisherClient, CloudEvent, generate_shared_access_signature
2525

2626
key = os.environ["CLOUD_ACCESS_KEY"]
2727
topic_hostname = os.environ["CLOUD_TOPIC_HOSTNAME"]
@@ -30,7 +30,7 @@
3030
signature = generate_shared_access_signature(topic_hostname, key, expiration_date_utc)
3131

3232
# authenticate client
33-
credential = EventGridSharedAccessSignatureCredential(signature)
33+
credential = AzureSasCredential(signature)
3434
client = EventGridPublisherClient(topic_hostname, credential)
3535

3636
team_members = ["Josh", "Kerri", "Kieran", "Laurent", "Lily", "Matt", "Soren", "Srikanta", "Swathi"] # possible values for data field

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,10 @@ def create_resource(self, name, **kwargs):
6262
topic = Topic(location=self.parameter_location, tags=None, input_schema=CUSTOM_EVENT_SCHEMA, input_schema_mapping=CUSTOM_JSON_INPUT_SCHEMA_MAPPING)
6363
else:
6464
topic = Topic(location=self.parameter_location)
65-
topic_operation = self.client.topics.create_or_update(
65+
topic_operation = self.client.topics.begin_create_or_update(
6666
group.name,
6767
name,
6868
topic,
69-
{}
7069
)
7170
self.resource = topic_operation.result()
7271
key = self.client.topics.list_shared_access_keys(group.name, name)
@@ -85,7 +84,7 @@ def create_resource(self, name, **kwargs):
8584
def remove_resource(self, name, **kwargs):
8685
if self.is_live:
8786
group = self._get_resource_group(**kwargs)
88-
self.client.topics.delete(group.name, name, polling=False)
87+
self.client.topics.begin_delete(group.name, name, polling=False)
8988

9089
def _get_resource_group(self, **kwargs):
9190
try:

0 commit comments

Comments
 (0)