diff --git a/sdk-extension/opentelemetry-sdk-extension-aws/src/opentelemetry/sdk/extension/aws/resource/eks.py b/sdk-extension/opentelemetry-sdk-extension-aws/src/opentelemetry/sdk/extension/aws/resource/eks.py index 6a5c6a4d0..69d17da1f 100644 --- a/sdk-extension/opentelemetry-sdk-extension-aws/src/opentelemetry/sdk/extension/aws/resource/eks.py +++ b/sdk-extension/opentelemetry-sdk-extension-aws/src/opentelemetry/sdk/extension/aws/resource/eks.py @@ -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: diff --git a/sdk-extension/opentelemetry-sdk-extension-aws/tests/resource/test_eks.py b/sdk-extension/opentelemetry-sdk-extension-aws/tests/resource/test_eks.py index f5b665856..5edb9c535 100644 --- a/sdk-extension/opentelemetry-sdk-extension-aws/tests/resource/test_eks.py +++ b/sdk-extension/opentelemetry-sdk-extension-aws/tests/resource/test_eks.py @@ -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()