Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
66359b8
document async transport requirement (#6541)
chlowell Jul 30, 2019
379c1a1
[AutoPR] alertsmanagement/resource-manager (#5697)
AutorestCI Jul 30, 2019
7a0f5d3
Synchronous username/password auth (#6416)
chlowell Jul 30, 2019
f9f2db1
Synchronous interactive browser authentication (#6466)
chlowell Jul 30, 2019
f583901
we dont need thread locks (#6551)
SuyogSoti Jul 30, 2019
e833df0
KV aiohttp by default (#6563)
lmazuel Jul 31, 2019
95220b7
[AutoPR hanaonazure/resource-manager] Removing monitoring hana instan…
AutorestCI Jul 31, 2019
02e17b7
KV moved paging return type to ItemPaged (#6558)
lmazuel Jul 31, 2019
37c46c6
azure-core history 1.0.0b2 (#6562)
lmazuel Jul 31, 2019
c6ebc93
Make private Cosmos modules private [WIP] (#6329)
bryevdv Jul 31, 2019
d3d96df
Accept extension of JSON content-type (#6583)
lmazuel Jul 31, 2019
d2ed7d8
Remove docdb mgmt package from master (#6585)
lmazuel Jul 31, 2019
92583cf
Revert "Remove docdb mgmt package from master (#6585)" (#6593)
lmazuel Jul 31, 2019
1d86ae8
azure-core black/pylint/mypy (#6581)
lmazuel Aug 1, 2019
a08c25a
adjusting to allow default omission of packages for CI. (#6595)
scbedd Aug 1, 2019
b0bd437
Synchronous device code credential (#6464)
chlowell Aug 1, 2019
f700299
[AutoPR alertsmanagement/resource-manager] fixing subscription id iss…
AutorestCI Aug 1, 2019
64b121c
Remove Configuration from public API (#6603)
chlowell Aug 1, 2019
ccd73c1
[AutoPR] security/resource-manager (#5709)
AutorestCI Aug 1, 2019
33d6e4a
Minimal change to disable code coverage publishing for PRs. (#6614)
mitchdenny Aug 1, 2019
0249a7c
Readme doc update for azure-core (#6611)
lmazuel Aug 1, 2019
e12b658
Mypy fixes for azure.core.tracing (#6590)
SuyogSoti Aug 2, 2019
abc3f20
MyPy azure-core (#6619)
lmazuel Aug 2, 2019
8eb5e9b
Update Key Vault docstrings (#6632)
chlowell Aug 2, 2019
2a7a965
Update Key Vault user agent (#6640)
chlowell Aug 2, 2019
b647582
Update README.md (#6635)
lmazuel Aug 2, 2019
f9ab732
mypy fixes (#6641)
SuyogSoti Aug 2, 2019
46c7ad6
Policies as kwargs for KeyVault (#6616)
lmazuel Aug 3, 2019
5b5ed26
Mypy fixes (#6646)
xiangyan99 Aug 3, 2019
8d17ca3
[AutoPR healthcareapis/resource-manager] Fixed healthcareapi readme.m…
AutorestCI Aug 5, 2019
c257006
fixed bug in maxItemCount propagation for Order by queries (#6608)
Aug 5, 2019
4470f79
Final azure-identity preview 2 changes (#6664)
chlowell Aug 5, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
mypy fixes (#6641)
* mypy fixes

* use six
  • Loading branch information
SuyogSoti authored Aug 2, 2019
commit f9ab732fe17af00b180a20313acdc3ad6272055b
Original file line number Diff line number Diff line change
Expand Up @@ -25,47 +25,45 @@
# --------------------------------------------------------------------------
"""Traces network calls using the implementation library from the settings."""

from azure.core.pipeline import PipelineRequest, PipelineResponse
from azure.core.tracing.context import tracing_context
from azure.core.tracing.abstract_span import AbstractSpan
from azure.core.tracing.common import set_span_contexts
from azure.core.pipeline.policies import SansIOHTTPPolicy
from azure.core.settings import settings

try:
from urllib.parse import urlparse
except ImportError:
from urlparse import urlparse
from six.moves import urllib

try:
from typing import TYPE_CHECKING
except ImportError:
TYPE_CHECKING = False

if TYPE_CHECKING:
from typing import Any, Optional
from azure.core.pipeline.transport import HttpRequest, HttpResponse
# the HttpRequest and HttpResponse related type ignores stem from this issue: #5796
from azure.core.pipeline.transport import HttpRequest, HttpResponse # pylint: disable=ungrouped-imports
from azure.core.tracing.abstract_span import AbstractSpan # pylint: disable=ungrouped-imports
from azure.core.pipeline import PipelineRequest, PipelineResponse # pylint: disable=ungrouped-imports
from typing import Any, Optional, Dict, List, Union


class DistributedTracingPolicy(SansIOHTTPPolicy):
"""The policy to create spans for Azure Calls"""

def __init__(self):
# type: () -> None
self.parent_span_dict = {}
self.parent_span_dict = {} # type: Dict[AbstractSpan, List[Union[AbstractSpan, Any]]]
self._request_id = "x-ms-client-request-id"
self._response_id = "x-ms-request-id"

def set_header(self, request, span):
# type: (PipelineRequest[HttpRequest], Any) -> None
# type: (PipelineRequest, Any) -> None
"""
Sets the header information on the span.
"""
headers = span.to_header()
request.http_request.headers.update(headers)
request.http_request.headers.update(headers) # type: ignore

def on_request(self, request):
# type: (PipelineRequest[HttpRequest], Any) -> None
# type: (PipelineRequest) -> None
parent_span = tracing_context.current_span.get()
wrapper_class = settings.tracing_implementation()
original_context = [parent_span, None]
Expand All @@ -77,7 +75,7 @@ def on_request(self, request):
if parent_span is None:
return

path = urlparse(request.http_request.url).path
path = urllib.parse.urlparse(request.http_request.url).path # type: ignore
if not path:
path = "/"
child = parent_span.span(name=path)
Expand All @@ -99,12 +97,15 @@ def end_span(self, request, response=None):
if response and self._response_id in response.headers:
span.add_attribute(self._response_id, response.headers[self._response_id])
span.finish()
set_span_contexts(*self.parent_span_dict.pop(span, None))
original_context = self.parent_span_dict.pop(span, None)
if original_context:
set_span_contexts(original_context[0], original_context[1])

def on_response(self, request, response):
# type: (PipelineRequest[HttpRequest], PipelineResponse[HttpRequest, HttpResponse], Any) -> None
self.end_span(request.http_request, response=response.http_response)
# type: (PipelineRequest, PipelineResponse) -> None
self.end_span(request.http_request, response=response.http_response) # type: ignore

def on_exception(self, _request): # pylint: disable=unused-argument
# type: (PipelineRequest[HttpRequest], Any) -> bool
self.end_span(_request.http_request)
# type: (PipelineRequest) -> bool
self.end_span(_request.http_request) # type: ignore
return False
2 changes: 1 addition & 1 deletion sdk/core/azure-core/azure/core/tracing/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ def __init__(self):
self.current_span = _ThreadLocalContext("current_span", None)

def with_current_context(self, func):
# type: (Callable[[Any], Any]) -> Any
# type: (Callable) -> Any
"""
Passes the current spans to the new context the function will be run in.
:param func: The function that will be run in the new context
Expand Down