Skip to content

Commit b246cce

Browse files
committed
Put asgi and wsgi back as instrumentations
1 parent 0b0705e commit b246cce

File tree

37 files changed

+485
-30
lines changed

37 files changed

+485
-30
lines changed

Diff for: docs-requirements.txt

+7
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,18 @@ sphinx~=2.4
22
sphinx-rtd-theme~=0.4
33
sphinx-autodoc-typehints~=1.10.2
44

5+
# Need to install the api/sdk in the venv for autodoc. Modifying sys.path
6+
# doesn't work for pkg_resources.
7+
-e "git+https://github.com/open-telemetry/opentelemetry-python.git#egg=opentelemetry-api&subdirectory=opentelemetry-api"
8+
-e "git+https://github.com/open-telemetry/opentelemetry-python.git#egg=opentelemetry-sdk&subdirectory=opentelemetry-sdk"
9+
510
# Required by opentelemetry-instrumentation
611
fastapi~=0.58.1
712
psutil~=5.7.0
813
pymemcache~=1.3
914

15+
-e "git+https://github.com/open-telemetry/opentelemetry-python.git#egg=opentelemetry-instrumentation&subdirectory=opentelemetry-instrumentation"
16+
1017
# Required by conf
1118
django>=2.2
1219

Diff for: docs/instrumentation/asgi/asgi.rst

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.. include:: ../../../instrumentation/opentelemetry-instrumentation-asgi/README.rst
2+
3+
API
4+
---
5+
6+
.. automodule:: opentelemetry.instrumentation.asgi
7+
:members:
8+
:undoc-members:
9+
:show-inheritance:

Diff for: docs/instrumentation/wsgi/wsgi.rst

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
OpenTelemetry WSGI Instrumentation
2+
==================================
3+
4+
.. automodule:: opentelemetry.instrumentation.wsgi
5+
:members:
6+
:undoc-members:
7+
:show-inheritance:

Diff for: eachdist.ini

+2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ ignore=
88

99
sortfirst=
1010
util/opentelemetry-util-http
11+
instrumentation/opentelemetry-instrumentation-wsgi
1112
instrumentation/opentelemetry-instrumentation-dbapi
13+
instrumentation/opentelemetry-instrumentation-asgi
1214
instrumentation/opentelemetry-instrumentation-botocore
1315
instrumentation/*
1416
exporter/*

Diff for: exporter/opentelemetry-exporter-datadog/src/opentelemetry/exporter/datadog/exporter.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
"opentelemetry.instrumentation.redis": DatadogSpanTypes.REDIS,
5252
"opentelemetry.instrumentation.requests": DatadogSpanTypes.HTTP,
5353
"opentelemetry.instrumentation.sqlalchemy": DatadogSpanTypes.SQL,
54-
"opentelemetry.util.http.wsgi": DatadogSpanTypes.WEB,
54+
"opentelemetry.instrumentation.wsgi": DatadogSpanTypes.WEB,
5555
}
5656

5757

Diff for: exporter/opentelemetry-exporter-datadog/tests/test_datadog_exporter.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ def test_span_types(self):
334334
"opentelemetry.instrumentation.redis",
335335
"opentelemetry.instrumentation.requests",
336336
"opentelemetry.instrumentation.sqlalchemy",
337-
"opentelemetry.util.http.wsgi",
337+
"opentelemetry.instrumentation.wsgi",
338338
]
339339

340340
for index, instrumentation in enumerate(test_instrumentations):
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
OpenTelemetry ASGI Instrumentation
2+
==================================
3+
4+
|pypi|
5+
6+
.. |pypi| image:: https://badge.fury.io/py/opentelemetry-instrumentation-asgi.svg
7+
:target: https://pypi.org/project/opentelemetry-instrumentation-asgi/
8+
9+
10+
This library provides a ASGI middleware that can be used on any ASGI framework
11+
(such as Django, Starlette, FastAPI or Quart) to track requests timing through OpenTelemetry.
12+
13+
Installation
14+
------------
15+
16+
::
17+
18+
pip install opentelemetry-instrumentation-asgi
19+
20+
21+
Usage (Quart)
22+
-------------
23+
24+
.. code-block:: python
25+
26+
from quart import Quart
27+
from opentelemetry.instrumentation.asgi import OpenTelemetryMiddleware
28+
29+
app = Quart(__name__)
30+
app.asgi_app = OpenTelemetryMiddleware(app.asgi_app)
31+
32+
@app.route("/")
33+
async def hello():
34+
return "Hello!"
35+
36+
if __name__ == "__main__":
37+
app.run(debug=True)
38+
39+
40+
Usage (Django 3.0)
41+
------------------
42+
43+
Modify the application's ``asgi.py`` file as shown below.
44+
45+
.. code-block:: python
46+
47+
import os
48+
from django.core.asgi import get_asgi_application
49+
from opentelemetry.instrumentation.asgi import OpenTelemetryMiddleware
50+
51+
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'asgi_example.settings')
52+
53+
application = get_asgi_application()
54+
application = OpenTelemetryMiddleware(application)
55+
56+
57+
Usage (Raw ASGI)
58+
----------------
59+
60+
.. code-block:: python
61+
62+
from opentelemetry.instrumentation.asgi import OpenTelemetryMiddleware
63+
64+
app = ... # An ASGI application.
65+
app = OpenTelemetryMiddleware(app)
66+
67+
68+
References
69+
----------
70+
71+
* `OpenTelemetry Project <https://opentelemetry.io/>`_
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Copyright The OpenTelemetry Authors
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
import os
15+
16+
import setuptools
17+
18+
BASE_DIR = os.path.dirname(__file__)
19+
VERSION_FILENAME = os.path.join(
20+
BASE_DIR, "src", "opentelemetry", "instrumentation", "asgi", "version.py"
21+
)
22+
PACKAGE_INFO = {}
23+
with open(VERSION_FILENAME) as f:
24+
exec(f.read(), PACKAGE_INFO)
25+
26+
setuptools.setup(version=PACKAGE_INFO["__version__"])

Diff for: util/opentelemetry-util-http/src/opentelemetry/util/http/asgi/__init__.py renamed to instrumentation/opentelemetry-instrumentation-asgi/src/opentelemetry/instrumentation/asgi/__init__.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
# limitations under the License.
1414

1515
"""
16-
The opentelemetry.util.http.asgi package provides an ASGI middleware that can
17-
be used on any ASGI framework (such as Django-channels / Quart) to track
18-
requests timing through OpenTelemetry.
16+
The opentelemetry-instrumentation-asgi package provides an ASGI middleware that can be used
17+
on any ASGI framework (such as Django-channels / Quart) to track requests
18+
timing through OpenTelemetry.
1919
"""
2020

2121
import typing
@@ -26,10 +26,10 @@
2626
from asgiref.compatibility import guarantee_single_callable
2727

2828
from opentelemetry import context, propagators, trace
29+
from opentelemetry.instrumentation.asgi.version import __version__ # noqa
2930
from opentelemetry.instrumentation.utils import http_status_to_status_code
3031
from opentelemetry.trace.propagation.textmap import DictGetter
3132
from opentelemetry.trace.status import Status, StatusCode
32-
from opentelemetry.util.http.asgi.version import __version__ # noqa
3333

3434

3535
class CarrierGetter(DictGetter):

Diff for: util/opentelemetry-util-http/tests/asgi/test_asgi_middleware.py renamed to instrumentation/opentelemetry-instrumentation-asgi/tests/test_asgi_middleware.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import unittest
1717
import unittest.mock as mock
1818

19-
import opentelemetry.util.http.asgi as otel_asgi
19+
import opentelemetry.instrumentation.asgi as otel_asgi
2020
from opentelemetry import trace as trace_api
2121
from opentelemetry.test.asgitestutil import (
2222
AsgiTestBase,

Diff for: instrumentation/opentelemetry-instrumentation-django/setup.cfg

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ packages=find_namespace:
4141
install_requires =
4242
django >= 1.10
4343
opentelemetry-util-http == 0.18.dev0
44+
opentelemetry-instrumentation-wsgi == 0.18.dev0
4445
opentelemetry-instrumentation == 0.18.dev0
4546
opentelemetry-api == 0.18.dev0
4647

Diff for: instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/middleware.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@
2020
from opentelemetry.context import attach, detach
2121
from opentelemetry.instrumentation.django.version import __version__
2222
from opentelemetry.instrumentation.utils import extract_attributes_from_object
23-
from opentelemetry.propagators import extract
24-
from opentelemetry.trace import SpanKind, get_tracer
25-
from opentelemetry.util.http import get_excluded_urls, get_traced_request_attrs
26-
from opentelemetry.util.http.wsgi import (
23+
from opentelemetry.instrumentation.wsgi import (
2724
add_response_attributes,
2825
carrier_getter,
2926
collect_request_attributes,
3027
)
28+
from opentelemetry.propagators import extract
29+
from opentelemetry.trace import SpanKind, get_tracer
30+
from opentelemetry.util.http import get_excluded_urls, get_traced_request_attrs
3131

3232
try:
3333
from django.core.urlresolvers import ( # pylint: disable=no-name-in-module

Diff for: instrumentation/opentelemetry-instrumentation-falcon/setup.cfg

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ package_dir=
4141
packages=find_namespace:
4242
install_requires =
4343
falcon ~= 2.0
44+
opentelemetry-instrumentation-wsgi == 0.18.dev0
4445
opentelemetry-util-http == 0.18.dev0
4546
opentelemetry-instrumentation == 0.18.dev0
4647
opentelemetry-api == 0.18.dev0

Diff for: instrumentation/opentelemetry-instrumentation-falcon/src/opentelemetry/instrumentation/falcon/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
"""
1616
This library builds on the OpenTelemetry WSGI middleware to track web requests
17-
in Falcon applications. In addition to opentelemetry-util-http,
17+
in Falcon applications. In addition to opentelemetry-instrumentation-wsgi,
1818
it supports falcon-specific features such as:
1919
2020
* The Falcon resource and method name is used as the Span name.
@@ -48,7 +48,7 @@ def on_get(self, req, resp):
4848

4949
import falcon
5050

51-
import opentelemetry.util.http.wsgi as otel_wsgi
51+
import opentelemetry.instrumentation.wsgi as otel_wsgi
5252
from opentelemetry import context, propagators, trace
5353
from opentelemetry.instrumentation.falcon.version import __version__
5454
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor

Diff for: instrumentation/opentelemetry-instrumentation-fastapi/setup.cfg

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ package_dir=
3939
packages=find_namespace:
4040
install_requires =
4141
opentelemetry-api == 0.18.dev0
42+
opentelemetry-instrumentation-asgi == 0.18.dev0
4243
opentelemetry-util-http == 0.18.dev0
4344

4445
[options.entry_points]

Diff for: instrumentation/opentelemetry-instrumentation-fastapi/src/opentelemetry/instrumentation/fastapi/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
import fastapi
1616
from starlette.routing import Match
1717

18+
from opentelemetry.instrumentation.asgi import OpenTelemetryMiddleware
1819
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
1920
from opentelemetry.util.http import get_excluded_urls
20-
from opentelemetry.util.http.asgi import OpenTelemetryMiddleware
2121

2222
_excluded_urls = get_excluded_urls("FASTAPI")
2323

Diff for: instrumentation/opentelemetry-instrumentation-flask/setup.cfg

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ install_requires =
4242
flask ~= 1.0
4343
opentelemetry-util-http == 0.18.dev0
4444
opentelemetry-instrumentation == 0.18.dev0
45+
opentelemetry-instrumentation-wsgi == 0.18.dev0
4546
opentelemetry-api == 0.18.dev0
4647

4748
[options.extras_require]

Diff for: instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def hello():
5151

5252
import flask
5353

54-
import opentelemetry.util.http.wsgi as otel_wsgi
54+
import opentelemetry.instrumentation.wsgi as otel_wsgi
5555
from opentelemetry import context, propagators, trace
5656
from opentelemetry.instrumentation.flask.version import __version__
5757
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor

Diff for: instrumentation/opentelemetry-instrumentation-pyramid/setup.cfg

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ install_requires =
4242
pyramid >= 1.7
4343
opentelemetry-instrumentation == 0.18.dev0
4444
opentelemetry-api == 0.18.dev0
45+
opentelemetry-instrumentation-wsgi == 0.18.dev0
4546
opentelemetry-util-http == 0.18.dev0
4647
wrapt >= 1.0.0, < 2.0.0
4748

Diff for: instrumentation/opentelemetry-instrumentation-pyramid/src/opentelemetry/instrumentation/pyramid/callbacks.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from pyramid.settings import asbool
66
from pyramid.tweens import EXCVIEW
77

8-
import opentelemetry.util.http.wsgi as otel_wsgi
8+
import opentelemetry.instrumentation.wsgi as otel_wsgi
99
from opentelemetry import context, propagators, trace
1010
from opentelemetry.instrumentation.pyramid.version import __version__
1111
from opentelemetry.util import time_ns

Diff for: instrumentation/opentelemetry-instrumentation-starlette/setup.cfg

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ package_dir=
3939
packages=find_namespace:
4040
install_requires =
4141
opentelemetry-api == 0.18.dev0
42+
opentelemetry-instrumentation-asgi == 0.18.dev0
4243
opentelemetry-util-http == 0.18.dev0
4344

4445
[options.entry_points]

Diff for: instrumentation/opentelemetry-instrumentation-starlette/src/opentelemetry/instrumentation/starlette/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
from starlette import applications
1616
from starlette.routing import Match
1717

18+
from opentelemetry.instrumentation.asgi import OpenTelemetryMiddleware
1819
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
1920
from opentelemetry.util.http import get_excluded_urls
20-
from opentelemetry.util.http.asgi import OpenTelemetryMiddleware
2121

2222
_excluded_urls = get_excluded_urls("STARLETTE")
2323

0 commit comments

Comments
 (0)