From 9817f886baf1c5c7b3302f7b6a1e698e4c23f2b7 Mon Sep 17 00:00:00 2001 From: Connor Adams Date: Fri, 5 Jun 2020 10:24:48 -0400 Subject: [PATCH 1/8] Rename opentelemetry-auto-instrumentation to opentelemetry-instrumentation,and the console command `opentelemetry-auto-instrumentation` to `opentelemetry-instrument` --- .../auto_instrumentation.rst | 2 +- docs/auto_instrumentation/instrumentor.rst | 4 +- docs/conf.py | 2 +- docs/examples/auto-instrumentation/README.rst | 4 +- docs/examples/datadog_exporter/README.rst | 8 ++-- eachdist.ini | 2 +- .../setup.cfg | 1 + ext/opentelemetry-ext-boto/setup.cfg | 2 +- .../src/opentelemetry/ext/boto/__init__.py | 4 +- ext/opentelemetry-ext-dbapi/setup.cfg | 1 + ext/opentelemetry-ext-django/setup.cfg | 2 +- .../src/opentelemetry/ext/django/__init__.py | 2 +- ext/opentelemetry-ext-flask/setup.cfg | 2 +- .../src/opentelemetry/ext/flask/__init__.py | 2 +- ext/opentelemetry-ext-jinja2/setup.cfg | 2 +- .../src/opentelemetry/ext/jinja2/__init__.py | 2 +- ext/opentelemetry-ext-mysql/setup.cfg | 2 +- .../src/opentelemetry/ext/mysql/__init__.py | 2 +- ext/opentelemetry-ext-psycopg2/setup.cfg | 2 +- .../opentelemetry/ext/psycopg2/__init__.py | 2 +- ext/opentelemetry-ext-pymongo/setup.cfg | 2 +- .../src/opentelemetry/ext/pymongo/__init__.py | 2 +- ext/opentelemetry-ext-pymysql/setup.cfg | 2 +- .../src/opentelemetry/ext/pymysql/__init__.py | 2 +- ext/opentelemetry-ext-redis/setup.cfg | 2 +- .../src/opentelemetry/ext/redis/__init__.py | 4 +- ext/opentelemetry-ext-requests/setup.cfg | 2 +- .../opentelemetry/ext/requests/__init__.py | 2 +- ext/opentelemetry-ext-sqlalchemy/setup.cfg | 2 +- .../opentelemetry/ext/sqlalchemy/__init__.py | 4 +- ext/opentelemetry-ext-sqlite3/setup.cfg | 2 +- .../src/opentelemetry/ext/sqlite3/__init__.py | 2 +- ext/opentelemetry-ext-wsgi/setup.cfg | 1 + opentelemetry-auto-instrumentation/README.rst | 19 -------- .../CHANGELOG.md | 0 .../MANIFEST.in | 0 opentelemetry-instrumentation/README.rst | 19 ++++++++ .../setup.cfg | 8 ++-- .../setup.py | 2 +- .../instrumentation}/__init__.py | 4 +- .../instrumentation}/auto_instrumentation.py | 0 .../instrumentation}/bootstrap.py | 0 .../instrumentation}/instrumentor.py | 6 +-- .../instrumentation}/sitecustomize.py | 0 .../opentelemetry/instrumentation}/version.py | 0 .../tests/__init__.py | 0 .../tests/test_bootstrap.py | 12 ++--- .../tests/test_instrumentor.py | 2 +- .../tests/test_run.py | 14 +++--- scripts/build.sh | 2 +- tox.ini | 44 +++++++++---------- 51 files changed, 107 insertions(+), 104 deletions(-) delete mode 100644 opentelemetry-auto-instrumentation/README.rst rename {opentelemetry-auto-instrumentation => opentelemetry-instrumentation}/CHANGELOG.md (100%) rename {opentelemetry-auto-instrumentation => opentelemetry-instrumentation}/MANIFEST.in (100%) create mode 100644 opentelemetry-instrumentation/README.rst rename {opentelemetry-auto-instrumentation => opentelemetry-instrumentation}/setup.cfg (85%) rename {opentelemetry-auto-instrumentation => opentelemetry-instrumentation}/setup.py (91%) rename {opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation => opentelemetry-instrumentation/src/opentelemetry/instrumentation}/__init__.py (93%) rename {opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation => opentelemetry-instrumentation/src/opentelemetry/instrumentation}/auto_instrumentation.py (100%) rename {opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation => opentelemetry-instrumentation/src/opentelemetry/instrumentation}/bootstrap.py (100%) rename {opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation => opentelemetry-instrumentation/src/opentelemetry/instrumentation}/instrumentor.py (92%) rename {opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation => opentelemetry-instrumentation/src/opentelemetry/instrumentation}/sitecustomize.py (100%) rename {opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation => opentelemetry-instrumentation/src/opentelemetry/instrumentation}/version.py (100%) rename {opentelemetry-auto-instrumentation => opentelemetry-instrumentation}/tests/__init__.py (100%) rename {opentelemetry-auto-instrumentation => opentelemetry-instrumentation}/tests/test_bootstrap.py (89%) rename {opentelemetry-auto-instrumentation => opentelemetry-instrumentation}/tests/test_instrumentor.py (95%) rename {opentelemetry-auto-instrumentation => opentelemetry-instrumentation}/tests/test_run.py (84%) diff --git a/docs/auto_instrumentation/auto_instrumentation.rst b/docs/auto_instrumentation/auto_instrumentation.rst index c1fd0eff2a1..908c091abe3 100644 --- a/docs/auto_instrumentation/auto_instrumentation.rst +++ b/docs/auto_instrumentation/auto_instrumentation.rst @@ -1,7 +1,7 @@ OpenTelemetry Python Autoinstrumentation ======================================== -.. automodule:: opentelemetry.auto_instrumentation +.. automodule:: opentelemetry.instrumentation :members: :undoc-members: :show-inheritance: diff --git a/docs/auto_instrumentation/instrumentor.rst b/docs/auto_instrumentation/instrumentor.rst index c94c0237f57..61ef9be4080 100644 --- a/docs/auto_instrumentation/instrumentor.rst +++ b/docs/auto_instrumentation/instrumentor.rst @@ -1,7 +1,7 @@ -opentelemetry.auto_instrumentation.instrumentor package +opentelemetry.instrumentation.instrumentor package ======================================================= -.. automodule:: opentelemetry.auto_instrumentation.instrumentor +.. automodule:: opentelemetry.instrumentation.instrumentor :members: :undoc-members: :show-inheritance: diff --git a/docs/conf.py b/docs/conf.py index 42fcf29f4f1..74ae754c60c 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -27,7 +27,7 @@ source_dirs = [ os.path.abspath("../opentelemetry-api/src/"), os.path.abspath("../opentelemetry-sdk/src/"), - os.path.abspath("../opentelemetry-auto-instrumentation/src/"), + os.path.abspath("../opentelemetry-instrumentation/src/"), ] ext = "../ext" diff --git a/docs/examples/auto-instrumentation/README.rst b/docs/examples/auto-instrumentation/README.rst index 6592ecb958d..738f71cb6c9 100644 --- a/docs/examples/auto-instrumentation/README.rst +++ b/docs/examples/auto-instrumentation/README.rst @@ -72,7 +72,7 @@ Installation .. code:: sh $ pip install opentelemetry-sdk - $ pip install opentelemetry-auto-instrumentation + $ pip install opentelemetry-instrumentation $ pip install opentelemetry-ext-flask $ pip install requests @@ -138,7 +138,7 @@ and run this instead: .. code:: sh - $ opentelemetry-auto-instrumentation python server_uninstrumented.py + $ opentelemetry-instrumentation python server_uninstrumented.py In the console where you previously executed ``client.py``, run again this again: diff --git a/docs/examples/datadog_exporter/README.rst b/docs/examples/datadog_exporter/README.rst index 961ac9ca05c..5645eea715c 100644 --- a/docs/examples/datadog_exporter/README.rst +++ b/docs/examples/datadog_exporter/README.rst @@ -44,7 +44,7 @@ Auto-Instrumention Example pip install opentelemetry-api pip install opentelemetry-sdk pip install opentelemetry-ext-datadog - pip install opentelemetry-auto-instrumentation + pip install opentelemetry-instrumentation pip install opentelemetry-ext-flask pip install flask pip install requests @@ -66,16 +66,16 @@ Auto-Instrumention Example .. code-block:: sh - opentelemetry-auto-instrumentation python server.py + opentelemetry-instrumentation python server.py * Run client .. code-block:: sh - opentelemetry-auto-instrumentation python client.py testing + opentelemetry-instrumentation python client.py testing * Run client with parameter to raise error .. code-block:: sh - opentelemetry-auto-instrumentation python client.py error + opentelemetry-instrumentation python client.py error diff --git a/eachdist.ini b/eachdist.ini index b573b838fdf..f88cb1b180b 100644 --- a/eachdist.ini +++ b/eachdist.ini @@ -4,7 +4,7 @@ sortfirst= opentelemetry-api opentelemetry-sdk - opentelemetry-auto-instrumentation + opentelemetry-instrumentation ext/opentelemetry-ext-wsgi ext/opentelemetry-ext-dbapi ext/* diff --git a/ext/opentelemetry-ext-aiohttp-client/setup.cfg b/ext/opentelemetry-ext-aiohttp-client/setup.cfg index af4839fc3df..e2a6493922c 100644 --- a/ext/opentelemetry-ext-aiohttp-client/setup.cfg +++ b/ext/opentelemetry-ext-aiohttp-client/setup.cfg @@ -40,6 +40,7 @@ package_dir= packages=find_namespace: install_requires = opentelemetry-api >= 0.9.dev0 + opentelemetry-instrumentation == 0.9.dev0 aiohttp ~= 3.0 [options.packages.find] diff --git a/ext/opentelemetry-ext-boto/setup.cfg b/ext/opentelemetry-ext-boto/setup.cfg index 529e79be990..d66b59875f8 100644 --- a/ext/opentelemetry-ext-boto/setup.cfg +++ b/ext/opentelemetry-ext-boto/setup.cfg @@ -42,7 +42,7 @@ packages=find_namespace: install_requires = boto ~= 2.0 opentelemetry-api == 0.9.dev0 - opentelemetry-auto-instrumentation == 0.9.dev0 + opentelemetry-instrumentation == 0.9.dev0 [options.extras_require] test = diff --git a/ext/opentelemetry-ext-boto/src/opentelemetry/ext/boto/__init__.py b/ext/opentelemetry-ext-boto/src/opentelemetry/ext/boto/__init__.py index fa66fda61dd..03bec07177b 100644 --- a/ext/opentelemetry-ext-boto/src/opentelemetry/ext/boto/__init__.py +++ b/ext/opentelemetry-ext-boto/src/opentelemetry/ext/boto/__init__.py @@ -15,7 +15,7 @@ Instrument `Boto`_ to trace service requests. There are two options for instrumenting code. The first option is to use the -``opentelemetry-auto-instrumentation`` executable which will automatically +``opentelemetry-instrumentation`` executable which will automatically instrument your Boto client. The second is to programmatically enable instrumentation via the following code: @@ -50,8 +50,8 @@ from boto.connection import AWSAuthConnection, AWSQueryConnection from wrapt import ObjectProxy, wrap_function_wrapper -from opentelemetry.auto_instrumentation.instrumentor import BaseInstrumentor from opentelemetry.ext.boto.version import __version__ +from opentelemetry.instrumentation.instrumentor import BaseInstrumentor from opentelemetry.trace import SpanKind, get_tracer logger = logging.getLogger(__name__) diff --git a/ext/opentelemetry-ext-dbapi/setup.cfg b/ext/opentelemetry-ext-dbapi/setup.cfg index e352201bb67..680e6c819c1 100644 --- a/ext/opentelemetry-ext-dbapi/setup.cfg +++ b/ext/opentelemetry-ext-dbapi/setup.cfg @@ -41,6 +41,7 @@ package_dir= packages=find_namespace: install_requires = opentelemetry-api == 0.9.dev0 + opentelemetry-instrumentation == 0.9.dev0 wrapt >= 1.0.0, < 2.0.0 [options.extras_require] diff --git a/ext/opentelemetry-ext-django/setup.cfg b/ext/opentelemetry-ext-django/setup.cfg index bf72f9d9811..e590cdf9a8f 100644 --- a/ext/opentelemetry-ext-django/setup.cfg +++ b/ext/opentelemetry-ext-django/setup.cfg @@ -42,7 +42,7 @@ packages=find_namespace: install_requires = django >= 1.10 opentelemetry-ext-wsgi == 0.9.dev0 - opentelemetry-auto-instrumentation == 0.9.dev0 + opentelemetry-instrumentation == 0.9.dev0 opentelemetry-api == 0.9.dev0 [options.extras_require] diff --git a/ext/opentelemetry-ext-django/src/opentelemetry/ext/django/__init__.py b/ext/opentelemetry-ext-django/src/opentelemetry/ext/django/__init__.py index d4e78351aac..3eb3b2dd728 100644 --- a/ext/opentelemetry-ext-django/src/opentelemetry/ext/django/__init__.py +++ b/ext/opentelemetry-ext-django/src/opentelemetry/ext/django/__init__.py @@ -16,9 +16,9 @@ from django.conf import settings -from opentelemetry.auto_instrumentation.instrumentor import BaseInstrumentor from opentelemetry.configuration import Configuration from opentelemetry.ext.django.middleware import _DjangoMiddleware +from opentelemetry.instrumentation.instrumentor import BaseInstrumentor _logger = getLogger(__name__) diff --git a/ext/opentelemetry-ext-flask/setup.cfg b/ext/opentelemetry-ext-flask/setup.cfg index 32587174191..57ee7b5ed97 100644 --- a/ext/opentelemetry-ext-flask/setup.cfg +++ b/ext/opentelemetry-ext-flask/setup.cfg @@ -42,7 +42,7 @@ packages=find_namespace: install_requires = flask ~= 1.0 opentelemetry-ext-wsgi == 0.9.dev0 - opentelemetry-auto-instrumentation == 0.9.dev0 + opentelemetry-instrumentation == 0.9.dev0 opentelemetry-api == 0.9.dev0 [options.extras_require] diff --git a/ext/opentelemetry-ext-flask/src/opentelemetry/ext/flask/__init__.py b/ext/opentelemetry-ext-flask/src/opentelemetry/ext/flask/__init__.py index cd94dc7e47b..20d6501a938 100644 --- a/ext/opentelemetry-ext-flask/src/opentelemetry/ext/flask/__init__.py +++ b/ext/opentelemetry-ext-flask/src/opentelemetry/ext/flask/__init__.py @@ -53,8 +53,8 @@ def hello(): import opentelemetry.ext.wsgi as otel_wsgi from opentelemetry import configuration, context, propagators, trace -from opentelemetry.auto_instrumentation.instrumentor import BaseInstrumentor from opentelemetry.ext.flask.version import __version__ +from opentelemetry.instrumentation.instrumentor import BaseInstrumentor from opentelemetry.util import disable_trace, time_ns _logger = getLogger(__name__) diff --git a/ext/opentelemetry-ext-jinja2/setup.cfg b/ext/opentelemetry-ext-jinja2/setup.cfg index a9428aec609..7179cdd9319 100644 --- a/ext/opentelemetry-ext-jinja2/setup.cfg +++ b/ext/opentelemetry-ext-jinja2/setup.cfg @@ -40,7 +40,7 @@ package_dir= packages=find_namespace: install_requires = opentelemetry-api == 0.9.dev0 - opentelemetry-auto-instrumentation == 0.9.dev0 + opentelemetry-instrumentation == 0.9.dev0 jinja2~=2.7 wrapt >= 1.0.0, < 2.0.0 diff --git a/ext/opentelemetry-ext-jinja2/src/opentelemetry/ext/jinja2/__init__.py b/ext/opentelemetry-ext-jinja2/src/opentelemetry/ext/jinja2/__init__.py index 4aabb832ba2..a8183d7a8d2 100644 --- a/ext/opentelemetry-ext-jinja2/src/opentelemetry/ext/jinja2/__init__.py +++ b/ext/opentelemetry-ext-jinja2/src/opentelemetry/ext/jinja2/__init__.py @@ -48,8 +48,8 @@ from wrapt import ObjectProxy from wrapt import wrap_function_wrapper as _wrap -from opentelemetry.auto_instrumentation.instrumentor import BaseInstrumentor from opentelemetry.ext.jinja2.version import __version__ +from opentelemetry.instrumentation.instrumentor import BaseInstrumentor from opentelemetry.trace import SpanKind, get_tracer from opentelemetry.trace.status import Status, StatusCanonicalCode diff --git a/ext/opentelemetry-ext-mysql/setup.cfg b/ext/opentelemetry-ext-mysql/setup.cfg index afe53a651f2..95fe29b864f 100644 --- a/ext/opentelemetry-ext-mysql/setup.cfg +++ b/ext/opentelemetry-ext-mysql/setup.cfg @@ -42,7 +42,7 @@ packages=find_namespace: install_requires = opentelemetry-api == 0.9.dev0 opentelemetry-ext-dbapi == 0.9.dev0 - opentelemetry-auto-instrumentation == 0.9.dev0 + opentelemetry-instrumentation == 0.9.dev0 mysql-connector-python ~= 8.0 wrapt >= 1.0.0, < 2.0.0 diff --git a/ext/opentelemetry-ext-mysql/src/opentelemetry/ext/mysql/__init__.py b/ext/opentelemetry-ext-mysql/src/opentelemetry/ext/mysql/__init__.py index a70c1d46ea3..daf90c4bbf8 100644 --- a/ext/opentelemetry-ext-mysql/src/opentelemetry/ext/mysql/__init__.py +++ b/ext/opentelemetry-ext-mysql/src/opentelemetry/ext/mysql/__init__.py @@ -46,9 +46,9 @@ import mysql.connector -from opentelemetry.auto_instrumentation.instrumentor import BaseInstrumentor from opentelemetry.ext import dbapi from opentelemetry.ext.mysql.version import __version__ +from opentelemetry.instrumentation.instrumentor import BaseInstrumentor from opentelemetry.trace import TracerProvider, get_tracer diff --git a/ext/opentelemetry-ext-psycopg2/setup.cfg b/ext/opentelemetry-ext-psycopg2/setup.cfg index 5de40eac26f..ec4852a15b1 100644 --- a/ext/opentelemetry-ext-psycopg2/setup.cfg +++ b/ext/opentelemetry-ext-psycopg2/setup.cfg @@ -42,7 +42,7 @@ packages=find_namespace: install_requires = opentelemetry-api == 0.9.dev0 opentelemetry-ext-dbapi == 0.9.dev0 - opentelemetry-auto-instrumentation == 0.9.dev0 + opentelemetry-instrumentation == 0.9.dev0 psycopg2-binary >= 2.7.3.1 wrapt >= 1.0.0, < 2.0.0 diff --git a/ext/opentelemetry-ext-psycopg2/src/opentelemetry/ext/psycopg2/__init__.py b/ext/opentelemetry-ext-psycopg2/src/opentelemetry/ext/psycopg2/__init__.py index c82343f4de0..871356ab2cc 100644 --- a/ext/opentelemetry-ext-psycopg2/src/opentelemetry/ext/psycopg2/__init__.py +++ b/ext/opentelemetry-ext-psycopg2/src/opentelemetry/ext/psycopg2/__init__.py @@ -47,9 +47,9 @@ import psycopg2 import wrapt -from opentelemetry.auto_instrumentation.instrumentor import BaseInstrumentor from opentelemetry.ext import dbapi from opentelemetry.ext.psycopg2.version import __version__ +from opentelemetry.instrumentation.instrumentor import BaseInstrumentor from opentelemetry.trace import TracerProvider, get_tracer diff --git a/ext/opentelemetry-ext-pymongo/setup.cfg b/ext/opentelemetry-ext-pymongo/setup.cfg index ba1ea4026a5..39d48492979 100644 --- a/ext/opentelemetry-ext-pymongo/setup.cfg +++ b/ext/opentelemetry-ext-pymongo/setup.cfg @@ -41,7 +41,7 @@ package_dir= packages=find_namespace: install_requires = opentelemetry-api == 0.9.dev0 - opentelemetry-auto-instrumentation == 0.9.dev0 + opentelemetry-instrumentation == 0.9.dev0 pymongo ~= 3.1 [options.extras_require] diff --git a/ext/opentelemetry-ext-pymongo/src/opentelemetry/ext/pymongo/__init__.py b/ext/opentelemetry-ext-pymongo/src/opentelemetry/ext/pymongo/__init__.py index ebe52ed5f1a..fa8a599539e 100644 --- a/ext/opentelemetry-ext-pymongo/src/opentelemetry/ext/pymongo/__init__.py +++ b/ext/opentelemetry-ext-pymongo/src/opentelemetry/ext/pymongo/__init__.py @@ -43,8 +43,8 @@ from pymongo import monitoring from opentelemetry import trace -from opentelemetry.auto_instrumentation.instrumentor import BaseInstrumentor from opentelemetry.ext.pymongo.version import __version__ +from opentelemetry.instrumentation.instrumentor import BaseInstrumentor from opentelemetry.trace import SpanKind, get_tracer from opentelemetry.trace.status import Status, StatusCanonicalCode diff --git a/ext/opentelemetry-ext-pymysql/setup.cfg b/ext/opentelemetry-ext-pymysql/setup.cfg index f08e4d3ee1f..13a0c7e350a 100644 --- a/ext/opentelemetry-ext-pymysql/setup.cfg +++ b/ext/opentelemetry-ext-pymysql/setup.cfg @@ -42,7 +42,7 @@ packages=find_namespace: install_requires = opentelemetry-api == 0.9.dev0 opentelemetry-ext-dbapi == 0.9.dev0 - opentelemetry-auto-instrumentation == 0.9.dev0 + opentelemetry-instrumentation == 0.9.dev0 PyMySQL ~= 0.9.3 [options.extras_require] diff --git a/ext/opentelemetry-ext-pymysql/src/opentelemetry/ext/pymysql/__init__.py b/ext/opentelemetry-ext-pymysql/src/opentelemetry/ext/pymysql/__init__.py index 14a320fdd00..b4d75543c60 100644 --- a/ext/opentelemetry-ext-pymysql/src/opentelemetry/ext/pymysql/__init__.py +++ b/ext/opentelemetry-ext-pymysql/src/opentelemetry/ext/pymysql/__init__.py @@ -47,9 +47,9 @@ import pymysql -from opentelemetry.auto_instrumentation.instrumentor import BaseInstrumentor from opentelemetry.ext import dbapi from opentelemetry.ext.pymysql.version import __version__ +from opentelemetry.instrumentation.instrumentor import BaseInstrumentor from opentelemetry.trace import TracerProvider, get_tracer diff --git a/ext/opentelemetry-ext-redis/setup.cfg b/ext/opentelemetry-ext-redis/setup.cfg index 2694d85d520..fab8cbd8f3c 100644 --- a/ext/opentelemetry-ext-redis/setup.cfg +++ b/ext/opentelemetry-ext-redis/setup.cfg @@ -41,7 +41,7 @@ package_dir= packages=find_namespace: install_requires = opentelemetry-api == 0.9.dev0 - opentelemetry-auto-instrumentation == 0.9.dev0 + opentelemetry-instrumentation == 0.9.dev0 redis >= 2.6 wrapt >= 1.12.1 diff --git a/ext/opentelemetry-ext-redis/src/opentelemetry/ext/redis/__init__.py b/ext/opentelemetry-ext-redis/src/opentelemetry/ext/redis/__init__.py index e653936ca54..43fdcf016f2 100644 --- a/ext/opentelemetry-ext-redis/src/opentelemetry/ext/redis/__init__.py +++ b/ext/opentelemetry-ext-redis/src/opentelemetry/ext/redis/__init__.py @@ -16,7 +16,7 @@ Instrument `redis`_ to report Redis queries. There are two options for instrumenting code. The first option is to use the -``opentelemetry-auto-instrumentation`` executable which will automatically +``opentelemetry-instrumentation`` executable which will automatically instrument your Redis client. The second is to programmatically enable instrumentation via the following code: @@ -49,12 +49,12 @@ from wrapt import ObjectProxy, wrap_function_wrapper from opentelemetry import trace -from opentelemetry.auto_instrumentation.instrumentor import BaseInstrumentor from opentelemetry.ext.redis.util import ( _extract_conn_attributes, _format_command_args, ) from opentelemetry.ext.redis.version import __version__ +from opentelemetry.instrumentation.instrumentor import BaseInstrumentor _DEFAULT_SERVICE = "redis" _RAWCMD = "db.statement" diff --git a/ext/opentelemetry-ext-requests/setup.cfg b/ext/opentelemetry-ext-requests/setup.cfg index ca5dc5ceba0..8a02b746625 100644 --- a/ext/opentelemetry-ext-requests/setup.cfg +++ b/ext/opentelemetry-ext-requests/setup.cfg @@ -41,7 +41,7 @@ package_dir= packages=find_namespace: install_requires = opentelemetry-api == 0.9.dev0 - opentelemetry-auto-instrumentation == 0.9.dev0 + opentelemetry-instrumentation == 0.9.dev0 requests ~= 2.0 [options.extras_require] diff --git a/ext/opentelemetry-ext-requests/src/opentelemetry/ext/requests/__init__.py b/ext/opentelemetry-ext-requests/src/opentelemetry/ext/requests/__init__.py index 65bc21370f6..c7092ce3fde 100644 --- a/ext/opentelemetry-ext-requests/src/opentelemetry/ext/requests/__init__.py +++ b/ext/opentelemetry-ext-requests/src/opentelemetry/ext/requests/__init__.py @@ -50,8 +50,8 @@ from requests.sessions import Session from opentelemetry import context, propagators, trace -from opentelemetry.auto_instrumentation.instrumentor import BaseInstrumentor from opentelemetry.ext.requests.version import __version__ +from opentelemetry.instrumentation.instrumentor import BaseInstrumentor from opentelemetry.trace import SpanKind from opentelemetry.trace.status import Status, StatusCanonicalCode diff --git a/ext/opentelemetry-ext-sqlalchemy/setup.cfg b/ext/opentelemetry-ext-sqlalchemy/setup.cfg index dfbf655e6d2..851adddb76d 100644 --- a/ext/opentelemetry-ext-sqlalchemy/setup.cfg +++ b/ext/opentelemetry-ext-sqlalchemy/setup.cfg @@ -41,7 +41,7 @@ package_dir= packages=find_namespace: install_requires = opentelemetry-api == 0.9.dev0 - opentelemetry-auto-instrumentation == 0.9.dev0 + opentelemetry-instrumentation == 0.9.dev0 wrapt >= 1.11.2 sqlalchemy diff --git a/ext/opentelemetry-ext-sqlalchemy/src/opentelemetry/ext/sqlalchemy/__init__.py b/ext/opentelemetry-ext-sqlalchemy/src/opentelemetry/ext/sqlalchemy/__init__.py index 05b384429b1..67c65a5e04d 100644 --- a/ext/opentelemetry-ext-sqlalchemy/src/opentelemetry/ext/sqlalchemy/__init__.py +++ b/ext/opentelemetry-ext-sqlalchemy/src/opentelemetry/ext/sqlalchemy/__init__.py @@ -16,7 +16,7 @@ Instrument `sqlalchemy`_ to report SQL queries. There are two options for instrumenting code. The first option is to use -the ``opentelemetry-auto-instrumentation`` executable which will automatically +the ``opentelemetry-instrumentation`` executable which will automatically instrument your SQLAlchemy engine. The second is to programmatically enable instrumentation via the following code: @@ -47,12 +47,12 @@ import wrapt from wrapt import wrap_function_wrapper as _w -from opentelemetry.auto_instrumentation.instrumentor import BaseInstrumentor from opentelemetry.ext.sqlalchemy.engine import ( EngineTracer, _get_tracer, _wrap_create_engine, ) +from opentelemetry.instrumentation.instrumentor import BaseInstrumentor def _unwrap(obj, attr): diff --git a/ext/opentelemetry-ext-sqlite3/setup.cfg b/ext/opentelemetry-ext-sqlite3/setup.cfg index b32dd1cf682..d5bf161f554 100644 --- a/ext/opentelemetry-ext-sqlite3/setup.cfg +++ b/ext/opentelemetry-ext-sqlite3/setup.cfg @@ -42,7 +42,7 @@ packages=find_namespace: install_requires = opentelemetry-api == 0.9.dev0 opentelemetry-ext-dbapi == 0.9.dev0 - opentelemetry-auto-instrumentation == 0.9.dev0 + opentelemetry-instrumentation == 0.9.dev0 wrapt >= 1.0.0, < 2.0.0 [options.extras_require] diff --git a/ext/opentelemetry-ext-sqlite3/src/opentelemetry/ext/sqlite3/__init__.py b/ext/opentelemetry-ext-sqlite3/src/opentelemetry/ext/sqlite3/__init__.py index 5c9a0093602..174fbba1160 100644 --- a/ext/opentelemetry-ext-sqlite3/src/opentelemetry/ext/sqlite3/__init__.py +++ b/ext/opentelemetry-ext-sqlite3/src/opentelemetry/ext/sqlite3/__init__.py @@ -45,9 +45,9 @@ import sqlite3 import typing -from opentelemetry.auto_instrumentation.instrumentor import BaseInstrumentor from opentelemetry.ext import dbapi from opentelemetry.ext.sqlite3.version import __version__ +from opentelemetry.instrumentation.instrumentor import BaseInstrumentor from opentelemetry.trace import TracerProvider, get_tracer diff --git a/ext/opentelemetry-ext-wsgi/setup.cfg b/ext/opentelemetry-ext-wsgi/setup.cfg index 288ebcaa641..270f2787177 100644 --- a/ext/opentelemetry-ext-wsgi/setup.cfg +++ b/ext/opentelemetry-ext-wsgi/setup.cfg @@ -41,6 +41,7 @@ package_dir= packages=find_namespace: install_requires = opentelemetry-api == 0.9.dev0 + opentelemetry-instrumentation == 0.9.dev0 [options.extras_require] test = diff --git a/opentelemetry-auto-instrumentation/README.rst b/opentelemetry-auto-instrumentation/README.rst deleted file mode 100644 index b153072ae5a..00000000000 --- a/opentelemetry-auto-instrumentation/README.rst +++ /dev/null @@ -1,19 +0,0 @@ -OpenTelemetry Auto Instrumentation -================================== - -|pypi| - -.. |pypi| image:: https://badge.fury.io/py/opentelemetry-auto-instrumentation.svg - :target: https://pypi.org/project/opentelemetry-auto-instrumentation/ - -Installation ------------- - -:: - - pip install opentelemetry-auto-instrumentation - -References ----------- - -* `OpenTelemetry Project `_ diff --git a/opentelemetry-auto-instrumentation/CHANGELOG.md b/opentelemetry-instrumentation/CHANGELOG.md similarity index 100% rename from opentelemetry-auto-instrumentation/CHANGELOG.md rename to opentelemetry-instrumentation/CHANGELOG.md diff --git a/opentelemetry-auto-instrumentation/MANIFEST.in b/opentelemetry-instrumentation/MANIFEST.in similarity index 100% rename from opentelemetry-auto-instrumentation/MANIFEST.in rename to opentelemetry-instrumentation/MANIFEST.in diff --git a/opentelemetry-instrumentation/README.rst b/opentelemetry-instrumentation/README.rst new file mode 100644 index 00000000000..99e6da180dc --- /dev/null +++ b/opentelemetry-instrumentation/README.rst @@ -0,0 +1,19 @@ +OpenTelemetry Auto Instrumentation +================================== + +|pypi| + +.. |pypi| image:: https://badge.fury.io/py/opentelemetry-instrumentation.svg + :target: https://pypi.org/project/opentelemetry-instrumentation/ + +Installation +------------ + +:: + + pip install opentelemetry-instrumentation + +References +---------- + +* `OpenTelemetry Project `_ diff --git a/opentelemetry-auto-instrumentation/setup.cfg b/opentelemetry-instrumentation/setup.cfg similarity index 85% rename from opentelemetry-auto-instrumentation/setup.cfg rename to opentelemetry-instrumentation/setup.cfg index 0e9207922b4..6084d5b5d05 100644 --- a/opentelemetry-auto-instrumentation/setup.cfg +++ b/opentelemetry-instrumentation/setup.cfg @@ -13,13 +13,13 @@ # limitations under the License. # [metadata] -name = opentelemetry-auto-instrumentation +name = opentelemetry-instrumentation description = Auto Instrumentation for OpenTelemetry Python long_description = file: README.rst long_description_content_type = text/x-rst author = OpenTelemetry Authors author_email = cncf-opentelemetry-contributors@lists.cncf.io -url = https://github.com/open-telemetry/opentelemetry-python/tree/master/opentelemetry-auto-instrumentation +url = https://github.com/open-telemetry/opentelemetry-python/tree/master/opentelemetry-instrumentation platforms = any license = Apache-2.0 classifiers = @@ -48,5 +48,5 @@ where = src [options.entry_points] console_scripts = - opentelemetry-auto-instrumentation = opentelemetry.auto_instrumentation.auto_instrumentation:run - opentelemetry-bootstrap = opentelemetry.auto_instrumentation.bootstrap:run + opentelemetry-instrument = opentelemetry.instrumentation.auto_instrumentation:run + opentelemetry-bootstrap = opentelemetry.instrumentation.bootstrap:run diff --git a/opentelemetry-auto-instrumentation/setup.py b/opentelemetry-instrumentation/setup.py similarity index 91% rename from opentelemetry-auto-instrumentation/setup.py rename to opentelemetry-instrumentation/setup.py index 86f8faedbcf..fb3c8ff9f1d 100644 --- a/opentelemetry-auto-instrumentation/setup.py +++ b/opentelemetry-instrumentation/setup.py @@ -18,7 +18,7 @@ BASE_DIR = os.path.dirname(__file__) VERSION_FILENAME = os.path.join( - BASE_DIR, "src", "opentelemetry", "auto_instrumentation", "version.py" + BASE_DIR, "src", "opentelemetry", "instrumentation", "version.py" ) PACKAGE_INFO = {} with open(VERSION_FILENAME) as f: diff --git a/opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation/__init__.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/__init__.py similarity index 93% rename from opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation/__init__.py rename to opentelemetry-instrumentation/src/opentelemetry/instrumentation/__init__.py index 590bac8b3cf..ff08e3f2ded 100644 --- a/opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation/__init__.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/__init__.py @@ -16,12 +16,12 @@ This package provides a couple of commands that help automatically instruments a program: -opentelemetry-auto-instrumentation +opentelemetry-instrumentation ----------------------------------- :: - opentelemetry-auto-instrumentation python program.py + opentelemetry-instrumentation python program.py The code in ``program.py`` needs to use one of the packages for which there is an OpenTelemetry integration. For a list of the available integrations please diff --git a/opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation/auto_instrumentation.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation.py similarity index 100% rename from opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation/auto_instrumentation.py rename to opentelemetry-instrumentation/src/opentelemetry/instrumentation/auto_instrumentation.py diff --git a/opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation/bootstrap.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py similarity index 100% rename from opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation/bootstrap.py rename to opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap.py diff --git a/opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation/instrumentor.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/instrumentor.py similarity index 92% rename from opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation/instrumentor.py rename to opentelemetry-instrumentation/src/opentelemetry/instrumentation/instrumentor.py index dd58775bc7e..25b6b480925 100644 --- a/opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation/instrumentor.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/instrumentor.py @@ -28,7 +28,7 @@ class BaseInstrumentor(ABC): Child classes of this ABC should instrument specific third party libraries or frameworks either by using the - ``opentelemetry-auto-instrumentation`` command or by calling their methods + ``opentelemetry-instrumentation`` command or by calling their methods directly. Since every third party library or framework is different and has different @@ -58,7 +58,7 @@ def instrument(self, **kwargs): """Instrument the library This method will be called without any optional arguments by the - ``opentelemetry-auto-instrumentation`` command. The configuration of + ``opentelemetry-instrumentation`` command. The configuration of the instrumentation when done in this way should be done by previously setting the configuration (using environment variables or any other mechanism) that will be used later by the code in the ``instrument`` @@ -69,7 +69,7 @@ def instrument(self, **kwargs): This means that calling this method directly without passing any optional values should do the very same thing that the - ``opentelemetry-auto-instrumentation`` command does. This approach is + ``opentelemetry-instrumentation`` command does. This approach is followed because the ``Configuration`` object is immutable. """ diff --git a/opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation/sitecustomize.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/sitecustomize.py similarity index 100% rename from opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation/sitecustomize.py rename to opentelemetry-instrumentation/src/opentelemetry/instrumentation/sitecustomize.py diff --git a/opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation/version.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/version.py similarity index 100% rename from opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation/version.py rename to opentelemetry-instrumentation/src/opentelemetry/instrumentation/version.py diff --git a/opentelemetry-auto-instrumentation/tests/__init__.py b/opentelemetry-instrumentation/tests/__init__.py similarity index 100% rename from opentelemetry-auto-instrumentation/tests/__init__.py rename to opentelemetry-instrumentation/tests/__init__.py diff --git a/opentelemetry-auto-instrumentation/tests/test_bootstrap.py b/opentelemetry-instrumentation/tests/test_bootstrap.py similarity index 89% rename from opentelemetry-auto-instrumentation/tests/test_bootstrap.py rename to opentelemetry-instrumentation/tests/test_bootstrap.py index 8af684084b1..e5a1a86dda5 100644 --- a/opentelemetry-auto-instrumentation/tests/test_bootstrap.py +++ b/opentelemetry-instrumentation/tests/test_bootstrap.py @@ -19,7 +19,7 @@ from unittest import TestCase from unittest.mock import call, patch -from opentelemetry.auto_instrumentation import bootstrap +from opentelemetry.instrumentation import bootstrap def sample_packages(packages, rate): @@ -45,7 +45,7 @@ def setUpClass(cls): ) cls.pkg_patcher = patch( - "opentelemetry.auto_instrumentation.bootstrap._find_installed_libraries", + "opentelemetry.instrumentation.bootstrap._find_installed_libraries", return_value=cls.installed_libraries, ) @@ -57,17 +57,17 @@ def setUpClass(cls): pip_freeze_output.append(inst) cls.pip_freeze_patcher = patch( - "opentelemetry.auto_instrumentation.bootstrap._sys_pip_freeze", + "opentelemetry.instrumentation.bootstrap._sys_pip_freeze", return_value="\n".join(pip_freeze_output), ) cls.pip_install_patcher = patch( - "opentelemetry.auto_instrumentation.bootstrap._sys_pip_install", + "opentelemetry.instrumentation.bootstrap._sys_pip_install", ) cls.pip_uninstall_patcher = patch( - "opentelemetry.auto_instrumentation.bootstrap._sys_pip_uninstall", + "opentelemetry.instrumentation.bootstrap._sys_pip_uninstall", ) cls.pip_check_patcher = patch( - "opentelemetry.auto_instrumentation.bootstrap._pip_check", + "opentelemetry.instrumentation.bootstrap._pip_check", ) cls.pkg_patcher.start() diff --git a/opentelemetry-auto-instrumentation/tests/test_instrumentor.py b/opentelemetry-instrumentation/tests/test_instrumentor.py similarity index 95% rename from opentelemetry-auto-instrumentation/tests/test_instrumentor.py rename to opentelemetry-instrumentation/tests/test_instrumentor.py index a768a40eb42..19104a3246d 100644 --- a/opentelemetry-auto-instrumentation/tests/test_instrumentor.py +++ b/opentelemetry-instrumentation/tests/test_instrumentor.py @@ -16,7 +16,7 @@ from logging import WARNING from unittest import TestCase -from opentelemetry.auto_instrumentation.instrumentor import BaseInstrumentor +from opentelemetry.instrumentation.instrumentor import BaseInstrumentor class TestInstrumentor(TestCase): diff --git a/opentelemetry-auto-instrumentation/tests/test_run.py b/opentelemetry-instrumentation/tests/test_run.py similarity index 84% rename from opentelemetry-auto-instrumentation/tests/test_run.py rename to opentelemetry-instrumentation/tests/test_run.py index 8b37882f5b9..21f53babc6d 100644 --- a/opentelemetry-auto-instrumentation/tests/test_run.py +++ b/opentelemetry-instrumentation/tests/test_run.py @@ -18,7 +18,7 @@ from unittest import TestCase from unittest.mock import patch -from opentelemetry.auto_instrumentation import auto_instrumentation +from opentelemetry.instrumentation import auto_instrumentation class TestRun(TestCase): @@ -27,13 +27,13 @@ class TestRun(TestCase): @classmethod def setUpClass(cls): cls.argv_patcher = patch( - "opentelemetry.auto_instrumentation.auto_instrumentation.argv" + "opentelemetry.instrumentation.auto_instrumentation.argv" ) cls.execl_patcher = patch( - "opentelemetry.auto_instrumentation.auto_instrumentation.execl" + "opentelemetry.instrumentation.auto_instrumentation.execl" ) cls.which_patcher = patch( - "opentelemetry.auto_instrumentation.auto_instrumentation.which" + "opentelemetry.instrumentation.auto_instrumentation.which" ) cls.argv_patcher.start() @@ -91,11 +91,11 @@ def test_single_path(self): class TestExecl(TestCase): @patch( - "opentelemetry.auto_instrumentation.auto_instrumentation.argv", + "opentelemetry.instrumentation.auto_instrumentation.argv", new=[1, 2, 3], ) - @patch("opentelemetry.auto_instrumentation.auto_instrumentation.which") - @patch("opentelemetry.auto_instrumentation.auto_instrumentation.execl") + @patch("opentelemetry.instrumentation.auto_instrumentation.which") + @patch("opentelemetry.instrumentation.auto_instrumentation.execl") def test_execl( self, mock_execl, mock_which ): # pylint: disable=no-self-use diff --git a/scripts/build.sh b/scripts/build.sh index 682276561bf..b7a771789aa 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -16,7 +16,7 @@ DISTDIR=dist mkdir -p $DISTDIR rm -rf $DISTDIR/* - for d in opentelemetry-api/ opentelemetry-sdk/ opentelemetry-auto-instrumentation/ ext/*/ ; do + for d in opentelemetry-api/ opentelemetry-sdk/ opentelemetry-instrumentation/ ext/*/ ; do ( echo "building $d" cd "$d" diff --git a/tox.ini b/tox.ini index 026d01cc0c1..cad023b9d32 100644 --- a/tox.ini +++ b/tox.ini @@ -12,9 +12,9 @@ envlist = py3{4,5,6,7,8}-test-sdk pypy3-test-sdk - ; opentelemetry-auto-instrumentation - py3{4,5,6,7,8}-test-auto-instrumentation - pypy3-test-auto-instrumentation + ; opentelemetry-instrumentation + py3{4,5,6,7,8}-test-instrumentation + pypy3-test-instrumentation ; opentelemetry-example-app py3{4,5,6,7,8}-test-example-app @@ -146,7 +146,7 @@ setenv = changedir = test-api: opentelemetry-api/tests test-sdk: opentelemetry-sdk/tests - test-auto-instrumentation: opentelemetry-auto-instrumentation/tests + test-instrumentation: opentelemetry-instrumentation/tests test-ext-grpc: ext/opentelemetry-ext-grpc/tests test-ext-aiohttp-client: ext/opentelemetry-ext-aiohttp-client/tests test-ext-requests: ext/opentelemetry-ext-requests/tests @@ -182,20 +182,21 @@ commands_pre = ; cases but it saves a lot of boilerplate in this file. test: pip install {toxinidir}/opentelemetry-api {toxinidir}/opentelemetry-sdk {toxinidir}/tests/util - test-auto-instrumentation: pip install {toxinidir}/opentelemetry-auto-instrumentation + test-instrumentation: pip install {toxinidir}/opentelemetry-instrumentation - example-app: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-requests {toxinidir}/ext/opentelemetry-ext-wsgi {toxinidir}/ext/opentelemetry-ext-flask {toxinidir}/docs/examples/opentelemetry-example-app + example-app: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-requests {toxinidir}/ext/opentelemetry-ext-wsgi {toxinidir}/ext/opentelemetry-ext-flask {toxinidir}/docs/examples/opentelemetry-example-app - getting-started: pip install -e {toxinidir}/opentelemetry-auto-instrumentation -e {toxinidir}/ext/opentelemetry-ext-requests -e {toxinidir}/ext/opentelemetry-ext-wsgi -e {toxinidir}/ext/opentelemetry-ext-flask + getting-started: pip install -e {toxinidir}/opentelemetry-instrumentation -e {toxinidir}/ext/opentelemetry-ext-requests -e {toxinidir}/ext/opentelemetry-ext-wsgi -e {toxinidir}/ext/opentelemetry-ext-flask grpc: pip install {toxinidir}/ext/opentelemetry-ext-grpc[test] wsgi,flask,django,asgi: pip install {toxinidir}/tests/util wsgi,flask,django: pip install {toxinidir}/ext/opentelemetry-ext-wsgi - flask,django: pip install {toxinidir}/opentelemetry-auto-instrumentation + + flask,django: pip install {toxinidir}/opentelemetry-instrumentation asgi: pip install {toxinidir}/ext/opentelemetry-ext-asgi - boto: pip install {toxinidir}/opentelemetry-auto-instrumentation + boto: pip install {toxinidir}/opentelemetry-instrumentation boto: pip install {toxinidir}/ext/opentelemetry-ext-boto[test] flask: pip install {toxinidir}/ext/opentelemetry-ext-flask[test] @@ -204,25 +205,25 @@ commands_pre = django: pip install {toxinidir}/ext/opentelemetry-ext-django[test] - mysql: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-mysql[test] + mysql: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-mysql[test] opencensusexporter: pip install {toxinidir}/ext/opentelemetry-ext-opencensusexporter prometheus: pip install {toxinidir}/ext/opentelemetry-ext-prometheus - pymongo: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-pymongo[test] + pymongo: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-pymongo[test] - psycopg2: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-psycopg2 {toxinidir}/ext/opentelemetry-ext-psycopg2[test] + psycopg2: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-psycopg2 {toxinidir}/ext/opentelemetry-ext-psycopg2[test] - pymysql: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-pymysql[test] + pymysql: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-pymysql[test] - sqlite3: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-sqlite3[test] + sqlite3: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-sqlite3[test] - redis: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-redis[test] + redis: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-redis[test] - requests: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-requests[test] + requests: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-requests[test] - jinja2: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-jinja2[test] + jinja2: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-jinja2[test] aiohttp-client: pip install {toxinidir}/opentelemetry-sdk {toxinidir}/ext/opentelemetry-ext-aiohttp-client @@ -235,9 +236,9 @@ commands_pre = zipkin: pip install {toxinidir}/ext/opentelemetry-ext-zipkin - sqlalchemy: pip install {toxinidir}/opentelemetry-auto-instrumentation {toxinidir}/ext/opentelemetry-ext-sqlalchemy + sqlalchemy: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-sqlalchemy - system-metrics: pip install {toxinidir}/opentelemetry-auto-instrumentation + system-metrics: pip install {toxinidir}/opentelemetry-instrumentation system-metrics: pip install {toxinidir}/ext/opentelemetry-ext-system-metrics[test] ; In order to get a healthy coverage report, @@ -304,9 +305,8 @@ deps = commands_pre = pip install -e {toxinidir}/opentelemetry-api \ - -e {toxinidir}/opentelemetry-auto-instrumentation \ + -e {toxinidir}/opentelemetry-instrumentation \ -e {toxinidir}/opentelemetry-sdk \ - -e {toxinidir}/opentelemetry-auto-instrumentation \ -e {toxinidir}/ext/opentelemetry-ext-requests \ -e {toxinidir}/ext/opentelemetry-ext-wsgi \ -e {toxinidir}/ext/opentelemetry-ext-flask @@ -331,7 +331,7 @@ changedir = commands_pre = pip install -e {toxinidir}/opentelemetry-api \ -e {toxinidir}/opentelemetry-sdk \ - -e {toxinidir}/opentelemetry-auto-instrumentation \ + -e {toxinidir}/opentelemetry-instrumentation \ -e {toxinidir}/tests/util \ -e {toxinidir}/ext/opentelemetry-ext-dbapi \ -e {toxinidir}/ext/opentelemetry-ext-mysql \ From 639c596e4d736fedeb19ad8ab1f382db72c8021b Mon Sep 17 00:00:00 2001 From: Connor Adams Date: Fri, 5 Jun 2020 10:30:45 -0400 Subject: [PATCH 2/8] Add utils file in opentelemetry-instrumentation --- opentelemetry-instrumentation/CHANGELOG.md | 3 + .../opentelemetry/instrumentation/utils.py | 67 +++++++++++++++++++ .../tests/test_utils.py | 56 ++++++++++++++++ 3 files changed, 126 insertions(+) create mode 100644 opentelemetry-instrumentation/src/opentelemetry/instrumentation/utils.py create mode 100644 opentelemetry-instrumentation/tests/test_utils.py diff --git a/opentelemetry-instrumentation/CHANGELOG.md b/opentelemetry-instrumentation/CHANGELOG.md index d2521d157ce..b3d117db06d 100644 --- a/opentelemetry-instrumentation/CHANGELOG.md +++ b/opentelemetry-instrumentation/CHANGELOG.md @@ -2,6 +2,9 @@ ## Unreleased +- Rename opentelemetry-auto-instrumentation to opentelemetry-instrumentation, + and console script `opentelemetry-auto-instrumentation` to `opentelemetry-instrument` + ## 0.8b0 Released 2020-05-27 diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/utils.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/utils.py new file mode 100644 index 00000000000..48b84017bae --- /dev/null +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/utils.py @@ -0,0 +1,67 @@ +# Copyright The OpenTelemetry Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from wrapt import ObjectProxy + +from opentelemetry.trace.status import Status, StatusCanonicalCode + + +def http_status_to_canonical_code( + status: int, allow_redirect: bool = True +) -> StatusCanonicalCode: + """Converts an HTTP status code to an OpenTelemetry canonical status code + + Args: + status (int): HTTP status code + """ + # pylint:disable=too-many-branches,too-many-return-statements + if status < 100: + return StatusCanonicalCode.UNKNOWN + if status <= 299: + return StatusCanonicalCode.OK + if status <= 399: + if allow_redirect: + return StatusCanonicalCode.OK + return StatusCanonicalCode.DEADLINE_EXCEEDED + if status <= 499: + if status == 401: # HTTPStatus.UNAUTHORIZED: + return StatusCanonicalCode.UNAUTHENTICATED + if status == 403: # HTTPStatus.FORBIDDEN: + return StatusCanonicalCode.PERMISSION_DENIED + if status == 404: # HTTPStatus.NOT_FOUND: + return StatusCanonicalCode.NOT_FOUND + if status == 429: # HTTPStatus.TOO_MANY_REQUESTS: + return StatusCanonicalCode.RESOURCE_EXHAUSTED + return StatusCanonicalCode.INVALID_ARGUMENT + if status <= 599: + if status == 501: # HTTPStatus.NOT_IMPLEMENTED: + return StatusCanonicalCode.UNIMPLEMENTED + if status == 503: # HTTPStatus.SERVICE_UNAVAILABLE: + return StatusCanonicalCode.UNAVAILABLE + if status == 504: # HTTPStatus.GATEWAY_TIMEOUT: + return StatusCanonicalCode.DEADLINE_EXCEEDED + return StatusCanonicalCode.INTERNAL + return StatusCanonicalCode.UNKNOWN + + +def unwrap(obj, attr: str): + """Given a function that was wrapped by wrapt.wrap_function_wrapper, unwrap it + + Args: + obj: Object that holds a reference to the wrapped function + attr (str): Name of the wrapped function + """ + func = getattr(obj, attr, None) + if func and isinstance(func, ObjectProxy) and hasattr(func, "__wrapped__"): + setattr(obj, attr, func.__wrapped__) diff --git a/opentelemetry-instrumentation/tests/test_utils.py b/opentelemetry-instrumentation/tests/test_utils.py new file mode 100644 index 00000000000..ea0cc37142c --- /dev/null +++ b/opentelemetry-instrumentation/tests/test_utils.py @@ -0,0 +1,56 @@ +# Copyright 2020, OpenTelemetry Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from http import HTTPStatus + +from opentelemetry.instrumentation.utils import http_status_to_canonical_code +from opentelemetry.test.test_base import TestBase +from opentelemetry.trace.status import StatusCanonicalCode + + +class TestUtils(TestBase): + def test_http_status_to_canonical_code(self): + for status_code, expected in ( + (HTTPStatus.OK, StatusCanonicalCode.OK), + (HTTPStatus.ACCEPTED, StatusCanonicalCode.OK), + (HTTPStatus.IM_USED, StatusCanonicalCode.OK), + (HTTPStatus.MULTIPLE_CHOICES, StatusCanonicalCode.OK), + (HTTPStatus.BAD_REQUEST, StatusCanonicalCode.INVALID_ARGUMENT), + (HTTPStatus.UNAUTHORIZED, StatusCanonicalCode.UNAUTHENTICATED), + (HTTPStatus.FORBIDDEN, StatusCanonicalCode.PERMISSION_DENIED), + (HTTPStatus.NOT_FOUND, StatusCanonicalCode.NOT_FOUND), + ( + HTTPStatus.UNPROCESSABLE_ENTITY, + StatusCanonicalCode.INVALID_ARGUMENT, + ), + ( + HTTPStatus.TOO_MANY_REQUESTS, + StatusCanonicalCode.RESOURCE_EXHAUSTED, + ), + (HTTPStatus.NOT_IMPLEMENTED, StatusCanonicalCode.UNIMPLEMENTED), + (HTTPStatus.SERVICE_UNAVAILABLE, StatusCanonicalCode.UNAVAILABLE), + ( + HTTPStatus.GATEWAY_TIMEOUT, + StatusCanonicalCode.DEADLINE_EXCEEDED, + ), + ( + HTTPStatus.HTTP_VERSION_NOT_SUPPORTED, + StatusCanonicalCode.INTERNAL, + ), + (600, StatusCanonicalCode.UNKNOWN), + (99, StatusCanonicalCode.UNKNOWN), + ): + with self.subTest(status_code=status_code): + actual = http_status_to_canonical_code(int(status_code)) + self.assertEqual(actual, expected, status_code) From 2e2d112ca20a86d789a3ae8a7293e1f7e3bea3d7 Mon Sep 17 00:00:00 2001 From: Connor Adams Date: Fri, 5 Jun 2020 10:37:20 -0400 Subject: [PATCH 3/8] Use Utils file --- .../ext/aiohttp_client/__init__.py | 29 +-------------- .../tests/test_aiohttp_client_integration.py | 37 ------------------- .../src/opentelemetry/ext/dbapi/__init__.py | 5 +-- .../src/opentelemetry/ext/jinja2/__init__.py | 15 +++----- .../src/opentelemetry/ext/redis/__init__.py | 25 +++++-------- .../opentelemetry/ext/requests/__init__.py | 36 ++---------------- .../opentelemetry/ext/sqlalchemy/__init__.py | 15 ++------ .../src/opentelemetry/ext/wsgi/__init__.py | 32 +--------------- .../opentelemetry/instrumentation/utils.py | 2 +- 9 files changed, 26 insertions(+), 170 deletions(-) diff --git a/ext/opentelemetry-ext-aiohttp-client/src/opentelemetry/ext/aiohttp_client/__init__.py b/ext/opentelemetry-ext-aiohttp-client/src/opentelemetry/ext/aiohttp_client/__init__.py index 77dadbd6453..bc6c361f9bd 100644 --- a/ext/opentelemetry-ext-aiohttp-client/src/opentelemetry/ext/aiohttp_client/__init__.py +++ b/ext/opentelemetry-ext-aiohttp-client/src/opentelemetry/ext/aiohttp_client/__init__.py @@ -52,38 +52,11 @@ def strip_query_params(url: yarl.URL) -> str: from opentelemetry import context as context_api from opentelemetry import propagators, trace from opentelemetry.ext.aiohttp_client.version import __version__ +from opentelemetry.instrumentation.utils import http_status_to_canonical_code from opentelemetry.trace import SpanKind from opentelemetry.trace.status import Status, StatusCanonicalCode -# TODO: refactor this code to some common utility -def http_status_to_canonical_code(status: int) -> StatusCanonicalCode: - # pylint:disable=too-many-branches,too-many-return-statements - if status < 100: - return StatusCanonicalCode.UNKNOWN - if status <= 399: - return StatusCanonicalCode.OK - if status <= 499: - if status == 401: # HTTPStatus.UNAUTHORIZED: - return StatusCanonicalCode.UNAUTHENTICATED - if status == 403: # HTTPStatus.FORBIDDEN: - return StatusCanonicalCode.PERMISSION_DENIED - if status == 404: # HTTPStatus.NOT_FOUND: - return StatusCanonicalCode.NOT_FOUND - if status == 429: # HTTPStatus.TOO_MANY_REQUESTS: - return StatusCanonicalCode.RESOURCE_EXHAUSTED - return StatusCanonicalCode.INVALID_ARGUMENT - if status <= 599: - if status == 501: # HTTPStatus.NOT_IMPLEMENTED: - return StatusCanonicalCode.UNIMPLEMENTED - if status == 503: # HTTPStatus.SERVICE_UNAVAILABLE: - return StatusCanonicalCode.UNAVAILABLE - if status == 504: # HTTPStatus.GATEWAY_TIMEOUT: - return StatusCanonicalCode.DEADLINE_EXCEEDED - return StatusCanonicalCode.INTERNAL - return StatusCanonicalCode.UNKNOWN - - def url_path_span_name(params: aiohttp.TraceRequestStartParams) -> str: """Extract a span name from the request URL path. diff --git a/ext/opentelemetry-ext-aiohttp-client/tests/test_aiohttp_client_integration.py b/ext/opentelemetry-ext-aiohttp-client/tests/test_aiohttp_client_integration.py index 8cf5048e588..8db20c227ec 100644 --- a/ext/opentelemetry-ext-aiohttp-client/tests/test_aiohttp_client_integration.py +++ b/ext/opentelemetry-ext-aiohttp-client/tests/test_aiohttp_client_integration.py @@ -98,43 +98,6 @@ async def default_handler(request): loop = asyncio.get_event_loop() return loop.run_until_complete(do_request()) - def test_http_status_to_canonical_code(self): - for status_code, expected in ( - (HTTPStatus.OK, StatusCanonicalCode.OK), - (HTTPStatus.ACCEPTED, StatusCanonicalCode.OK), - (HTTPStatus.IM_USED, StatusCanonicalCode.OK), - (HTTPStatus.MULTIPLE_CHOICES, StatusCanonicalCode.OK), - (HTTPStatus.BAD_REQUEST, StatusCanonicalCode.INVALID_ARGUMENT), - (HTTPStatus.UNAUTHORIZED, StatusCanonicalCode.UNAUTHENTICATED), - (HTTPStatus.FORBIDDEN, StatusCanonicalCode.PERMISSION_DENIED), - (HTTPStatus.NOT_FOUND, StatusCanonicalCode.NOT_FOUND), - ( - HTTPStatus.UNPROCESSABLE_ENTITY, - StatusCanonicalCode.INVALID_ARGUMENT, - ), - ( - HTTPStatus.TOO_MANY_REQUESTS, - StatusCanonicalCode.RESOURCE_EXHAUSTED, - ), - (HTTPStatus.NOT_IMPLEMENTED, StatusCanonicalCode.UNIMPLEMENTED), - (HTTPStatus.SERVICE_UNAVAILABLE, StatusCanonicalCode.UNAVAILABLE), - ( - HTTPStatus.GATEWAY_TIMEOUT, - StatusCanonicalCode.DEADLINE_EXCEEDED, - ), - ( - HTTPStatus.HTTP_VERSION_NOT_SUPPORTED, - StatusCanonicalCode.INTERNAL, - ), - (600, StatusCanonicalCode.UNKNOWN), - (99, StatusCanonicalCode.UNKNOWN), - ): - with self.subTest(status_code=status_code): - actual = opentelemetry.ext.aiohttp_client.http_status_to_canonical_code( - int(status_code) - ) - self.assertEqual(actual, expected, status_code) - def test_status_codes(self): for status_code, span_status in ( (HTTPStatus.OK, StatusCanonicalCode.OK), diff --git a/ext/opentelemetry-ext-dbapi/src/opentelemetry/ext/dbapi/__init__.py b/ext/opentelemetry-ext-dbapi/src/opentelemetry/ext/dbapi/__init__.py index a5fda62dea0..6b81bedf03d 100644 --- a/ext/opentelemetry-ext-dbapi/src/opentelemetry/ext/dbapi/__init__.py +++ b/ext/opentelemetry-ext-dbapi/src/opentelemetry/ext/dbapi/__init__.py @@ -47,6 +47,7 @@ import wrapt from opentelemetry.ext.dbapi.version import __version__ +from opentelemetry.instrumentation.utils import unwrap from opentelemetry.trace import SpanKind, Tracer, TracerProvider, get_tracer from opentelemetry.trace.status import Status, StatusCanonicalCode @@ -141,9 +142,7 @@ def unwrap_connect( connect_module: Module name where the connect method is available. connect_method_name: The connect method name. """ - conn = getattr(connect_module, connect_method_name, None) - if isinstance(conn, wrapt.ObjectProxy): - setattr(connect_module, connect_method_name, conn.__wrapped__) + unwrap(connect_module, connect_method_name) def instrument_connection( diff --git a/ext/opentelemetry-ext-jinja2/src/opentelemetry/ext/jinja2/__init__.py b/ext/opentelemetry-ext-jinja2/src/opentelemetry/ext/jinja2/__init__.py index a8183d7a8d2..06be28873b0 100644 --- a/ext/opentelemetry-ext-jinja2/src/opentelemetry/ext/jinja2/__init__.py +++ b/ext/opentelemetry-ext-jinja2/src/opentelemetry/ext/jinja2/__init__.py @@ -50,6 +50,7 @@ from opentelemetry.ext.jinja2.version import __version__ from opentelemetry.instrumentation.instrumentor import BaseInstrumentor +from opentelemetry.instrumentation.utils import unwrap from opentelemetry.trace import SpanKind, get_tracer from opentelemetry.trace.status import Status, StatusCanonicalCode @@ -115,12 +116,6 @@ def _wrap_load_template(tracer, wrapped, _, args, kwargs): ) -def _unwrap(obj, attr): - func = getattr(obj, attr, None) - if func and isinstance(func, ObjectProxy) and hasattr(func, "__wrapped__"): - setattr(obj, attr, func.__wrapped__) - - class Jinja2Instrumentor(BaseInstrumentor): """An instrumentor for jinja2 @@ -141,7 +136,7 @@ def _instrument(self, **kwargs): ) def _uninstrument(self, **kwargs): - _unwrap(jinja2.Template, "render") - _unwrap(jinja2.Template, "generate") - _unwrap(jinja2.Environment, "compile") - _unwrap(jinja2.Environment, "_load_template") + unwrap(jinja2.Template, "render") + unwrap(jinja2.Template, "generate") + unwrap(jinja2.Environment, "compile") + unwrap(jinja2.Environment, "_load_template") diff --git a/ext/opentelemetry-ext-redis/src/opentelemetry/ext/redis/__init__.py b/ext/opentelemetry-ext-redis/src/opentelemetry/ext/redis/__init__.py index 43fdcf016f2..0b7f6e28eb9 100644 --- a/ext/opentelemetry-ext-redis/src/opentelemetry/ext/redis/__init__.py +++ b/ext/opentelemetry-ext-redis/src/opentelemetry/ext/redis/__init__.py @@ -55,6 +55,7 @@ ) from opentelemetry.ext.redis.version import __version__ from opentelemetry.instrumentation.instrumentor import BaseInstrumentor +from opentelemetry.instrumentation.utils import unwrap _DEFAULT_SERVICE = "redis" _RAWCMD = "db.statement" @@ -68,12 +69,6 @@ def _set_connection_attributes(span, conn): span.set_attribute(key, value) -def _unwrap(obj, attr): - func = getattr(obj, attr, None) - if isinstance(func, ObjectProxy) and hasattr(func, "__wrapped__"): - setattr(obj, attr, func.__wrapped__) - - def _traced_execute_command(func, instance, args, kwargs): tracer = getattr(redis, "_opentelemetry_tracer") query = _format_command_args(args) @@ -145,19 +140,19 @@ def _instrument(self, **kwargs): def _uninstrument(self, **kwargs): if redis.VERSION < (3, 0, 0): - _unwrap(redis.StrictRedis, "execute_command") - _unwrap(redis.StrictRedis, "pipeline") - _unwrap(redis.Redis, "pipeline") - _unwrap( + unwrap(redis.StrictRedis, "execute_command") + unwrap(redis.StrictRedis, "pipeline") + unwrap(redis.Redis, "pipeline") + unwrap( redis.client.BasePipeline, # pylint:disable=no-member "execute", ) - _unwrap( + unwrap( redis.client.BasePipeline, # pylint:disable=no-member "immediate_execute_command", ) else: - _unwrap(redis.Redis, "execute_command") - _unwrap(redis.Redis, "pipeline") - _unwrap(redis.client.Pipeline, "execute") - _unwrap(redis.client.Pipeline, "immediate_execute_command") + unwrap(redis.Redis, "execute_command") + unwrap(redis.Redis, "pipeline") + unwrap(redis.client.Pipeline, "execute") + unwrap(redis.client.Pipeline, "immediate_execute_command") diff --git a/ext/opentelemetry-ext-requests/src/opentelemetry/ext/requests/__init__.py b/ext/opentelemetry-ext-requests/src/opentelemetry/ext/requests/__init__.py index c7092ce3fde..ee4796f1685 100644 --- a/ext/opentelemetry-ext-requests/src/opentelemetry/ext/requests/__init__.py +++ b/ext/opentelemetry-ext-requests/src/opentelemetry/ext/requests/__init__.py @@ -52,7 +52,8 @@ from opentelemetry import context, propagators, trace from opentelemetry.ext.requests.version import __version__ from opentelemetry.instrumentation.instrumentor import BaseInstrumentor -from opentelemetry.trace import SpanKind +from opentelemetry.instrumentation.utils import http_status_to_canonical_code +from opentelemetry.trace import SpanKind, get_tracer from opentelemetry.trace.status import Status, StatusCanonicalCode @@ -115,7 +116,7 @@ def instrumented_request(self, method, url, *args, **kwargs): span.set_attribute("http.status_code", result.status_code) span.set_attribute("http.status_text", result.reason) span.set_status( - Status(_http_status_to_canonical_code(result.status_code)) + Status(http_status_to_canonical_code(result.status_code)) ) if span_callback is not None: @@ -146,37 +147,6 @@ def _uninstrument(): Session.request = original -def _http_status_to_canonical_code(code: int, allow_redirect: bool = True): - # pylint:disable=too-many-branches,too-many-return-statements - if code < 100: - return StatusCanonicalCode.UNKNOWN - if code <= 299: - return StatusCanonicalCode.OK - if code <= 399: - if allow_redirect: - return StatusCanonicalCode.OK - return StatusCanonicalCode.DEADLINE_EXCEEDED - if code <= 499: - if code == 401: # HTTPStatus.UNAUTHORIZED: - return StatusCanonicalCode.UNAUTHENTICATED - if code == 403: # HTTPStatus.FORBIDDEN: - return StatusCanonicalCode.PERMISSION_DENIED - if code == 404: # HTTPStatus.NOT_FOUND: - return StatusCanonicalCode.NOT_FOUND - if code == 429: # HTTPStatus.TOO_MANY_REQUESTS: - return StatusCanonicalCode.RESOURCE_EXHAUSTED - return StatusCanonicalCode.INVALID_ARGUMENT - if code <= 599: - if code == 501: # HTTPStatus.NOT_IMPLEMENTED: - return StatusCanonicalCode.UNIMPLEMENTED - if code == 503: # HTTPStatus.SERVICE_UNAVAILABLE: - return StatusCanonicalCode.UNAVAILABLE - if code == 504: # HTTPStatus.GATEWAY_TIMEOUT: - return StatusCanonicalCode.DEADLINE_EXCEEDED - return StatusCanonicalCode.INTERNAL - return StatusCanonicalCode.UNKNOWN - - def _exception_to_canonical_code(exc: Exception) -> StatusCanonicalCode: if isinstance( exc, diff --git a/ext/opentelemetry-ext-sqlalchemy/src/opentelemetry/ext/sqlalchemy/__init__.py b/ext/opentelemetry-ext-sqlalchemy/src/opentelemetry/ext/sqlalchemy/__init__.py index 67c65a5e04d..69803653736 100644 --- a/ext/opentelemetry-ext-sqlalchemy/src/opentelemetry/ext/sqlalchemy/__init__.py +++ b/ext/opentelemetry-ext-sqlalchemy/src/opentelemetry/ext/sqlalchemy/__init__.py @@ -53,16 +53,7 @@ _wrap_create_engine, ) from opentelemetry.instrumentation.instrumentor import BaseInstrumentor - - -def _unwrap(obj, attr): - func = getattr(obj, attr, None) - if ( - func - and isinstance(func, wrapt.ObjectProxy) - and hasattr(func, "__wrapped__") - ): - setattr(obj, attr, func.__wrapped__) +from opentelemetry.instrumentation.utils import unwrap class SQLAlchemyInstrumentor(BaseInstrumentor): @@ -96,5 +87,5 @@ def _instrument(self, **kwargs): return None def _uninstrument(self, **kwargs): - _unwrap(sqlalchemy, "create_engine") - _unwrap(sqlalchemy.engine, "create_engine") + unwrap(sqlalchemy, "create_engine") + unwrap(sqlalchemy.engine, "create_engine") diff --git a/ext/opentelemetry-ext-wsgi/src/opentelemetry/ext/wsgi/__init__.py b/ext/opentelemetry-ext-wsgi/src/opentelemetry/ext/wsgi/__init__.py index 61e8126c196..0895bc75b07 100644 --- a/ext/opentelemetry-ext-wsgi/src/opentelemetry/ext/wsgi/__init__.py +++ b/ext/opentelemetry-ext-wsgi/src/opentelemetry/ext/wsgi/__init__.py @@ -61,6 +61,7 @@ def hello(): from opentelemetry import context, propagators, trace from opentelemetry.ext.wsgi.version import __version__ +from opentelemetry.instrumentation.utils import http_status_to_canonical_code from opentelemetry.trace.propagation import get_span_from_context from opentelemetry.trace.status import Status, StatusCanonicalCode @@ -87,37 +88,6 @@ def setifnotnone(dic, key, value): dic[key] = value -def http_status_to_canonical_code(code: int, allow_redirect: bool = True): - # pylint:disable=too-many-branches,too-many-return-statements - if code < 100: - return StatusCanonicalCode.UNKNOWN - if code <= 299: - return StatusCanonicalCode.OK - if code <= 399: - if allow_redirect: - return StatusCanonicalCode.OK - return StatusCanonicalCode.DEADLINE_EXCEEDED - if code <= 499: - if code == 401: # HTTPStatus.UNAUTHORIZED: - return StatusCanonicalCode.UNAUTHENTICATED - if code == 403: # HTTPStatus.FORBIDDEN: - return StatusCanonicalCode.PERMISSION_DENIED - if code == 404: # HTTPStatus.NOT_FOUND: - return StatusCanonicalCode.NOT_FOUND - if code == 429: # HTTPStatus.TOO_MANY_REQUESTS: - return StatusCanonicalCode.RESOURCE_EXHAUSTED - return StatusCanonicalCode.INVALID_ARGUMENT - if code <= 599: - if code == 501: # HTTPStatus.NOT_IMPLEMENTED: - return StatusCanonicalCode.UNIMPLEMENTED - if code == 503: # HTTPStatus.SERVICE_UNAVAILABLE: - return StatusCanonicalCode.UNAVAILABLE - if code == 504: # HTTPStatus.GATEWAY_TIMEOUT: - return StatusCanonicalCode.DEADLINE_EXCEEDED - return StatusCanonicalCode.INTERNAL - return StatusCanonicalCode.UNKNOWN - - def collect_request_attributes(environ): """Collects HTTP request attributes from the PEP3333-conforming WSGI environ and returns a dictionary to be used as span creation attributes.""" diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/utils.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/utils.py index 48b84017bae..8553b1bc63a 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/utils.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/utils.py @@ -14,7 +14,7 @@ from wrapt import ObjectProxy -from opentelemetry.trace.status import Status, StatusCanonicalCode +from opentelemetry.trace.status import StatusCanonicalCode def http_status_to_canonical_code( From 7354f4f8c157bcaedc1e9d87085c2dcb78720f88 Mon Sep 17 00:00:00 2001 From: Connor Adams Date: Fri, 5 Jun 2020 11:24:11 -0400 Subject: [PATCH 4/8] update README --- opentelemetry-instrumentation/README.rst | 4 ++-- opentelemetry-instrumentation/setup.cfg | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/opentelemetry-instrumentation/README.rst b/opentelemetry-instrumentation/README.rst index 99e6da180dc..d52ed037b75 100644 --- a/opentelemetry-instrumentation/README.rst +++ b/opentelemetry-instrumentation/README.rst @@ -1,5 +1,5 @@ -OpenTelemetry Auto Instrumentation -================================== +OpenTelemetry Instrumentation +============================= |pypi| diff --git a/opentelemetry-instrumentation/setup.cfg b/opentelemetry-instrumentation/setup.cfg index 6084d5b5d05..2ba3a9bbfda 100644 --- a/opentelemetry-instrumentation/setup.cfg +++ b/opentelemetry-instrumentation/setup.cfg @@ -14,7 +14,7 @@ # [metadata] name = opentelemetry-instrumentation -description = Auto Instrumentation for OpenTelemetry Python +description = Instrumentation Tools & Auto Instrumentation for OpenTelemetry Python long_description = file: README.rst long_description_content_type = text/x-rst author = OpenTelemetry Authors From 8bf61af096a34f724553488bd18cc4586a5f5aa9 Mon Sep 17 00:00:00 2001 From: Connor Adams Date: Fri, 5 Jun 2020 11:27:22 -0400 Subject: [PATCH 5/8] update docs --- docs/examples/auto-instrumentation/README.rst | 2 +- docs/examples/datadog_exporter/README.rst | 6 +++--- .../src/opentelemetry/ext/boto/__init__.py | 2 +- .../src/opentelemetry/ext/sqlalchemy/__init__.py | 2 +- .../src/opentelemetry/instrumentation/__init__.py | 4 ++-- .../src/opentelemetry/instrumentation/instrumentor.py | 6 +++--- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/examples/auto-instrumentation/README.rst b/docs/examples/auto-instrumentation/README.rst index 738f71cb6c9..b5a7649503f 100644 --- a/docs/examples/auto-instrumentation/README.rst +++ b/docs/examples/auto-instrumentation/README.rst @@ -138,7 +138,7 @@ and run this instead: .. code:: sh - $ opentelemetry-instrumentation python server_uninstrumented.py + $ opentelemetry-instrument python server_uninstrumented.py In the console where you previously executed ``client.py``, run again this again: diff --git a/docs/examples/datadog_exporter/README.rst b/docs/examples/datadog_exporter/README.rst index 5645eea715c..40c12aeccf8 100644 --- a/docs/examples/datadog_exporter/README.rst +++ b/docs/examples/datadog_exporter/README.rst @@ -66,16 +66,16 @@ Auto-Instrumention Example .. code-block:: sh - opentelemetry-instrumentation python server.py + opentelemetry-instrument python server.py * Run client .. code-block:: sh - opentelemetry-instrumentation python client.py testing + opentelemetry-instrument python client.py testing * Run client with parameter to raise error .. code-block:: sh - opentelemetry-instrumentation python client.py error + opentelemetry-instrument python client.py error diff --git a/ext/opentelemetry-ext-boto/src/opentelemetry/ext/boto/__init__.py b/ext/opentelemetry-ext-boto/src/opentelemetry/ext/boto/__init__.py index 03bec07177b..97d4922658e 100644 --- a/ext/opentelemetry-ext-boto/src/opentelemetry/ext/boto/__init__.py +++ b/ext/opentelemetry-ext-boto/src/opentelemetry/ext/boto/__init__.py @@ -15,7 +15,7 @@ Instrument `Boto`_ to trace service requests. There are two options for instrumenting code. The first option is to use the -``opentelemetry-instrumentation`` executable which will automatically +``opentelemetry-instrument`` executable which will automatically instrument your Boto client. The second is to programmatically enable instrumentation via the following code: diff --git a/ext/opentelemetry-ext-sqlalchemy/src/opentelemetry/ext/sqlalchemy/__init__.py b/ext/opentelemetry-ext-sqlalchemy/src/opentelemetry/ext/sqlalchemy/__init__.py index 69803653736..05d5e625ef2 100644 --- a/ext/opentelemetry-ext-sqlalchemy/src/opentelemetry/ext/sqlalchemy/__init__.py +++ b/ext/opentelemetry-ext-sqlalchemy/src/opentelemetry/ext/sqlalchemy/__init__.py @@ -16,7 +16,7 @@ Instrument `sqlalchemy`_ to report SQL queries. There are two options for instrumenting code. The first option is to use -the ``opentelemetry-instrumentation`` executable which will automatically +the ``opentelemetry-instrument`` executable which will automatically instrument your SQLAlchemy engine. The second is to programmatically enable instrumentation via the following code: diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/__init__.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/__init__.py index ff08e3f2ded..149a9b46c93 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/__init__.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/__init__.py @@ -16,12 +16,12 @@ This package provides a couple of commands that help automatically instruments a program: -opentelemetry-instrumentation +opentelemetry-instrument ----------------------------------- :: - opentelemetry-instrumentation python program.py + opentelemetry-instrument python program.py The code in ``program.py`` needs to use one of the packages for which there is an OpenTelemetry integration. For a list of the available integrations please diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/instrumentor.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/instrumentor.py index 25b6b480925..ccd14d142ab 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/instrumentor.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/instrumentor.py @@ -28,7 +28,7 @@ class BaseInstrumentor(ABC): Child classes of this ABC should instrument specific third party libraries or frameworks either by using the - ``opentelemetry-instrumentation`` command or by calling their methods + ``opentelemetry-instrument`` command or by calling their methods directly. Since every third party library or framework is different and has different @@ -58,7 +58,7 @@ def instrument(self, **kwargs): """Instrument the library This method will be called without any optional arguments by the - ``opentelemetry-instrumentation`` command. The configuration of + ``opentelemetry-instrument`` command. The configuration of the instrumentation when done in this way should be done by previously setting the configuration (using environment variables or any other mechanism) that will be used later by the code in the ``instrument`` @@ -69,7 +69,7 @@ def instrument(self, **kwargs): This means that calling this method directly without passing any optional values should do the very same thing that the - ``opentelemetry-instrumentation`` command does. This approach is + ``opentelemetry-instrument`` command does. This approach is followed because the ``Configuration`` object is immutable. """ From 5f6ea0ad81ab152ade8b8db0eac2c8e4829df365 Mon Sep 17 00:00:00 2001 From: Connor Adams Date: Fri, 5 Jun 2020 13:44:30 -0400 Subject: [PATCH 6/8] add opentelemetry-instrumentation to every ext/ --- tox.ini | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/tox.ini b/tox.ini index cad023b9d32..0371d341ccf 100644 --- a/tox.ini +++ b/tox.ini @@ -182,21 +182,19 @@ commands_pre = ; cases but it saves a lot of boilerplate in this file. test: pip install {toxinidir}/opentelemetry-api {toxinidir}/opentelemetry-sdk {toxinidir}/tests/util - test-instrumentation: pip install {toxinidir}/opentelemetry-instrumentation + ext: pip install {toxinidir}/opentelemetry-instrumentation - example-app: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-requests {toxinidir}/ext/opentelemetry-ext-wsgi {toxinidir}/ext/opentelemetry-ext-flask {toxinidir}/docs/examples/opentelemetry-example-app + example-app: {toxinidir}/ext/opentelemetry-ext-requests {toxinidir}/ext/opentelemetry-ext-wsgi {toxinidir}/ext/opentelemetry-ext-flask {toxinidir}/docs/examples/opentelemetry-example-app - getting-started: pip install -e {toxinidir}/opentelemetry-instrumentation -e {toxinidir}/ext/opentelemetry-ext-requests -e {toxinidir}/ext/opentelemetry-ext-wsgi -e {toxinidir}/ext/opentelemetry-ext-flask + getting-started: pip install -e {toxinidir}/ext/opentelemetry-ext-requests -e {toxinidir}/ext/opentelemetry-ext-wsgi -e {toxinidir}/ext/opentelemetry-ext-flask grpc: pip install {toxinidir}/ext/opentelemetry-ext-grpc[test] wsgi,flask,django,asgi: pip install {toxinidir}/tests/util wsgi,flask,django: pip install {toxinidir}/ext/opentelemetry-ext-wsgi - flask,django: pip install {toxinidir}/opentelemetry-instrumentation asgi: pip install {toxinidir}/ext/opentelemetry-ext-asgi - boto: pip install {toxinidir}/opentelemetry-instrumentation boto: pip install {toxinidir}/ext/opentelemetry-ext-boto[test] flask: pip install {toxinidir}/ext/opentelemetry-ext-flask[test] @@ -205,25 +203,25 @@ commands_pre = django: pip install {toxinidir}/ext/opentelemetry-ext-django[test] - mysql: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-mysql[test] + mysql: pip install {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-mysql[test] opencensusexporter: pip install {toxinidir}/ext/opentelemetry-ext-opencensusexporter prometheus: pip install {toxinidir}/ext/opentelemetry-ext-prometheus - pymongo: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-pymongo[test] + pymongo: pip install {toxinidir}/ext/opentelemetry-ext-pymongo[test] - psycopg2: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-psycopg2 {toxinidir}/ext/opentelemetry-ext-psycopg2[test] + psycopg2: pip install {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-psycopg2 {toxinidir}/ext/opentelemetry-ext-psycopg2[test] - pymysql: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-pymysql[test] + pymysql: pip install {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-pymysql[test] - sqlite3: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-sqlite3[test] + sqlite3: pip install {toxinidir}/ext/opentelemetry-ext-dbapi {toxinidir}/ext/opentelemetry-ext-sqlite3[test] - redis: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-redis[test] + redis: pip install {toxinidir}/ext/opentelemetry-ext-redis[test] - requests: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-requests[test] + requests: pip install {toxinidir}/ext/opentelemetry-ext-requests[test] - jinja2: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-jinja2[test] + jinja2: pip install {toxinidir}/ext/opentelemetry-ext-jinja2[test] aiohttp-client: pip install {toxinidir}/opentelemetry-sdk {toxinidir}/ext/opentelemetry-ext-aiohttp-client @@ -236,9 +234,8 @@ commands_pre = zipkin: pip install {toxinidir}/ext/opentelemetry-ext-zipkin - sqlalchemy: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-sqlalchemy + sqlalchemy: pip install {toxinidir}/ext/opentelemetry-ext-sqlalchemy - system-metrics: pip install {toxinidir}/opentelemetry-instrumentation system-metrics: pip install {toxinidir}/ext/opentelemetry-ext-system-metrics[test] ; In order to get a healthy coverage report, From c71c6d8959a25fee76fafcc43c2139d1cb479550 Mon Sep 17 00:00:00 2001 From: Connor Adams Date: Fri, 5 Jun 2020 15:47:33 -0400 Subject: [PATCH 7/8] update doc naming --- docs/index.rst | 2 +- .../instrumentation.rst} | 4 ++-- .../instrumentor.rst | 2 +- opentelemetry-instrumentation/setup.cfg | 4 +++- tox.ini | 8 ++++---- 5 files changed, 11 insertions(+), 9 deletions(-) rename docs/{auto_instrumentation/auto_instrumentation.rst => instrumentation/instrumentation.rst} (68%) rename docs/{auto_instrumentation => instrumentation}/instrumentor.rst (75%) diff --git a/docs/index.rst b/docs/index.rst index 2d26e24f839..b25efa8acc6 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -68,7 +68,7 @@ install api/api sdk/sdk - auto_instrumentation/auto_instrumentation + instrumentation/instrumentation .. toctree:: :maxdepth: 2 diff --git a/docs/auto_instrumentation/auto_instrumentation.rst b/docs/instrumentation/instrumentation.rst similarity index 68% rename from docs/auto_instrumentation/auto_instrumentation.rst rename to docs/instrumentation/instrumentation.rst index 908c091abe3..bcb85043f4a 100644 --- a/docs/auto_instrumentation/auto_instrumentation.rst +++ b/docs/instrumentation/instrumentation.rst @@ -1,5 +1,5 @@ -OpenTelemetry Python Autoinstrumentation -======================================== +OpenTelemetry Python Instrumentation +==================================== .. automodule:: opentelemetry.instrumentation :members: diff --git a/docs/auto_instrumentation/instrumentor.rst b/docs/instrumentation/instrumentor.rst similarity index 75% rename from docs/auto_instrumentation/instrumentor.rst rename to docs/instrumentation/instrumentor.rst index 61ef9be4080..5c0c010ff6c 100644 --- a/docs/auto_instrumentation/instrumentor.rst +++ b/docs/instrumentation/instrumentor.rst @@ -1,5 +1,5 @@ opentelemetry.instrumentation.instrumentor package -======================================================= +================================================== .. automodule:: opentelemetry.instrumentation.instrumentor :members: diff --git a/opentelemetry-instrumentation/setup.cfg b/opentelemetry-instrumentation/setup.cfg index 2ba3a9bbfda..119beeec113 100644 --- a/opentelemetry-instrumentation/setup.cfg +++ b/opentelemetry-instrumentation/setup.cfg @@ -41,7 +41,9 @@ package_dir= packages=find_namespace: zip_safe = False include_package_data = True -install_requires = opentelemetry-api == 0.9.dev0 +install_requires = + opentelemetry-api == 0.9.dev0 + wrapt >= 1.0.0, < 2.0.0 [options.packages.find] where = src diff --git a/tox.ini b/tox.ini index 0371d341ccf..d73875d8956 100644 --- a/tox.ini +++ b/tox.ini @@ -13,7 +13,7 @@ envlist = pypy3-test-sdk ; opentelemetry-instrumentation - py3{4,5,6,7,8}-test-instrumentation + py3{5,6,7,8}-test-instrumentation pypy3-test-instrumentation ; opentelemetry-example-app @@ -182,11 +182,11 @@ commands_pre = ; cases but it saves a lot of boilerplate in this file. test: pip install {toxinidir}/opentelemetry-api {toxinidir}/opentelemetry-sdk {toxinidir}/tests/util - ext: pip install {toxinidir}/opentelemetry-instrumentation + ext,instrumentation: pip install {toxinidir}/opentelemetry-instrumentation - example-app: {toxinidir}/ext/opentelemetry-ext-requests {toxinidir}/ext/opentelemetry-ext-wsgi {toxinidir}/ext/opentelemetry-ext-flask {toxinidir}/docs/examples/opentelemetry-example-app + example-app: pip install {toxinidir}/opentelemetry-instrumentation {toxinidir}/ext/opentelemetry-ext-requests {toxinidir}/ext/opentelemetry-ext-wsgi {toxinidir}/ext/opentelemetry-ext-flask {toxinidir}/docs/examples/opentelemetry-example-app - getting-started: pip install -e {toxinidir}/ext/opentelemetry-ext-requests -e {toxinidir}/ext/opentelemetry-ext-wsgi -e {toxinidir}/ext/opentelemetry-ext-flask + getting-started: pip install -e {toxinidir}/opentelemetry-instrumentation -e {toxinidir}/ext/opentelemetry-ext-requests -e {toxinidir}/ext/opentelemetry-ext-wsgi -e {toxinidir}/ext/opentelemetry-ext-flask grpc: pip install {toxinidir}/ext/opentelemetry-ext-grpc[test] From a8329f0e4ebca7330d6f02729f82ca1ac643e549 Mon Sep 17 00:00:00 2001 From: alrex Date: Mon, 8 Jun 2020 15:11:08 -0700 Subject: [PATCH 8/8] Update opentelemetry-instrumentation/tests/test_utils.py --- opentelemetry-instrumentation/tests/test_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-instrumentation/tests/test_utils.py b/opentelemetry-instrumentation/tests/test_utils.py index ea0cc37142c..660a6bbe863 100644 --- a/opentelemetry-instrumentation/tests/test_utils.py +++ b/opentelemetry-instrumentation/tests/test_utils.py @@ -1,4 +1,4 @@ -# Copyright 2020, OpenTelemetry Authors +# Copyright The OpenTelemetry Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License.