Skip to content

Commit a75d51b

Browse files
committed
Default env var to NO_CONTENT when invalid envvar
1 parent 185d782 commit a75d51b

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

util/opentelemetry-util-genai/src/opentelemetry/util/genai/utils.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15+
import logging
1516
import os
1617

1718
from opentelemetry.instrumentation._semconv import (
@@ -24,6 +25,8 @@
2425
)
2526
from opentelemetry.util.genai.types import ContentCapturingMode
2627

28+
logger = logging.getLogger(__name__)
29+
2730

2831
def get_content_capturing_mode() -> ContentCapturingMode:
2932
envvar = os.environ.get(OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT)
@@ -41,6 +44,7 @@ def get_content_capturing_mode() -> ContentCapturingMode:
4144
try:
4245
return ContentCapturingMode[envvar.upper()]
4346
except KeyError:
44-
raise RuntimeError(
45-
f"{envvar} is not a valid option for `OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT` environment variable. Must be one of {', '.join(e.name for e in ContentCapturingMode)}"
47+
logger.warning(
48+
f"{envvar} is not a valid option for `OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT` environment variable. Must be one of {', '.join(e.name for e in ContentCapturingMode)}. Defaulting to `NO_COTENT`"
4649
)
50+
return ContentCapturingMode.NO_CONTENT

util/opentelemetry-util-genai/tests/test_utils.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@
2424
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT,
2525
)
2626
from opentelemetry.util.genai.types import ContentCapturingMode
27-
from opentelemetry.util.genai.utils import get_content_capturing_mode
27+
from opentelemetry.util.genai.utils import get_content_capturing_mode, logger
2828

2929

30-
def patch_env_vars(stability_mode, content_capturing):
30+
def patch_env_vars(*, stability_mode, content_capturing):
3131
def decorator(test_case):
3232
@patch.dict(
3333
os.environ,
@@ -49,7 +49,7 @@ def wrapper(*args, **kwargs):
4949

5050
class TestVersion(unittest.TestCase):
5151
@patch_env_vars("gen_ai_latest_experimental", "SPAN_ONLY")
52-
def test_get_content_caputring_mode_parses_valid_envvar(self): # pylint: disable=no-self-use
52+
def test_get_content_capturing_mode_parses_valid_envvar(self): # pylint: disable=no-self-use
5353
_OpenTelemetrySemanticConventionStability._initialized = False
5454
assert get_content_capturing_mode() == ContentCapturingMode.SPAN_ONLY
5555

@@ -70,5 +70,9 @@ def test_get_content_caputring_mode_raises_exception_when_semconv_stability_defa
7070
def test_get_content_caputring_mode_raises_exception_on_invalid_envvar(
7171
self,
7272
): # pylint: disable=no-self-use
73-
with self.assertRaises(RuntimeError):
74-
get_content_capturing_mode()
73+
with self.assertLogs(logger, level="WARNING") as cm:
74+
assert (
75+
get_content_capturing_mode() == ContentCapturingMode.NO_CONTENT
76+
)
77+
self.assertEqual(len(cm.output), 1)
78+
self.assertIn("INVALID_VALUE is not a valid option for ", cm.output[0])

0 commit comments

Comments
 (0)