non-thrift changes
diff --git a/storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java b/storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java
index a3b7575..957d27b 100644
--- a/storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java
+++ b/storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java
@@ -2895,6 +2895,7 @@
if (resources != null) {
ret.set_used_mem(resources.getUsedMem());
ret.set_used_cpu(resources.getUsedCpu());
+ ret.set_used_generic_resources(resources.getUsedGenericResources());
if (isFragmented(resources)) {
final double availableCpu = resources.getAvailableCpu();
if (availableCpu < 0) {
@@ -2994,9 +2995,11 @@
summary.set_requested_memonheap(resources.getRequestedMemOnHeap());
summary.set_requested_memoffheap(resources.getRequestedMemOffHeap());
summary.set_requested_cpu(resources.getRequestedCpu());
+ summary.set_requested_generic_resources(resources.getRequestedGenericResources());
summary.set_assigned_memonheap(resources.getAssignedMemOnHeap());
summary.set_assigned_memoffheap(resources.getAssignedMemOffHeap());
summary.set_assigned_cpu(resources.getAssignedCpu());
+ summary.set_assigned_generic_resources(resources.getAssignedGenericResources());
}
try {
summary.set_replication_count(getBlobReplicationCount(ConfigUtils.masterStormCodeKey(topoId)));
@@ -4206,6 +4209,8 @@
topoPageInfo.set_assigned_regular_off_heap_memory(resources.getAssignedNonSharedMemOffHeap());
topoPageInfo.set_assigned_shared_on_heap_memory(resources.getAssignedSharedMemOnHeap());
topoPageInfo.set_assigned_regular_on_heap_memory(resources.getAssignedNonSharedMemOnHeap());
+ topoPageInfo.set_assigned_generic_resources(resources.getAssignedGenericResources());
+ topoPageInfo.set_requested_generic_resources(resources.getRequestedGenericResources());
}
int launchTimeSecs = common.launchTimeSecs;
topoPageInfo.set_name(topoName);
diff --git a/storm-server/src/main/java/org/apache/storm/daemon/nimbus/TopologyResources.java b/storm-server/src/main/java/org/apache/storm/daemon/nimbus/TopologyResources.java
index f0db842..6a0c3fb 100644
--- a/storm-server/src/main/java/org/apache/storm/daemon/nimbus/TopologyResources.java
+++ b/storm-server/src/main/java/org/apache/storm/daemon/nimbus/TopologyResources.java
@@ -13,13 +13,16 @@
package org.apache.storm.daemon.nimbus;
import java.util.Collection;
+import java.util.HashMap;
import java.util.Map;
+
import org.apache.storm.generated.Assignment;
import org.apache.storm.generated.NodeInfo;
import org.apache.storm.generated.WorkerResources;
import org.apache.storm.scheduler.SchedulerAssignment;
import org.apache.storm.scheduler.TopologyDetails;
import org.apache.storm.scheduler.WorkerSlot;
+import org.apache.storm.scheduler.resource.normalization.NormalizedResourceRequest;
public final class TopologyResources {
private final double requestedMemOnHeap;
@@ -29,6 +32,7 @@
private final double requestedNonSharedMemOnHeap;
private final double requestedNonSharedMemOffHeap;
private final double requestedCpu;
+ private Map<String, Double> requestedGenericResources;
private double assignedMemOnHeap;
private double assignedMemOffHeap;
private double assignedSharedMemOnHeap;
@@ -36,6 +40,7 @@
private double assignedNonSharedMemOnHeap;
private double assignedNonSharedMemOffHeap;
private double assignedCpu;
+ private Map<String, Double> assignedGenericResources;
private TopologyResources(TopologyDetails td, Collection<WorkerResources> workers,
Map<String, Double> nodeIdToSharedOffHeapNode) {
@@ -46,6 +51,7 @@
requestedNonSharedMemOnHeap = td.getRequestedNonSharedOnHeap();
requestedNonSharedMemOffHeap = td.getRequestedNonSharedOffHeap();
requestedCpu = td.getTotalRequestedCpu();
+ requestedGenericResources = td.getTotalRequestedGenericResources();
assignedMemOnHeap = 0.0;
assignedMemOffHeap = 0.0;
assignedSharedMemOnHeap = 0.0;
@@ -53,6 +59,7 @@
assignedNonSharedMemOnHeap = 0.0;
assignedNonSharedMemOffHeap = 0.0;
assignedCpu = 0.0;
+ assignedGenericResources = new HashMap<>();
if (workers != null) {
for (WorkerResources resources : workers) {
@@ -72,6 +79,7 @@
assignedNonSharedMemOffHeap -= resources.get_shared_mem_off_heap();
}
}
+ assignedGenericResources = computeAssignedGenericResources(workers);
}
if (nodeIdToSharedOffHeapNode != null) {
@@ -81,6 +89,15 @@
}
}
+ private Map<String, Double> computeAssignedGenericResources(Collection<WorkerResources> workers) {
+ Map<String, Double> genericResources = new HashMap<>();
+ for (WorkerResources worker : workers) {
+ genericResources = NormalizedResourceRequest.addResourceMap(genericResources, worker.get_resources());
+ }
+ NormalizedResourceRequest.filterGenericResources(genericResources);
+ return genericResources;
+ }
+
public TopologyResources(TopologyDetails td, SchedulerAssignment assignment) {
this(td, getWorkerResources(assignment), getNodeIdToSharedOffHeapNode(assignment));
}
@@ -90,7 +107,7 @@
}
public TopologyResources() {
- this(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ this(0, 0, 0, 0, 0, 0, 0, new HashMap<>(), 0, 0, 0, 0, 0, 0, 0, new HashMap<>());
}
protected TopologyResources(
@@ -101,13 +118,15 @@
double requestedNonSharedMemOnHeap,
double requestedNonSharedMemOffHeap,
double requestedCpu,
+ Map<String, Double> requestedGenericResources,
double assignedMemOnHeap,
double assignedMemOffHeap,
double assignedSharedMemOnHeap,
double assignedSharedMemOffHeap,
double assignedNonSharedMemOnHeap,
double assignedNonSharedMemOffHeap,
- double assignedCpu) {
+ double assignedCpu,
+ Map<String, Double> assignedGenericResources) {
this.requestedMemOnHeap = requestedMemOnHeap;
this.requestedMemOffHeap = requestedMemOffHeap;
this.requestedSharedMemOnHeap = requestedSharedMemOnHeap;
@@ -115,6 +134,7 @@
this.requestedNonSharedMemOnHeap = requestedNonSharedMemOnHeap;
this.requestedNonSharedMemOffHeap = requestedNonSharedMemOffHeap;
this.requestedCpu = requestedCpu;
+ this.requestedGenericResources = requestedGenericResources;
this.assignedMemOnHeap = assignedMemOnHeap;
this.assignedMemOffHeap = assignedMemOffHeap;
this.assignedSharedMemOnHeap = assignedSharedMemOnHeap;
@@ -122,6 +142,7 @@
this.assignedNonSharedMemOnHeap = assignedNonSharedMemOnHeap;
this.assignedNonSharedMemOffHeap = assignedNonSharedMemOffHeap;
this.assignedCpu = assignedCpu;
+ this.assignedGenericResources = assignedGenericResources;
}
private static Collection<WorkerResources> getWorkerResources(SchedulerAssignment assignment) {
@@ -246,6 +267,14 @@
this.assignedNonSharedMemOffHeap = assignedNonSharedMemOffHeap;
}
+ public Map<String, Double> getAssignedGenericResources() {
+ return new HashMap<>(assignedGenericResources);
+ }
+
+ public Map<String, Double> getRequestedGenericResources() {
+ return new HashMap<>(requestedGenericResources);
+ }
+
/**
* Add the values in other to this and return a combined resources object.
* @param other the other resources to add to this
@@ -260,12 +289,14 @@
requestedNonSharedMemOnHeap + other.requestedNonSharedMemOnHeap,
requestedNonSharedMemOffHeap + other.requestedNonSharedMemOffHeap,
requestedCpu + other.requestedCpu,
+ NormalizedResourceRequest.addResourceMap(requestedGenericResources, other.requestedGenericResources),
assignedMemOnHeap + other.assignedMemOnHeap,
assignedMemOffHeap + other.assignedMemOffHeap,
assignedSharedMemOnHeap + other.assignedSharedMemOnHeap,
assignedSharedMemOffHeap + other.assignedSharedMemOffHeap,
assignedNonSharedMemOnHeap + other.assignedNonSharedMemOnHeap,
assignedNonSharedMemOffHeap + other.assignedNonSharedMemOffHeap,
- assignedCpu + other.assignedCpu);
+ assignedCpu + other.assignedCpu,
+ NormalizedResourceRequest.addResourceMap(assignedGenericResources, other.assignedGenericResources));
}
}
diff --git a/storm-server/src/main/java/org/apache/storm/scheduler/Cluster.java b/storm-server/src/main/java/org/apache/storm/scheduler/Cluster.java
index 04f0960..f51eae1 100644
--- a/storm-server/src/main/java/org/apache/storm/scheduler/Cluster.java
+++ b/storm-server/src/main/java/org/apache/storm/scheduler/Cluster.java
@@ -27,7 +27,6 @@
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
-import java.util.function.Function;
import java.util.stream.Collectors;
import org.apache.storm.Config;
import org.apache.storm.Constants;
@@ -955,7 +954,8 @@
public Map<String, SupervisorResources> getSupervisorsResourcesMap() {
Map<String, SupervisorResources> ret = new HashMap<>();
for (SupervisorDetails sd : supervisors.values()) {
- ret.put(sd.getId(), new SupervisorResources(sd.getTotalMemory(), sd.getTotalCpu(), 0, 0));
+ ret.put(sd.getId(), new SupervisorResources(sd.getTotalMemory(), sd.getTotalCpu(), sd.getTotalGenericResources(),
+ 0, 0, new HashMap<>()));
}
for (SchedulerAssignmentImpl assignment : assignments.values()) {
for (Entry<WorkerSlot, WorkerResources> entry :
@@ -963,7 +963,9 @@
String id = entry.getKey().getNodeId();
SupervisorResources sr = ret.get(id);
if (sr == null) {
- sr = new SupervisorResources(0, 0, 0, 0);
+ sr = new SupervisorResources(0, 0, new HashMap<>(),
+ 0, 0, new HashMap<>());
+
}
sr = sr.add(entry.getValue());
ret.put(id, sr);
@@ -974,7 +976,8 @@
String id = entry.getKey();
SupervisorResources sr = ret.get(id);
if (sr == null) {
- sr = new SupervisorResources(0, 0, 0, 0);
+ sr = new SupervisorResources(0, 0, new HashMap<>(),
+ 0, 0, new HashMap<>());
}
sr = sr.addMem(entry.getValue());
ret.put(id, sr);
diff --git a/storm-server/src/main/java/org/apache/storm/scheduler/SupervisorDetails.java b/storm-server/src/main/java/org/apache/storm/scheduler/SupervisorDetails.java
index 2700871..8daf142 100644
--- a/storm-server/src/main/java/org/apache/storm/scheduler/SupervisorDetails.java
+++ b/storm-server/src/main/java/org/apache/storm/scheduler/SupervisorDetails.java
@@ -17,6 +17,7 @@
import java.util.Map;
import java.util.Set;
import org.apache.storm.scheduler.resource.normalization.NormalizedResourceOffer;
+import org.apache.storm.scheduler.resource.normalization.NormalizedResourceRequest;
import org.apache.storm.scheduler.resource.normalization.ResourceMetrics;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -153,6 +154,15 @@
return totalResources.getTotalCpu();
}
+ /*
+ * Get the total Generic resources on this supervisor.
+ */
+ public Map<String, Double> getTotalGenericResources() {
+ Map<String, Double> genericResources = totalResources.toNormalizedMap();
+ NormalizedResourceRequest.filterGenericResources(genericResources);
+ return genericResources;
+ }
+
/**
* Get all resources for this Supervisor.
*/
diff --git a/storm-server/src/main/java/org/apache/storm/scheduler/SupervisorResources.java b/storm-server/src/main/java/org/apache/storm/scheduler/SupervisorResources.java
index 8ee686f..612896e 100644
--- a/storm-server/src/main/java/org/apache/storm/scheduler/SupervisorResources.java
+++ b/storm-server/src/main/java/org/apache/storm/scheduler/SupervisorResources.java
@@ -18,27 +18,38 @@
package org.apache.storm.scheduler;
+import java.util.HashMap;
+import java.util.Map;
+
import org.apache.storm.generated.WorkerResources;
+import org.apache.storm.scheduler.resource.normalization.NormalizedResourceRequest;
public class SupervisorResources {
private final double totalMem;
private final double totalCpu;
private final double usedMem;
private final double usedCpu;
+ private Map<String, Double> totalGenericResources;
+ private Map<String, Double> usedGenericResources;
/**
* Constructor for a Supervisor's resources.
*
* @param totalMem the total mem on the supervisor
* @param totalCpu the total CPU on the supervisor
+ * @param totalGenericResources the total generic resources on the supervisor
* @param usedMem the used mem on the supervisor
* @param usedCpu the used CPU on the supervisor
+ * @param usedGenericResources the used generic resources on the supervisor
*/
- public SupervisorResources(double totalMem, double totalCpu, double usedMem, double usedCpu) {
+ public SupervisorResources(double totalMem, double totalCpu, Map<String, Double> totalGenericResources,
+ double usedMem, double usedCpu, Map<String, Double> usedGenericResources) {
this.totalMem = totalMem;
this.totalCpu = totalCpu;
this.usedMem = usedMem;
this.usedCpu = usedCpu;
+ this.totalGenericResources = totalGenericResources != null ? totalGenericResources : new HashMap<>();
+ this.usedGenericResources = usedGenericResources != null ? usedGenericResources : new HashMap<>();
}
public double getUsedMem() {
@@ -65,15 +76,29 @@
return totalMem - usedMem;
}
- SupervisorResources add(WorkerResources wr) {
+ public Map<String, Double> getTotalGenericResources() {
+ return new HashMap<>(totalGenericResources);
+ }
+
+ public Map<String, Double> getUsedGenericResources() {
+ return new HashMap<>(usedGenericResources);
+ }
+
+ public SupervisorResources add(WorkerResources wr) {
+ usedGenericResources = NormalizedResourceRequest.addResourceMap(usedGenericResources, wr.get_resources());
+ NormalizedResourceRequest.filterGenericResources(usedGenericResources);
+
return new SupervisorResources(
- totalMem,
- totalCpu,
- usedMem + wr.get_mem_off_heap() + wr.get_mem_on_heap(),
- usedCpu + wr.get_cpu());
+ totalMem,
+ totalCpu,
+ getTotalGenericResources(),
+ usedMem + wr.get_mem_off_heap() + wr.get_mem_on_heap(),
+ usedCpu + wr.get_cpu(),
+ getUsedGenericResources());
}
public SupervisorResources addMem(Double value) {
- return new SupervisorResources(totalMem, totalCpu, usedMem + value, usedCpu);
+ return new SupervisorResources(totalMem, totalCpu, getTotalGenericResources(),
+ usedMem + value, usedCpu, getUsedGenericResources());
}
}
diff --git a/storm-server/src/main/java/org/apache/storm/scheduler/TopologyDetails.java b/storm-server/src/main/java/org/apache/storm/scheduler/TopologyDetails.java
index 29f06e2..180b5f9 100644
--- a/storm-server/src/main/java/org/apache/storm/scheduler/TopologyDetails.java
+++ b/storm-server/src/main/java/org/apache/storm/scheduler/TopologyDetails.java
@@ -455,6 +455,12 @@
return totalCpu;
}
+ public Map<String, Double> getTotalRequestedGenericResources() {
+ Map<String, Double> map = getApproximateTotalResources().toNormalizedMap();
+ NormalizedResourceRequest.filterGenericResources(map);
+ return map;
+ }
+
/**
* get the resources requirements for a executor.
*
diff --git a/storm-server/src/main/java/org/apache/storm/scheduler/resource/normalization/NormalizedResourceRequest.java b/storm-server/src/main/java/org/apache/storm/scheduler/resource/normalization/NormalizedResourceRequest.java
index 478a8be..66aade8 100644
--- a/storm-server/src/main/java/org/apache/storm/scheduler/resource/normalization/NormalizedResourceRequest.java
+++ b/storm-server/src/main/java/org/apache/storm/scheduler/resource/normalization/NormalizedResourceRequest.java
@@ -178,6 +178,43 @@
return ret;
}
+ /*
+ * return map with non generic resources removded
+ */
+ public static void filterGenericResources(Map<String, Double> map) {
+ map.remove(Constants.COMMON_ONHEAP_MEMORY_RESOURCE_NAME);
+ map.remove(Constants.COMMON_OFFHEAP_MEMORY_RESOURCE_NAME);
+ map.remove(Constants.COMMON_TOTAL_MEMORY_RESOURCE_NAME);
+ map.remove(Constants.COMMON_CPU_RESOURCE_NAME);
+ }
+
+ /*
+ * return a map that is the sum of resources1 + resources2
+ */
+ public static Map<String, Double> addResourceMap(Map<String, Double> resources1, Map<String, Double> resources2) {
+ Map<String,Double> sum = new HashMap<>(resources1);
+ for (Map.Entry<String,Double> me : resources2.entrySet()) {
+ Double cur = sum.getOrDefault(me.getKey(), 0.0) + me.getValue();
+ sum.put(me.getKey(), cur);
+ }
+ return sum;
+ }
+
+ /*
+ * return a map that is the difference of resources1 - resources2
+ */
+ public static Map<String, Double> subtractResourceMap(Map<String, Double> resource1, Map<String, Double> resource2) {
+ if (resource1 == null || resource2 == null) {
+ return new HashMap<>();
+ }
+ Map<String, Double> difference = new HashMap<>(resource1);
+ for (Map.Entry<String,Double> me : resource2.entrySet()) {
+ Double sub = difference.getOrDefault(me.getKey(), 0.0) - me.getValue();
+ difference.put(me.getKey(), sub);
+ }
+ return difference;
+ }
+
public double getOnHeapMemoryMb() {
return onHeap;
}
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/UIHelpers.java b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/UIHelpers.java
index 4d37b64..658ed06 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/UIHelpers.java
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/UIHelpers.java
@@ -35,6 +35,7 @@
import java.util.NavigableMap;
import java.util.Objects;
import java.util.Set;
+import java.util.TreeMap;
import java.util.concurrent.atomic.AtomicReference;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -85,6 +86,7 @@
import org.apache.storm.generated.TopologySummary;
import org.apache.storm.generated.WorkerSummary;
import org.apache.storm.logging.filters.AccessLoggingFilter;
+import org.apache.storm.scheduler.resource.normalization.NormalizedResourceRequest;
import org.apache.storm.stats.StatsUtil;
import org.apache.storm.thrift.TException;
import org.apache.storm.utils.IVersionInfo;
@@ -632,9 +634,32 @@
? StatsUtil.floatStr((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));
+
+ Map<String, Double> usedGenericResources = new HashMap<>();
+ Map<String, Double> totalGenericResources = new HashMap<>();
+ for (SupervisorSummary ss : supervisorSummaries) {
+ usedGenericResources = NormalizedResourceRequest.addResourceMap(usedGenericResources, ss.get_used_generic_resources());
+ totalGenericResources = NormalizedResourceRequest.addResourceMap(totalGenericResources, ss.get_total_resources());
+ }
+ Map<String, Double> availGenericResources = NormalizedResourceRequest
+ .subtractResourceMap(totalGenericResources, usedGenericResources);
+ result.put("availGenerics", prettifyGenericResources(availGenericResources));
+ result.put("totalGenerics", prettifyGenericResources(totalGenericResources));
return result;
}
+ private static String prettifyGenericResources(Map<String, Double> resourceMap) {
+ if (resourceMap == null) {
+ return null;
+ }
+ TreeMap<String, Double> treeGenericResources = new TreeMap<>(); // use TreeMap for deterministic ordering
+ treeGenericResources.putAll(resourceMap);
+ NormalizedResourceRequest.filterGenericResources(treeGenericResources);
+ return treeGenericResources.toString()
+ .replaceAll("[{}]", "")
+ .replace(",", "");
+ }
+
/**
* Prettify OwnerResourceSummary.
* @param ownerResourceSummary ownerResourceSummary
@@ -745,12 +770,14 @@
topologySummary.get_requested_memoffheap()
+ topologySummary.get_assigned_memonheap());
result.put("requestedCpu", topologySummary.get_requested_cpu());
+ result.put("requestedGenericResources", prettifyGenericResources(topologySummary.get_requested_generic_resources()));
result.put("assignedMemOnHeap", topologySummary.get_assigned_memonheap());
result.put("assignedMemOffHeap", topologySummary.get_assigned_memoffheap());
result.put("assignedTotalMem",
topologySummary.get_assigned_memoffheap()
+ topologySummary.get_assigned_memonheap());
result.put("assignedCpu", topologySummary.get_assigned_cpu());
+ result.put("assignedGenericResources", prettifyGenericResources(topologySummary.get_assigned_generic_resources()));
result.put("topologyVersion", topologySummary.get_topology_version());
result.put("stormVersion", topologySummary.get_storm_version());
return result;
@@ -909,6 +936,15 @@
result.put("availMem", totalMemory - supervisorSummary.get_used_mem());
result.put("availCpu", totalCpu - supervisorSummary.get_used_cpu());
result.put("version", supervisorSummary.get_version());
+
+ Map<String, Double> totalGenericResources = new HashMap<>(totalResources);
+ result.put("totalGenericResources", prettifyGenericResources(totalGenericResources));
+ Map<String, Double> usedGenericResources = supervisorSummary.get_used_generic_resources();
+ result.put("usedGenericResources", prettifyGenericResources(usedGenericResources));
+ Map<String, Double> availGenericResources = NormalizedResourceRequest
+ .subtractResourceMap(totalGenericResources, usedGenericResources);
+ result.put("availGenericResources", prettifyGenericResources(availGenericResources));
+
return result;
}
@@ -1165,6 +1201,9 @@
result.put(
"requestedCpu",
commonAggregateStats.get_resources_map().get(Constants.COMMON_CPU_RESOURCE_NAME));
+ result.put(
+ "requestedGenericResourcesComp",
+ prettifyGenericResources(commonAggregateStats.get_resources_map()));
}
return result;
}
@@ -1546,10 +1585,12 @@
result.put("requestedSharedOnHeapMem", topologyPageInfo.get_requested_shared_on_heap_memory());
result.put("requestedRegularOffHeapMem", topologyPageInfo.get_requested_regular_off_heap_memory());
result.put("requestedSharedOffHeapMem", topologyPageInfo.get_requested_shared_off_heap_memory());
+ result.put("requestedGenericResources", prettifyGenericResources(topologyPageInfo.get_requested_generic_resources()));
result.put("assignedRegularOnHeapMem", topologyPageInfo.get_assigned_regular_on_heap_memory());
result.put("assignedSharedOnHeapMem", topologyPageInfo.get_assigned_shared_on_heap_memory());
result.put("assignedRegularOffHeapMem", topologyPageInfo.get_assigned_regular_off_heap_memory());
result.put("assignedSharedOffHeapMem", topologyPageInfo.get_assigned_shared_off_heap_memory());
+ result.put("assignedGenericResources", prettifyGenericResources(topologyPageInfo.get_assigned_generic_resources()));
result.put("topologyStats", getTopologyStatsMap(topologyPageInfo.get_topology_stats()));
List<Map> workerSummaries = new ArrayList();
if (topologyPageInfo.is_set_workers()) {
@@ -2025,6 +2066,8 @@
componentPageInfo.get_resources_map().get(Constants.COMMON_OFFHEAP_MEMORY_RESOURCE_NAME));
result.put("requestedCpu",
componentPageInfo.get_resources_map().get(Constants.COMMON_CPU_RESOURCE_NAME));
+ result.put("requestedGenericResources",
+ prettifyGenericResources(componentPageInfo.get_resources_map()));
result.put("schedulerDisplayResource", config.get(DaemonConfig.SCHEDULER_DISPLAY_RESOURCE));
result.put("topologyId", id);
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/component-page-template.html b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/component-page-template.html
index 21a5b3a..3862a03 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/component-page-template.html
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/component-page-template.html
@@ -55,6 +55,12 @@
Requested CPU
</span>
</th>
+ <th>
+ <span data-toggle="tooltip" data-placement="above" title="The generic resources requested to run a single executor of this component.">
+ Requested Generic Resources
+ </span>
+ </th>
+
{{/schedulerDisplayResource}}
{{#eventLogLink}}
<th>
@@ -75,6 +81,7 @@
<td>{{requestedMemOnHeap}}</td>
<td>{{requestedMemOffHeap}}</td>
<td>{{requestedCpu}}</td>
+ <td>{{requestedGenericResources}}</td>
{{/schedulerDisplayResource}}
{{#eventLogLink}}
<td><a href="{{eventLogLink}}">events</a></td>
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/index-page-template.html b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/index-page-template.html
index a60e578..c0fb62f 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/index-page-template.html
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/index-page-template.html
@@ -169,7 +169,16 @@
CPU Utilization (%)
</span>
</th>
- </tr>
+ <th>
+ <span data-toggle="tooltip" data-placement="top" title="Total Generic Resources in Cluster.">
+ Total Generic Resources
+ </span>
+ </th>
+ <th>
+ <span data-toggle="tooltip" data-placement="top" title="Available Generic Resources in Cluster.">
+ Available Generic Resources
+ </span>
+ </th>
</thead>
<tbody>
<tr>
@@ -181,6 +190,8 @@
<td>{{availCpu}}</td>
<td>{{fragmentedCpu}}</td>
<td>{{cpuAssignedPercentUtil}}</td>
+ <td>{{totalGenerics}}</td>
+ <td>{{availGenerics}}</td>
</tr>
</tbody>
</table>
@@ -307,6 +318,11 @@
</th>
{{/schedulerDisplayResource}}
<th>
+ <span data-toggle="tooltip" data-placement="top" title="Assigned Generic Rescources by Scheduler.">
+ Assigned Generic Resources
+ </span>
+ </th>
+ <th>
<span data-toggle="tooltip" data-placement="left" title="This shows information from the scheduler about the latest attempt to schedule the Topology on the cluster.">
Scheduler Info
</span>
@@ -338,6 +354,7 @@
{{#schedulerDisplayResource}}
<td>{{assignedCpu}}</td>
{{/schedulerDisplayResource}}
+ <td>{{assignedGenericResources}}</td>
<td>{{schedulerInfo}}</td>
<td>{{topologyVersion}}</td>
<td>{{stormVersion}}</td>
@@ -413,6 +430,23 @@
Avail CPU (%)
</span>
</th>
+
+ <th>
+ <span data-toggle="tooltip" data-placement="left" title="The generic resources capacity of a supervisor.">
+ Total Generic Resources
+ </span>
+ </th>
+ <th>
+ <span data-toggle="tooltip" data-placement="left" title="The generic resources that have been allocated.">
+ Used Generic Resources
+ </span>
+ </th>
+ <th>
+ <span data-toggle="tooltip" data-placement="left" title="The generic resources that are available.">
+ Avail Generic Resources
+ </span>
+ </th>
+
{{/schedulerDisplayResource}}
<th>
<span data-toggle="tooltip" data-placement="left" title="Version">
@@ -444,6 +478,9 @@
<td>{{totalCpu}}</td>
<td>{{usedCpu}}</td>
<td>{{availCpu}}</td>
+ <td>{{totalGenericResources}}</td>
+ <td>{{usedGenericResources}}</td>
+ <td>{{availGenericResources}}</td>
{{/schedulerDisplayResource}}
<td>{{version}}</td>
<td>{{blacklisted}}</td>
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/supervisor-page-template.html b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/supervisor-page-template.html
index 3475f12..6e16e3a 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/supervisor-page-template.html
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/supervisor-page-template.html
@@ -76,6 +76,23 @@
Avail CPU (%)
</span>
</th>
+
+ <th>
+ <span data-toggle="tooltip" data-placement="left" title="The generic resources capacity of a supervisor.">
+ Total Generic Resources
+ </span>
+ </th>
+ <th>
+ <span data-toggle="tooltip" data-placement="left" title="The generic resources that have been allocated.">
+ Used Generic Resources
+ </span>
+ </th>
+ <th>
+ <span data-toggle="tooltip" data-placement="left" title="The generic resources that are available.">
+ Avail Generic Resources
+ </span>
+ </th>
+
{{/schedulerDisplayResource}}
<th>
<span data-toggle="tooltip" data-placement="top" title="Version">
@@ -106,6 +123,9 @@
<td>{{totalCpu}}</td>
<td>{{usedCpu}}</td>
<td>{{availCpu}}</td>
+ <td>{{totalGenericResources}}</td>
+ <td>{{usedGenericResources}}</td>
+ <td>{{availGenericResources}}</td>
{{/schedulerDisplayResource}}
<td>{{version}}</td>
<td>{{blacklisted}}</td>
diff --git a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/topology-page-template.html b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/topology-page-template.html
index 49cb314..b67e302 100644
--- a/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/topology-page-template.html
+++ b/storm-webapp/src/main/java/org/apache/storm/daemon/ui/WEB-INF/templates/topology-page-template.html
@@ -76,6 +76,11 @@
</th>
{{/schedulerDisplayResource}}
<th>
+ <span data-toggle="tooltip" data-placement="top" title="Assigned Generic Rescources by Scheduler.">
+ Assigned Generic Resources
+ </span>
+ </th>
+ <th>
<span data-toggle="tooltip" data-placement="left" title="This shows information from the scheduler about the latest attempt to schedule the Topology on the cluster.">
Scheduler Info
</span>
@@ -106,6 +111,7 @@
<td>{{assignedTotalMem}}</td>
{{#schedulerDisplayResource}}
<td>{{assignedCpu}}</td>
+ <td>{{assignedGenericResources}}</td>
{{/schedulerDisplayResource}}
<td>{{schedulerInfo}}</td>
<td>{{topologyVersion}}</td>
@@ -150,6 +156,11 @@
Total CPU (%)
</span>
</th>
+ <th>
+ <span data-toggle="tooltip" data-placement="top" title="Total Generic Resources.">
+ Total Generic Resources
+ </span>
+ </th>
</tr>
</thead>
<tbody>
@@ -161,6 +172,7 @@
<td>{{requestedSharedOffHeapMem}}</td>
<td>{{requestedTotalMem}}</td>
<td>{{requestedCpu}}</td>
+ <td>{{requestedGenericResources}}</td>
</tr>
<tr>
<td>Assigned</td>
@@ -170,6 +182,7 @@
<td>{{assignedSharedOffHeapMem}}</td>
<td>{{assignedTotalMem}}</td>
<td>{{assignedCpu}}</td>
+ <td>{{assignedGenericResources}}</td>
</tr>
</tbody>
</table>
@@ -375,6 +388,11 @@
Req CPU
</span>
</th>
+ <th class="header table-num">
+ <span data-toggle="tooltip" data-placement="top" title="The generic resources requested to run a single executor of this component.">
+ Req Generic
+ </span>
+ </th>
{{/schedulerDisplayResource}}
<th class="header table-num">
<span data-toggle="tooltip" data-placement="top" title="The number of Tuples emitted.">
@@ -417,6 +435,7 @@
<td>{{requestedMemOnHeap}}</td>
<td>{{requestedMemOffHeap}}</td>
<td>{{requestedCpu}}</td>
+ <td>{{requestedGenericResourcesComp}}</td>
{{/schedulerDisplayResource}}
<td>{{emitted}}</td>
<td>{{transferred}}</td>
@@ -472,6 +491,11 @@
Req CPU
</span>
</th>
+ <th class="header table-num">
+ <span data-toggle="tooltip" data-placement="top" title="The generic resources requested to run a single executor of this component.">
+ Req Generic
+ </span>
+ </th>
{{/schedulerDisplayResource}}
<th class="header table-num">
<span data-toggle="tooltip" data-placement="top" title="The number of Tuples emitted.">
@@ -528,6 +552,7 @@
<td>{{requestedMemOnHeap}}</td>
<td>{{requestedMemOffHeap}}</td>
<td>{{requestedCpu}}</td>
+ <td>{{requestedGenericResourcesComp}}</td>
{{/schedulerDisplayResource}}
<td>{{emitted}}</td>
<td>{{transferred}}</td>