Skip to content

Commit 241c51c

Browse files
Merge pull request #2536 from digma-ai/report-endpoints
Report endpoints
2 parents 220c55e + 0709930 commit 241c51c

File tree

9 files changed

+321
-80
lines changed

9 files changed

+321
-80
lines changed

analytics-provider/src/main/java/org/digma/intellij/plugin/analytics/AnalyticsProvider.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,18 @@ public interface AnalyticsProvider extends Closeable {
7070

7171
String getServices(String environment);
7272

73+
String getEndpoints(String service, Map<String, Object> queryParams);
74+
75+
String getEndpointIssues(String queryParams);
76+
7377
String getAssetsReportStats(Map<String, Object> queryParams);
7478

7579
String getIssuesReportStats(Map<String, Object> queryParams);
7680

7781
String getServiceReport(String queryParams);
7882

83+
String getEnvironmentsByService(String service);
84+
7985
String getNotifications(NotificationsRequest notificationsRequest);
8086

8187
void setReadNotificationsTime(SetReadNotificationsRequest setReadNotificationsRequest);

analytics-provider/src/main/java/org/digma/intellij/plugin/analytics/RestAnalyticsProvider.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,17 @@ public String getServices(String environment) {
233233
return execute(() -> client.analyticsProvider.getServices(environment));
234234
}
235235

236+
@Override
237+
public String getEndpoints(String service, Map<String, Object> queryParams) {
238+
return execute(() -> client.analyticsProvider.getEndpoints(service, queryParams));
239+
}
240+
241+
@Override
242+
public String getEndpointIssues(String queryParams) {
243+
return execute(() -> client.analyticsProvider.getEndpointIssues(queryParams));
244+
}
245+
246+
236247
@Override
237248
public String getIssuesReportStats(Map<String, Object> queryParams) {
238249
return execute(() -> client.analyticsProvider.getIssuesReportStats(queryParams));
@@ -243,6 +254,11 @@ public String getServiceReport(String queryParams) {
243254
return execute(() -> client.analyticsProvider.getServiceReport(queryParams));
244255
}
245256

257+
@Override
258+
public String getEnvironmentsByService(String service) {
259+
return execute(() -> client.analyticsProvider.getEnvironmentsByService(service));
260+
}
261+
246262
@Override
247263
public String getAssetsReportStats(Map<String, Object> queryParams) {
248264
return execute(() -> client.analyticsProvider.getAssetsReportStats(queryParams));
@@ -887,6 +903,13 @@ Call<Void> setInsightCustomStartTime(
887903
@POST("reports/services/issues")
888904
Call<String> getServiceReport(@Body String filters);
889905

906+
@Headers({
907+
"Accept: application/+json",
908+
"Content-Type:application/json"
909+
})
910+
@GET("services/{service}/environments")
911+
Call<String> getEnvironmentsByService(@Path("service") String service);
912+
890913

891914
@Headers({
892915
"Accept: application/+json",
@@ -895,6 +918,19 @@ Call<Void> setInsightCustomStartTime(
895918
@GET("reports/assets/statistics")
896919
Call<String> getAssetsReportStats(@QueryMap Map<String, Object> fields);
897920

921+
@Headers({
922+
"Accept: application/+json",
923+
"Content-Type:application/json"
924+
})
925+
@GET("services/{service}/endpoints")
926+
Call<String> getEndpoints(@Path("service") String service, @QueryMap Map<String, Object> fields);
927+
928+
@Headers({
929+
"Accept: application/+json",
930+
"Content-Type:application/json"
931+
})
932+
@POST("reports/endpoints/issues")
933+
Call<String> getEndpointIssues(@Body String filters);
898934

899935
@GET("services/getServices")
900936
Call<String> getServices(@Query("environment") String environment);

ide-common/src/main/java/org/digma/intellij/plugin/analytics/AnalyticsService.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,16 @@ public String getServices(String environment) throws AnalyticsServiceException {
320320
analyticsProviderProxy.getServices(environment));
321321
}
322322

323+
public String getEndpoints(String service, @NotNull Map<String, Object> queryParams) throws AnalyticsServiceException {
324+
return executeCatching(() ->
325+
analyticsProviderProxy.getEndpoints(service, queryParams));
326+
}
327+
328+
public String getEndpointIssues(String queryParams) throws AnalyticsServiceException {
329+
return executeCatching(() ->
330+
analyticsProviderProxy.getEndpointIssues(queryParams));
331+
}
332+
323333
public String getAssetsReportStats(@NotNull Map<String, Object> queryParams) throws AnalyticsServiceException {
324334
return executeCatching(() ->
325335
analyticsProviderProxy.getAssetsReportStats(queryParams));
@@ -335,14 +345,18 @@ public String getServiceReport(@NotNull String queryParams) throws AnalyticsSer
335345
analyticsProviderProxy.getServiceReport(queryParams));
336346
}
337347

348+
public String getEnvironmentsByService(String service) throws AnalyticsServiceException {
349+
return executeCatching(() ->
350+
analyticsProviderProxy.getEnvironmentsByService(service));
351+
}
352+
338353
public void resetThrottlingStatus() throws AnalyticsServiceException {
339354
executeCatching(() -> {
340355
analyticsProviderProxy.resetThrottlingStatus();
341356
return null;
342357
});
343358
}
344359

345-
346360
// return JSON as string (type LatestTestsOfSpanResponse)
347361
public String getLatestTestsOfSpan(TestsScopeRequest req, FilterForLatestTests filter, int pageSize) throws AnalyticsServiceException {
348362
return executeCatching(() -> analyticsProviderProxy.getLatestTestsOfSpan(

src/main/java/org/digma/intellij/plugin/dashboard/DashboardMessageRouterHandler.java

Lines changed: 62 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,15 @@ public boolean doOnQuery(@NotNull Project project, @NotNull CefBrowser browser,
5858
case "DASHBOARD/GET_METRICS_REPORT_DATA" -> {
5959
pushMetricsData(browser, requestJsonNode);
6060
}
61+
case "DASHBOARD/GET_SERVICE_ENDPOINTS" -> {
62+
pushEndpoints(browser, requestJsonNode);
63+
}
64+
case "DASHBOARD/GET_ENDPOINTS_ISSUES" -> {
65+
pushEndpointsIssues(browser, requestJsonNode);
66+
}
67+
case "DASHBOARD/GET_SERVICE_ENVIRONMENTS" -> {
68+
pushEnvironmentsData(browser, requestJsonNode);
69+
}
6170
case "GLOBAL/GET_BACKEND_INFO" -> {
6271
//do nothing, dashboard app sends that for some reason, but it's not necessary
6372
}
@@ -82,10 +91,40 @@ private void pushServices(CefBrowser browser, JsonNode requestJsonNode) {
8291
try {
8392
var payload = AnalyticsService.getInstance(project).getServices(env);
8493
var message = new SetServicesMessage(payload);
85-
Log.log(logger::trace, project, "sending DASHBOARD/GET_SERVICES message");
94+
Log.log(logger::trace, project, "sending DASHBOARD/SET_SERVICES message");
95+
serializeAndExecuteWindowPostMessageJavaScript(browser, message);
96+
} catch (AnalyticsServiceException ex) {
97+
Log.log(logger::trace, getProject(), "sending DASHBOARD/SET_SERVICES message with error");
98+
}
99+
}
100+
101+
private void pushEndpoints(CefBrowser browser, JsonNode requestJsonNode) {
102+
var project = getProject();
103+
Log.log(logger::trace, project, "pushEndpoints called");
104+
var requestPayload = getPayloadFromRequestNonNull(requestJsonNode);
105+
var backendQueryParams = getMapFromNode(requestPayload, getObjectMapper());
106+
var service = requestPayload.get("service").textValue();
107+
try {
108+
var payload = AnalyticsService.getInstance(project).getEndpoints(service, backendQueryParams);
109+
var message = new SetEndpointsMessage(payload);
110+
Log.log(logger::trace, project, "sending DASHBOARD/SET_SERVICE_ENDPOINTS message");
111+
serializeAndExecuteWindowPostMessageJavaScript(browser, message);
112+
} catch (AnalyticsServiceException ex) {
113+
Log.log(logger::trace, getProject(), "sending DASHBOARD/SET_SERVICE_ENDPOINTS message with error");
114+
}
115+
}
116+
117+
private void pushEndpointsIssues(CefBrowser browser, JsonNode requestJsonNode) {
118+
var project = getProject();
119+
Log.log(logger::trace, project, "pushEndpointsIssues called");
120+
var requestPayload = getPayloadFromRequestNonNull(requestJsonNode);
121+
try {
122+
var payload = AnalyticsService.getInstance(project).getEndpointIssues(requestPayload.toString());
123+
var message = new SetEndpointIssuesMessage(payload);
124+
Log.log(logger::trace, project, "sending DASHBOARD/SET_ENDPOINTS_ISSUES message");
86125
serializeAndExecuteWindowPostMessageJavaScript(browser, message);
87126
} catch (AnalyticsServiceException ex) {
88-
Log.log(logger::trace, getProject(), "sending DASHBOARD/GET_SERVICES message with error");
127+
Log.log(logger::trace, getProject(), "sending DASHBOARD/SET_ENDPOINTS_ISSUES message with error");
89128
}
90129
}
91130

@@ -97,10 +136,10 @@ private void pushAssetsReportStats(CefBrowser browser, JsonNode requestJsonNode)
97136
try {
98137
var payload = AnalyticsService.getInstance(project).getAssetsReportStats(backendQueryParams);
99138
var message = new SetAssetsReportStatsMessage(payload);
100-
Log.log(logger::trace, project, "sending DASHBOARD/GET_REPORT_ASSETS_STATS message");
139+
Log.log(logger::trace, project, "sending DASHBOARD/SET_REPORT_ASSETS_STATS message");
101140
serializeAndExecuteWindowPostMessageJavaScript(browser, message);
102141
} catch (AnalyticsServiceException ex) {
103-
Log.log(logger::trace, getProject(), "sending DASHBOARD/GET_REPORT_ASSETS_STATS message with error");
142+
Log.log(logger::trace, getProject(), "sending DASHBOARD/SET_REPORT_ASSETS_STATS message with error");
104143
}
105144
}
106145

@@ -112,10 +151,10 @@ private void pushIssuesReportStats(CefBrowser browser, JsonNode requestJsonNode)
112151
try {
113152
var payload = AnalyticsService.getInstance(project).getIssuesReportStats(backendQueryParams);
114153
var message = new SetIssuesReportStatsMessage(payload);
115-
Log.log(logger::trace, project, "sending DASHBOARD/GET_REPORT_ISSUES_STATS message");
154+
Log.log(logger::trace, project, "sending DASHBOARD/SET_REPORT_ISSUES_STATS message");
116155
serializeAndExecuteWindowPostMessageJavaScript(browser, message);
117156
} catch (AnalyticsServiceException ex) {
118-
Log.log(logger::trace, getProject(), "sending DASHBOARD/GET_REPORT_ISSUES_STATS message with error");
157+
Log.log(logger::trace, getProject(), "sending DASHBOARD/SET_REPORT_ISSUES_STATS message with error");
119158
}
120159
}
121160

@@ -126,10 +165,25 @@ private void pushMetricsData(CefBrowser browser, JsonNode requestJsonNode) {
126165
try {
127166
var payload = AnalyticsService.getInstance(project).getServiceReport(requestPayload.toString());
128167
var message = new SetMetricsReportMessage(payload);
129-
Log.log(logger::trace, project, "sending DASHBOARD/GET_METRICS_REPORT_DATA message");
168+
Log.log(logger::trace, project, "sending DASHBOARD/SET_METRICS_REPORT_DATA message");
169+
serializeAndExecuteWindowPostMessageJavaScript(browser, message);
170+
} catch (AnalyticsServiceException ex) {
171+
Log.log(logger::trace, getProject(), "sending DASHBOARD/SET_METRICS_REPORT_DATA message with error");
172+
}
173+
}
174+
175+
private void pushEnvironmentsData(CefBrowser browser, JsonNode requestJsonNode) {
176+
var project = getProject();
177+
var requestPayload = getPayloadFromRequestNonNull(requestJsonNode);
178+
var service = requestPayload.get("service").textValue();
179+
Log.log(logger::trace, project, "pushEnvironmentsData called");
180+
try {
181+
var payload = AnalyticsService.getInstance(project).getEnvironmentsByService(service);
182+
var message = new SetEnvironmentsMessage(payload);
183+
Log.log(logger::trace, project, "sending DASHBOARD/SET_SERVICE_ENVIRONMENTS message");
130184
serializeAndExecuteWindowPostMessageJavaScript(browser, message);
131185
} catch (AnalyticsServiceException ex) {
132-
Log.log(logger::trace, getProject(), "sending DASHBOARD/GET_METRICS_REPORT_DATA message with error");
186+
Log.log(logger::trace, getProject(), "sending DASHBOARD/SET_SERVICE_ENVIRONMENTS message with error");
133187
}
134188
}
135189

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.digma.intellij.plugin.ui.dashboard.reports.model
2+
3+
import com.fasterxml.jackson.annotation.JsonRawValue
4+
import org.digma.intellij.plugin.ui.jcef.JCEFGlobalConstants
5+
6+
data class SetEndpointIssuesMessage(@JsonRawValue val payload: String) {
7+
val type = JCEFGlobalConstants.REQUEST_MESSAGE_TYPE
8+
val action = "DASHBOARD/SET_ENDPOINTS_ISSUES"
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.digma.intellij.plugin.ui.dashboard.reports.model
2+
3+
import com.fasterxml.jackson.annotation.JsonRawValue
4+
import org.digma.intellij.plugin.ui.jcef.JCEFGlobalConstants
5+
6+
data class SetEndpointsMessage(@JsonRawValue val payload: String) {
7+
val type = JCEFGlobalConstants.REQUEST_MESSAGE_TYPE
8+
val action = "DASHBOARD/SET_SERVICE_ENDPOINTS"
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.digma.intellij.plugin.ui.dashboard.reports.model
2+
3+
import com.fasterxml.jackson.annotation.JsonRawValue
4+
import org.digma.intellij.plugin.ui.jcef.JCEFGlobalConstants
5+
6+
data class SetEnvironmentsMessage(@JsonRawValue val payload: String) {
7+
val type = JCEFGlobalConstants.REQUEST_MESSAGE_TYPE
8+
val action = "DASHBOARD/SET_SERVICE_ENVIRONMENTS"
9+
}

src/main/resources/webview/dashboard/index.js

Lines changed: 169 additions & 65 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/resources/webview/main/index.js

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)