Skip to content

Commit 5950676

Browse files
authored
chore(env_proxy): move env proxy constants to the correct namespace (#15064)
## Description **LLMObs** and **CIVisibility** are currently using **evp_proxy**, and in the coming days, [the new **OpenFeature** functionality will also need the proxy](#15051). This PR consolidates in the `ddtrace/internal/evp_proxy` namespace the constants common to this proxy. **Next steps:** * Check if the calls to the endpoint can be unified. It looks like at least LLMObs and OpenFeature can be. * Integrate **evp_proxy** with **OpenFeature**.
1 parent ce216ac commit 5950676

File tree

15 files changed

+41
-42
lines changed

15 files changed

+41
-42
lines changed

ddtrace/internal/ci_visibility/_api_client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@
1919
from ddtrace.internal.ci_visibility._api_responses_cache import _write_to_cache
2020
from ddtrace.internal.ci_visibility.constants import AGENTLESS_API_KEY_HEADER_NAME
2121
from ddtrace.internal.ci_visibility.constants import AGENTLESS_DEFAULT_SITE
22-
from ddtrace.internal.ci_visibility.constants import EVP_PROXY_AGENT_BASE_PATH
23-
from ddtrace.internal.ci_visibility.constants import EVP_SUBDOMAIN_HEADER_API_VALUE
24-
from ddtrace.internal.ci_visibility.constants import EVP_SUBDOMAIN_HEADER_NAME
2522
from ddtrace.internal.ci_visibility.constants import KNOWN_TESTS_ENDPOINT
2623
from ddtrace.internal.ci_visibility.constants import REQUESTS_MODE
2724
from ddtrace.internal.ci_visibility.constants import SETTING_ENDPOINT
@@ -47,6 +44,9 @@
4744
from ddtrace.internal.ci_visibility.telemetry.test_management import record_test_management_tests_count
4845
from ddtrace.internal.ci_visibility.utils import combine_url_path
4946
from ddtrace.internal.ci_visibility.utils import fibonacci_backoff_with_jitter_on_exceptions
47+
from ddtrace.internal.evp_proxy.constants import EVP_PROXY_AGENT_BASE_PATH
48+
from ddtrace.internal.evp_proxy.constants import EVP_SUBDOMAIN_HEADER_API_VALUE
49+
from ddtrace.internal.evp_proxy.constants import EVP_SUBDOMAIN_HEADER_NAME
5050
from ddtrace.internal.logger import get_logger
5151
from ddtrace.internal.test_visibility.coverage_lines import CoverageLines
5252
from ddtrace.internal.utils.formats import asbool

ddtrace/internal/ci_visibility/constants.py

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
from enum import IntEnum
33
import re
44

5+
from ddtrace.internal.evp_proxy.constants import EVP_PROXY_AGENT_BASE_PATH
6+
57

68
SUITE = "suite"
79
TEST = "test"
@@ -29,20 +31,11 @@
2931
# Agentless and EVP-specific constants
3032
COVERAGE_TAG_NAME = "test.coverage"
3133

32-
EVP_PROXY_AGENT_BASE_PATH = "/evp_proxy/v2"
33-
EVP_PROXY_AGENT_BASE_PATH_V4 = "/evp_proxy/v4"
34-
EVP_PROXY_AGENT_ENDPOINT = "{}/api/v2/citestcycle".format(EVP_PROXY_AGENT_BASE_PATH)
3534
AGENTLESS_ENDPOINT = "api/v2/citestcycle"
3635
AGENTLESS_COVERAGE_ENDPOINT = "api/v2/citestcov"
3736
AGENTLESS_API_KEY_HEADER_NAME = "dd-api-key"
3837
AGENTLESS_APP_KEY_HEADER_NAME = "dd-application-key"
39-
EVP_NEEDS_APP_KEY_HEADER_NAME = "X-Datadog-NeedsAppKey"
40-
EVP_NEEDS_APP_KEY_HEADER_VALUE = "true"
4138
EVP_PROXY_COVERAGE_ENDPOINT = "{}/{}".format(EVP_PROXY_AGENT_BASE_PATH, AGENTLESS_COVERAGE_ENDPOINT)
42-
EVP_SUBDOMAIN_HEADER_API_VALUE = "api"
43-
EVP_SUBDOMAIN_HEADER_COVERAGE_VALUE = "citestcov-intake"
44-
EVP_SUBDOMAIN_HEADER_EVENT_VALUE = "citestcycle-intake"
45-
EVP_SUBDOMAIN_HEADER_NAME = "X-Datadog-EVP-Subdomain"
4639
AGENTLESS_BASE_URL = "https://citestcycle-intake"
4740
AGENTLESS_COVERAGE_BASE_URL = "https://citestcov-intake"
4841
AGENTLESS_DEFAULT_SITE = "datadoghq.com"

ddtrace/internal/ci_visibility/git_client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@
3131
from ddtrace.trace import Tracer # noqa: F401
3232

3333
from .. import telemetry
34+
from ..evp_proxy.constants import EVP_PROXY_AGENT_BASE_PATH
35+
from ..evp_proxy.constants import EVP_SUBDOMAIN_HEADER_API_VALUE
36+
from ..evp_proxy.constants import EVP_SUBDOMAIN_HEADER_NAME
3437
from ..utils.http import Response
3538
from ..utils.http import get_connection
3639
from ..utils.http import verify_url
3740
from ..utils.time import StopWatch
3841
from .constants import AGENTLESS_API_KEY_HEADER_NAME
3942
from .constants import AGENTLESS_DEFAULT_SITE
40-
from .constants import EVP_PROXY_AGENT_BASE_PATH
41-
from .constants import EVP_SUBDOMAIN_HEADER_API_VALUE
42-
from .constants import EVP_SUBDOMAIN_HEADER_NAME
4343
from .constants import GIT_API_BASE_PATH
4444
from .constants import REQUESTS_MODE
4545
from .telemetry.constants import ERROR_TYPES

ddtrace/internal/ci_visibility/recorder.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,6 @@
4141
from ddtrace.internal.ci_visibility.api._test import TestVisibilityTest
4242
from ddtrace.internal.ci_visibility.constants import AGENTLESS_DEFAULT_SITE
4343
from ddtrace.internal.ci_visibility.constants import CUSTOM_CONFIGURATIONS_PREFIX
44-
from ddtrace.internal.ci_visibility.constants import EVP_PROXY_AGENT_BASE_PATH
45-
from ddtrace.internal.ci_visibility.constants import EVP_PROXY_AGENT_BASE_PATH_V4
46-
from ddtrace.internal.ci_visibility.constants import EVP_SUBDOMAIN_HEADER_EVENT_VALUE
47-
from ddtrace.internal.ci_visibility.constants import EVP_SUBDOMAIN_HEADER_NAME
4844
from ddtrace.internal.ci_visibility.constants import ITR_CORRELATION_ID_TAG_NAME
4945
from ddtrace.internal.ci_visibility.constants import REQUESTS_MODE
5046
from ddtrace.internal.ci_visibility.constants import SUITE
@@ -65,6 +61,10 @@
6561
from ddtrace.internal.ci_visibility.writer import CIVisibilityEventClient
6662
from ddtrace.internal.ci_visibility.writer import CIVisibilityWriter
6763
from ddtrace.internal.codeowners import Codeowners
64+
from ddtrace.internal.evp_proxy.constants import EVP_PROXY_AGENT_BASE_PATH
65+
from ddtrace.internal.evp_proxy.constants import EVP_PROXY_AGENT_BASE_PATH_V4
66+
from ddtrace.internal.evp_proxy.constants import EVP_SUBDOMAIN_HEADER_EVENT_VALUE
67+
from ddtrace.internal.evp_proxy.constants import EVP_SUBDOMAIN_HEADER_NAME
6868
from ddtrace.internal.logger import get_logger
6969
from ddtrace.internal.service import Service
7070
from ddtrace.internal.test_visibility._atr_mixins import AutoTestRetriesSettings

ddtrace/internal/ci_visibility/writer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
from ddtrace.vendor.dogstatsd import DogStatsd # noqa:F401
1818

1919
from .. import service
20+
from ..evp_proxy.constants import EVP_PROXY_AGENT_ENDPOINT
21+
from ..evp_proxy.constants import EVP_SUBDOMAIN_HEADER_COVERAGE_VALUE
22+
from ..evp_proxy.constants import EVP_SUBDOMAIN_HEADER_NAME
2023
from ..runtime import get_runtime_id
2124
from ..writer import HTTPWriter
2225
from ..writer import WriterClientBase
@@ -25,10 +28,7 @@
2528
from .constants import AGENTLESS_COVERAGE_ENDPOINT
2629
from .constants import AGENTLESS_DEFAULT_SITE
2730
from .constants import AGENTLESS_ENDPOINT
28-
from .constants import EVP_PROXY_AGENT_ENDPOINT
2931
from .constants import EVP_PROXY_COVERAGE_ENDPOINT
30-
from .constants import EVP_SUBDOMAIN_HEADER_COVERAGE_VALUE
31-
from .constants import EVP_SUBDOMAIN_HEADER_NAME
3232
from .encoder import CIVisibilityCoverageEncoderV02
3333
from .encoder import CIVisibilityEncoderV01
3434
from .telemetry.payload import REQUEST_ERROR_TYPE
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
EVP_PROXY_AGENT_BASE_PATH = "/evp_proxy/v2"
2+
EVP_PROXY_AGENT_BASE_PATH_V4 = "/evp_proxy/v4"
3+
EVP_PROXY_AGENT_ENDPOINT = "{}/api/v2/citestcycle".format(EVP_PROXY_AGENT_BASE_PATH)
4+
EVP_NEEDS_APP_KEY_HEADER_NAME = "X-Datadog-NeedsAppKey"
5+
EVP_NEEDS_APP_KEY_HEADER_VALUE = "true"
6+
EVP_SUBDOMAIN_HEADER_API_VALUE = "api"
7+
EVP_SUBDOMAIN_HEADER_COVERAGE_VALUE = "citestcov-intake"
8+
EVP_SUBDOMAIN_HEADER_EVENT_VALUE = "citestcycle-intake"
9+
EVP_SUBDOMAIN_HEADER_NAME = "X-Datadog-EVP-Subdomain"
10+
EVP_PAYLOAD_SIZE_LIMIT = 5 << 20 # 5MB (actual limit is 5.1MB)
11+
EVP_EVENT_SIZE_LIMIT = 5_000_000 # 5MB LLM Obs event size limit

ddtrace/llmobs/_constants.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,8 @@
4444
CACHE_READ_INPUT_TOKENS_METRIC_KEY = "cache_read_input_tokens"
4545
BILLABLE_CHARACTER_COUNT_METRIC_KEY = "billable_character_count"
4646

47-
EVP_PROXY_AGENT_BASE_PATH = "/evp_proxy/v2"
4847
EVAL_ENDPOINT = "/api/intake/llm-obs/v2/eval-metric"
4948
SPAN_ENDPOINT = "/api/v2/llmobs"
50-
EVP_SUBDOMAIN_HEADER_NAME = "X-Datadog-EVP-Subdomain"
5149
SPAN_SUBDOMAIN_NAME = "llmobs-intake"
5250
EVAL_SUBDOMAIN_NAME = "api"
5351
EXP_SUBDOMAIN_NAME = "api"
@@ -58,9 +56,6 @@
5856
# from https://docs.datadoghq.com/getting_started/site/#access-the-datadog-site
5957
DD_SITES_NEEDING_APP_SUBDOMAIN = {"datadoghq.com", "datadoghq.eu", "ddog-gov.com"}
6058

61-
EVP_PAYLOAD_SIZE_LIMIT = 5 << 20 # 5MB (actual limit is 5.1MB)
62-
EVP_EVENT_SIZE_LIMIT = 5_000_000 # 5MB LLM Obs event size limit
63-
6459
EXPERIMENT_CSV_FIELD_MAX_SIZE = 10 * 1024 * 1024
6560

6661
DROPPED_IO_COLLECTION_ERROR = "dropped_io"

ddtrace/llmobs/_writer.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@
1919
from ddtrace import config
2020
from ddtrace.internal import agent
2121
from ddtrace.internal import forksafe
22+
from ddtrace.internal.evp_proxy.constants import EVP_EVENT_SIZE_LIMIT
23+
from ddtrace.internal.evp_proxy.constants import EVP_PAYLOAD_SIZE_LIMIT
24+
from ddtrace.internal.evp_proxy.constants import EVP_PROXY_AGENT_BASE_PATH
25+
from ddtrace.internal.evp_proxy.constants import EVP_SUBDOMAIN_HEADER_NAME
2226
from ddtrace.internal.logger import get_logger
2327
from ddtrace.internal.periodic import PeriodicService
2428
from ddtrace.internal.utils.http import Response
@@ -32,10 +36,6 @@
3236
from ddtrace.llmobs._constants import DROPPED_VALUE_TEXT
3337
from ddtrace.llmobs._constants import EVAL_ENDPOINT
3438
from ddtrace.llmobs._constants import EVAL_SUBDOMAIN_NAME
35-
from ddtrace.llmobs._constants import EVP_EVENT_SIZE_LIMIT
36-
from ddtrace.llmobs._constants import EVP_PAYLOAD_SIZE_LIMIT
37-
from ddtrace.llmobs._constants import EVP_PROXY_AGENT_BASE_PATH
38-
from ddtrace.llmobs._constants import EVP_SUBDOMAIN_HEADER_NAME
3939
from ddtrace.llmobs._constants import EXP_SUBDOMAIN_NAME
4040
from ddtrace.llmobs._constants import SPAN_ENDPOINT
4141
from ddtrace.llmobs._constants import SPAN_SUBDOMAIN_NAME

tests/ci_visibility/api_client/_util.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313
from ddtrace.internal.ci_visibility import CIVisibility
1414
from ddtrace.internal.ci_visibility._api_client import AgentlessTestVisibilityAPIClient
1515
from ddtrace.internal.ci_visibility._api_client import EVPProxyTestVisibilityAPIClient
16-
from ddtrace.internal.ci_visibility.constants import EVP_PROXY_AGENT_BASE_PATH_V4
1716
from ddtrace.internal.ci_visibility.constants import REQUESTS_MODE
1817
from ddtrace.internal.ci_visibility.git_client import CIVisibilityGitClient
1918
from ddtrace.internal.ci_visibility.git_data import GitData
19+
from ddtrace.internal.evp_proxy.constants import EVP_PROXY_AGENT_BASE_PATH_V4
2020
from ddtrace.internal.utils.http import Response
2121

2222

tests/ci_visibility/api_client/test_ci_visibility_api_client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313
from ddtrace.internal.ci_visibility._api_client import EVPProxyTestVisibilityAPIClient
1414
from ddtrace.internal.ci_visibility._api_client import ITRData
1515
from ddtrace.internal.ci_visibility._api_client import TestVisibilityAPISettings
16-
from ddtrace.internal.ci_visibility.constants import EVP_PROXY_AGENT_BASE_PATH
17-
from ddtrace.internal.ci_visibility.constants import EVP_PROXY_AGENT_BASE_PATH_V4
1816
from ddtrace.internal.ci_visibility.constants import REQUESTS_MODE
1917
from ddtrace.internal.ci_visibility.git_data import GitData
18+
from ddtrace.internal.evp_proxy.constants import EVP_PROXY_AGENT_BASE_PATH
19+
from ddtrace.internal.evp_proxy.constants import EVP_PROXY_AGENT_BASE_PATH_V4
2020
from ddtrace.settings._config import Config
2121
from tests.ci_visibility.api_client._util import _AGENTLESS
2222
from tests.ci_visibility.api_client._util import _EVP_PROXY

0 commit comments

Comments
 (0)