Github user revans2 commented on a diff in the pull request:
https://github.com/apache/storm/pull/2752#discussion_r200454747
--- Diff: storm-core/src/jvm/org/apache/storm/ui/UIHelpers.java ---
@@ -295,9 +391,1104 @@ public static String getJsonResponseBody(Object
data, String callback, boolean n
return callback != null ? wrapJsonInCallback(callback,
serializedData) : serializedData;
}
+ /**
+ * Converts exception into json map.
+ * @param ex Exception to be converted.
+ * @param statusCode Status code to be returned.
+ * @return Map to be converted into json.
+ */
public static Map exceptionToJson(Exception ex, int statusCode) {
StringWriter sw = new StringWriter();
ex.printStackTrace(new PrintWriter(sw));
- return ImmutableMap.of("error", statusCode + " " +
HttpStatus.getMessage(statusCode), "errorMessage", sw.toString());
+ return ImmutableMap.of(
+ "error", statusCode
+ + " "
+ + HttpStatus.getMessage(statusCode),
+ "errorMessage", sw.toString());
+ }
+
+ /**
+ * Converts thrift call result into map fit for UI/api.
+ * @param clusterSummary Obtained from Nimbus.
+ * @param user User Making request
+ * @param conf Storm Conf
+ * @return Cluster Summary for display on UI/monitoring purposes via
API
+ */
+ public static Map<String, Object> getClusterSummary(ClusterSummary
clusterSummary, String user,
+ Map<String,
Object> conf) {
+ Map<String, Object> result = new HashMap();
+ List<SupervisorSummary> supervisorSummaries =
clusterSummary.get_supervisors();
+ List<TopologySummary> topologySummaries =
clusterSummary.get_topologies();
+
+ Integer usedSlots =
+ supervisorSummaries.stream().mapToInt(
+ SupervisorSummary::get_num_used_workers).sum();
+ Integer totalSlots =
+ supervisorSummaries.stream().mapToInt(
+ SupervisorSummary::get_num_workers).sum();
+
+ Integer totalTasks =
+ topologySummaries.stream().mapToInt(
+ TopologySummary::get_num_tasks).sum();
+ Integer totalExecutors =
+ topologySummaries.stream().mapToInt(
+ TopologySummary::get_num_executors).sum();
+
+ Double supervisorTotalMemory =
+ supervisorSummaries.stream().mapToDouble(x ->
x.get_total_resources().getOrDefault(
+ Constants.COMMON_TOTAL_MEMORY_RESOURCE_NAME,
+
x.get_total_resources().get(Config.SUPERVISOR_MEMORY_CAPACITY_MB)
+ )
+ ).sum();
+
+ Double supervisorTotalCpu =
+ supervisorSummaries.stream().mapToDouble(x ->
x.get_total_resources().getOrDefault(
+ Constants.COMMON_CPU_RESOURCE_NAME,
+
x.get_total_resources().get(Config.SUPERVISOR_CPU_CAPACITY)
+ )
+ ).sum();
+
+ Double supervisorUsedMemory =
+
supervisorSummaries.stream().mapToDouble(SupervisorSummary::get_used_mem).sum();
+ Double supervisorUsedCpu =
+
supervisorSummaries.stream().mapToDouble(SupervisorSummary::get_used_cpu).sum();
+ Double supervisorFragementedCpu =
+ supervisorSummaries.stream().mapToDouble(
+ SupervisorSummary::get_fragmented_cpu).sum();
+ Double supervisorFragmentedMem =
+ supervisorSummaries.stream().mapToDouble(
+ SupervisorSummary::get_fragmented_mem).sum();
+
+
+ result.put("user", user);
+ result.put("stormVersion", VersionInfo.getVersion());
+ result.put("supervisors", supervisorSummaries.size());
+ result.put("topologies", clusterSummary.get_topologies_size());
+ result.put("slotsUsed", usedSlots);
+ result.put("slotsTotal", totalSlots);
+ result.put("slotsFree", totalSlots - usedSlots);
+ result.put("tasksTotal", totalTasks);
+ result.put("totalExecutors", totalExecutors);
+
+ result.put("totalMem", supervisorTotalMemory);
+ result.put("totalCpu", supervisorTotalCpu);
+ result.put("availMem", supervisorTotalMemory -
supervisorUsedMemory);
+ result.put("availCpu", supervisorTotalCpu - supervisorUsedCpu);
+ result.put("fragmentedMem", supervisorFragmentedMem);
+ result.put("fragmentedCpu", supervisorFragementedCpu);
+ result.put("schedulerDisplayResource",
+ conf.get(DaemonConfig.SCHEDULER_DISPLAY_RESOURCE));
+ result.put("memAssignedPercentUtil", supervisorTotalMemory > 0
+ ? ((supervisorTotalMemory - supervisorUsedMemory) * 100.0)
+ / supervisorTotalMemory : 0.0);
+ result.put("cpuAssignedPercentUtil", supervisorTotalCpu > 0
+ ? ((supervisorTotalCpu - supervisorUsedCpu) * 100.0)
+ / supervisorTotalCpu : 0.0);
+ result.put("bugtracker-url",
conf.get(DaemonConfig.UI_PROJECT_BUGTRACKER_URL));
+ result.put("central-log-url",
conf.get(DaemonConfig.UI_CENTRAL_LOGGING_URL));
+ return result;
+ }
+
+ /**
+ * Prettify OwnerResourceSummary.
+ * @param ownerResourceSummary
+ * @return Map of prettified OwnerResourceSummary.
+ */
+ public static Map<String, Object>
unpackOwnerResourceSummary(OwnerResourceSummary ownerResourceSummary) {
+ Map<String, Object> result = new HashMap();
+
+ Double memoryGuarantee = Double.valueOf(-1);
--- End diff --
Previously the values returned when this was not set were "N/A". Could we
please change that back instead of a -1?
---