cavisson-pythonagent 0.0.1__tar.gz → 0.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cavisson_pythonagent-0.0.2/MANIFEST.in +2 -0
- {cavisson_pythonagent-0.0.1/cavisson_pythonagent.egg-info → cavisson_pythonagent-0.0.2}/PKG-INFO +2 -11
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2/cavisson_pythonagent.egg-info}/PKG-INFO +2 -11
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/cavisson_pythonagent.egg-info/SOURCES.txt +21 -3
- cavisson_pythonagent-0.0.2/cavisson_pythonagent.egg-info/entry_points.txt +2 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/agent.py +4 -16
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/Instrumentation/find.py +4 -14
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/base.py +10 -6
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/aiohttp_web.py +6 -4
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/asgi.py +5 -3
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/tornado_async_web.py +4 -2
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/wsgi.py +5 -3
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/grpc/server_interceptor.py +4 -2
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/http/aiohttp_client.py +7 -6
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/http/httpx_client.py +14 -12
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/langchain/base_tool.py +2 -1
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/langchain/langchain_community.py +2 -1
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/langchain/langchain_openai.py +2 -1
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/message_brokers/pika.py +9 -8
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/openai/openai.py +4 -2
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/alpine/libcavapr-1.so +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/alpine/libcrypto.so.3 +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/alpine/libssl.so.3 +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/alpine/libuuid.so.1 +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/alpine/libwebsockets.so +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/debian/libcavapr-1.so +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/debian/libcrypto.so.1.1 +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/debian/libssl.so.1.1 +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/debian/libwebsockets.so +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/opensuse/libcavapr-1.so +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/opensuse/libndsdk_py.so +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/opensuse/libwebsockets.so +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/oracle-linux/libcavapr-1.so +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/oracle-linux/libcrypto.so.1.1 +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/oracle-linux/libssl.so.1.1 +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/oracle-linux/libwebsockets.so +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/sles/libcavapr-1.so +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/sles/libndsdk_py.so +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/native_libs/sles/libwebsockets.so +0 -0
- cavisson_pythonagent-0.0.2/pythonagent/bootstrap/setup_native_libs.py +196 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/setup.cfg +8 -1
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/setup.py +2 -2
- cavisson_pythonagent-0.0.1/MANIFEST.in +0 -1
- cavisson_pythonagent-0.0.1/pythonagent/agent/internal/metadata/agent_meta_data.py +0 -276
- cavisson_pythonagent-0.0.1/pythonagent/agent/probes/Instrumentation/module_version_resolver.py +0 -155
- cavisson_pythonagent-0.0.1/pythonagent/vendor/pympler/util/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/LICENSE +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/README.md +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/cavisson_pythonagent.egg-info/dependency_links.txt +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/cavisson_pythonagent.egg-info/top_level.txt +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pyproject.toml +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/framesinfo.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/heap_dump.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/intercept_module.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/logs.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/proc_compat.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/profile.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/provider.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/thread_dump.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/udp.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/udp_message.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/Instrumentation/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/Instrumentation/new_parser.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/Instrumentation/parser.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/cache/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/cache/redis.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/cache/redis_asyncio.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/coroutines/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/coroutines/asyncio.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/elasticdb/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/elasticdb/aelastic.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/agentprofiler.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/aisess.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/bottle.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/cherry.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/django.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/falcon.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/fastapi.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/flask.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/pyramid.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/test.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/frameworks/tornado_web.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/grpc/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/grpc/client_interceptor.py +0 -0
- {cavisson_pythonagent-0.0.1/pythonagent/agent/internal/metadata → cavisson_pythonagent-0.0.2/pythonagent/agent/probes/havoc}/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/havoc/custom_memory_stress.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/havoc/custom_thread_stress.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/havoc/havoc_constants.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/havoc/havoc_manager.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/http/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/http/boto.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/http/httplib.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/http/requests.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/http/tornado_httpclient.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/http/urllib3.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/langchain/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/langchain/langchain_core.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/logging/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/message_brokers/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/mongodb/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/mongodb/pymongo.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/openai/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/span.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/botocores3.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/dbapi.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/dynamodb.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/mysql_connector.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/mysql_connector_cext.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/mysqldb.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/psycopg2.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/sql/pymysql.py +0 -0
- {cavisson_pythonagent-0.0.1/pythonagent/agent/probes/havoc → cavisson_pythonagent-0.0.2/pythonagent/bootstrap}/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/bootstrap/cav_gunicorn.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/bootstrap/cavagent_lambda_wrapper.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/bootstrap/run.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/bootstrap/sitecustomize.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/cavisson/netdiagnostics/CavAgent/instrumentationprofile.json +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/cavisson/netdiagnostics/CavAgent/interceptor_points.txt +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/cavisson/netdiagnostics/python/CavAgent/instrumentationprofile.json +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/cavisson/netdiagnostics/python/CavAgent/interceptor_points.txt +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/cavisson/netdiagnostics/python/config/ndsettings.conf +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/config.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/find.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/find_mod_cls_name.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/lang.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/lib.py +0 -0
- {cavisson_pythonagent-0.0.1/pythonagent/bootstrap → cavisson_pythonagent-0.0.2/pythonagent/main}/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/main/pytrace/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1/pythonagent/main → cavisson_pythonagent-0.0.2/pythonagent/main/pytrace/commands}/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/main/pytrace/commands/auto_discovery.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/main/pytrace/commands/run.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/main/pytrace/pytrace.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/main/wsgi.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/main.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/run.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/sqins.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/test.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/utils.py +0 -0
- {cavisson_pythonagent-0.0.1/pythonagent/main/pytrace/commands → cavisson_pythonagent-0.0.2/pythonagent/vendor}/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/asizeof.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/charts.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/classtracker.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/classtracker_stats.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/garbagegraph.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/mprofile.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/muppy.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/panels.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/process.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/py.typed +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/refbrowser.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/refgraph.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/summary.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/tracker.py +0 -0
- {cavisson_pythonagent-0.0.1/pythonagent/vendor → cavisson_pythonagent-0.0.2/pythonagent/vendor/pympler/util}/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/util/bottle.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/util/compat.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/util/stringutils.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/pympler/web.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/_compat.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/_internal.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/_reloader.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/datastructures.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/debug/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/debug/console.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/debug/repr.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/debug/tbtools.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/exceptions.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/filesystem.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/formparser.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/http.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/local.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/middleware/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/middleware/dispatcher.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/middleware/http_proxy.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/middleware/lint.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/middleware/profiler.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/middleware/proxy_fix.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/middleware/shared_data.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/posixemulation.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/routing.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/security.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/serving.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/test.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/testapp.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/urls.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/useragents.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/utils.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/__init__.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/accept.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/auth.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/base_request.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/base_response.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/common_descriptors.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/cors.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/etag.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/json.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/request.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/response.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wrappers/user_agent.py +0 -0
- {cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/vendor/werkzeug/wsgi.py +0 -0
{cavisson_pythonagent-0.0.1/cavisson_pythonagent.egg-info → cavisson_pythonagent-0.0.2}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
2
|
Name: cavisson-pythonagent
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.2
|
|
4
4
|
Summary: A small example package
|
|
5
5
|
Home-page: https://github.com/pypa/sampleproject
|
|
6
6
|
Author: Cavisson System
|
|
@@ -15,15 +15,6 @@ Classifier: Operating System :: OS Independent
|
|
|
15
15
|
Requires-Python: >=2.6, !=3.0.*, !=3.1.*, !=3.2.*
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE
|
|
18
|
-
Dynamic: author
|
|
19
|
-
Dynamic: author-email
|
|
20
|
-
Dynamic: classifier
|
|
21
|
-
Dynamic: description
|
|
22
|
-
Dynamic: description-content-type
|
|
23
|
-
Dynamic: home-page
|
|
24
|
-
Dynamic: license-file
|
|
25
|
-
Dynamic: requires-python
|
|
26
|
-
Dynamic: summary
|
|
27
18
|
|
|
28
19
|
# Example Package
|
|
29
20
|
|
{cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2/cavisson_pythonagent.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
2
|
Name: cavisson-pythonagent
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.2
|
|
4
4
|
Summary: A small example package
|
|
5
5
|
Home-page: https://github.com/pypa/sampleproject
|
|
6
6
|
Author: Cavisson System
|
|
@@ -15,15 +15,6 @@ Classifier: Operating System :: OS Independent
|
|
|
15
15
|
Requires-Python: >=2.6, !=3.0.*, !=3.1.*, !=3.2.*
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE
|
|
18
|
-
Dynamic: author
|
|
19
|
-
Dynamic: author-email
|
|
20
|
-
Dynamic: classifier
|
|
21
|
-
Dynamic: description
|
|
22
|
-
Dynamic: description-content-type
|
|
23
|
-
Dynamic: home-page
|
|
24
|
-
Dynamic: license-file
|
|
25
|
-
Dynamic: requires-python
|
|
26
|
-
Dynamic: summary
|
|
27
18
|
|
|
28
19
|
# Example Package
|
|
29
20
|
|
{cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/cavisson_pythonagent.egg-info/SOURCES.txt
RENAMED
|
@@ -7,6 +7,7 @@ setup.py
|
|
|
7
7
|
cavisson_pythonagent.egg-info/PKG-INFO
|
|
8
8
|
cavisson_pythonagent.egg-info/SOURCES.txt
|
|
9
9
|
cavisson_pythonagent.egg-info/dependency_links.txt
|
|
10
|
+
cavisson_pythonagent.egg-info/entry_points.txt
|
|
10
11
|
cavisson_pythonagent.egg-info/top_level.txt
|
|
11
12
|
pythonagent/__init__.py
|
|
12
13
|
pythonagent/config.py
|
|
@@ -32,14 +33,11 @@ pythonagent/agent/internal/provider.py
|
|
|
32
33
|
pythonagent/agent/internal/thread_dump.py
|
|
33
34
|
pythonagent/agent/internal/udp.py
|
|
34
35
|
pythonagent/agent/internal/udp_message.py
|
|
35
|
-
pythonagent/agent/internal/metadata/__init__.py
|
|
36
|
-
pythonagent/agent/internal/metadata/agent_meta_data.py
|
|
37
36
|
pythonagent/agent/probes/__init__.py
|
|
38
37
|
pythonagent/agent/probes/base.py
|
|
39
38
|
pythonagent/agent/probes/span.py
|
|
40
39
|
pythonagent/agent/probes/Instrumentation/__init__.py
|
|
41
40
|
pythonagent/agent/probes/Instrumentation/find.py
|
|
42
|
-
pythonagent/agent/probes/Instrumentation/module_version_resolver.py
|
|
43
41
|
pythonagent/agent/probes/Instrumentation/new_parser.py
|
|
44
42
|
pythonagent/agent/probes/Instrumentation/parser.py
|
|
45
43
|
pythonagent/agent/probes/cache/__init__.py
|
|
@@ -106,7 +104,27 @@ pythonagent/bootstrap/__init__.py
|
|
|
106
104
|
pythonagent/bootstrap/cav_gunicorn.py
|
|
107
105
|
pythonagent/bootstrap/cavagent_lambda_wrapper.py
|
|
108
106
|
pythonagent/bootstrap/run.py
|
|
107
|
+
pythonagent/bootstrap/setup_native_libs.py
|
|
109
108
|
pythonagent/bootstrap/sitecustomize.py
|
|
109
|
+
pythonagent/bootstrap/native_libs/alpine/libcavapr-1.so
|
|
110
|
+
pythonagent/bootstrap/native_libs/alpine/libcrypto.so.3
|
|
111
|
+
pythonagent/bootstrap/native_libs/alpine/libssl.so.3
|
|
112
|
+
pythonagent/bootstrap/native_libs/alpine/libuuid.so.1
|
|
113
|
+
pythonagent/bootstrap/native_libs/alpine/libwebsockets.so
|
|
114
|
+
pythonagent/bootstrap/native_libs/debian/libcavapr-1.so
|
|
115
|
+
pythonagent/bootstrap/native_libs/debian/libcrypto.so.1.1
|
|
116
|
+
pythonagent/bootstrap/native_libs/debian/libssl.so.1.1
|
|
117
|
+
pythonagent/bootstrap/native_libs/debian/libwebsockets.so
|
|
118
|
+
pythonagent/bootstrap/native_libs/opensuse/libcavapr-1.so
|
|
119
|
+
pythonagent/bootstrap/native_libs/opensuse/libndsdk_py.so
|
|
120
|
+
pythonagent/bootstrap/native_libs/opensuse/libwebsockets.so
|
|
121
|
+
pythonagent/bootstrap/native_libs/oracle-linux/libcavapr-1.so
|
|
122
|
+
pythonagent/bootstrap/native_libs/oracle-linux/libcrypto.so.1.1
|
|
123
|
+
pythonagent/bootstrap/native_libs/oracle-linux/libssl.so.1.1
|
|
124
|
+
pythonagent/bootstrap/native_libs/oracle-linux/libwebsockets.so
|
|
125
|
+
pythonagent/bootstrap/native_libs/sles/libcavapr-1.so
|
|
126
|
+
pythonagent/bootstrap/native_libs/sles/libndsdk_py.so
|
|
127
|
+
pythonagent/bootstrap/native_libs/sles/libwebsockets.so
|
|
110
128
|
pythonagent/cavisson/netdiagnostics/CavAgent/instrumentationprofile.json
|
|
111
129
|
pythonagent/cavisson/netdiagnostics/CavAgent/interceptor_points.txt
|
|
112
130
|
pythonagent/cavisson/netdiagnostics/python/CavAgent/instrumentationprofile.json
|
{cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/internal/agent.py
RENAMED
|
@@ -12,7 +12,6 @@ from pythonagent.agent.internal import udp
|
|
|
12
12
|
from pythonagent.agent.internal.provider import ContextProvider, CurrentBTProvider, StatusCodeProvider
|
|
13
13
|
from pythonagent.agent.probes.frameworks import wsgi # aiflagset
|
|
14
14
|
from pythonagent.agent.probes.Instrumentation.find import find
|
|
15
|
-
from pythonagent.agent.internal.metadata.agent_meta_data import build_metadata_block
|
|
16
15
|
from pythonagent.utils import generate_flow_path_id, get_utf8_bytes, get_current_timestamp_in_us, process_raw_havoc_message
|
|
17
16
|
import threading,gc
|
|
18
17
|
from pythonagent.agent.internal.proc_compat import get_rss_bytes
|
|
@@ -850,18 +849,6 @@ class Agent(object):
|
|
|
850
849
|
|
|
851
850
|
output_from_ad_c = create_string_buffer(get_utf8_bytes(output_from_ad))
|
|
852
851
|
self.lib.wraphandleMessageForDiscovery(output_from_ad_c)
|
|
853
|
-
|
|
854
|
-
# Metadata must be sent before the "totalTimeTaken=...;" summary line below - that line is
|
|
855
|
-
# treated by the collector as the terminal response for this discovery request, so anything
|
|
856
|
-
# sent after it would never be attached to the .adr output. Defensive try/except so a
|
|
857
|
-
# metadata-collection failure never breaks the rest of auto-discovery.
|
|
858
|
-
try:
|
|
859
|
-
metadata_block_c = create_string_buffer(get_utf8_bytes(build_metadata_block(self)))
|
|
860
|
-
self.lib.wraphandleMessageForDiscovery(metadata_block_c)
|
|
861
|
-
del metadata_block_c
|
|
862
|
-
except Exception as e:
|
|
863
|
-
self.logger.exception("Error building/sending auto-discovery metadata block")
|
|
864
|
-
|
|
865
852
|
self.logger.info("ad sending summary")
|
|
866
853
|
ad_summary_c = create_string_buffer(get_utf8_bytes(ad_summary))
|
|
867
854
|
self.lib.wraphandleMessageForDiscovery(ad_summary_c)
|
|
@@ -1100,11 +1087,12 @@ class Agent(object):
|
|
|
1100
1087
|
|
|
1101
1088
|
|
|
1102
1089
|
if not bt:
|
|
1103
|
-
self.logger.
|
|
1090
|
+
self.logger.debug("nd_bt_begin returned NULL; skipping instrumentation for this transaction (test run is not active or internal connection error)")
|
|
1091
|
+
else:
|
|
1092
|
+
self.active_bts.add(bt)
|
|
1104
1093
|
#self.logger.info("bt datatype : {0}".format(type(bt)))
|
|
1105
1094
|
#print("btname value: {0}".format(btname))
|
|
1106
1095
|
# print('-----------------\nCurrent heap memory stack for BT: ',bt_name,' is : ',hpy().heap())
|
|
1107
|
-
self.active_bts.add(bt)
|
|
1108
1096
|
self.set_current_bt(bt)
|
|
1109
1097
|
#print("BT value of this txn: ", bt)
|
|
1110
1098
|
return bt
|
|
@@ -1177,7 +1165,7 @@ class Agent(object):
|
|
|
1177
1165
|
bt = udp.start_business_transaction(self, urlinfo, correlation_header)
|
|
1178
1166
|
|
|
1179
1167
|
try:
|
|
1180
|
-
if self.cav_env == "NATIVE":
|
|
1168
|
+
if self.cav_env == "NATIVE" and bt:
|
|
1181
1169
|
url, http_method = str(urlinfo).rsplit("|", 1) if "|" in str(urlinfo) else (urlinfo, "")
|
|
1182
1170
|
btname_value = self.get_bt_name(
|
|
1183
1171
|
get_utf8_bytes(url),
|
|
@@ -7,7 +7,6 @@ import time
|
|
|
7
7
|
import pyclbr
|
|
8
8
|
import datetime
|
|
9
9
|
from pythonagent.agent.internal.proc_compat import get_process_name
|
|
10
|
-
from pythonagent.agent.probes.Instrumentation import module_version_resolver
|
|
11
10
|
import hashlib
|
|
12
11
|
import inspect
|
|
13
12
|
|
|
@@ -47,7 +46,7 @@ def regex_match(list_of_regex, expression):
|
|
|
47
46
|
return 0
|
|
48
47
|
|
|
49
48
|
|
|
50
|
-
def cls_mett_find(node, package_and_module, f, method_filter_list, class_filter_list
|
|
49
|
+
def cls_mett_find(node, package_and_module, f, method_filter_list, class_filter_list):
|
|
51
50
|
outfromad = ""
|
|
52
51
|
num_of_methods = 0
|
|
53
52
|
|
|
@@ -94,10 +93,7 @@ def cls_mett_find(node, package_and_module, f, method_filter_list, class_filter_
|
|
|
94
93
|
joined_string = ",".join(lif)
|
|
95
94
|
|
|
96
95
|
if len(joined_string)>0:
|
|
97
|
-
|
|
98
|
-
# agents' module|methods|interface|jar layout): "<pkgName>@<pkgVersion>", suffixed "(app)"
|
|
99
|
-
# when the file belongs to the monitored application itself, or blank if unresolved.
|
|
100
|
-
outfromad = package_and_module + "||" + joined_string + "|" + jar_field + "\n"
|
|
96
|
+
outfromad = package_and_module + "||" + joined_string + "\n"
|
|
101
97
|
"""
|
|
102
98
|
if pkgname:
|
|
103
99
|
#print("if pkgname")
|
|
@@ -144,7 +140,7 @@ def cls_mett_find(node, package_and_module, f, method_filter_list, class_filter_
|
|
|
144
140
|
#if "flask" in pkgname:
|
|
145
141
|
# print("joined_stringf", joined_stringf)
|
|
146
142
|
if len(joined_stringf)>0:
|
|
147
|
-
outfromad += package_and_module + "|" + class_.name + "|" + joined_stringf + "
|
|
143
|
+
outfromad += package_and_module + "|" + class_.name + "|" + joined_stringf + "\n"
|
|
148
144
|
|
|
149
145
|
"""
|
|
150
146
|
if pkgname:
|
|
@@ -212,15 +208,9 @@ def find(method_filter_list, class_filter_list):
|
|
|
212
208
|
if node is None:
|
|
213
209
|
continue
|
|
214
210
|
|
|
215
|
-
try:
|
|
216
|
-
pkg_info = module_version_resolver.resolve(path)
|
|
217
|
-
jar_field = module_version_resolver.format_jar_field(pkg_info)
|
|
218
|
-
except Exception as e:
|
|
219
|
-
jar_field = ''
|
|
220
|
-
|
|
221
211
|
try:
|
|
222
212
|
outputfromaf, methodscount = cls_mett_find(node, package_and_module, f, method_filter_list,
|
|
223
|
-
class_filter_list
|
|
213
|
+
class_filter_list)
|
|
224
214
|
except Exception as e:
|
|
225
215
|
print(e)
|
|
226
216
|
|
|
@@ -151,7 +151,8 @@ class ExitCallInterceptor(BaseInterceptor):
|
|
|
151
151
|
backend_name = backend_name or http_host
|
|
152
152
|
with self.log_exceptions():
|
|
153
153
|
self.agent.logger.debug("http call begin bt {} http_host {} url {} method_name {} current_time {}".format(bt, http_host, url, method_name, start_time))
|
|
154
|
-
|
|
154
|
+
if bt:
|
|
155
|
+
exit_call= self.agent.http_call_begin(bt, http_host, url, method_name, start_time) # Native
|
|
155
156
|
try:
|
|
156
157
|
from pythonagent.agent.probes.havoc.havoc_manager import NDHavocException
|
|
157
158
|
backend_name_value = self.agent.setting_backend_name_otel(backend_name, "HTTP")
|
|
@@ -167,8 +168,9 @@ class ExitCallInterceptor(BaseInterceptor):
|
|
|
167
168
|
self.agent.logger.info("Havoc Exception {}".format(e))
|
|
168
169
|
status = 503
|
|
169
170
|
self.agent.set_current_status_code(503)
|
|
170
|
-
|
|
171
|
-
|
|
171
|
+
if bt:
|
|
172
|
+
self.agent.get_nd_header(bt, backend_name, callout_id)
|
|
173
|
+
self.agent.http_call_end(bt, exit_call, method_name, backend_name, status, 0, start_time, callout_id)
|
|
172
174
|
raise e
|
|
173
175
|
else:
|
|
174
176
|
self.agent.logger.info("Non-Havoc Exception {}".format(e))
|
|
@@ -201,7 +203,7 @@ class ExitCallInterceptor(BaseInterceptor):
|
|
|
201
203
|
|
|
202
204
|
|
|
203
205
|
with self.log_exceptions():
|
|
204
|
-
if not exit_call:
|
|
206
|
+
if bt and not exit_call:
|
|
205
207
|
self.agent.logger.debug("http call end bt {} exit_call {} method_name {} backend_name {} status {} duration {} start_time {}".format(bt, exit_call, method_name, backend_name, status, duration, start_time))
|
|
206
208
|
self.agent.http_call_end(bt, exit_call, method_name, backend_name, status, duration, start_time, callout_id)
|
|
207
209
|
|
|
@@ -218,7 +220,8 @@ class ExitCallInterceptor(BaseInterceptor):
|
|
|
218
220
|
with self.log_exceptions():
|
|
219
221
|
if not method_name:
|
|
220
222
|
method_name = ctx.entry_point_fqm if ctx else None
|
|
221
|
-
|
|
223
|
+
if bt:
|
|
224
|
+
ip_handle = self.agent.db_call_begin(method_name, bt, db_host, db_query, query_parameters, db_start_time)
|
|
222
225
|
try:
|
|
223
226
|
|
|
224
227
|
from pythonagent.agent.probes.havoc.havoc_manager import NDHavocException
|
|
@@ -241,7 +244,8 @@ class ExitCallInterceptor(BaseInterceptor):
|
|
|
241
244
|
self.agent.set_current_status_code(status_code)
|
|
242
245
|
if ctx:
|
|
243
246
|
ctx.status_code = status_code
|
|
244
|
-
|
|
247
|
+
if bt:
|
|
248
|
+
self.agent.db_call_end(bt, ip_handle, 0, db_start_time, method_name, host_str, status_code)
|
|
245
249
|
raise e
|
|
246
250
|
else:
|
|
247
251
|
self.agent.logger.info("Non-Havoc Exception {}".format(e))
|
|
@@ -62,9 +62,9 @@ class AIOHTTPWebInterceptor(BaseInterceptor):
|
|
|
62
62
|
|
|
63
63
|
bt = self.agent.start_business_transaction(bt_name, correlation_header, nd_cookie_value,
|
|
64
64
|
nv_cookie_value, bt_header_value, fp_instance)
|
|
65
|
-
print("bt", bt)
|
|
66
65
|
|
|
67
|
-
|
|
66
|
+
if bt:
|
|
67
|
+
self.agent.http_req_resp_wrapper(bt, req_headers, "req", 200)
|
|
68
68
|
|
|
69
69
|
except Exception as e:
|
|
70
70
|
self.agent.logger.exception("Exception in Start BT for AIOHTTP Web {}".format(e))
|
|
@@ -81,7 +81,8 @@ class AIOHTTPWebInterceptor(BaseInterceptor):
|
|
|
81
81
|
cpu_time_after = get_current_thread_time_in_us()
|
|
82
82
|
cpu_time = cpu_time_after - (cpu_time_before or 0)
|
|
83
83
|
self.agent.set_current_status_code(503)
|
|
84
|
-
|
|
84
|
+
if bt:
|
|
85
|
+
self.agent.end_business_transaction(bt, cpu_time)
|
|
85
86
|
self.agent.havoc_monitor.refresh_configs(self.agent)
|
|
86
87
|
raise e
|
|
87
88
|
else:
|
|
@@ -104,7 +105,8 @@ class AIOHTTPWebInterceptor(BaseInterceptor):
|
|
|
104
105
|
if self.agent.header_in_response:
|
|
105
106
|
x_cav_nv = get_true_false(self.agent.header_in_response)
|
|
106
107
|
|
|
107
|
-
|
|
108
|
+
nd_cookie_value_raw = self.agent.sdk_getNDSessionCookie(bt)
|
|
109
|
+
nd_cookie_value = nd_cookie_value_raw.decode() if nd_cookie_value_raw else None
|
|
108
110
|
|
|
109
111
|
if nd_cookie_key: # CavNV Enabled
|
|
110
112
|
if nd_cookie_value:
|
|
@@ -81,7 +81,8 @@ class ASGIInterceptor(EntryPointInterceptor):
|
|
|
81
81
|
except Exception as e:
|
|
82
82
|
self.agent.logger.debug("Could not build entry_point_fqm: {}".format(e))
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
if bt:
|
|
85
|
+
self.agent.http_req_resp_wrapper(bt, req_headers, "req", 200)
|
|
85
86
|
|
|
86
87
|
except Exception as e:
|
|
87
88
|
self.agent.logger.exception("Exception in Start BT for ASGI {}".format(e))
|
|
@@ -98,7 +99,8 @@ class ASGIInterceptor(EntryPointInterceptor):
|
|
|
98
99
|
cpu_time_after = get_current_thread_time_in_us()
|
|
99
100
|
cpu_time = cpu_time_after - (cpu_time_before or 0)
|
|
100
101
|
self.agent.set_current_status_code(503)
|
|
101
|
-
|
|
102
|
+
if bt:
|
|
103
|
+
self.agent.end_business_transaction(bt, cpu_time)
|
|
102
104
|
self.agent.havoc_monitor.refresh_configs(self.agent)
|
|
103
105
|
raise e
|
|
104
106
|
else:
|
|
@@ -143,7 +145,7 @@ class ASGIInterceptor(EntryPointInterceptor):
|
|
|
143
145
|
# when multiple async requests share one OS thread.
|
|
144
146
|
bt = other_info.get("bt")
|
|
145
147
|
|
|
146
|
-
if send_event_dict.get('type') == 'http.response.start':
|
|
148
|
+
if bt and send_event_dict.get('type') == 'http.response.start':
|
|
147
149
|
status = send_event_dict.get('status', 200)
|
|
148
150
|
|
|
149
151
|
# Inject session cookies before forwarding the response start event
|
|
@@ -39,7 +39,8 @@ class Tornado_async_RequestHandlerInterceptor(EntryPointInterceptor):
|
|
|
39
39
|
correlation_header = ""
|
|
40
40
|
cpu_time_before = get_current_thread_time_in_us()
|
|
41
41
|
bt = self.start_business_transaction(bt_name, correlation_header, nd_cookie_value, nv_cookie_value, bt_header_value, fp_instance)
|
|
42
|
-
|
|
42
|
+
if bt:
|
|
43
|
+
self.agent.http_req_resp_wrapper(bt, req_headers, "req", 200)
|
|
43
44
|
self.agent.logger.debug("Modulename: Tornado_async_RequestHandlerInterceptor class || bt value is :{0}".format(bt))
|
|
44
45
|
except Exception as e:
|
|
45
46
|
self.agent.logger.exception("Error in Tornado_async_RequestHandlerInterceptor class start business transaction", e)
|
|
@@ -59,7 +60,8 @@ class Tornado_async_RequestHandlerInterceptor(EntryPointInterceptor):
|
|
|
59
60
|
x_cav_nv = get_true_false(self.agent.header_in_response)
|
|
60
61
|
|
|
61
62
|
result_headers = handler._headers
|
|
62
|
-
|
|
63
|
+
nd_cookie_value_raw = self.agent.sdk_getNDSessionCookie(bt)
|
|
64
|
+
nd_cookie_value = nd_cookie_value_raw.decode() if nd_cookie_value_raw else None
|
|
63
65
|
if nd_cookie_key: # CavNV Enabled
|
|
64
66
|
if nd_cookie_value:
|
|
65
67
|
nd_cookie_str = "{}={}".format(nd_cookie_key, nd_cookie_value)
|
|
@@ -99,7 +99,8 @@ class WSGIInterceptor(EntryPointInterceptor):
|
|
|
99
99
|
except Exception as e:
|
|
100
100
|
self.agent.logger.debug("Could not build entry_point_fqm: {}".format(e))
|
|
101
101
|
|
|
102
|
-
|
|
102
|
+
if bt:
|
|
103
|
+
self.agent.http_req_resp_wrapper(bt, req_headers, "req", 200)
|
|
103
104
|
|
|
104
105
|
# Invoking inbound havoc failure at the entry of the instrumented method
|
|
105
106
|
# so that the transaction fails at the start and does not continue
|
|
@@ -113,7 +114,8 @@ class WSGIInterceptor(EntryPointInterceptor):
|
|
|
113
114
|
self.agent.set_current_status_code(503)
|
|
114
115
|
cpu_time_after = get_current_thread_time_in_us()
|
|
115
116
|
cpu_time = cpu_time_after - cpu_time_before
|
|
116
|
-
|
|
117
|
+
if bt:
|
|
118
|
+
rc = self.agent.end_business_transaction(bt, cpu_time)
|
|
117
119
|
raise e
|
|
118
120
|
else:
|
|
119
121
|
self.agent.logger.debug("Non-Havoc Exception {}".format(e))
|
|
@@ -147,7 +149,7 @@ class WSGIInterceptor(EntryPointInterceptor):
|
|
|
147
149
|
duration = get_validated_duration(before_time, after_time, fqmforentry)
|
|
148
150
|
if bt:
|
|
149
151
|
self.agent.method_exit(bt, fqmforentry, duration, cpu_time, before_time)
|
|
150
|
-
|
|
152
|
+
self.end_business_transaction(bt, cpu_time)
|
|
151
153
|
|
|
152
154
|
return response
|
|
153
155
|
|
|
@@ -108,7 +108,8 @@ class NDGrpcServerInterceptor(EntryPointInterceptor, grpc.ServerInterceptor):
|
|
|
108
108
|
self._handle_exception(bt)
|
|
109
109
|
self._finish(bt, cpu_time_before)
|
|
110
110
|
raise
|
|
111
|
-
|
|
111
|
+
if bt:
|
|
112
|
+
self.handle_http_status_code(bt, get_status_code(), "")
|
|
112
113
|
self._finish(bt, cpu_time_before)
|
|
113
114
|
return response
|
|
114
115
|
return wrapped
|
|
@@ -124,6 +125,7 @@ class NDGrpcServerInterceptor(EntryPointInterceptor, grpc.ServerInterceptor):
|
|
|
124
125
|
self._handle_exception(bt)
|
|
125
126
|
self._finish(bt, cpu_time_before)
|
|
126
127
|
raise
|
|
127
|
-
|
|
128
|
+
if bt:
|
|
129
|
+
self.handle_http_status_code(bt, get_status_code(), "")
|
|
128
130
|
self._finish(bt, cpu_time_before)
|
|
129
131
|
return wrapped
|
|
@@ -23,14 +23,15 @@ class AsyncioHTTPClientInterceptor(ExitCallInterceptor):
|
|
|
23
23
|
host_port = "NA|default_host|default_port|default_url"
|
|
24
24
|
|
|
25
25
|
mName = _request.__module__ + "." + _request.__qualname__
|
|
26
|
-
|
|
26
|
+
if self.bt:
|
|
27
|
+
headers_value = self.agent.get_nd_header(self.bt, host_port, unique_id).decode()
|
|
27
28
|
|
|
28
|
-
|
|
29
|
+
client_session_object = args[0]
|
|
29
30
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
if client_session_object._default_headers:
|
|
32
|
+
client_session_object._default_headers["CavNDFPInstance"] = headers_value
|
|
33
|
+
else:
|
|
34
|
+
client_session_object._default_headers = {"CavNDFPInstance": headers_value}
|
|
34
35
|
|
|
35
36
|
bt = self.bt
|
|
36
37
|
start_time = get_current_timestamp_in_us()
|
|
@@ -28,14 +28,15 @@ class HTTPXAsyncClientInterceptor(ExitCallInterceptor):
|
|
|
28
28
|
|
|
29
29
|
bt = self.bt
|
|
30
30
|
mName = send.__module__ + "." + send.__qualname__
|
|
31
|
-
|
|
31
|
+
if bt:
|
|
32
|
+
headers_value = self.agent.get_nd_header(self.bt, host_port, unique_id).decode()
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
client_session_object = args[0]
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
if client_session_object._headers:
|
|
37
|
+
client_session_object._headers["CavNDFPInstance"] = headers_value
|
|
38
|
+
else:
|
|
39
|
+
client_session_object._headers = {"CavNDFPInstance": headers_value}
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
start_time = get_current_timestamp_in_us()
|
|
@@ -82,12 +83,13 @@ class HTTPXClientInterceptor(ExitCallInterceptor):
|
|
|
82
83
|
bt = self.bt
|
|
83
84
|
mName = send.__module__ + "." + send.__qualname__
|
|
84
85
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
client_session_object._headers
|
|
89
|
-
|
|
90
|
-
|
|
86
|
+
if bt:
|
|
87
|
+
headers_value = self.agent.get_nd_header(self.bt, host_port, unique_id).decode()
|
|
88
|
+
client_session_object = args[0]
|
|
89
|
+
if client_session_object._headers:
|
|
90
|
+
client_session_object._headers["CavNDFPInstance"] = headers_value
|
|
91
|
+
else:
|
|
92
|
+
client_session_object._headers = {"CavNDFPInstance": headers_value}
|
|
91
93
|
|
|
92
94
|
start_time = get_current_timestamp_in_us()
|
|
93
95
|
exit_call = self.http_call_begin(bt, host_port, url, mName, start_time, host_port, unique_id)
|
|
@@ -86,7 +86,8 @@ class LangChainBaseToolInterceptor(ExitCallInterceptor):
|
|
|
86
86
|
self.agent.logger.info("langchain base tool sending tool span {}".format(tool_span_json))
|
|
87
87
|
|
|
88
88
|
# SDK API call to send logs to NF
|
|
89
|
-
|
|
89
|
+
if bt:
|
|
90
|
+
self.agent.dump_log_message(bt, tool_span_json)
|
|
90
91
|
|
|
91
92
|
except Exception as e:
|
|
92
93
|
self.agent.logger.exception("langchain base tool db call begin {}".format(e))
|
|
@@ -107,7 +107,8 @@ class LangChainCommunityVectorStoreInterceptor(ExitCallInterceptor):
|
|
|
107
107
|
# SDK API call to send logs to NF
|
|
108
108
|
if self.agent.logger.isEnabledFor(logging.INFO):
|
|
109
109
|
self.agent.logger.info("langchain community vectordb sending vectordb span {}".format(retrieval_span_json))
|
|
110
|
-
|
|
110
|
+
if bt:
|
|
111
|
+
self.agent.dump_log_message(bt, retrieval_span_json)
|
|
111
112
|
|
|
112
113
|
except Exception as e:
|
|
113
114
|
self.agent.logger.exception("Exception in langchain community vectorstore db call end {}".format(e))
|
|
@@ -94,7 +94,8 @@ class LangChainOpenAIEmbeddingsInterceptor(ExitCallInterceptor):
|
|
|
94
94
|
# SDK API call to send logs to NF
|
|
95
95
|
if self.agent.logger.isEnabledFor(logging.INFO):
|
|
96
96
|
self.agent.logger.info("langchain openai embeddings sending embeddings span {}".format(embedding_span_json))
|
|
97
|
-
|
|
97
|
+
if bt:
|
|
98
|
+
self.agent.dump_log_message(bt, embedding_span_json)
|
|
98
99
|
|
|
99
100
|
except Exception as e:
|
|
100
101
|
self.agent.logger.exception("langchain openai embeddings db call end {}".format(e))
|
|
@@ -57,14 +57,15 @@ class PikaBlockingChannelInterceptor(BaseInterceptor):
|
|
|
57
57
|
exit_call = self.agent.db_call_begin(self.bt, host_name_str, db_query, db_query_params, db_start_time)
|
|
58
58
|
|
|
59
59
|
# Injecting custom headers
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if properties
|
|
64
|
-
properties.headers
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
60
|
+
if self.bt:
|
|
61
|
+
headers_value = self.agent.get_nd_header(self.bt, host_name_str, generate_callout_id()).decode()
|
|
62
|
+
properties = kwargs.get('properties', None)
|
|
63
|
+
if properties:
|
|
64
|
+
if properties.headers:
|
|
65
|
+
properties.headers["CavNDFPInstance"] = headers_value
|
|
66
|
+
else:
|
|
67
|
+
properties.headers = {}
|
|
68
|
+
properties.headers["CavNDFPInstance"] = headers_value
|
|
68
69
|
|
|
69
70
|
except Exception as e:
|
|
70
71
|
self.agent.logger.warning("Exception in DB Begin for pika BlockingChannel.basic_publish {}".format(e))
|
{cavisson_pythonagent-0.0.1 → cavisson_pythonagent-0.0.2}/pythonagent/agent/probes/openai/openai.py
RENAMED
|
@@ -175,7 +175,8 @@ def _record_llm_span(interceptor, bt, fqm, start_time, duration, context,
|
|
|
175
175
|
)
|
|
176
176
|
if interceptor.agent.logger.isEnabledFor(logging.INFO):
|
|
177
177
|
interceptor.agent.logger.info("openai llm sending llm span output={}".format(output))
|
|
178
|
-
|
|
178
|
+
if bt:
|
|
179
|
+
interceptor.agent.dump_log_message(bt, llm_span.create_span_json())
|
|
179
180
|
|
|
180
181
|
|
|
181
182
|
def _record_call_success(interceptor, bt, exit_call, start_time, fqm, context,
|
|
@@ -635,7 +636,8 @@ def _record_embedding_span(interceptor, bt, exit_call, start_time, fqm,
|
|
|
635
636
|
interceptor.agent.logger.info(
|
|
636
637
|
"openai embeddings sending span output={}".format(output)
|
|
637
638
|
)
|
|
638
|
-
|
|
639
|
+
if bt:
|
|
640
|
+
interceptor.agent.dump_log_message(bt, embedding_span.create_span_json())
|
|
639
641
|
|
|
640
642
|
|
|
641
643
|
class OpenAIEmbeddingsInterceptor(ExitCallInterceptor):
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|