Skip to content

Commit b8fe7fc

Browse files
NathanielRNaabmassocelotl
authored
EKS Detector should return empty string, not resource if env var missing (#613)
* EKS Detector returns string if missing env var * Update sdk-extension/opentelemetry-sdk-extension-aws/src/opentelemetry/sdk/extension/aws/resource/eks.py Add return value typing to _get_cluster_name method Co-authored-by: Aaron Abbott <[email protected]> Co-authored-by: Aaron Abbott <[email protected]> Co-authored-by: Diego Hurtado <[email protected]>
1 parent f878b83 commit b8fe7fc

File tree

2 files changed

+33
-16
lines changed
  • sdk-extension/opentelemetry-sdk-extension-aws

2 files changed

+33
-16
lines changed

sdk-extension/opentelemetry-sdk-extension-aws/src/opentelemetry/sdk/extension/aws/resource/eks.py

+9-6
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,7 @@ def _get_cluster_info(cred_value):
7474
)
7575

7676

77-
def _get_cluster_name():
78-
cred_value = _get_k8s_cred_value()
79-
if not _is_eks(cred_value):
80-
return Resource.get_empty()
81-
77+
def _get_cluster_name(cred_value) -> str:
8278
cluster_info = json.loads(_get_cluster_info(cred_value))
8379
cluster_name = ""
8480
try:
@@ -110,7 +106,14 @@ class AwsEksResourceDetector(ResourceDetector):
110106

111107
def detect(self) -> "Resource":
112108
try:
113-
cluster_name = _get_cluster_name()
109+
cred_value = _get_k8s_cred_value()
110+
111+
if not _is_eks(cred_value):
112+
raise RuntimeError(
113+
"Could not confirm process is running on EKS."
114+
)
115+
116+
cluster_name = _get_cluster_name(cred_value)
114117
container_id = _get_container_id()
115118

116119
if not container_id and not cluster_name:

sdk-extension/opentelemetry-sdk-extension-aws/tests/resource/test_eks.py

+24-10
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@
3232

3333

3434
class AwsEksResourceDetectorTest(unittest.TestCase):
35+
@patch(
36+
"opentelemetry.sdk.extension.aws.resource.eks._get_k8s_cred_value",
37+
return_value="MOCK_TOKEN",
38+
)
39+
@patch(
40+
"opentelemetry.sdk.extension.aws.resource.eks._is_eks",
41+
return_value=True,
42+
)
3543
@patch(
3644
"opentelemetry.sdk.extension.aws.resource.eks._get_cluster_info",
3745
return_value=f"""{{
@@ -55,14 +63,6 @@ class AwsEksResourceDetectorTest(unittest.TestCase):
5563
}}
5664
""",
5765
)
58-
@patch(
59-
"opentelemetry.sdk.extension.aws.resource.eks._is_eks",
60-
return_value=True,
61-
)
62-
@patch(
63-
"opentelemetry.sdk.extension.aws.resource.eks._get_k8s_cred_value",
64-
return_value="MOCK_TOKEN",
65-
)
6666
@patch(
6767
"builtins.open",
6868
new_callable=mock_open,
@@ -85,11 +85,25 @@ class AwsEksResourceDetectorTest(unittest.TestCase):
8585
def test_simple_create(
8686
self,
8787
mock_open_function,
88-
mock_get_k8_cred_value,
89-
mock_is_eks,
9088
mock_get_cluster_info,
89+
mock_is_eks,
90+
mock_get_k8_cred_value,
9191
):
9292
actual = AwsEksResourceDetector().detect()
9393
self.assertDictEqual(
9494
actual.attributes.copy(), OrderedDict(MockEksResourceAttributes)
9595
)
96+
97+
@patch(
98+
"opentelemetry.sdk.extension.aws.resource.eks._get_k8s_cred_value",
99+
return_value="MOCK_TOKEN",
100+
)
101+
@patch(
102+
"opentelemetry.sdk.extension.aws.resource.eks._is_eks",
103+
return_value=False,
104+
)
105+
def test_if_no_eks_env_var_and_should_raise(
106+
self, mock_is_eks, mock_get_k8_cred_value
107+
):
108+
with self.assertRaises(RuntimeError):
109+
AwsEksResourceDetector(raise_on_error=True).detect()

0 commit comments

Comments
 (0)