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:
parent
f878b834f8
commit
b8fe7fc7cd
|
|
@ -74,11 +74,7 @@ def _get_cluster_info(cred_value):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def _get_cluster_name():
|
def _get_cluster_name(cred_value) -> str:
|
||||||
cred_value = _get_k8s_cred_value()
|
|
||||||
if not _is_eks(cred_value):
|
|
||||||
return Resource.get_empty()
|
|
||||||
|
|
||||||
cluster_info = json.loads(_get_cluster_info(cred_value))
|
cluster_info = json.loads(_get_cluster_info(cred_value))
|
||||||
cluster_name = ""
|
cluster_name = ""
|
||||||
try:
|
try:
|
||||||
|
|
@ -110,7 +106,14 @@ class AwsEksResourceDetector(ResourceDetector):
|
||||||
|
|
||||||
def detect(self) -> "Resource":
|
def detect(self) -> "Resource":
|
||||||
try:
|
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()
|
container_id = _get_container_id()
|
||||||
|
|
||||||
if not container_id and not cluster_name:
|
if not container_id and not cluster_name:
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,14 @@ MockEksResourceAttributes = {
|
||||||
|
|
||||||
|
|
||||||
class AwsEksResourceDetectorTest(unittest.TestCase):
|
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(
|
@patch(
|
||||||
"opentelemetry.sdk.extension.aws.resource.eks._get_cluster_info",
|
"opentelemetry.sdk.extension.aws.resource.eks._get_cluster_info",
|
||||||
return_value=f"""{{
|
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(
|
@patch(
|
||||||
"builtins.open",
|
"builtins.open",
|
||||||
new_callable=mock_open,
|
new_callable=mock_open,
|
||||||
|
|
@ -85,11 +85,25 @@ class AwsEksResourceDetectorTest(unittest.TestCase):
|
||||||
def test_simple_create(
|
def test_simple_create(
|
||||||
self,
|
self,
|
||||||
mock_open_function,
|
mock_open_function,
|
||||||
mock_get_k8_cred_value,
|
|
||||||
mock_is_eks,
|
|
||||||
mock_get_cluster_info,
|
mock_get_cluster_info,
|
||||||
|
mock_is_eks,
|
||||||
|
mock_get_k8_cred_value,
|
||||||
):
|
):
|
||||||
actual = AwsEksResourceDetector().detect()
|
actual = AwsEksResourceDetector().detect()
|
||||||
self.assertDictEqual(
|
self.assertDictEqual(
|
||||||
actual.attributes.copy(), OrderedDict(MockEksResourceAttributes)
|
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()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue