diff --git a/otel-resource/src/main/java/com/logicmonitor/resource/detectors/azure/vm/LMAzureVMResource.java b/otel-resource/src/main/java/com/logicmonitor/resource/detectors/azure/vm/LMAzureVMResource.java index 38d7e2b..2a42510 100644 --- a/otel-resource/src/main/java/com/logicmonitor/resource/detectors/azure/vm/LMAzureVMResource.java +++ b/otel-resource/src/main/java/com/logicmonitor/resource/detectors/azure/vm/LMAzureVMResource.java @@ -6,11 +6,10 @@ import io.opentelemetry.semconv.resource.attributes.ResourceAttributes; import io.opentelemetry.semconv.resource.attributes.ResourceAttributes.CloudPlatformValues; import io.opentelemetry.semconv.resource.attributes.ResourceAttributes.CloudProviderValues; -import java.net.URI; -import java.net.http.HttpClient; -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; -import java.net.http.HttpResponse.BodyHandlers; +import java.net.URL; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,17 +19,16 @@ public class LMAzureVMResource { private static final Logger logger = LoggerFactory.getLogger(LMAzureVMResource.class); private static final String HOST_ID = "host.id"; - static Resource get(HttpClient client) { + static Resource get(OkHttpClient client) { String azureVmId = null; try { - URI url = new URI("http://169.254.169.254/metadata/instance?api-version=2021-02-01"); - HttpRequest request = - HttpRequest.newBuilder().uri(url).GET().header("Metadata", "true").build(); - HttpResponse response = client.send(request, BodyHandlers.ofString()); + URL url = new URL("http://169.254.169.254/metadata/instance?api-version=2021-02-01"); + Request request = new Request.Builder().url(url).get().header("Metadata", "true").build(); + Response response = client.newCall(request).execute(); - if (response.statusCode() == 200) { - JSONObject responseBody = new JSONObject(response.body()); + if (response.code() == 200) { + JSONObject responseBody = new JSONObject(response.body().string()); JSONObject json = responseBody.getJSONObject("compute"); azureVmId = json.get("vmId").toString(); } diff --git a/otel-resource/src/main/java/com/logicmonitor/resource/detectors/azure/vm/LMAzureVMResourceProvider.java b/otel-resource/src/main/java/com/logicmonitor/resource/detectors/azure/vm/LMAzureVMResourceProvider.java index 3ed913e..e9184ec 100644 --- a/otel-resource/src/main/java/com/logicmonitor/resource/detectors/azure/vm/LMAzureVMResourceProvider.java +++ b/otel-resource/src/main/java/com/logicmonitor/resource/detectors/azure/vm/LMAzureVMResourceProvider.java @@ -3,13 +3,13 @@ import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider; import io.opentelemetry.sdk.resources.Resource; -import java.net.http.HttpClient; +import okhttp3.OkHttpClient; public class LMAzureVMResourceProvider implements ResourceProvider { @Override public Resource createResource(ConfigProperties config) { - HttpClient client = HttpClient.newHttpClient(); + OkHttpClient client = new OkHttpClient(); return LMAzureVMResource.get(client); } } diff --git a/otel-resource/src/main/java/com/logicmonitor/resource/detectors/gcp/computeengine/LMComputeEngineResource.java b/otel-resource/src/main/java/com/logicmonitor/resource/detectors/gcp/computeEngine/LMComputeEngineResource.java similarity index 87% rename from otel-resource/src/main/java/com/logicmonitor/resource/detectors/gcp/computeengine/LMComputeEngineResource.java rename to otel-resource/src/main/java/com/logicmonitor/resource/detectors/gcp/computeEngine/LMComputeEngineResource.java index 51f7b01..b217bf5 100644 --- a/otel-resource/src/main/java/com/logicmonitor/resource/detectors/gcp/computeengine/LMComputeEngineResource.java +++ b/otel-resource/src/main/java/com/logicmonitor/resource/detectors/gcp/computeEngine/LMComputeEngineResource.java @@ -16,14 +16,14 @@ public class LMComputeEngineResource { public static Resource get(String baseURL) { AttributesBuilder attrBuilders = Attributes.builder(); if (System.getenv("K_SERVICE") == null) { - attrBuilders.put( - ResourceAttributes.CLOUD_PROVIDER, ResourceAttributes.CloudProviderValues.GCP); - attrBuilders.put( - ResourceAttributes.CLOUD_PLATFORM, - ResourceAttributes.CloudPlatformValues.GCP_COMPUTE_ENGINE); String hostId = getGcpResource(baseURL + "/computeMetadata/v1/instance/id"); if (hostId != null) { attrBuilders.put(ResourceAttributes.HOST_ID, hostId); + attrBuilders.put( + ResourceAttributes.CLOUD_PROVIDER, ResourceAttributes.CloudProviderValues.GCP); + attrBuilders.put( + ResourceAttributes.CLOUD_PLATFORM, + ResourceAttributes.CloudPlatformValues.GCP_COMPUTE_ENGINE); } String projectId = getGcpResource(baseURL + "/computeMetadata/v1/project/project-id"); if (projectId != null) { diff --git a/otel-resource/src/main/java/com/logicmonitor/resource/detectors/gcp/computeengine/LMComputeEngineResourceProvider.java b/otel-resource/src/main/java/com/logicmonitor/resource/detectors/gcp/computeEngine/LMComputeEngineResourceProvider.java similarity index 100% rename from otel-resource/src/main/java/com/logicmonitor/resource/detectors/gcp/computeengine/LMComputeEngineResourceProvider.java rename to otel-resource/src/main/java/com/logicmonitor/resource/detectors/gcp/computeEngine/LMComputeEngineResourceProvider.java diff --git a/otel-resource/src/test/java/com/logicmonitor/resource/detectors/azure/vm/LMAzureVMResourceProviderTest.java b/otel-resource/src/test/java/com/logicmonitor/resource/detectors/azure/vm/LMAzureVMResourceProviderTest.java index b72bb41..bf79c8d 100644 --- a/otel-resource/src/test/java/com/logicmonitor/resource/detectors/azure/vm/LMAzureVMResourceProviderTest.java +++ b/otel-resource/src/test/java/com/logicmonitor/resource/detectors/azure/vm/LMAzureVMResourceProviderTest.java @@ -8,22 +8,23 @@ import io.opentelemetry.semconv.resource.attributes.ResourceAttributes; import io.opentelemetry.semconv.resource.attributes.ResourceAttributes.CloudPlatformValues; import io.opentelemetry.semconv.resource.attributes.ResourceAttributes.CloudProviderValues; -import java.net.http.HttpClient; -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; +import okhttp3.Call; +import okhttp3.OkHttpClient; +import okhttp3.Protocol; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mockito; public class LMAzureVMResourceProviderTest { - HttpClient httpClient; - HttpResponse mockedResponse; + OkHttpClient httpClient; @BeforeEach public void setUp() { - httpClient = Mockito.mock(HttpClient.class); - mockedResponse = Mockito.mock(HttpResponse.class); + httpClient = Mockito.mock(OkHttpClient.class); } @Test @@ -32,25 +33,31 @@ public void whenProvidedValidResponseThenReturnHostId() throws Exception { attrBuilders.put(ResourceAttributes.CLOUD_PROVIDER, CloudProviderValues.AZURE); attrBuilders.put(ResourceAttributes.CLOUD_PLATFORM, CloudPlatformValues.AZURE_VM); attrBuilders.put("host.id", "hostId"); - Mockito.when(mockedResponse.statusCode()).thenReturn(200); - Mockito.when(mockedResponse.body()) - .thenReturn("{\n" + " \"compute\" : {\n" + " \"vmId\" : \"hostId\"\n" + " }\n" + "}"); - Mockito.when( - httpClient.send( - Mockito.any(HttpRequest.class), Mockito.any(HttpResponse.BodyHandler.class))) - .thenReturn(mockedResponse); + Call call = Mockito.mock(Call.class); + Mockito.when(httpClient.newCall(Mockito.any(Request.class))).thenReturn(call); + ResponseBody body = + ResponseBody.create( + null, "{\n" + " \"compute\" : {\n" + " \"vmId\" : \"hostId\"\n" + " }\n" + "}"); + Request request = new Request.Builder().url("http://dummysupport").build(); + Protocol protocol = Protocol.get("http/1.1"); + Response response = + new Response.Builder() + .body(body) + .request(request) + .protocol(protocol) + .code(200) + .message("OK") + .build(); + Mockito.when(call.execute()).thenReturn(response); + Resource azureVMResource = Resource.create(attrBuilders.build(), ResourceAttributes.SCHEMA_URL); Resource lmAzureVMResource = LMAzureVMResource.get(httpClient); assertEquals(azureVMResource, lmAzureVMResource); } @Test - public void whenProvidedInvalidResponse() throws Exception { + public void whenProvidedInvalidResponse() { AttributesBuilder attrBuilders = Attributes.builder(); - Mockito.when( - httpClient.send( - Mockito.any(HttpRequest.class), Mockito.any(HttpResponse.BodyHandler.class))) - .thenReturn(mockedResponse); Resource azureVMResource = Resource.create(attrBuilders.build(), null); Resource lmAzureVMResource = LMAzureVMResource.get(httpClient); assertEquals(azureVMResource, lmAzureVMResource);