modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupOobsPortlet.java | 175 ++++++--- modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceMetricsPortlet.java | 6 modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceOobsPortlet.java | 183 +++++++--- 3 files changed, 241 insertions(+), 123 deletions(-)
New commits: commit 8ace424cf249ff439c586baadd8fa0dfb30b45f3 Author: mtho11 mikecthompson@gmail.com Date: Tue Aug 20 10:44:46 2013 -0700
ResourceMetricsPortlet narrow the resourceTypes to eliminated unused resourceType when all we need is measurement.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceMetricsPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceMetricsPortlet.java index 6a80252..3ca66ff 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceMetricsPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceMetricsPortlet.java @@ -168,11 +168,7 @@ public class ResourceMetricsPortlet extends GroupMetricsPortlet { ResourceType resourceType = resource.getResourceType(); ResourceTypeRepository.Cache.getInstance().getResourceTypes( resourceType.getId(), - EnumSet.of(ResourceTypeRepository.MetadataType.content, - ResourceTypeRepository.MetadataType.operations, - ResourceTypeRepository.MetadataType.measurements, - ResourceTypeRepository.MetadataType.events, - ResourceTypeRepository.MetadataType.resourceConfigurationDefinition), + EnumSet.of(ResourceTypeRepository.MetadataType.measurements ), new ResourceTypeRepository.TypeLoadedCallback() { public void onTypesLoaded(ResourceType type) { resource.setResourceType(type);
commit 44e3a7221c493101252118d1b48d9a27338c5d31 Author: mtho11 mikecthompson@gmail.com Date: Tue Aug 20 10:35:21 2013 -0700
[BZ 997957] Make OOB portlets use new d3 graphs instead of portal.war graphs.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceOobsPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceOobsPortlet.java index 10d3323..f380e6e 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceOobsPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceOobsPortlet.java @@ -31,11 +31,12 @@ import org.rhq.core.domain.common.EntityContext; import org.rhq.core.domain.configuration.Configuration; import org.rhq.core.domain.criteria.ResourceCriteria; import org.rhq.core.domain.dashboard.DashboardPortlet; +import org.rhq.core.domain.measurement.MeasurementDefinition; import org.rhq.core.domain.measurement.composite.MeasurementOOBComposite; import org.rhq.core.domain.resource.Resource; +import org.rhq.core.domain.resource.ResourceType; import org.rhq.core.domain.resource.composite.ResourceComposite; import org.rhq.core.domain.util.PageList; -import org.rhq.enterprise.gui.coregui.client.components.FullHTMLPane; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; import org.rhq.enterprise.gui.coregui.client.dashboard.PortletViewFactory; import org.rhq.enterprise.gui.coregui.client.dashboard.portlets.PortletConfigurationEditorComponent.Constant; @@ -44,9 +45,15 @@ import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; import org.rhq.enterprise.gui.coregui.client.inventory.common.detail.summary.AbstractActivityView; import org.rhq.enterprise.gui.coregui.client.inventory.common.detail.summary.AbstractActivityView.ChartViewWindow; import org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.D3GraphListView; +import org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository; import org.rhq.enterprise.gui.coregui.client.util.GwtRelativeDurationConverter; import org.rhq.enterprise.gui.coregui.client.util.Log;
+import java.util.Arrays; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.Set; + /**This portlet allows the end user to customize the OOB display * * @author Simeon Pinder @@ -94,6 +101,7 @@ public class ResourceOobsPortlet extends GroupOobsPortlet {
ResourceCriteria criteria = new ResourceCriteria(); criteria.addFilterId(resourceId); + criteria.fetchResourceType(true);
//locate the resource GWTServiceLookup.getResourceService().findResourceCompositesByCriteria(criteria, @@ -109,6 +117,40 @@ public class ResourceOobsPortlet extends GroupOobsPortlet { if (!results.isEmpty()) { final ResourceComposite resourceComposite = results.get(0);
+ final Resource resource = resourceComposite.getResource(); + final ResourceType resourceType = resource.getResourceType(); + + ResourceTypeRepository.Cache.getInstance().getResourceTypes( + resourceType.getId(), + EnumSet.of(ResourceTypeRepository.MetadataType.measurements), + new ResourceTypeRepository.TypeLoadedCallback() { + public void onTypesLoaded(ResourceType type) { + resource.setResourceType(type); + //metric definitions + final Set<MeasurementDefinition> definitions = type.getMetricDefinitions(); + + //build id mapping for measurementDefinition instances Ex. Free Memory -> MeasurementDefinition[100071] + HashMap<String, MeasurementDefinition> measurementDefMapTemp = new HashMap<String, MeasurementDefinition>(); + for (MeasurementDefinition definition : definitions) { + if(null != definition){ + measurementDefMapTemp.put(definition.getDisplayName(), definition); + } + } + final HashMap<String, MeasurementDefinition> measurementDefMap = new HashMap<String, MeasurementDefinition>(measurementDefMapTemp); + //bundle definition ids for asynch call. + int[] definitionArrayIds = new int[definitions.size()]; + final String[] displayOrder = new String[definitions.size()]; + measurementDefMap.keySet().toArray(displayOrder); + //sort the charting data ex. Free Memory, Free Swap Space,..System Load + Arrays.sort(displayOrder); + + //organize definitionArrayIds for ordered request on server. + int index = 0; + for (String definitionToDisplay : displayOrder) { + definitionArrayIds[index++] = measurementDefMap.get(definitionToDisplay) + .getId(); + } +
GWTServiceLookup.getMeasurementDataService().getHighestNOOBsForResource(resourceId, Integer.valueOf(resultCount), new AsyncCallback<PageList<MeasurementOOBComposite>>() { @@ -169,6 +211,8 @@ public class ResourceOobsPortlet extends GroupOobsPortlet { } }); } + }); + } } });
commit 2321656e208cdea8180e633885c0f0b316c9b451 Author: mtho11 mikecthompson@gmail.com Date: Fri Aug 16 16:42:53 2013 -0700
Make group and resource OOB portlets use new d3 graphs instead of portal.war graphs.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupOobsPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupOobsPortlet.java index 0641b68..756b5cf 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupOobsPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/groups/GroupOobsPortlet.java @@ -38,10 +38,11 @@ import com.smartgwt.client.widgets.layout.VLayout; import org.rhq.core.domain.common.EntityContext; import org.rhq.core.domain.configuration.Configuration; import org.rhq.core.domain.configuration.PropertySimple; +import org.rhq.core.domain.criteria.ResourceGroupCriteria; import org.rhq.core.domain.dashboard.DashboardPortlet; import org.rhq.core.domain.measurement.composite.MeasurementOOBComposite; +import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite; import org.rhq.core.domain.util.PageList; -import org.rhq.enterprise.gui.coregui.client.components.FullHTMLPane; import org.rhq.enterprise.gui.coregui.client.dashboard.AutoRefreshPortlet; import org.rhq.enterprise.gui.coregui.client.dashboard.AutoRefreshUtil; import org.rhq.enterprise.gui.coregui.client.dashboard.CustomSettingsPortlet; @@ -53,6 +54,7 @@ import org.rhq.enterprise.gui.coregui.client.dashboard.portlets.PortletConfigura import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; import org.rhq.enterprise.gui.coregui.client.inventory.common.detail.summary.AbstractActivityView; import org.rhq.enterprise.gui.coregui.client.inventory.common.detail.summary.AbstractActivityView.ChartViewWindow; +import org.rhq.enterprise.gui.coregui.client.inventory.groups.detail.D3GroupGraphListView; import org.rhq.enterprise.gui.coregui.client.util.GwtRelativeDurationConverter; import org.rhq.enterprise.gui.coregui.client.util.Log; import org.rhq.enterprise.gui.coregui.client.util.enhanced.EnhancedVLayout; @@ -69,6 +71,8 @@ public class GroupOobsPortlet extends EnhancedVLayout implements CustomSettingsP public static final String NAME = MSG.view_portlet_defaultName_group_oobs(); public static final String ID = "id";
+ private EntityContext groupContext; + private int groupId = -1; protected Canvas recentOobContent = new Canvas(); protected boolean currentlyLoading = false; @@ -88,6 +92,7 @@ public class GroupOobsPortlet extends EnhancedVLayout implements CustomSettingsP public GroupOobsPortlet(int groupId) { super(); this.groupId = groupId; + groupContext = EntityContext.forGroup(groupId); }
@Override @@ -193,76 +198,118 @@ public class GroupOobsPortlet extends EnhancedVLayout implements CustomSettingsP final Configuration portletConfig = storedPortlet.getConfiguration();
final int groupId = this.groupId; - int resultCount = 5;//default to
//result count PropertySimple property = portletConfig.getSimple(Constant.RESULT_COUNT); - if (property != null) { - String currentSetting = property.getStringValue(); - if (currentSetting.trim().isEmpty() || currentSetting.equalsIgnoreCase("5")) { - resultCount = 5; - } else { - resultCount = Integer.valueOf(currentSetting); - } + String currentSetting = property.getStringValue(); + final int resultCountFinal = (currentSetting.trim().isEmpty() || currentSetting.equalsIgnoreCase("5")) ? 5: Integer.valueOf(currentSetting); + + //locate resourceGroupRef + ResourceGroupCriteria criteria = new ResourceGroupCriteria(); + criteria.addFilterId(groupId); + criteria.fetchConfigurationUpdates(false); + criteria.fetchExplicitResources(false); + criteria.fetchGroupDefinition(false); + criteria.fetchOperationHistories(false); + + // for autoclusters and autogroups we need to add more criteria + final boolean isAutoCluster = isAutoCluster(); + final boolean isAutoGroup = isAutoGroup(); + if (isAutoCluster) { + criteria.addFilterVisible(false); + } else if (isAutoGroup) { + criteria.addFilterVisible(false); + criteria.addFilterPrivate(true); }
- GWTServiceLookup.getMeasurementDataService().getHighestNOOBsForGroup(groupId, resultCount, - new AsyncCallback<PageList<MeasurementOOBComposite>>() { - @Override - public void onFailure(Throwable caught) { - Log.debug("Error retrieving recent out of bound metrics for group [" + groupId + "]:" - + caught.getMessage()); - currentlyLoading = false; - } - - @Override - public void onSuccess(PageList<MeasurementOOBComposite> result) { - VLayout column = new VLayout(); - column.setHeight(10); - if (!result.isEmpty()) { - for (MeasurementOOBComposite oob : result) { - DynamicForm row = new DynamicForm(); - row.setNumCols(2); - - final String title = oob.getScheduleName(); - final String destination = "/resource/common/monitor/Visibility.do?m=" - // + oob.getDefinitionId() + "&id=" + groupId + "&mode=chartSingleMetricSingleResource"; - + oob.getDefinitionId() + "&groupId=" + groupId - + "&mode=chartSingleMetricSingleResource"; - LinkItem link = AbstractActivityView.newLinkItem(title, destination); - link.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - ChartViewWindow window = new ChartViewWindow(title); - //generate and include iframed content - FullHTMLPane iframe = new FullHTMLPane(destination); - window.addItem(iframe); - window.show(); - } - }); - - StaticTextItem time = AbstractActivityView.newTextItem(GwtRelativeDurationConverter - .format(oob.getTimestamp())); - - row.setItems(link, time); - column.addMember(row); - } - //insert see more link spinder(2/24/11): no page that displays all oobs... See More not possible. - } else { - DynamicForm row = AbstractActivityView - .createEmptyDisplayRow(AbstractActivityView.RECENT_OOB_NONE); - column.addMember(row); + //locate the resource group + GWTServiceLookup.getResourceGroupService().findResourceGroupCompositesByCriteria(criteria, + new AsyncCallback<PageList<ResourceGroupComposite>>() { + @Override + public void onFailure(Throwable caught) { + Log.debug("Error retrieving resource group composite for group [" + groupId + "]:" + + caught.getMessage()); } - recentOobContent.setContents(""); - for (Canvas child : recentOobContent.getChildren()) { - child.destroy(); + + @Override + public void onSuccess(PageList<ResourceGroupComposite> results) { + if (!results.isEmpty()) { + final ResourceGroupComposite groupComposite = results.get(0); + + + GWTServiceLookup.getMeasurementDataService().getHighestNOOBsForGroup(groupId, resultCountFinal, + new AsyncCallback<PageList<MeasurementOOBComposite>>() { + @Override + public void onFailure(Throwable caught) { + Log.debug("Error retrieving recent out of bound metrics for group [" + groupId + "]:" + + caught.getMessage()); + currentlyLoading = false; + } + + @Override + public void onSuccess(PageList<MeasurementOOBComposite> result) { + VLayout column = new VLayout(); + column.setHeight(10); + if (!result.isEmpty()) { + for (final MeasurementOOBComposite oob : result) { + DynamicForm row = new DynamicForm(); + row.setNumCols(2); + + final String title = oob.getScheduleName(); + LinkItem link = new LinkItem(); + link.setLinkTitle(title); + link.setTitle(title); + link.setShowTitle(false); + link.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + ChartViewWindow window = new ChartViewWindow(title); + D3GroupGraphListView graphView = new D3GroupGraphListView + (groupComposite.getResourceGroup(), false); + + window.addItem(graphView); + window.show(); + + } + }); + + StaticTextItem time = AbstractActivityView.newTextItem(GwtRelativeDurationConverter + .format(oob.getTimestamp())); + + row.setItems(link, time); + column.addMember(row); + } + //insert see more link spinder(2/24/11): no page that displays all oobs... See More not possible. + } else { + DynamicForm row = AbstractActivityView + .createEmptyDisplayRow(AbstractActivityView.RECENT_OOB_NONE); + column.addMember(row); + } + recentOobContent.setContents(""); + for (Canvas child : recentOobContent.getChildren()) { + child.destroy(); + } + recentOobContent.addChild(column); + recentOobContent.markForRedraw(); + currentlyLoading = false; + markForRedraw(); + } + }); + + } } - recentOobContent.addChild(column); - recentOobContent.markForRedraw(); - currentlyLoading = false; - markForRedraw(); - } - }); + }); + + + + } + + private boolean isAutoGroup() { + return groupContext.isAutoGroup(); + } + + private boolean isAutoCluster() { + return groupContext.isAutoCluster(); }
public void startRefreshCycle() { diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceOobsPortlet.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceOobsPortlet.java index 51ab846..10d3323 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceOobsPortlet.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/resource/ResourceOobsPortlet.java @@ -29,8 +29,11 @@ import com.smartgwt.client.widgets.layout.VLayout;
import org.rhq.core.domain.common.EntityContext; import org.rhq.core.domain.configuration.Configuration; +import org.rhq.core.domain.criteria.ResourceCriteria; import org.rhq.core.domain.dashboard.DashboardPortlet; import org.rhq.core.domain.measurement.composite.MeasurementOOBComposite; +import org.rhq.core.domain.resource.Resource; +import org.rhq.core.domain.resource.composite.ResourceComposite; import org.rhq.core.domain.util.PageList; import org.rhq.enterprise.gui.coregui.client.components.FullHTMLPane; import org.rhq.enterprise.gui.coregui.client.dashboard.Portlet; @@ -40,6 +43,7 @@ import org.rhq.enterprise.gui.coregui.client.dashboard.portlets.groups.GroupOobs import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup; import org.rhq.enterprise.gui.coregui.client.inventory.common.detail.summary.AbstractActivityView; import org.rhq.enterprise.gui.coregui.client.inventory.common.detail.summary.AbstractActivityView.ChartViewWindow; +import org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.D3GraphListView; import org.rhq.enterprise.gui.coregui.client.util.GwtRelativeDurationConverter; import org.rhq.enterprise.gui.coregui.client.util.Log;
@@ -84,64 +88,91 @@ public class ResourceOobsPortlet extends GroupOobsPortlet { final int resourceId = this.resourceId;
//result count - String resultCount = portletConfig.getSimpleValue(Constant.RESULT_COUNT, Constant.RESULT_COUNT_DEFAULT); - if (resultCount.trim().isEmpty()) { - resultCount = Constant.RESULT_COUNT_DEFAULT; - } + final String resultCount; + String resultCountRaw = portletConfig.getSimpleValue(Constant.RESULT_COUNT, Constant.RESULT_COUNT_DEFAULT); + resultCount = (resultCountRaw.trim().isEmpty()) ? Constant.RESULT_COUNT_DEFAULT : resultCountRaw; + + ResourceCriteria criteria = new ResourceCriteria(); + criteria.addFilterId(resourceId); + + //locate the resource + GWTServiceLookup.getResourceService().findResourceCompositesByCriteria(criteria, + new AsyncCallback<PageList<ResourceComposite>>() { + @Override + public void onFailure(Throwable caught) { + Log.debug("Error retrieving resource resource composite for resource [" + resourceId + "]:" + + caught.getMessage()); + } + + @Override + public void onSuccess(PageList<ResourceComposite> results) { + if (!results.isEmpty()) { + final ResourceComposite resourceComposite = results.get(0); +
- GWTServiceLookup.getMeasurementDataService().getHighestNOOBsForResource(resourceId, - Integer.valueOf(resultCount), new AsyncCallback<PageList<MeasurementOOBComposite>>() { - @Override - public void onFailure(Throwable caught) { - Log.debug("Error retrieving out of bound metrics for resource [" + resourceId + "]:" - + caught.getMessage()); - currentlyLoading = false; - } - - @Override - public void onSuccess(PageList<MeasurementOOBComposite> result) { - VLayout column = new VLayout(); - column.setHeight(10); - if (!result.isEmpty()) { - for (MeasurementOOBComposite oob : result) { - DynamicForm row = new DynamicForm(); - row.setNumCols(2); - - final String title = oob.getScheduleName(); - final String destination = "/resource/common/monitor/Visibility.do?m=" - + oob.getDefinitionId() + "&id=" + resourceId + "&mode=chartSingleMetricSingleResource"; - LinkItem link = AbstractActivityView.newLinkItem(title, destination); - link.addClickHandler(new ClickHandler() { + GWTServiceLookup.getMeasurementDataService().getHighestNOOBsForResource(resourceId, + Integer.valueOf(resultCount), new AsyncCallback<PageList<MeasurementOOBComposite>>() { @Override - public void onClick(ClickEvent event) { - ChartViewWindow window = new ChartViewWindow(title); - //generate and include iframed content - FullHTMLPane iframe = new FullHTMLPane(destination); - window.addItem(iframe); - window.show(); + public void onFailure(Throwable caught) { + Log.debug("Error retrieving out of bound metrics for resource [" + resourceId + "]:" + + caught.getMessage()); + currentlyLoading = false; } - }); - - StaticTextItem time = AbstractActivityView.newTextItem(GwtRelativeDurationConverter - .format(oob.getTimestamp()));
- row.setItems(link, time); - column.addMember(row); + @Override + public void onSuccess(PageList<MeasurementOOBComposite> result) { + VLayout column = new VLayout(); + column.setHeight(10); + if (!result.isEmpty()) { + for (final MeasurementOOBComposite oob : result) { + DynamicForm row = new DynamicForm(); + row.setNumCols(2); + + final String title = oob.getScheduleName(); + + LinkItem link = new LinkItem(); + link.setLinkTitle(title); + link.setTitle(title); + link.setShowTitle(false); + link.addClickHandler(new ClickHandler() { + @Override + public void onClick(ClickEvent event) { + ChartViewWindow window = new ChartViewWindow(title); + D3GraphListView graphView = D3GraphListView + .createSingleGraph(resourceComposite.getResource(), + oob.getDefinitionId(), true); + + window.addItem(graphView); + window.show(); + } + }); + + StaticTextItem time = AbstractActivityView.newTextItem(GwtRelativeDurationConverter + .format(oob.getTimestamp())); + + row.setItems(link, time); + column.addMember(row); + } + //insert see more link spinder(2/24/11): no page that displays all oobs... See More not possible. + } else { + DynamicForm row = AbstractActivityView + .createEmptyDisplayRow(AbstractActivityView.RECENT_OOB_NONE); + column.addMember(row); + } + recentOobContent.setContents(""); + for (Canvas child : recentOobContent.getChildren()) { + child.destroy(); + } + recentOobContent.addChild(column); + currentlyLoading = false; + recentOobContent.markForRedraw(); + } + }); } - //insert see more link spinder(2/24/11): no page that displays all oobs... See More not possible. - } else { - DynamicForm row = AbstractActivityView - .createEmptyDisplayRow(AbstractActivityView.RECENT_OOB_NONE); - column.addMember(row); - } - recentOobContent.setContents(""); - for (Canvas child : recentOobContent.getChildren()) { - child.destroy(); } - recentOobContent.addChild(column); - currentlyLoading = false; - recentOobContent.markForRedraw(); - } - }); + }); + + + } } \ No newline at end of file
rhq-commits@lists.fedorahosted.org