mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-08-02 19:47:17 +08:00
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 <aaronabbott@google.com> Co-authored-by: Aaron Abbott <aaronabbott@google.com> Co-authored-by: Diego Hurtado <ocelotl@users.noreply.github.com>
This commit is contained in:

committed by
GitHub

parent
f878b834f8
commit
b8fe7fc7cd
@ -74,11 +74,7 @@ def _get_cluster_info(cred_value):
|
||||
)
|
||||
|
||||
|
||||
def _get_cluster_name():
|
||||
cred_value = _get_k8s_cred_value()
|
||||
if not _is_eks(cred_value):
|
||||
return Resource.get_empty()
|
||||
|
||||
def _get_cluster_name(cred_value) -> str:
|
||||
cluster_info = json.loads(_get_cluster_info(cred_value))
|
||||
cluster_name = ""
|
||||
try:
|
||||
@ -110,7 +106,14 @@ class AwsEksResourceDetector(ResourceDetector):
|
||||
|
||||
def detect(self) -> "Resource":
|
||||
try:
|
||||
cluster_name = _get_cluster_name()
|
||||
cred_value = _get_k8s_cred_value()
|
||||
|
||||
if not _is_eks(cred_value):
|
||||
raise RuntimeError(
|
||||
"Could not confirm process is running on EKS."
|
||||
)
|
||||
|
||||
cluster_name = _get_cluster_name(cred_value)
|
||||
container_id = _get_container_id()
|
||||
|
||||
if not container_id and not cluster_name:
|
||||
|
@ -32,6 +32,14 @@ MockEksResourceAttributes = {
|
||||
|
||||
|
||||
class AwsEksResourceDetectorTest(unittest.TestCase):
|
||||
@patch(
|
||||
"opentelemetry.sdk.extension.aws.resource.eks._get_k8s_cred_value",
|
||||
return_value="MOCK_TOKEN",
|
||||
)
|
||||
@patch(
|
||||
"opentelemetry.sdk.extension.aws.resource.eks._is_eks",
|
||||
return_value=True,
|
||||
)
|
||||
@patch(
|
||||
"opentelemetry.sdk.extension.aws.resource.eks._get_cluster_info",
|
||||
return_value=f"""{{
|
||||
@ -55,14 +63,6 @@ class AwsEksResourceDetectorTest(unittest.TestCase):
|
||||
}}
|
||||
""",
|
||||
)
|
||||
@patch(
|
||||
"opentelemetry.sdk.extension.aws.resource.eks._is_eks",
|
||||
return_value=True,
|
||||
)
|
||||
@patch(
|
||||
"opentelemetry.sdk.extension.aws.resource.eks._get_k8s_cred_value",
|
||||
return_value="MOCK_TOKEN",
|
||||
)
|
||||
@patch(
|
||||
"builtins.open",
|
||||
new_callable=mock_open,
|
||||
@ -85,11 +85,25 @@ class AwsEksResourceDetectorTest(unittest.TestCase):
|
||||
def test_simple_create(
|
||||
self,
|
||||
mock_open_function,
|
||||
mock_get_k8_cred_value,
|
||||
mock_is_eks,
|
||||
mock_get_cluster_info,
|
||||
mock_is_eks,
|
||||
mock_get_k8_cred_value,
|
||||
):
|
||||
actual = AwsEksResourceDetector().detect()
|
||||
self.assertDictEqual(
|
||||
actual.attributes.copy(), OrderedDict(MockEksResourceAttributes)
|
||||
)
|
||||
|
||||
@patch(
|
||||
"opentelemetry.sdk.extension.aws.resource.eks._get_k8s_cred_value",
|
||||
return_value="MOCK_TOKEN",
|
||||
)
|
||||
@patch(
|
||||
"opentelemetry.sdk.extension.aws.resource.eks._is_eks",
|
||||
return_value=False,
|
||||
)
|
||||
def test_if_no_eks_env_var_and_should_raise(
|
||||
self, mock_is_eks, mock_get_k8_cred_value
|
||||
):
|
||||
with self.assertRaises(RuntimeError):
|
||||
AwsEksResourceDetector(raise_on_error=True).detect()
|
||||
|
Reference in New Issue
Block a user