.classpath
| 2
.mailmap
| 2
etc/rhq-ircBot/pom.xml
| 8
etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/GDocParser.java
| 79 +
etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
| 33
etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBotListener.java
| 80 -
etc/rhq-ircBot/src/main/resources/org/rhq/etc/ircbot/rhq-ircbot.properties
| 3
modules/core/domain/src/main/java/org/rhq/core/domain/resource/Agent.java
| 48
modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/availability/AvailabilityCollectorRunnable.java
| 166 --
modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/availability/AvailabilityContext.java
| 35
modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/avail/AvailTest.java
| 29
modules/core/plugin-container/pom.xml
| 5
modules/core/plugin-container/src/main/java/org/rhq/core/pc/availability/AvailabilityCollectorThreadPool.java
| 105 -
modules/core/plugin-container/src/main/java/org/rhq/core/pc/availability/AvailabilityContextImpl.java
| 23
modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityProxy.java
| 72 -
modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
| 20
modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/ResourceContainer.java
| 13
modules/core/plugin-container/src/main/java/org/rhq/core/pc/plugin/CanonicalResourceKey.java
| 6
modules/core/plugin-container/src/test/java/org/rhq/core/pc/availability/AvailabilityCollectorTest.java
| 88 -
modules/core/plugin-container/src/test/java/org/rhq/core/pc/inventory/AvailabilityProxyConcurrencyTest.java
| 53
modules/core/plugin-container/src/test/java/org/rhq/core/pc/inventory/AvailabilityProxyTest.java
| 41
modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
| 35
modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/PluginUpdate.java
| 12
modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/dashboard/portlets/groups/GroupMetricsPortlet.java
| 442 +++----
modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/dashboard/portlets/resource/ResourceMetricsPortlet.java
| 286 ----
modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
| 2
modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupTableView.java
| 56
modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupView.java
| 20
modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupViewDataSource.java
| 222 ---
modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/resource/detail/monitoring/table/MetricsTableView.java
| 2
modules/enterprise/gui/coregui/src/main/resources/org/rhq/coregui/client/Messages_de.properties
| 601 +++++++++-
modules/enterprise/gui/coregui/src/main/resources/org/rhq/coregui/client/Messages_ja.properties
| 210 +--
modules/enterprise/remoting/cli/src/main/samples/modules/rhq.storage.sizing.js
| 375 ++++++
modules/enterprise/remoting/cli/src/main/samples/modules/util.js
| 94 +
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
| 27
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerLocal.java
| 47
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/AvailabilityManagerBean.java
| 18
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
| 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AbstractRestBean.java
| 6
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertDefinitionHandlerBean.java
| 4
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
| 68 +
modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/RHQControl.java
| 45
modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
| 114 -
modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/MetricsTest.java
| 90 +
modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/d/Schedule.java
| 56
modules/plugins/database/src/test/java/org/rhq/plugins/database/ComponentTest.java
| 14
modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerComponent.java
| 37
modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerPluginConfigurationProperties.java
| 1
modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
| 7
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
| 49
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
| 43
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DeploymentComponent.java
| 46
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDeploymentComponent.java
| 21
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Ejb3BeanRuntimeComponent.java
| 17
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java
| 53
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/MemoryPoolComponent.java
| 88 +
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterConfigurationDiscovery.java
| 11
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextComponent.java
| 21
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
| 4
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/VHostComponent.java
| 8
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/WebRuntimeComponent.java
| 29
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/helper/ServerPluginConfiguration.java
| 9
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
| 63 -
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractJBossAS7PluginTest.java
| 18
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainServerComponentTest.java
| 6
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/ManagedServerTest.java
| 5
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/StandaloneServerComponentTest.java
| 5
modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/JBossASServerComponent.java
| 36
modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
| 6
modules/plugins/mysql/src/test/java/org/rhq/plugins/mysql/ComponentTest.java
| 14
modules/plugins/oracle/src/test/java/org/rhq/plugins/oracle/ComponentTest.java
| 7
modules/plugins/snmptrapd/src/test/java/org/rhq/plugins/snmptrapd/ComponentTest.java
| 3
pom.xml
| 2
73 files changed, 2563 insertions(+), 1805 deletions(-)
New commits:
commit b884f52f177dee948ec9fedcc133611eef3c2f91
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Thu Dec 12 09:34:07 2013 -0800
[BZ 1034512] Update group metric graphs change live metrics to last values for
performance reasons.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
index a355003..8394217 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/ResourceGroupDetailView.java
@@ -333,7 +333,7 @@ public class ResourceGroupDetailView extends
viewFactory = (!showOnPage) ? null : new ViewFactory() {
@Override
public Canvas createView() {
- return MetricsGroupView.create(groupComposite);
+ return MetricsGroupView.create(groupComposite.getResourceGroup());
}
};
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupTableView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupTableView.java
index e1e0c2c..bd9762b 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupTableView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupTableView.java
@@ -59,19 +59,16 @@ import org.rhq.core.domain.dashboard.DashboardPortlet;
import org.rhq.core.domain.measurement.MeasurementDefinition;
import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite;
import org.rhq.core.domain.resource.group.ResourceGroup;
-import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
import org.rhq.core.domain.util.PageList;
import org.rhq.coregui.client.CoreGUI;
import org.rhq.coregui.client.components.table.Table;
import
org.rhq.coregui.client.dashboard.portlets.inventory.groups.graph.ResourceGroupD3GraphPortlet;
-import
org.rhq.coregui.client.dashboard.portlets.inventory.resource.graph.ResourceD3GraphPortlet;
import org.rhq.coregui.client.gwt.GWTServiceLookup;
import org.rhq.coregui.client.inventory.common.AbstractD3GraphListView;
import org.rhq.coregui.client.inventory.common.graph.CustomDateRangeState;
import org.rhq.coregui.client.inventory.common.graph.MetricGraphData;
import org.rhq.coregui.client.inventory.common.graph.Refreshable;
import
org.rhq.coregui.client.inventory.common.graph.graphtype.StackedBarMetricGraphImpl;
-import org.rhq.coregui.client.inventory.groups.detail.D3GroupGraphListView;
import org.rhq.coregui.client.inventory.resource.detail.monitoring.MetricD3Graph;
import org.rhq.coregui.client.util.BrowserUtility;
import org.rhq.coregui.client.util.Log;
@@ -97,14 +94,14 @@ public class MetricsGroupTableView extends
Table<MetricsGroupViewDataSource> imp
private MetricsTableListGrid metricsTableListGrid;
private int selectedMetricDefinitionId;
- public MetricsGroupTableView(ResourceGroupComposite resourceGroupComposite,
AbstractD3GraphListView abstractD3GraphListView,
- Set<Integer> expandedRows) {
+ public MetricsGroupTableView(ResourceGroup resourceGroup, AbstractD3GraphListView
abstractD3GraphListView,
+ Set<Integer> expandedRows) {
super();
- this.resourceGroup = resourceGroupComposite.getResourceGroup();
+ this.resourceGroup = resourceGroup;
this.abstractD3GraphListView = abstractD3GraphListView;
dashboardMenuMap = new LinkedHashMap<String, String>();
dashboardMap = new LinkedHashMap<Integer, Dashboard>();
- setDataSource(new MetricsGroupViewDataSource(resourceGroupComposite));
+ setDataSource(new MetricsGroupViewDataSource(resourceGroup));
this.expandedRows = expandedRows;
}
@@ -175,7 +172,8 @@ public class MetricsGroupTableView extends
Table<MetricsGroupViewDataSource> imp
addToDashboardButton.addClickHandler(new
com.smartgwt.client.widgets.events.ClickHandler() {
@Override
public void onClick(ClickEvent clickEvent) {
- for (MeasurementDefinition measurementDefinition :
resourceGroup.getResourceType().getMetricDefinitions()) {
+ for (MeasurementDefinition measurementDefinition :
resourceGroup.getResourceType()
+ .getMetricDefinitions()) {
if (measurementDefinition.getId() == selectedMetricDefinitionId) {
Log.debug("Add to Dashboard -- Storing: " +
measurementDefinition.getDisplayName() + " in "
+ selectedDashboard.getName());
@@ -238,26 +236,24 @@ public class MetricsGroupTableView extends
Table<MetricsGroupViewDataSource> imp
}
private void storeDashboardMetric(Dashboard dashboard, int resourceGroupId,
MeasurementDefinition definition) {
- DashboardPortlet dashboardPortlet = new
DashboardPortlet(MSG.view_tree_common_contextMenu_resourceGraph(),
- ResourceD3GraphPortlet.KEY, 200);
+
+ DashboardPortlet dashboardPortlet = new
DashboardPortlet(MSG.view_tree_common_contextMenu_groupGraph(),
+ ResourceGroupD3GraphPortlet.KEY, 260);
dashboardPortlet.getConfiguration().put(
new PropertySimple(ResourceGroupD3GraphPortlet.CFG_RESOURCE_GROUP_ID,
resourceGroupId));
- dashboardPortlet.getConfiguration().put(
- new PropertySimple(ResourceGroupD3GraphPortlet.CFG_DEFINITION_ID,
definition.getId()));
+ dashboardPortlet.getConfiguration().put(new
PropertySimple(ResourceGroupD3GraphPortlet.CFG_DEFINITION_ID, definition.getId()));
dashboard.addPortlet(dashboardPortlet);
GWTServiceLookup.getDashboardService().storeDashboard(dashboard, new
AsyncCallback<Dashboard>() {
-
public void onFailure(Throwable caught) {
CoreGUI.getErrorHandler().handleError(MSG.view_tree_common_contextMenu_saveChartToDashboardFailure(),
- caught);
+ caught);
}
public void onSuccess(Dashboard result) {
- CoreGUI.getMessageCenter().notify(
- new
Message(MSG.view_tree_common_contextMenu_saveChartToDashboardSuccessful(result.getName()),
- Message.Severity.Info));
+ String msg =
MSG.view_tree_common_contextMenu_saveChartToDashboardSuccessful(result.getName());
+ CoreGUI.getMessageCenter().notify(new Message(msg,
Message.Severity.Info));
}
});
}
@@ -318,7 +314,6 @@ public class MetricsGroupTableView extends
Table<MetricsGroupViewDataSource> imp
}
public void expandOpenedRows() {
-
int startRow = 0;
int endRow = this.getRecords().length;
for (int i = startRow; i < endRow; i++) {
@@ -340,7 +335,8 @@ public class MetricsGroupTableView extends
Table<MetricsGroupViewDataSource> imp
*/
protected Canvas getExpansionComponent(final ListGridRecord record) {
final Integer definitionId =
record.getAttributeAsInt(MetricsGroupViewDataSource.FIELD_METRIC_DEF_ID);
- final Integer resourceGroupId =
record.getAttributeAsInt(MetricsGroupViewDataSource.FIELD_RESOURCE_GROUP_ID);
+ final Integer resourceGroupId = record
+ .getAttributeAsInt(MetricsGroupViewDataSource.FIELD_RESOURCE_GROUP_ID);
VLayout vLayout = new VLayout();
vLayout.setPadding(5);
@@ -351,13 +347,14 @@ public class MetricsGroupTableView extends
Table<MetricsGroupViewDataSource> imp
int[] definitionArrayIds = new int[1];
definitionArrayIds[0] = definitionId;
-
GWTServiceLookup.getMeasurementDataService().findDataForCompatibleGroup(resourceGroupId,
definitionArrayIds,
- CustomDateRangeState.getInstance().getStartTime(),
CustomDateRangeState.getInstance().getEndTime(),
- NUM_METRIC_POINTS, new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
+
GWTServiceLookup.getMeasurementDataService().findDataForCompatibleGroup(resourceGroupId,
+ definitionArrayIds, CustomDateRangeState.getInstance().getStartTime(),
+ CustomDateRangeState.getInstance().getEndTime(), NUM_METRIC_POINTS,
+ new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
@Override
public void onFailure(Throwable caught) {
- Log.warn("Error retrieving recent metrics charting data for
resource group [" + resourceGroupId + "]:"
- + caught.getMessage());
+ Log.warn("Error retrieving recent metrics charting data for
resource group [" + resourceGroupId
+ + "]:" + caught.getMessage());
}
@Override
@@ -367,22 +364,16 @@ public class MetricsGroupTableView extends
Table<MetricsGroupViewDataSource> imp
//load the data results for the given metric definition
List<MeasurementDataNumericHighLowComposite>
measurementList = results.get(0);
- Log.debug("\n*** MD count:
"+group.getResourceType().getMetricDefinitions().size());
- Log.debug("\n*** MD id: "+definitionId);
-
-
MeasurementDefinition measurementDefinition = null;
for (MeasurementDefinition definition :
group.getResourceType().getMetricDefinitions()) {
- Log.debug("\n*** MD name:
"+definition.getName());
if (definition.getId() == definitionId) {
measurementDefinition = definition;
- Log.debug("\n*** MD Found!!");
break;
}
}
MetricGraphData metricGraphData =
MetricGraphData.createForResourceGroup(group.getId(),
- group.getName(), measurementDefinition,
measurementList);
+ group.getName(), measurementDefinition,
measurementList);
metricGraphData.setHideLegend(true);
StackedBarMetricGraphImpl graph =
GWT.create(StackedBarMetricGraphImpl.class);
@@ -397,7 +388,8 @@ public class MetricsGroupTableView extends
Table<MetricsGroupViewDataSource> imp
}.schedule(150);
} else {
- Log.warn("No chart data retrieving for resource group
[" + resourceGroupId + "-" + definitionId + "]");
+ Log.warn("No chart data retrieving for resource group
[" + resourceGroupId + "-"
+ + definitionId + "]");
}
}
});
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupView.java
index 13c3bda..ed26dad 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupView.java
@@ -32,12 +32,12 @@ import com.smartgwt.client.widgets.events.ClickHandler;
import org.rhq.core.domain.common.EntityContext;
import org.rhq.core.domain.measurement.Availability;
import org.rhq.core.domain.resource.group.ResourceGroup;
-import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
import org.rhq.coregui.client.CoreGUI;
import org.rhq.coregui.client.IconEnum;
import org.rhq.coregui.client.gwt.GWTServiceLookup;
import org.rhq.coregui.client.inventory.common.AbstractD3GraphListView;
import org.rhq.coregui.client.inventory.common.detail.AbstractTwoLevelTabSetView;
+import org.rhq.coregui.client.inventory.common.graph.CustomDateRangeState;
import
org.rhq.coregui.client.inventory.common.graph.graphtype.AvailabilityOverUnderGraphType;
import org.rhq.coregui.client.inventory.resource.detail.monitoring.ExpandedRowsMomento;
import
org.rhq.coregui.client.inventory.resource.detail.monitoring.avail.AvailabilityD3GraphView;
@@ -68,9 +68,9 @@ public class MetricsGroupView extends AbstractD3GraphListView
implements
* @param group
* @return MetricsGroupView
*/
- public static MetricsGroupView create(ResourceGroupComposite group ){
+ public static MetricsGroupView create(ResourceGroup group ){
- boolean isDifferentResource = (group.getResourceGroup().getId() !=
lastResourceGroupId);
+ boolean isDifferentResource = (group.getId() != lastResourceGroupId);
if(isDifferentResource){
ExpandedRowsMomento.getInstance().clear();
@@ -80,13 +80,13 @@ public class MetricsGroupView extends AbstractD3GraphListView
implements
}
- private MetricsGroupView(ResourceGroupComposite resourceGroupComposite,
Set<Integer> expandedRows) {
+ private MetricsGroupView(ResourceGroup resourceGroup, Set<Integer>
expandedRows) {
super();
setOverflow(Overflow.AUTO);
setWidth100();
setHeight100();
- this.resourceGroup = resourceGroupComposite.getResourceGroup();
- metricsTableView = new MetricsGroupTableView(resourceGroupComposite, this,
expandedRows);
+ this.resourceGroup = resourceGroup;
+ metricsTableView = new MetricsGroupTableView(resourceGroup, this, expandedRows);
final MetricAvailabilityView availabilityDetails = new
MetricAvailabilityView(resourceGroup.getId());
availabilityDetails.hide();
@@ -139,8 +139,8 @@ public class MetricsGroupView extends AbstractD3GraphListView
implements
expandCollapseHLayout.addMember(availabilityGraph);
- queryAvailability(EntityContext.forGroup(resourceGroup.getId()),
buttonBarDateTimeRangeEditor.getStartTime(),
- buttonBarDateTimeRangeEditor.getEndTime(), null);
+ queryAvailability(EntityContext.forGroup(resourceGroup.getId()),
CustomDateRangeState.getInstance().getStartTime(),
+ CustomDateRangeState.getInstance().getEndTime(), null);
}
}
@@ -149,7 +149,7 @@ public class MetricsGroupView extends AbstractD3GraphListView
implements
protected void queryAvailability(final EntityContext context, Long startTime, Long
endTime, CountDownLatch notUsed) {
// now return the availability
-
GWTServiceLookup.getAvailabilityService().getAvailabilitiesForResource(context.getResourceId(),
startTime,
+
GWTServiceLookup.getAvailabilityService().getAvailabilitiesForResource(context.getGroupId(),
startTime,
endTime, new AsyncCallback<List<Availability>>() {
@Override
public void onFailure(Throwable caught) {
@@ -162,8 +162,8 @@ public class MetricsGroupView extends AbstractD3GraphListView
implements
new Timer() {
@Override
public void run() {
- availabilityGraph.drawJsniChart();
buttonBarDateTimeRangeEditor.updateTimeRangeToNow();
+ availabilityGraph.drawJsniChart();
}
}.schedule(150);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupViewDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupViewDataSource.java
index 0a11569..101e70d 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupViewDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupViewDataSource.java
@@ -31,8 +31,6 @@ import java.util.Set;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException;
-import com.google.gwt.user.client.rpc.InvocationException;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
import com.smartgwt.client.data.Record;
@@ -41,23 +39,17 @@ import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import org.rhq.core.domain.criteria.Criteria;
-import org.rhq.core.domain.measurement.DataType;
-import org.rhq.core.domain.measurement.MeasurementData;
import org.rhq.core.domain.measurement.MeasurementDefinition;
-import org.rhq.core.domain.measurement.MeasurementSchedule;
-import org.rhq.core.domain.measurement.MeasurementUnits;
import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite;
+import org.rhq.core.domain.measurement.ui.MetricDisplayConstants;
import org.rhq.core.domain.measurement.ui.MetricDisplaySummary;
import org.rhq.core.domain.measurement.ui.MetricDisplayValue;
-import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.group.ResourceGroup;
-import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
import org.rhq.coregui.client.CoreGUI;
import org.rhq.coregui.client.gwt.GWTServiceLookup;
import org.rhq.coregui.client.inventory.common.graph.CustomDateRangeState;
import org.rhq.coregui.client.util.BrowserUtility;
import org.rhq.coregui.client.util.Log;
-import org.rhq.coregui.client.util.MeasurementConverterClient;
import org.rhq.coregui.client.util.MeasurementUtility;
import org.rhq.coregui.client.util.RPCDataSource;
import org.rhq.coregui.client.util.async.Command;
@@ -82,23 +74,19 @@ public class MetricsGroupViewDataSource extends
RPCDataSource<MetricDisplaySumma
public static final String FIELD_MIN_VALUE = "min";
public static final String FIELD_MAX_VALUE = "max";
public static final String FIELD_AVG_VALUE = "avg";
- public static final String FIELD_LIVE_VALUE = "live";
public static final String FIELD_METRIC_DEF_ID = "defId";
public static final String FIELD_METRIC_SCHED_ID = "schedId";
public static final String FIELD_METRIC_UNITS = "units";
public static final String FIELD_METRIC_NAME = "name";
public static final String FIELD_RESOURCE_GROUP_ID = "resourceGroupId";
- private final ResourceGroupComposite groupComposite;
+ private final ResourceGroup resourceGroup;
private List<MetricDisplaySummary> metricDisplaySummaries;
private List<List<MeasurementDataNumericHighLowComposite>>
metricsDataList;
- private Set<MeasurementData> liveMeasurementDataSet;
private int[] definitionArrayIds;
- private int[] scheduleIds;
- private HashMap<Integer, MeasurementUnits> scheduleToMeasurementUnitMap = new
HashMap<Integer, MeasurementUnits>();
- public MetricsGroupViewDataSource(ResourceGroupComposite groupComposite) {
- this.groupComposite = groupComposite;
+ public MetricsGroupViewDataSource(ResourceGroup resourceGroup) {
+ this.resourceGroup = resourceGroup;
}
/**
@@ -117,9 +105,9 @@ public class MetricsGroupViewDataSource extends
RPCDataSource<MetricDisplaySumma
if (value == null) {
return "";
}
- String contents = "<span id='sparkline_" +
groupComposite.getResourceGroup().getId() + "-"
- + record.getAttributeAsInt(FIELD_METRIC_DEF_ID) + "'
class='dynamicsparkline' width='70' "
- + "values='" + record.getAttribute(FIELD_SPARKLINE)
+ "'></span>";
+ String contents = "<span id='sparkline_" +
resourceGroup.getId() + "-"
+ + record.getAttributeAsInt(FIELD_METRIC_DEF_ID) + "'
class='dynamicsparkline' width='70' "
+ + "values='" + record.getAttribute(FIELD_SPARKLINE) +
"'></span>";
return contents;
}
@@ -144,10 +132,6 @@ public class MetricsGroupViewDataSource extends
RPCDataSource<MetricDisplaySumma
avgField.setWidth("15%");
fields.add(avgField);
- ListGridField liveField = new ListGridField(FIELD_LIVE_VALUE,
MSG.view_resource_monitor_table_live());
- liveField.setWidth("15%");
- fields.add(liveField);
-
ListGridField alertsField = new ListGridField(FIELD_ALERT_COUNT,
MSG.common_title_alerts());
alertsField.setWidth("10%");
fields.add(alertsField);
@@ -175,38 +159,14 @@ public class MetricsGroupViewDataSource extends
RPCDataSource<MetricDisplaySumma
record.setAttribute(FIELD_MIN_VALUE, getMetricStringValue(from.getMinMetric()));
record.setAttribute(FIELD_MAX_VALUE, getMetricStringValue(from.getMaxMetric()));
record.setAttribute(FIELD_AVG_VALUE, getMetricStringValue(from.getAvgMetric()));
- record.setAttribute(FIELD_LIVE_VALUE, buildLiveValue(from));
record.setAttribute(FIELD_METRIC_DEF_ID, from.getDefinitionId());
record.setAttribute(FIELD_METRIC_SCHED_ID, from.getScheduleId());
record.setAttribute(FIELD_METRIC_UNITS, from.getUnits());
record.setAttribute(FIELD_METRIC_NAME, from.getMetricName());
- record.setAttribute(FIELD_RESOURCE_GROUP_ID,
groupComposite.getResourceGroup().getId());
+ record.setAttribute(FIELD_RESOURCE_GROUP_ID, resourceGroup.getId());
return record;
}
- private String buildLiveValue(MetricDisplaySummary from) {
- StringBuilder sb = new StringBuilder();
- for (MeasurementData measurementData : liveMeasurementDataSet) {
- if (from.getScheduleId() == measurementData.getScheduleId()) {
- double doubleValue;
- if (measurementData.getValue() instanceof Number) {
- doubleValue = ((Number) measurementData.getValue()).doubleValue();
- } else {
- doubleValue =
Double.parseDouble(measurementData.getValue().toString());
- }
-
- String value =
MeasurementConverterClient.formatToSignificantPrecision(new double[] { doubleValue },
- MeasurementUnits.valueOf(from.getUnits()), true)[0];
-
- sb.append(value);
-
- break;
- }
- }
-
- return sb.toString();
- }
-
private String getCsvMetricsForSparkline(int definitionId) {
StringBuilder sb = new StringBuilder();
List<MeasurementDataNumericHighLowComposite> selectedMetricsList =
getMeasurementsForMeasurementDefId(definitionId);
@@ -259,133 +219,56 @@ public class MetricsGroupViewDataSource extends
RPCDataSource<MetricDisplaySumma
@Override
protected void executeFetch(final DSRequest request, final DSResponse response, final
Criteria unused) {
-
GWTServiceLookup.getMeasurementScheduleService().findSchedulesForResourceAndType(groupComposite.getResourceGroup().getId(),
- DataType.MEASUREMENT, null, true, new
AsyncCallback<ArrayList<MeasurementSchedule>>() {
- @Override
- public void onSuccess(ArrayList<MeasurementSchedule>
measurementSchedules) {
- scheduleIds = new int[measurementSchedules.size()];
- int i = 0;
- for (MeasurementSchedule measurementSchedule : measurementSchedules) {
- scheduleIds[i++] = measurementSchedule.getId();
- }
-
- // This latch is the last thing that gets executed after we have executed
the
- // 2 queries in Parallel
- final CountDownLatch countDownLatch = CountDownLatch.create(2, new
Command() {
-
- @Override
- public void execute() {
- // we needed the ResourceMetrics query and Metric Display
Summary
- // to finish before we can query the live metrics and populate
the
- // result response
- queryLiveMetrics(request, response);
-
- }
- });
-
- queryResourceGroupMetrics(groupComposite.getResourceGroup(),
CustomDateRangeState.getInstance().getStartTime(),
- CustomDateRangeState.getInstance().getEndTime(),
countDownLatch);
-
- queryMetricDisplaySummaries(scheduleIds,
CustomDateRangeState.getInstance().getStartTime(),
- CustomDateRangeState.getInstance().getEndTime(),
countDownLatch);
- }
+ // This latch is the last thing that gets executed after we have executed the
+ // 1 query
+ final CountDownLatch countDownLatch = CountDownLatch.create(1, new Command() {
@Override
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Cannot load schedules",
caught);
+ public void execute() {
+
+ // NOTE: this runs after the queryMetricDisplaySummaries is complete
+ queryGroupMetrics(resourceGroup, request, response);
}
});
+
+ organizeMeasurementDefitionOrder(resourceGroup);
+ queryMetricDisplaySummaries(definitionArrayIds,
CustomDateRangeState.getInstance().getStartTime(),
+ CustomDateRangeState.getInstance().getEndTime(), countDownLatch);
+
}
- private void queryLiveMetrics(final DSRequest request, final DSResponse response) {
+ private void queryGroupMetrics(final ResourceGroup resourceGroup, final DSRequest
request, final DSResponse response) {
- // boolean isAutogroup =
groupComposite.getResourceGroup().getAutoGroupParentResource() != null;
- final Set<Resource> resources =
groupComposite.getResourceGroup().getExplicitResources();
- int resourceIds[] = new int[resources.size()];
- int i = 0;
- for (Resource resource : resources) {
- resourceIds[i] = resource.getId();
- i++;
- }
+
GWTServiceLookup.getMeasurementDataService().findDataForCompatibleGroup(resourceGroup.getId(),
+ definitionArrayIds, CustomDateRangeState.getInstance().getStartTime(),
+ CustomDateRangeState.getInstance().getEndTime(), NUMBER_OF_METRIC_POINTS,
+ new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
+ @Override
+ public void onFailure(Throwable caught) {
+ Log.warn("Error retrieving recent metrics charting data for
resource [" + resourceGroup.getId()
+ + "]:" + caught.getMessage());
+ }
- // actually go out and ask the agents for the data
-
GWTServiceLookup.getMeasurementDataService(60000).findLiveDataForGroup(groupComposite.getResourceGroup().getId(),
resourceIds, definitionArrayIds,
- new AsyncCallback<Set<MeasurementData>>() {
- @Override
- public void onSuccess(Set<MeasurementData> result) {
- if (result == null) {
- result = new HashSet<MeasurementData>(0);
- }
- liveMeasurementDataSet = result;
+ @Override
+ public void
onSuccess(List<List<MeasurementDataNumericHighLowComposite>>
measurementDataList) {
+ if (null != measurementDataList &&
!measurementDataList.isEmpty()) {
+ metricsDataList = measurementDataList;
response.setData(buildRecords(metricDisplaySummaries));
processResponse(request.getRequestId(), response);
-
new Timer() {
-
@Override
public void run() {
BrowserUtility.graphSparkLines();
}
}.schedule(150);
}
-
- /**
- * Called when an asynchronous call fails to complete normally.
{@link IncompatibleRemoteServiceException}s, {@link
- * InvocationException}s, or checked exceptions thrown by the service
method are examples of the type of failures that
- * can be passed to this method.
- * <p/>
- * <p> If <code>caught</code> is an instance of an
{@link IncompatibleRemoteServiceException} the application should
- * try to get into a state where a browser refresh can be safely
done. </p>
- *
- * @param caught failure encountered while executing a remote
procedure call
- */
- @Override
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Cannot load
metrics", caught);
- }
- });
- }
-
- private void queryMetricDisplaySummaries(int[] scheduleIds, Long startTime, Long
endTime,
- final CountDownLatch countDownLatch) {
-
GWTServiceLookup.getMeasurementChartsService().getMetricDisplaySummariesForResource(groupComposite.getResourceGroup().getId(),
- scheduleIds, startTime, endTime, new
AsyncCallback<ArrayList<MetricDisplaySummary>>() {
- @Override
- public void onSuccess(ArrayList<MetricDisplaySummary>
metricDisplaySummaries) {
- setMetricDisplaySummaries(metricDisplaySummaries);
- countDownLatch.countDown();
}
+ });
- @Override
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError("Cannot load
metrics", caught);
- countDownLatch.countDown();
- }
- }
-
- );
- }
-
- private void setMetricDisplaySummaries(List<MetricDisplaySummary>
metricDisplaySummaries) {
- this.metricDisplaySummaries = metricDisplaySummaries;
}
- private void queryResourceGroupMetrics(final ResourceGroup resource, final Long
startTime, final Long endTime,
- final CountDownLatch countDownLatch) {
- HashSet<MeasurementDefinition> definitions =
getMetricDefinitions(resource);
- if (definitions.size() == 0) {
- countDownLatch.countDown();
- return;
- }
-
- // create a mapping of schedules ids to MeasurementUnits
- for (MeasurementDefinition definition : definitions) {
- if (null != definition.getSchedules()) {
- for (MeasurementSchedule schedule : definition.getSchedules()) {
- scheduleToMeasurementUnitMap.put(schedule.getId(),
definition.getUnits());
- }
- }
- }
+ private void organizeMeasurementDefitionOrder(ResourceGroup resourceGroup) {
+ Set<MeasurementDefinition> definitions =
getMetricDefinitions(resourceGroup);
//build id mapping for measurementDefinition instances Ex. Free Memory ->
MeasurementDefinition[100071]
final HashMap<String, MeasurementDefinition> measurementDefMap = new
HashMap<String, MeasurementDefinition>();
@@ -404,30 +287,35 @@ public class MetricsGroupViewDataSource extends
RPCDataSource<MetricDisplaySumma
for (String definitionToDisplay : displayOrder) {
definitionArrayIds[index++] =
measurementDefMap.get(definitionToDisplay).getId();
}
+ }
-
GWTServiceLookup.getMeasurementDataService().findDataForCompatibleGroup(resource.getId(),
definitionArrayIds,
- startTime, endTime, NUMBER_OF_METRIC_POINTS,
- new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
+ private void queryMetricDisplaySummaries(int[] measurementDefIds, Long startTime,
Long endTime,
+ final CountDownLatch countDownLatch) {
+
GWTServiceLookup.getMeasurementChartsService().getMetricDisplaySummariesForCompatibleGroup(
+ resourceGroup.getId(), measurementDefIds, startTime, endTime, false,
+ new AsyncCallback<ArrayList<MetricDisplaySummary>>() {
@Override
- public void onFailure(Throwable caught) {
- Log.warn("Error retrieving recent metrics charting data for
resource [" + resource.getId() + "]:"
- + caught.getMessage());
+ public void onSuccess(ArrayList<MetricDisplaySummary>
metricDisplaySummaries) {
+ setMetricDisplaySummaries(metricDisplaySummaries);
countDownLatch.countDown();
}
@Override
- public void
onSuccess(List<List<MeasurementDataNumericHighLowComposite>>
measurementDataList) {
- if (null != measurementDataList &&
!measurementDataList.isEmpty()) {
- metricsDataList = measurementDataList;
- }
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError("Cannot load
metrics", caught);
countDownLatch.countDown();
}
- });
+ }
+ );
+ }
+
+ private void setMetricDisplaySummaries(List<MetricDisplaySummary>
metricDisplaySummaries) {
+ this.metricDisplaySummaries = metricDisplaySummaries;
}
- private HashSet<MeasurementDefinition> getMetricDefinitions(ResourceGroup
resourceGroup) {
- HashSet<MeasurementDefinition> definitions = new
HashSet<MeasurementDefinition>();
+ private Set<MeasurementDefinition> getMetricDefinitions(ResourceGroup
resourceGroup) {
+ Set<MeasurementDefinition> definitions = new
HashSet<MeasurementDefinition>();
for (MeasurementDefinition measurementDefinition :
resourceGroup.getResourceType().getMetricDefinitions()) {
if (measurementDefinition.getDataType() == MEASUREMENT ||
measurementDefinition.getDataType() == COMPLEX) {
definitions.add(measurementDefinition);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/resource/detail/monitoring/table/MetricsTableView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/resource/detail/monitoring/table/MetricsTableView.java
index 63a6619..8c0cc13 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/resource/detail/monitoring/table/MetricsTableView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/resource/detail/monitoring/table/MetricsTableView.java
@@ -235,7 +235,7 @@ public class MetricsTableView extends
Table<MetricsViewDataSource> implements Re
private void storeDashboardMetric(Dashboard dashboard, Resource resource,
MeasurementDefinition definition) {
DashboardPortlet dashboardPortlet = new
DashboardPortlet(MSG.view_tree_common_contextMenu_resourceGraph(),
- ResourceD3GraphPortlet.KEY, 200);
+ ResourceD3GraphPortlet.KEY, 260);
dashboardPortlet.getConfiguration().put(
new PropertySimple(ResourceD3GraphPortlet.CFG_RESOURCE_ID,
resource.getId()));
dashboardPortlet.getConfiguration().put(
commit ea416d46441fc50aa2f0ead6e49ebd5d685302f2
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Thu Dec 12 16:51:31 2013 +0100
[BZ 1040928] - User with default permissions sees his assigned resources as DOWN -
using the subjectManager.getOverlord() instead of the actual subject, because the live
resource availability should not require the MANAGE_SETTINGS permission.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
index 8a78995..2351f08 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java
@@ -2452,7 +2452,7 @@ public class ResourceManagerBean implements ResourceManagerLocal,
ResourceManage
try {
// first, quickly see if we can even ping the agent, if not, don't bother
trying to get the resource avail
- Agent agent = agentManager.getAgentByResourceId(subject, resourceId);
+ Agent agent = agentManager.getAgentByResourceId(subjectManager.getOverlord(),
resourceId);
if (agent == null) {
if (log.isDebugEnabled()) {
log.debug("Resource [" + resourceId + "] does not
exist or has no agent assigned");
commit 564cd7a1a2c7da46ba3e695f598876044b2b1680
Author: John Sanda <jsanda(a)redhat.com>
Date: Thu Dec 12 10:14:12 2013 -0500
calculate bloom filters
diff --git
a/modules/enterprise/remoting/cli/src/main/samples/modules/rhq.storage.sizing.js
b/modules/enterprise/remoting/cli/src/main/samples/modules/rhq.storage.sizing.js
index 77c22fd..d185f56 100644
--- a/modules/enterprise/remoting/cli/src/main/samples/modules/rhq.storage.sizing.js
+++ b/modules/enterprise/remoting/cli/src/main/samples/modules/rhq.storage.sizing.js
@@ -24,8 +24,113 @@
var time = new Time();
+ function BloomFilter(keys) {
+ function BloomSpecification(k, bucketsPerElement) {
+ this.K = k;
+ this.bucketsPerElement = bucketsPerElement;
+ }
+
+ // This is taken directly from BloomCalculations.java
+ this.probs = [
+ [1.0], // dummy row representing 0 buckets per element
+ [1.0, 1.0], // dummy row representing 1 buckets per element
+ [1.0, 0.393, 0.400],
+ [1.0, 0.283, 0.237, 0.253],
+ [1.0, 0.221, 0.155, 0.147, 0.160],
+ [1.0, 0.181, 0.109, 0.092, 0.092, 0.101], // 5
+ [1.0, 0.154, 0.0804, 0.0609, 0.0561, 0.0578, 0.0638],
+ [1.0, 0.133, 0.0618, 0.0423, 0.0359, 0.0347, 0.0364],
+ [1.0, 0.118, 0.0489, 0.0306, 0.024, 0.0217, 0.0216, 0.0229],
+ [1.0, 0.105, 0.0397, 0.0228, 0.0166, 0.0141, 0.0133, 0.0135, 0.0145],
+ [1.0, 0.0952, 0.0329, 0.0174, 0.0118, 0.00943, 0.00844, 0.00819, 0.00846], //
10
+ [1.0, 0.0869, 0.0276, 0.0136, 0.00864, 0.0065, 0.00552, 0.00513, 0.00509],
+ [1.0, 0.08, 0.0236, 0.0108, 0.00646, 0.00459, 0.00371, 0.00329, 0.00314],
+ [1.0, 0.074, 0.0203, 0.00875, 0.00492, 0.00332, 0.00255, 0.00217, 0.00199,
0.00194],
+ [1.0, 0.0689, 0.0177, 0.00718, 0.00381, 0.00244, 0.00179, 0.00146, 0.00129,
0.00121, 0.0012],
+ [1.0, 0.0645, 0.0156, 0.00596, 0.003, 0.00183, 0.00128, 0.001, 0.000852,
0.000775, 0.000744], // 15
+ [1.0, 0.0606, 0.0138, 0.005, 0.00239, 0.00139, 0.000935, 0.000702, 0.000574,
0.000505, 0.00047, 0.000459],
+ [1.0, 0.0571, 0.0123, 0.00423, 0.00193, 0.00107, 0.000692, 0.000499, 0.000394,
0.000335, 0.000302, 0.000287, 0.000284],
+ [1.0, 0.054, 0.0111, 0.00362, 0.00158, 0.000839, 0.000519, 0.00036, 0.000275,
0.000226, 0.000198, 0.000183, 0.000176],
+ [1.0, 0.0513, 0.00998, 0.00312, 0.0013, 0.000663, 0.000394, 0.000264, 0.000194,
0.000155, 0.000132, 0.000118, 0.000111, 0.000109],
+ [1.0, 0.0488, 0.00906, 0.0027, 0.00108, 0.00053, 0.000303, 0.000196, 0.00014,
0.000108, 8.89e-05, 7.77e-05, 7.12e-05, 6.79e-05, 6.71e-05] // 20
+ ]; // the first column is a dummy column representing K=0.
+
+ var self = this;
+ var excess = 20;
+ var bitset_excess = 20;
+ var minBuckets = 2;
+ var minK = 1;
+ var optKPerBuckets = [];
+ var maxFalsePosProb = 0.01;
+
+
+ for (i = 0; i < this.probs.length; i++) {
+ var min = java.lang.Double.MAX_VALUE;
+ var prob = this.probs[i];
+ for (j = 0; j < prob.length; j++) {
+ if (prob[j] < min) {
+ min = prob[j];
+ optKPerBuckets[i] = Math.max(minK, j);
+ }
+ }
+ }
+
+ var bucketsPerElement = maxBucketsPerElement(keys);
+ var spec = computeBloomSpec(bucketsPerElement, maxFalsePosProb);
+ var numBits = (keys * spec.bucketsPerElement) + bitset_excess;
+ var wordCount = bits2words(numBits);
+
+ if (wordCount > java.lang.Integer.MAX_VALUE) {
+ throw "Bloom filter size is > 16GB, reduce the
bloom_filter_fp_chance";
+ }
+
+ var bytes = wordCount * 8;
+ this.size = bytes + 8;
+
+ function maxBucketsPerElement(numElements) {
+ numElements = Math.max(1, numElements);
+ var v = (java.lang.Long.MAX_VALUE - excess) / keys;
+ if (v < 1) {
+ throw "Cannot compute probabilities for " + numElements + "
elements.";
+ }
+ return Math.min(self.probs.length - 1, v);
+ }
+
+ // This is taken from BloomCalculations.java
+ function computeBloomSpec(maxBucketsPerElement, maxFalsePosProb) {
+ var maxK = self.probs[maxBucketsPerElement].length - 1;
+
+ // Handle the trivial cases
+ if(maxFalsePosProb >= self.probs[minBuckets][minK]) {
+ return new BloomSpecification(2, optKPerBuckets[2]);
+ }
+ if (maxFalsePosProb < self.probs[maxBucketsPerElement][maxK]) {
+ throw "Unable to satisfy " + maxFalsePosProb + " with " +
maxBucketsPerElement + " buckets per element";
+ }
+
+ // First find the minimal required number of buckets:
+ var bucketsPerElement = 2;
+ var K = optKPerBuckets[2];
+ while(self.probs[bucketsPerElement][K] > maxFalsePosProb){
+ bucketsPerElement++;
+ K = optKPerBuckets[bucketsPerElement];
+ }
+ // Now that the number of buckets is sufficient, see if we can relax K
+ // without losing too much precision.
+ while(self.probs[bucketsPerElement][K - 1] <= maxFalsePosProb) {
+ K--;
+ }
+ println('K = ' + K + ', bucketsPerElement = ' +
bucketsPerElement);
+ return new BloomSpecification(K, bucketsPerElement);
+ }
+
+ function bits2words(numBits) {
+ return (((numBits-1)>>>6)+1);
+ }
+ }
+
/**
- * Encapsulates sizing data for a set of rows, having the samae number of columns and
+ * Encapsulates sizing data for a set of rows, having the same number of columns and
* each column being the same size.
*/
function RowInfo() {
@@ -124,6 +229,7 @@
schedules) {
var table = new Table(name);
table.data = calculateData(schedules, columnSize, rowKeySize, duration);
+ table.bloomFilter = new BloomFilter(5).size;
util.foreach(table.data.rows, function(interval) {
var rowInfo = table.data.rows[interval];
@@ -216,8 +322,8 @@
var rowKeyValueSize = 4;
var columnNameSize = 8;
- return calculateMetricsTableSize('raw_metrics', columnSize, rowKeySize,
rowKeyValueSize, columnNameSize, time.week,
- schedules);
+ return calculateMetricsTableSize('raw_metrics', columnSize, rowKeySize,
rowKeyValueSize, columnNameSize,
+ time.week, schedules);
};
/**
@@ -261,4 +367,9 @@
exports.sizeOf24HourMetrics = function(schedules) {
return calculateAggregatesTableSize('twenty_four_hour_metrics', time.day *
365, schedules);
};
+
+ // exposed for testing
+ exports.bloomFilter = function(keys) {
+ return new BloomFilter(keys).size;
+ }
})();
\ No newline at end of file
commit f227ce42ff7a2ded07f10cdbc5c0fcf06eee4850
Author: John Sanda <jsanda(a)redhat.com>
Date: Wed Dec 11 17:03:35 2013 -0500
adding some usage docs
diff --git
a/modules/enterprise/remoting/cli/src/main/samples/modules/rhq.storage.sizing.js
b/modules/enterprise/remoting/cli/src/main/samples/modules/rhq.storage.sizing.js
index 77e78b7..77c22fd 100644
--- a/modules/enterprise/remoting/cli/src/main/samples/modules/rhq.storage.sizing.js
+++ b/modules/enterprise/remoting/cli/src/main/samples/modules/rhq.storage.sizing.js
@@ -5,6 +5,11 @@
* installs, some input, in terms of the numbers and types of resources, will have to be
provided in order to generate
* the estimates. Right now the module has functionality for generating the sizes of the
data and partition index files
* for the metrics tables (which does not include the metrics_index table).
+ *
+ * current usage (from CLI shell):
+ *
+ * $ storage = require('modules:/rhq.storage.sizing.js');
+ * $ results = storage.sizeOfRawMetrics({30000: 5, 60000: 5});
*/
(function() {
var util = require('modules:/util');
commit ebb358f43f62bf5b92ed4ac782bba03e4b04cc94
Author: John Sanda <jsanda(a)redhat.com>
Date: Wed Dec 11 16:59:10 2013 -0500
initial commit for storage sizing CLI script
diff --git
a/modules/enterprise/remoting/cli/src/main/samples/modules/rhq.storage.sizing.js
b/modules/enterprise/remoting/cli/src/main/samples/modules/rhq.storage.sizing.js
new file mode 100644
index 0000000..77e78b7
--- /dev/null
+++ b/modules/enterprise/remoting/cli/src/main/samples/modules/rhq.storage.sizing.js
@@ -0,0 +1,259 @@
+/**
+ * This module provides functionality to generate storage cluster sizing estimates. The
end goal is for it to support
+ * generating estimates for both existing and new installations. For existing
installations, the script will query
+ * the existing RHQ database to get the necessary metric schedule info needed to generate
the estimates. For new
+ * installs, some input, in terms of the numbers and types of resources, will have to be
provided in order to generate
+ * the estimates. Right now the module has functionality for generating the sizes of the
data and partition index files
+ * for the metrics tables (which does not include the metrics_index table).
+ */
+(function() {
+ var util = require('modules:/util');
+
+ function Time() {
+ this.second = 1000;
+ this.minute = this.second * 60;
+ this.hour = this.minute * 60;
+ this.day = this.hour * 24;
+ this.week = this.day * 7;
+ }
+
+ var time = new Time();
+
+ /**
+ * Encapsulates sizing data for a set of rows, having the samae number of columns and
+ * each column being the same size.
+ */
+ function RowInfo() {
+ // The total number of rows described by this RowInfo object
+ this.numRows = 0;
+ // The total number of columns contained in each row
+ this.numColumns = 0;
+ // The size of an individual row
+ this.rowSize = 0;
+ // The total size of all rows described by this RowInfo object
+ this.totalSize = 0;
+ }
+
+ /**
+ * Encapsulates sizing data for an RHQ table, e.g., raw_metrics, one_hour_metrics
+ */
+ function Table(name) {
+ // The name of the table
+ this.name = name;
+ // The size of the partition index component
+ this.partitionIndex = 0;
+ // A Data object that corresponds to the Data component
+ this.data = null;
+ }
+
+ /**
+ * Encapsulates sizing info for the Data component
+ */
+ function Data() {
+ // A map of RowInfo objects. Keys are collection intervals while values are the
RowInfo
+ // objects. This mapping allows us to see what footprint on disk a particular
collection
+ // interval will have.
+ this.rows = {};
+ // The overall total size of the Data component.
+ this.totalSize = 0;
+ }
+
+ /**
+ * In order to calculate the data component size, we need to know the number of rows
and
+ * columns. The number of rows is the number of schedules. The number of columns is
+ * determined by the collection interval. Intermediate (per-row) results are grouped
by
+ * collection interval.
+ *
+ * @param schedules
+ * @param columnSize
+ * @param rowKeySize
+ * @param duration
+ * @returns data
+ */
+ var calculateData = function(schedules, columnSize, rowKeySize, duration) {
+ var data = new Data();
+
+ util.foreach(schedules, function(interval, numSchedules) {
+ var rowInfo = new RowInfo();
+ rowInfo.numColumns = duration / interval;
+ rowInfo.rowSize = (rowInfo.numColumns * columnSize) + rowKeySize;
+ rowInfo.numRows = numSchedules;
+ rowInfo.totalSize = rowInfo.rowSize * rowInfo.numRows;
+
+ data.rows[interval] = rowInfo;
+ data.totalSize = data.totalSize + rowInfo.totalSize;
+ });
+
+ return data;
+ };
+
+ var calculatePartitionIndex = function(keySize, rowSize, columnNameSize, numRows) {
+ var keyLength = 2;
+ var position = 8;
+ var promotedSize = 4;
+
+ if (rowSize < 65536) {
+ return (keyLength + keySize + position + promotedSize) * numRows;
+ }
+
+ var localDeletionTime = 4;
+ var markedForDeleteAt = 8;
+ var columnIndexSize =4;
+
+ // compute index entry size
+ var firstNameLen = 2;
+ var firstName = columnNameSize;
+ var lastNameLen = 2;
+ var lastName = columnNameSize;
+ var offset = 8;
+ var width = 8;
+ var columnIndexEntry = firstNameLen + firstName + lastNameLen + lastName + offset +
width;
+
+ var numColumnIndexEntries = Math.ceil(rowSize / 65536);
+
+ return (keyLength + keySize + position + promotedSize + localDeletionTime +
markedForDeleteAt + columnIndexSize +
+ (numColumnIndexEntries * columnIndexEntry)) * numRows;
+ };
+
+ var calculateMetricsTableSize = function(name, columnSize, rowKeySize, rowKeyValueSize,
columnNameSize, duration,
+ schedules) {
+ var table = new Table(name);
+ table.data = calculateData(schedules, columnSize, rowKeySize, duration);
+
+ util.foreach(table.data.rows, function(interval) {
+ var rowInfo = table.data.rows[interval];
+ table.partitionIndex += calculatePartitionIndex(rowKeyValueSize, rowInfo.rowSize,
columnNameSize, rowInfo.numRows);
+ });
+
+ return table;
+ };
+
+ var calculateAggregatesTableSize = function(name, duration, schedules) {
+ // Here is the break down the of the column size for aggregate metrics tables
+ //
+ // date component - 11 (see org.apache.cassandra.db.marshal.CompositeType for
more details on byte encoding
+ // type component - 7 byte encoding of composite types. In short, there are
an extran 3 bytes of overhead
+ // column name length - 2 per component.)
+ // flags - 1
+ // TTL - 4
+ // deletion time - 4
+ // timestamp - 8
+ // column value length - 4
+ // column value - 8
+ var columnSize = 49;
+
+ // See the rowKeySize for rawMetrics. The byte-wise break down is the same.
+ var rowKeySize = 30;
+
+ var columnNameSize = 18;
+ var rowKeyValueSize = 4;
+
+ // We have to multiply the column size by 3 because there are 3 values (i.e.,
columns)
+ // per aggregate metric.
+ return calculateMetricsTableSize(name, columnSize * 3, rowKeySize, rowKeyValueSize,
columnNameSize, duration,
+ schedules);
+ };
+
+ exports.loadSchedules = function() {
+ var criteria = MeasurementScheduleCriteria();
+ criteria.addFilterEnabled(true);
+ criteria.addSortId(PageOrdering.ASC);
+ criteria.setPaging(0, 500);
+
+ var schedulesSummary = {};
+
+ util.foreach(criteria, function(schedule) {
+ var count = schedulesSummary[schedule.interval];
+ if (count == null) {
+ schedulesSummary[schedule.interval] = 1;
+ } else {
+ schedulesSummary[schedule.interval] = count + 1;
+ }
+ });
+
+ return schedulesSummary;
+ };
+
+ exports.time = new Time();
+
+ /**
+ * Calculates SSTable component files sizes for the raw_metrics table for a set of
schedules.
+ *
+ * @param schedules A map of collection intervals to the number of schedules for each
+ * interval. It is assumed that counts include only enabled schedules.
+ *
+ * @returns Table
+ */
+ exports.sizeOfRawMetrics = function(schedules) {
+ // Here is a byte-wise break down for the overall column size
+ //
+ // column name length - 2
+ // column name - 8
+ // flags - 1
+ // TTL - 4
+ // local deletion time - 4
+ // timestmap - 8
+ // column value length - 8
+ // column value - 8
+ var columnSize = 39;
+
+ //Here is a byte-wise break down for the row key. Note that this is the total row
key
+ // overhead, not just the length of the key itself.
+ //
+ // key length - 2
+ // key value - 4
+ // columns size - 8
+ // local deletion time - 4
+ // marked for delete at - 8
+ // column count - 4
+ var rowKeySize = 30;
+
+ var rowKeyValueSize = 4;
+ var columnNameSize = 8;
+
+ return calculateMetricsTableSize('raw_metrics', columnSize, rowKeySize,
rowKeyValueSize, columnNameSize, time.week,
+ schedules);
+ };
+
+ /**
+ * Calculates SSTable component files sizes for the one_hour_metrics table for a set of
schedules. Note that this
+ * method is exposed right now primarily for testing. Moreover, it is assumed that the
schedules argument is not the
+ * same as the one that would be passed to the sizeOfRawMetrics function.
+ *
+ * @param schedules A map of collection intervals to the number of schedules for each
+ * interval. It is assumed that counts include only enabled schedules.
+ *
+ * @returns Table
+ */
+ exports.sizeOf1HourMetrics = function(schedules) {
+ return calculateAggregatesTableSize('one_hour_metrics', time.day * 7,
schedules);
+ };
+
+ /**
+ * Calculates SSTable component files sizes for the six_hour_metrics table for a set of
schedules. Note that this
+ * method is exposed right now primarily for testing. Moreover, it is assumed that the
schedules argument is not the
+ * same as the one that would be passed to the sizeOfRawMetrics function.
+ *
+ * @param schedules A map of collection intervals to the number of schedules for each
+ * interval. It is assumed that counts include only enabled schedules.
+ *
+ * @returns Table
+ */
+ exports.sizeOf6HourMetrics = function(schedules) {
+ return calculateAggregatesTableSize('six_hour_metrics', time.day * 31,
schedules);
+ };
+
+ /**
+ * Calculates SSTable component files sizes for the twenty_four_hour_metrics table for
a set of schedules. Note that
+ * this method is exposed right now primarily for testing. Moreover, it is assumed that
the schedules argument is not
+ * the same as the one that would be passed to the sizeOfRawMetrics function.
+ *
+ * @param schedules A map of collection intervals to the number of schedules for each
+ * interval. It is assumed that counts include only enabled schedules.
+ *
+ * @returns Table
+ */
+ exports.sizeOf24HourMetrics = function(schedules) {
+ return calculateAggregatesTableSize('twenty_four_hour_metrics', time.day *
365, schedules);
+ };
+})();
\ No newline at end of file
commit 7eb30b3117487539ac554a8acd6a6ca3348a7c3f
Author: Thomas Segismont <tsegismo(a)redhat.com>
Date: Tue Dec 10 16:02:27 2013 +0100
Bug 991202 - Excessive warnings of invalid metric calls
Fixed "*-exceeded" metrics dataType
Created new MemoryPoolComponent
Now gathering "usage-threshold-*" and
"collection-usage-threshold-*" metrics only if enabled
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/MemoryPoolComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/MemoryPoolComponent.java
new file mode 100644
index 0000000..36939a5
--- /dev/null
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/MemoryPoolComponent.java
@@ -0,0 +1,88 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2013 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+package org.rhq.modules.plugins.jbossas7;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.rhq.core.domain.measurement.MeasurementDataTrait;
+import org.rhq.core.domain.measurement.MeasurementReport;
+import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
+import org.rhq.core.pluginapi.inventory.ResourceContext;
+
+/**
+ * @author Thomas Segismont
+ */
+public class MemoryPoolComponent extends BaseComponent<BaseComponent<?>> {
+
+ private static final String USAGE_THRESHOLD_PREFIX = "usage-threshold-";
+ private static final String USAGE_THRESHOLD_SUPPORTED_ATTRIBUTE =
USAGE_THRESHOLD_PREFIX + "supported";
+ private static final String COLLECTION_USAGE_THRESHOLD_PREFIX =
"collection-" + USAGE_THRESHOLD_PREFIX;
+ private static final String COLLECTION_USAGE_THRESHOLD_SUPPORTED_ATTRIBUTE =
COLLECTION_USAGE_THRESHOLD_PREFIX
+ + "supported";
+
+ private Boolean usageThresholdSupported;
+ private Boolean collectionUsageThresholdSupported;
+
+ @Override
+ public void start(ResourceContext<BaseComponent<?>> context) throws
Exception {
+ super.start(context);
+ usageThresholdSupported = readAttribute(getAddress(),
USAGE_THRESHOLD_SUPPORTED_ATTRIBUTE, Boolean.class);
+ collectionUsageThresholdSupported = readAttribute(getAddress(),
COLLECTION_USAGE_THRESHOLD_SUPPORTED_ATTRIBUTE,
+ Boolean.class);
+ }
+
+ @Override
+ public void stop() {
+ super.stop();
+ usageThresholdSupported = null;
+ collectionUsageThresholdSupported = null;
+ }
+
+ @Override
+ public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest>
metrics) throws Exception {
+ Set<MeasurementScheduleRequest> filteredMetrics = new
HashSet<MeasurementScheduleRequest>();
+ for (MeasurementScheduleRequest request : metrics) {
+ String requestName = request.getName();
+ if (USAGE_THRESHOLD_SUPPORTED_ATTRIBUTE.equals(requestName)) {
+ report.addData(new MeasurementDataTrait(request,
usageThresholdSupported.toString()));
+ continue;
+ }
+ if (requestName.startsWith(USAGE_THRESHOLD_PREFIX)) {
+ if (usageThresholdSupported) {
+ filteredMetrics.add(request);
+ }
+ continue;
+ }
+ if (COLLECTION_USAGE_THRESHOLD_SUPPORTED_ATTRIBUTE.equals(requestName)) {
+ report.addData(new MeasurementDataTrait(request,
collectionUsageThresholdSupported.toString()));
+ continue;
+ }
+ if (requestName.startsWith(COLLECTION_USAGE_THRESHOLD_PREFIX)) {
+ if (collectionUsageThresholdSupported) {
+ filteredMetrics.add(request);
+ }
+ continue;
+ }
+ filteredMetrics.add(request);
+ }
+ super.getValues(report, filteredMetrics);
+ }
+}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 2dcf2bd..972e31f 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -7280,7 +7280,7 @@
<service name="Memory Pool Resource"
discovery="SubsystemDiscovery"
- class="BaseComponent"
+ class="MemoryPoolComponent"
description="The management interface for a memory pool. A memory
pool represents the memory resource managed by the Java virtual machine and is managed by
one or more memory managers.">
<plugin-configuration>
@@ -7299,7 +7299,7 @@
<metric property="collection-usage:committed"
displayName="Collection Usage - Committed" description="The amount of
memory in bytes that is committed for the Java virtual machine to use."/>
<metric property="collection-usage:max" displayName="Collection
Usage - Max" description="The maximum amount of memory in bytes that can be used
for memory management."/>
<metric property="collection-usage-threshold-count"
description="The number of times that the Java virtual machine has detected that the
memory usage has reached or exceeded the collection usage threshold. A memory pool may not
support a collection usage threshold. If
'collection-usage-threshold-supported', is
'false' trying to read this attribute via the
'read-attribute' operation will result in failure, and the value
of this attribute in the result of a 'read-resource' operation
will be 'undefined'."/>
- <metric property="collection-usage-threshold-exceeded"
description="Whether the memory usage of this memory pool after the most recent
collection on which the Java virtual machine has expended effort has reached or exceeded
its collection usage threshold. A memory pool may not support a collection usage
threshold. If
'collection-usage-threshold-supported', is
'false' trying to read this attribute via the
'read-attribute' operation will result in failure, and the value
of this attribute in the result of a 'read-resource' operation
will be 'undefined'."/>
+ <metric property="collection-usage-threshold-exceeded"
dataType="trait" description="Whether the memory usage of this memory pool
after the most recent collection on which the Java virtual machine has expended effort has
reached or exceeded its collection usage threshold. A memory pool may not support a
collection usage threshold. If
'collection-usage-threshold-supported', is
'false' trying to read this attribute via the
'read-attribute' operation will result in failure, and the value
of this attribute in the result of a 'read-resource' operation
will be 'undefined'."/>
<metric property="collection-usage-threshold-supported"
dataType="trait" description="Whether this memory pool supports a
collection usage threshold."/>
<metric property="name" dataType="trait"
description="The name representing this memory pool."/>
<metric property="peak-usage:init" displayName="Peak Usage -
Init" description="The amount of memory in bytes that the Java virtual machine
initially requests from the operating system for memory management."/>
@@ -7312,7 +7312,7 @@
<metric property="usage:committed" displayName="Usage -
Committed" description="The amount of memory in bytes that is committed for the
Java virtual machine to use."/>
<metric property="usage:max" displayName="Usage - Max"
description="The maximum amount of memory in bytes that can be used for memory
management."/>
<metric property="usage-threshold-count" description="The
number of times that the memory usage has crossed the usage threshold. A memory pool may
not support a usage threshold. If
'usage-threshold-supported', is
'false' trying to read this attribute via the
'read-attribute' operation will result in failure, and the value
of this attribute in the result of a 'read-resource' operation
will be 'undefined'."/>
- <metric property="usage-threshold-exceeded"
description="Whether the memory usage of this memory pool reaches or exceeds its
usage threshold value. A memory pool may not support a usage threshold. If
'usage-threshold-supported', is
'false' trying to read this attribute via the
'read-attribute' operation will result in failure, and the value
of this attribute in the result of a 'read-resource' operation
will be 'undefined'."/>
+ <metric property="usage-threshold-exceeded"
dataType="trait" description="Whether the memory usage of this memory pool
reaches or exceeds its usage threshold value. A memory pool may not support a usage
threshold. If 'usage-threshold-supported', is
'false' trying to read this attribute via the
'read-attribute' operation will result in failure, and the value
of this attribute in the result of a 'read-resource' operation
will be 'undefined'."/>
<metric property="usage-threshold-supported"
dataType="trait" description="Whether this memory pool supports usage
threshold."/>
<metric property="valid" dataType="trait"
description="Whether this memory pool is valid in the Java virtual machine. A memory
pool becomes invalid once the Java virtual machine removes it from the memory
system."/>
commit 8850b1fce99cfb3219acc7af47c9fb9963637507
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Tue Dec 10 15:33:28 2013 +0100
Further updated translations
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/coregui/client/Messages_de.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/coregui/client/Messages_de.properties
index 50e343f..2670220 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/coregui/client/Messages_de.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/coregui/client/Messages_de.properties
@@ -528,7 +528,7 @@ view_aboutBox_version=Version
view_adminConfig_agentPlugins=Agent Plugins
view_adminConfig_alertDefTemplates=Vorlagen fÃŒr Alarmdefinitionen
view_adminConfig_downloads=Downloads
-view_adminConfig_driftDefTemplates=Vorlagen fÃŒr Dritf-Definitionen
+view_adminConfig_driftDefTemplates=Vorlagen fÃŒr Drift-Definitionen
view_adminConfig_ignoreResourceTypes=Ignorierte Ressource Typen
view_adminConfig_ignoreResourceTypes_changeTitle=Ãndern?
view_adminConfig_ignoreResourceTypes_confirmIgnore=Sind Sie sicher, dass Sie den
Ressourcentyp [{0}] ignorieren wollen? Sie werden nicht mehr in der Lage sein, Ressourcen
dieses Typs zu importieren und alle Ressourcen dieses Typs, die bereits im Inventar sind,
werden aus dem Inventar entfernt und Sie können diese nicht mehr verwalten.
@@ -554,11 +554,13 @@ view_adminRoles_assignedSubjects=Zugewisene Benutzer
view_adminRoles_failCreateRoleWithExistingName=Konnte die Rolle mit dem existierenden
Namen [{0}] nicht anlegen. Bitte wÀhlen Sie einen anderen Namen.
view_adminRoles_failLdap=Konnte nicht ermitteln, ob LDAP konfiguriert ist - gehe von
keiner LDAP-Konfiguration aus.
view_adminRoles_failLdapAvailableGroups=Fehlgeschlagen\: Kann Status fÃŒr letzten
AvailableGroups() Aufruf nicht abrufen.
+view_adminRoles_failLdapCancelling=Client kann nicht fortfahren. Storniere alle
zukÃŒnftigen verfÃŒgbaren GruppenstatusprÃŒfungen fÃŒr diesen Thread. Wahrscheinlich ist
ein Fehler bei der 1)LDAP Server Kommunikation oder der 2)ldap AnfrageprÃŒfung.
# #view_adminRoles_failLdapAvailableGroups = Konnte de LDAP-Gruppen nicht laden. Annahme
ist, dass es keine gibt.
# #view_adminRoles_failLdapCancelling = Konnte de LDAP-Gruppen nicht laden. Annahme ist,
dass es keine gibt.
view_adminRoles_failLdapGroups=Konnte de LDAP-Gruppen nicht laden. Annahme ist, dass es
keine gibt.
view_adminRoles_failLdapGroupsRole=Konnte die LDAP-Gruppen fÃŒr die Rolle nicht laden.
view_adminRoles_failLdapGroupsSettings=Konnte Systemeinstellungsinformationen fÃŒr
LDAP-Gruppen nicht abrufen.
+view_adminRoles_failLdapRetry=Versuch 3 Mal wiederholt. Storniere zukÃŒnftige verfÃŒgbare
Gruppenanfragen.
# #view_adminRoles_failLdapGroupsSettings = Konnte de LDAP-Gruppen nicht laden. Annahme
ist, dass es keine gibt.
# #view_adminRoles_failLdapRetry = Konnte de LDAP-Gruppen nicht laden. Annahme ist, dass
es keine gibt.
view_adminRoles_failRoles=Konnte die Rollen nicht laden.
@@ -584,6 +586,11 @@ view_adminRoles_ldapWarnTooManyResults=Es werden viele Ergebnisse
wiedergegeben.
view_adminRoles_noLdap=Die LDAP-Integration ist nicht konfiguriert. Um LDAP zu
konfigurieren, wechseln sie zu <a {0}>{1}</a>.
view_adminRoles_permissions_autoselecting_configureRead_implied=Autodeselected
CONFIGURE_WRITE permission, since lack of CONFIGURE_READ implies lack of it...
view_adminRoles_permissions_autoselecting_configureWrite_implied=Autoselected
CONFIGURE_READ permission, since CONFIGURE_WRITE implies it...
+view_adminRoles_permissions_autoselecting_manageBundleGroups_implied=Autoselect von View
Bundles (Bundles ansehen), das von Manage Bundle Groups (Bundle Gruppen verwalten)
gewÀhrt wird...
+view_adminRoles_permissions_autoselecting_manageBundle_implied=Autoselect nicht
gewÀhlter Berechtigungen, da Manage Bundle (Bundle verwalten) Berechtigung die
Berechtigungen Manage Bundle Groups (Bundle Gruppen verwalten), Create Bundles (Bundles
erstellen), Delete Bundles (Bundles löschen), View Bundles (Bundles ansehen) und
Deploy_Bundles (Bundles deployen) gewÀhrt...
+view_adminRoles_permissions_autoselecting_manageInventory_implied=Autoselect von nicht
gewÀhlten Ressourcen Berechtigungen, da MANAGE_INVENTORY alle Ressourcen Berechtigungen
voraussetzt...
+view_adminRoles_permissions_autoselecting_manageSecurity_implied=Autoselect von nicht
gewÀhlten Berechtigungen, da MANAGE_SECURITY alle anderen Berechtigungen voraussetzt...
+view_adminRoles_permissions_bundlePermissions=Bundle Berechtigungen
# #view_adminRoles_permissions_autoselecting_configureRead_implied = Autodeselected
CONFIGURE_WRITE permission, since lack of CONFIGURE_READ implies lack of it...
# #view_adminRoles_permissions_autoselecting_configureWrite_implied = Autoselected
CONFIGURE_READ permission, since CONFIGURE_WRITE implies it...
# #view_adminRoles_permissions_autoselecting_manageBundleGroups_implied = Autoselected
View Bundles, which is granted by Manage Bundle Groups...
@@ -592,6 +599,11 @@
view_adminRoles_permissions_autoselecting_configureWrite_implied=Autoselected CO
# #view_adminRoles_permissions_autoselecting_manageSecurity_implied = Autoselected
unselected permissions, since MANAGE_SECURITY implies all other permissions...
# #view_adminRoles_permissions_bundlePermissions = Bundle Permissions
view_adminRoles_permissions_globalPermissions=Globale Rechte
+view_adminRoles_permissions_illegalDeselectionDueToCorrespondingWritePermSelection=Auswahl
der {0} Leseberechtigung kann nicht aufgehoben werden, wenn nicht die Auswahl der {0}
Schreibberechtigung (die die Leseberechtigung voraussetzt), zuerst aufgehoben wird.
+view_adminRoles_permissions_illegalDeselectionDueToManageBundleGroupsSelection=Auswahl
der {0} Berechtigung kann nicht aufgehoben werden, wenn nicht die Auswahl von Manage
Bundle Groups (Bundle Gruppen verwalten) (das die {0} Berechtigung voraussetzt), zuerst
aufgehoben wird.
+view_adminRoles_permissions_illegalDeselectionDueToManageBundleSelection=Auswahl der {0}
Berechtigung kann nicht aufgehoben werden, wenn nicht die Auswahl von Manage Bundle
(Bundle verwalten) (das alle Bundle Berechtigungen voraussetzt), zuerst aufgehoben wird.
+view_adminRoles_permissions_illegalDeselectionDueToManageInventorySelection=Auswahl der
{0} Berechtigung kann nicht aufgehoben werden, wenn nicht die Auswahl von Manage Inventory
(Inventar verwalten) (das alle Ressourcen Berechtigungen voraussetzt), zuerst aufgehoben
wird.
+view_adminRoles_permissions_illegalDeselectionDueToManageSecuritySelection=Auswahl der
{0} Berechtigung kann nicht aufgehoben werden, wenn nicht die Auswahl von Manage Security
Permission (Sicherheitsberechtigung verwalten) (die alle anderen Berechtigungen
voraussetzt), zuerst aufgehoben wird.
# #view_adminRoles_permissions_illegalDeselectionDueToCorrespondingWritePermSelection =
{0} read permission cannot be deselected, unless the {0} write permission, which implies
the read permission, is deselected first.
# #view_adminRoles_permissions_illegalDeselectionDueToManageBundleGroupsSelection = {0}
permission cannot be deselected, unless Manage Bundle Groups, which implies {0}
permission, is deselected first.
# #view_adminRoles_permissions_illegalDeselectionDueToManageBundleSelection = {0}
permission cannot be deselected, unless Manage Bundle, which implies all Bundle
permissions, is deselected first.
@@ -600,6 +612,15 @@ view_adminRoles_permissions_globalPermissions=Globale Rechte
view_adminRoles_permissions_isAuthorized=Berechtigt?
view_adminRoles_permissions_isRead=Lesen?
view_adminRoles_permissions_isWrite=Schreiben?
+view_adminRoles_permissions_permDesc_assignBundlesToGroup=Kann sichtbare Bundles in die
Bundle Gruppe kopieren
+view_adminRoles_permissions_permDesc_createBundles=kann neue Bundle [Version]en
erstellen. Kann sichtbare Bundles sichtbaren Gruppen zuweisen
+view_adminRoles_permissions_permDesc_createBundlesInGroup=kann neue Bundle [Version]en
fÃŒr die Bundle Gruppe erstellen. Kann sichtbare Bundles in die Bundle Gruppe kopieren.
+view_adminRoles_permissions_permDesc_deleteBundles=kann sichtbare Bundle [Version]en
löschen oder Zuweisung aufheben
+view_adminRoles_permissions_permDesc_deleteBundlesFromGroup=kann Bundle [Version]en aus
der Bundle Gruppe löschen (diese werden implizit aus anderen zugewiesenen Gruppen
gelöscht)
+view_adminRoles_permissions_permDesc_deployBundles=kann beliebige sichtbare Bundle
Version an beliebige sichtbare, deploybare, kompatible Ressourcengruppe deployen
+view_adminRoles_permissions_permDesc_deployBundlesToGroup=kann beliebige sichtbare Bundle
Version an die sichtbare, deploybare, kompatible Ressourcengruppe deployen
+view_adminRoles_permissions_permDesc_manageBundleGroups=kann Bundle Gruppen erstellen und
löschen. Kann Bundles Bundle Gruppen zuweisen. GewÀhrt View Bundles (Bundles ansehen)
Berechtigungen
+view_adminRoles_permissions_permDesc_manageBundles=kann beliebige Bundle Aufgabe
durchfÌhren. Eine Berechtigung, die Autoselect nicht gewÀhlter Berechtigungen, die
Berechtigungen Manage Bundle Groups (Bundle Gruppen verwalten), Create Bundles (Bundles
erstellen), Delete Bundles (Bundles löschen), View Bundles (Bundles ansehen) und
Deploy_Bundles (Bundles deployen) gewÀhrt...
# #view_adminRoles_permissions_permDesc_assignBundlesToGroup = can copy a viewable bundle
to the bundle group
# #view_adminRoles_permissions_permDesc_createBundles = can create new bundle [version]s.
can assign viewable bundles to viewable groups
# #view_adminRoles_permissions_permDesc_createBundlesInGroup = can create new bundle
[version]s for the bundle group. can copy a viewable bundle to the bundle group.
@@ -610,9 +631,14 @@ view_adminRoles_permissions_isWrite=Schreiben?
# #view_adminRoles_permissions_permDesc_manageBundleGroups = can create and delete bundle
groups. can assign bundles to bundle groups. grants View Bundles permissions
# #view_adminRoles_permissions_permDesc_manageBundles = can perform any bundle task. a
convenience permission that grants Manage Bundle Groups, Create Bundles, Delete Bundles,
Deploy Bundles and View Bundles permissions.
view_adminRoles_permissions_permDesc_manageInventory=Hat alle Rechte auf alle Ressourcen,
wie unten beschrieben. Kann Gruppen anlegen, aktualisieren und löschen. Kann Ressourcen
in das Inventar aufnehmen.
+view_adminRoles_permissions_permDesc_manageRepositories=kann Repositories jedes Benutzers
erstellen, aktualisieren oder löschen (jeder kann seine eigenen Repositories erstellen),
kann Content Quellen mit Repositories assoziieren.
# #view_adminRoles_permissions_permDesc_manageRepositories = can create, update, or
delete repositories of any user (everyone can create their own repositories), can
associate content sources to repositories.
view_adminRoles_permissions_permDesc_manageSecurity=Kann Benutzer und Rollen anlegen,
aktualisieren oder löschen (Anschauen ist fÌr alle implizit erlaubt)
view_adminRoles_permissions_permDesc_manageSettings=Kann die Konfiguration des
{0}-Servers Àndern und jegliche Server-bezogene FunktionalitÀt ausfÌhren.
+view_adminRoles_permissions_permDesc_unassignBundlesFromGroup=kann die Zuweisung eines
Bundles zu einer Bundle Gruppe aufheben (nicht löschen)
+view_adminRoles_permissions_permDesc_viewBundles=kann Bundle Details, Deployments, u.s.w.
fÃŒr jedes Bundle ansehen, einschlieÃlich nicht zugewiesener Bundles (die keiner Bundle
Gruppe zugewiesen sind)
+view_adminRoles_permissions_permDesc_viewBundlesInGroup=(VORAUSGESETZT) kann Bundle
Details, Deployments, u.s.w. fÃŒr jedes Bundle in Bundle Gruppen ansehen, die mit den
relevanten Rollen assoziiert sind.
+view_adminRoles_permissions_permDesc_viewUsers=kann andere Benutzer ansehen, mit Ausnahme
deren zugewiesener Rollen
# #view_adminRoles_permissions_permDesc_unassignBundlesFromGroup = can unassign (not
delete) a bundle from the bundle group
# #view_adminRoles_permissions_permDesc_viewBundles = can view bundle details,
deployments, etc for any bundle, including unassigned bundles (those not assigned to any
bundle group)
# #view_adminRoles_permissions_permDesc_viewBundlesInGroup = (IMPLIED) can view bundle
details, deployments, etc for any bundle in bundle groups associated with the relevant
roles.
@@ -641,12 +667,15 @@ view_adminRoles_permissions_perm_assignBundlesToGroup=Bundles zu
Gruppen zuweise
view_adminRoles_permissions_perm_configure=Konfiguration
view_adminRoles_permissions_perm_control=Operationen
view_adminRoles_permissions_perm_createBundles=Bundles anlegen
+view_adminRoles_permissions_perm_createBundlesInGroup=Bundles in Gruppe erstellen
# #view_adminRoles_permissions_perm_createBundlesInGroup = Create Bundles In Group
view_adminRoles_permissions_perm_createChildResources=Kind-Ressourcen erzeugen
view_adminRoles_permissions_perm_deleteBundles=Bundles löschen
+view_adminRoles_permissions_perm_deleteBundlesFromGroup=Bundles aus der Gruppe löschen
# #view_adminRoles_permissions_perm_deleteBundlesFromGroup = Delete Bundles From Group
view_adminRoles_permissions_perm_deleteChildResources=Löschen von Kind-Ressourcen
view_adminRoles_permissions_perm_deployBundles=Bundles deployen
+view_adminRoles_permissions_perm_deployBundlesToGroup=Bundles in die Gruppe deployen
# #view_adminRoles_permissions_perm_deployBundlesToGroup = Deploy Bundles To Group
view_adminRoles_permissions_perm_inventory=Inventar
view_adminRoles_permissions_perm_manageAlerts=Alarme verwalten
@@ -676,34 +705,74 @@ view_adminRoles_roleUpdateFailed=Konnte die Rolle [{0}] nicht
aktualisieren.
view_adminRoles_roleUpdated=Rolle [{0}] aktualisiert.
view_adminTemplates_definedBy=DDefiniert durch
view_adminTemplates_disabledTemplates=Inaktive Vorlagen
+view_adminTemplates_editAlertTemplate=Alarm Vorlage bearbeiten
view_adminTemplates_editTemplates=Vorlagen bearbeiten
view_adminTemplates_enabledTemplates=Aktive Vorlagen
+view_adminTemplates_platformServices=Plattform Dienste
view_adminTemplates_platforms=Platformen
view_adminTemplates_pluginTemplates=Vorlagen fÃŒr Plugins Plugins
+view_adminTemplates_prompt_disabledAlertTemplates=Anzahl von Alarm Vorlagen an diesem
Ressourcentyp, die erstellt aber deaktiviert sind
+view_adminTemplates_prompt_disabledMetricTemplates=Anzahl von metrischen ZeitplÀnen, die
standardmÀÃig an diesem Ressourcentyp deaktiviert sind
+view_adminTemplates_prompt_enabledAlertTemplates=Anzahl von Alarm Vorlagen an diesem
Ressourcentyp, die aktiviert sind
+view_adminTemplates_prompt_enabledMetricTemplates=Anzahl von metrischen ZeitplÀnen, die
standardmÀÃig an diesem Ressourcentyp aktiviert sind
view_adminTemplates_servers=Server
view_adminTemplates_userTemplates=Nutzers-spezifische Vorlagen
view_adminTopology_affinityGroups=AffinitÀtsgruppen
view_adminTopology_affinityGroups_agentCount=Anzahl Agenten
view_adminTopology_affinityGroups_agentsInThisGroup=Agenten in dieser Gruppe
+view_adminTopology_affinityGroups_agentsNotPartOfAnAffinityGroup=Agenten, die nicht Teil
einer Affinity Gruppe sind
+view_adminTopology_affinityGroups_agetnMembers=Agent Mitglieder
# #view_adminTopology_affinityGroups_agentsNotPartOfAnAffinityGroup = Agents not Part of
an Affinity Group
# #view_adminTopology_affinityGroups_agetnMembers = Agent Members
view_adminTopology_affinityGroups_createNew=Neu anlegen
+view_adminTopology_affinityGroups_details=Affinity Gruppen Details
# #view_adminTopology_affinityGroups_details = Affinity Group Details
view_adminTopology_affinityGroups_removeSelected=AusgewÀhlte entfernen
view_adminTopology_affinityGroups_serverCount=Anzahl Server
+view_adminTopology_affinityGroups_serverMembers=Server Mitglieder
# #view_adminTopology_affinityGroups_serverMembers = Server Members
view_adminTopology_agentDetail_address=Adresse
+view_adminTopology_agentDetail_agentFailoverList=Agent Failover Liste
# #view_adminTopology_agentDetail_agentFailoverList = Agent Failover List
view_adminTopology_agentDetail_currentServer=Aktueller Server
+view_adminTopology_agentDetail_remoteEndpoint=Remote Endpunkt
+view_adminTopology_agentDetail_token=Token
+view_adminTopology_agent_agentBindAddress=Agent Bind Adresse
+view_adminTopology_agent_agentBindPort=Agent Bind Port
# #view_adminTopology_agentDetail_token = Token
# #view_adminTopology_agent_agentBindAddress = Agent Bind Address
# #view_adminTopology_agent_agentBindPort = Agent Bind Port
view_adminTopology_agent_agentName=Name des Agenten
view_adminTopology_agent_connectedServer=Verbundener Server
+view_adminTopology_agent_delete_confirm=Dies hebt die Registrierung der gewÀhlten
Agenten auf und entfernt deren korrespondierende Plattformen und alle mit ihnen
assoziierten Ressourcen aus dem Inventar. Dieser Vorgang kann nicht rÌckgÀngig gemacht
werden. Sind Sie sicher, dass Sie dies tun möchten?
+view_adminTopology_agent_delete_error=Anfrage fÌr das Löschen der ausgewÀhlten Agenten
ist fehlgeschlagen
+view_adminTopology_agent_delete_submitted=[{0}] Agenten gelöscht und alle ihre
assoziierten Ressourcen dem Inventar entnommen.\n
+view_adminTopology_agent_lastAvailabilityPing=Letzter VerfÃŒgbarkeitsbericht-Ping
+view_adminTopology_agent_lastAvailabilityReport=Letzter VerfÃŒgbarkeitsbericht
# #view_adminTopology_agent_delete_confirm = This will deregister the selected agents and
uninventory their corresponding platforms and all other resources associated with them.
There is no way to undo this action. Are you sure you want to do this?
# #view_adminTopology_agent_lastAvailabilityPing = Last Availability Ping
# #view_adminTopology_agent_lastAvailabilityReport = Last Availability Report
view_adminTopology_agents=Agenten
+view_adminTopology_message_agentsCount=Es sind {0} Agenten bei diesem Server registriert.
Diese Anzahl stimmt nicht mit den derzeit verbundenen Agenten ÃŒberein.
+view_adminTopology_message_agroupAssingAgentsFail=Kann Agenten nicht der Affinity Gruppe
mit ID {0} zuweisen.
+view_adminTopology_message_agroupAssingServersFail=Kann Server nicht der Affinity Gruppe
mit ID {0} zuweisen.
+view_adminTopology_message_agroupRemovingAgentsFail=Kann Agenten nicht aus der Affinity
Gruppe mit ID {0} entfernen.
+view_adminTopology_message_agroupRemovingServersFail=Kann Server nicht aus der Affinity
Gruppe mit ID {0} entfernen.
+view_adminTopology_message_agroupRenamed=Affinity Gruppe mit ID {0} und Namen {1} wurde
umbenannt in {2}.
+view_adminTopology_message_agroupRenamingFail=Kann Affinity Gruppe mit ID {0} und Namen
{1} nicht umbenennen.
+view_adminTopology_message_fetchAgentFail=Kann Agent Details fÃŒr Agent mit ID {0} nicht
abrufen.
+view_adminTopology_message_fetchAgents2Fail=Kann Agenten nicht abrufen.
+view_adminTopology_message_fetchAgentsFail=Kann Agent(en) fÃŒr Affinity Gruppe mit ID {0}
nicht abrufen.
+view_adminTopology_message_fetchAgroupFail=Kann Affinity Gruppen Details mit ID {0} nicht
abrufen.
+view_adminTopology_message_fetchAgroupsFail=Kann Affinity Gruppe(n) nicht abrufen.
+view_adminTopology_message_fetchFailOverLists=Kann Fail Over Listen Details nicht
abrufen.
+view_adminTopology_message_fetchPEventDetailsFail=Kann Partitionsereignisdetails fÃŒr
Ereignis mit ID {0} nicht abrufen.
+view_adminTopology_message_fetchPEventFail=Kann Partitionsereignisse nicht abrufen.
+view_adminTopology_message_fetchServerFail=Kann Serverdetails fÃŒr Server mit ID {0}
nicht abrufen.
+view_adminTopology_message_fetchServers2Fail=Kann Server nicht abrufen.
+view_adminTopology_message_fetchServersFail=Kann Server fÃŒr Affinity Gruppe mit ID {0}
nicht abrufen.
+view_adminTopology_message_forceRepartition=Möchten Sie eine Repartitionierung des
gesamten Clusters wirklich erzwingen? It will force all the agents to connect to its most
preferred server.
+view_adminTopology_message_forceRepartitionFail=Kann keine Repartitionierung ausfÃŒhren.
# #view_adminTopology_message_agentsCount = There are {0} agents registered to this
server. This number doesn't correspond to the number of currently connected agents.
# #view_adminTopology_message_agroupAssingAgentsFail = Unable to assign agents to the
affinity group with id {0}.
# #view_adminTopology_message_agroupAssingServersFail = Unable to assign servers to the
affinity group with id {0}.
@@ -725,6 +794,22 @@ view_adminTopology_agents=Agenten
# #view_adminTopology_message_forceRepartition = Do you really want to force a
repartition of whole cluster? It will force all the agents to connect to its most
preferred server.
# #view_adminTopology_message_forceRepartitionFail = Unable to run repartition.
view_adminTopology_message_order=Reihenfolge
+view_adminTopology_message_removeAGroupsConfirm=Möchten Sie die folgenden Affinity
Gruppen {0} wirklich entfernen?
+view_adminTopology_message_removeAGroupsFail=Kann die folgende(n) Affinity Gruppe(n){0}
nicht entfernen.
+view_adminTopology_message_removeAllPEventConfirm=Möchten Sie wirklich alle
Partitionsereignisse bereinigen?
+view_adminTopology_message_removePEventConfirm=Möchten Sie die folgenden
Partitionsereignisse {0} wirklich entfernen?
+view_adminTopology_message_removePEventFail=Kann {0} Partitionsereignis(se) nicht
entfernen.
+view_adminTopology_message_removeServerConfirm=Möchten Sie die Server {0} wirklich
entfernen?
+view_adminTopology_message_removeServerFail=Kann {0} Server nicht entfernen.
+view_adminTopology_message_removedAGroups={0} Affinity Gruppe(n) entfernt.
+view_adminTopology_message_removedAllPEvent=Es wurden alle Partitionsereignisse
bereinigt.
+view_adminTopology_message_removedAllPEventFail=Kann nicht alle Partitionsereignisse
bereinigen.
+view_adminTopology_message_removedPEvent={0} Partitionsereignis(se) entfernt.
+view_adminTopology_message_removedServer={0} Server entfernt.
+view_adminTopology_message_repartitioned=Die Cluster Repartitionierung wurde erfolgreich
aufgerufen.
+view_adminTopology_message_serverUpdateFail=Kann Server {0} nicht aktualisieren.
+view_adminTopology_message_serverUpdated=Der Server {0} wurde erfolgreich aktualisiert.
+view_adminTopology_message_setMode={0} Server auf {1} Modus eingestellt.
# #view_adminTopology_message_removeAGroupsConfirm = Do you really want to remove
following affinity groups {0}?
# #view_adminTopology_message_removeAGroupsFail = Unable to remove following affinity
groups(s) {0}.
# #view_adminTopology_message_removeAllPEventConfirm = Do you really want to purge all
partition events?
@@ -744,12 +829,22 @@ view_adminTopology_message_order=Reihenfolge
view_adminTopology_message_setModeConfirm=Möchten Sie wirklich die Sever {0} in den
Zustand {1} bringen?
view_adminTopology_message_setModeFail=Konnte die Server {0} nicht in den Zustand {1}
bringen.
view_adminTopology_partitionEvents=Partitionierungs-Ereignisse
+view_adminTopology_partitionEventsDetail_agentAssignments=Agent Assignments
+view_adminTopology_partitionEventsDetail_agentAssignments_nothing=Es wurden keine Agenten
als Ergebnis dieses Partitionsereignisses erneut zugewiesen
+view_adminTopology_partitionEventsDetail_eventDetails=Ereignis Details
+view_adminTopology_partitionEventsDetail_eventExecutionTime=Ereignis AusfÃŒhrungszeit
+view_adminTopology_partitionEventsDetail_eventType=Ereignistyp
# #view_adminTopology_partitionEventsDetail_agentAssignments = Agent Assignments
# #view_adminTopology_partitionEventsDetail_agentAssignments_nothing = No agents were
reassigned as a result of this partition event
# #view_adminTopology_partitionEventsDetail_eventDetails = Event Details
# #view_adminTopology_partitionEventsDetail_eventExecutionTime = Event Execution Time
# #view_adminTopology_partitionEventsDetail_eventType = Event Type
view_adminTopology_partitionEvents_details=Details
+view_adminTopology_partitionEvents_detailsFilter=Filter fÃŒr Details
+view_adminTopology_partitionEvents_execStatusFilter=AusfÃŒhrungsstatus Filter
+view_adminTopology_partitionEvents_execTime=AusfÃŒhrungszeit
+view_adminTopology_partitionEvents_executionStatus=AusfÃŒhrungsstatus
+view_adminTopology_partitionEvents_forceRepartition=Repartitionierung erzwingen
# #view_adminTopology_partitionEvents_detailsFilter = Details Filter
# #view_adminTopology_partitionEvents_execStatusFilter = Execution Status Filter
# #view_adminTopology_partitionEvents_execTime = Execution Time
@@ -758,22 +853,33 @@ view_adminTopology_partitionEvents_details=Details
view_adminTopology_partitionEvents_initiatedBy=Initiiert durch
view_adminTopology_partitionEvents_purgeAll=Alle löschen
view_adminTopology_partitionEvents_type=Typ
+view_adminTopology_partitionEvents_typeFilter=Typ Filter
# #view_adminTopology_partitionEvents_typeFilter = Type Filter
view_adminTopology_remoteAgentInstall=Installation entfernter Agenten
+view_adminTopology_serverDetail_connectedAgents=Verbundene Agenten
+view_adminTopology_serverDetail_installationDate=Installationsdatum
+view_adminTopology_serverDetail_operationMode=Operationsmodus
+view_adminTopology_server_affinityGroup=Affinity Gruppe
# #view_adminTopology_serverDetail_connectedAgents = Connected Agents
# #view_adminTopology_serverDetail_installationDate = Installation Date
# #view_adminTopology_serverDetail_operationMode = Operation Mode
# #view_adminTopology_server_affinityGroup = Affinity Group
view_adminTopology_server_agentCount=Anzahl Agenten
+view_adminTopology_server_endpointAddress=Endpunkt-Adresse
+view_adminTopology_server_lastUpdateTime=Zeitpunkt der letzten Aktualisierung
# #view_adminTopology_server_endpointAddress = Endpoint Address
# #view_adminTopology_server_lastUpdateTime = Last Update Time
view_adminTopology_server_mode=Modus
+view_adminTopology_server_nonSecurePort=Ungesicherter Port
+view_adminTopology_server_removeSelected=Auswahl entfernen
+view_adminTopology_server_securePort=Gesicherter Port
# #view_adminTopology_server_nonSecurePort = Nonsecure Port
# #view_adminTopology_server_removeSelected = Remove Selected
# #view_adminTopology_server_securePort = Secure Port
view_adminTopology_server_setMaintenance=Wartung setzen
view_adminTopology_server_setNormal=Normalbetrieb setzen
view_adminTopology_servers=Server
+view_adminTopology_storageNode_jmxConnectionUrl=JMX Verbindung URL
# #view_adminTopology_storageNode_jmxConnectionUrl = JMX Connection URL
view_adminTopology_storageNodes=Speicherknoten
view_adminUsersDetails_dataTypeName=Benutzer
@@ -783,11 +889,18 @@ view_admin_configuration=Konfiguration
view_admin_content=Inhalte
view_admin_downloads_agentDownload=Agent Download
view_admin_downloads_agent_buildNumber=Build-Nummer des Agents
+view_admin_downloads_agent_help=<p> Dies ist die {0} Agent Update Binary jar Datei.
Diese jar Datei soll Ihnen die Installation eines frischen Agenten an einer Maschine
ermöglichen, an der noch kein Agent vorhanden ist und Ihnen auÃerdem die Aktualisierung
eines bereits an einer Maschine installierten Agenten ermöglichen. FÌr weitere
Informationen fÃŒhren Sie diese Agent Download jar mit der --help Befehlszeilenoption
aus\:<br/> <b>java -jar <agent-download.jar> --help</b>
</p> <h3>Agent Install</h3> <p> <b>java -jar
<agent-download.jar> --install[\=<new agent
directory>]</b><br/> Dieser Befehl installiert einen neuen Agent. Falls
Sie das neue Agentverzeichnis nicht festlegen, so lautet der Standard "."
</p> <h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[\=<old agent
home>]</b><br/> Dies aktualisiert einen vorhandenen Agent, der bereits
installiert war. Falls Sie das Verzeichnis nicht festlegen, in dem der altevorhande
ne Agent installiert war, so wird davon ausgegangen, dass es "rhq-agent" ist.
</p>
+view_admin_downloads_agent_link_value=Agent {0} ({1}) herunterladen
+view_admin_downloads_agent_loadError=Erhalt von Agenten Versionsinfo nicht möglich
# #view_admin_downloads_agent_help = <p> This is the {0} Agent Update Binary jar
file. The purpose of this jar file is to allow you to install a fresh agent on a machine
where an agent does not yet exist and to allow you to update an agent that is already
installed on a machine. For more details, run this agent download jar with the --help
command line option:<br/> <b>java -jar <agent-download.jar>
--help</b> </p> <h3>Agent Install</h3> <p> <b>java
-jar <agent-download.jar> --install[=<new agent
directory>]</b><br/> This command will install a new agent. If you do
not specify the new agent directory, the default will be "." </p>
<h3>Agent Update</h3> <p> <b>java -jar
<agent-download.jar> --update[=<old agent
home>]</b><br/> This will update an existing agent that was already
installed. If you do not specify the directory where the old, existing agent was
installed, it will assumed to be "rhq-agent". </p>
# #view_admin_downloads_agent_link_value = Download Agent {0} ({1})
# #view_admin_downloads_agent_loadError = Cannot get agent version info
view_admin_downloads_agent_md5=MD5 PrÃŒfsumme des Agents
view_admin_downloads_agent_version=Version des Agents
+view_admin_downloads_bundleDownload=Bundle Deployer Download
+view_admin_downloads_bundle_help=<p> Dies ist das Bundle Deployer Tool. Es dient
der Verwendung durch Entwickler und Verpacker von {0} Bundles. Dieses eigenstÀndige Tool
das Testen Ihrer Bundles und deren Anleitungen von einer Konsole. </p>
+view_admin_downloads_bundle_link_value=Bundle Deployer {0} herunterladen
+view_admin_downloads_bundle_loadError=Erhalt von Bundle Deployer Info nicht möglich
# #view_admin_downloads_bundleDownload = Bundle Deployer Download
# #view_admin_downloads_bundle_help = <p> This is the Bundle Deployer tool. It is
for use by developers and packagers of {0} bundles. This standalone tool allows you to
test your bundles and their recipes from a console. </p>
# #view_admin_downloads_bundle_link_value = Download Bundle Deployer {0}
@@ -796,6 +909,11 @@ view_admin_downloads_cliAlertScriptsDownload=Download von
CLI-Alarm-Skripten
view_admin_downloads_cliAlertScripts_help=CLI-Alarm-Skripte sind vorefertigete Skripte,
die als Vorlagen fÌr die Erstellung von Alert-Skripten genutzt werden können. Die
Skripte benötigen Ìblicherweise einiger Anpassungen bevore sie zur Benachrichtigun fÌr
eine spezifische Alarm-Definition genutzt werden können.
view_admin_downloads_cliAlertScripts_loadError=Kann keine Informationen ÃŒber
CLI-Alarm-Skripte fÃŒr den Download lesen
view_admin_downloads_cliAlertScripts_none=Es liegen keine CLI-Alarm-Skripte fÃŒr den
Download vor
+view_admin_downloads_cliDownload=Befehlszeilen Client Download
+view_admin_downloads_cli_buildNumber=CLI Build
+view_admin_downloads_cli_help=<p> Dies ist das Befehlszeilen Client Tool, auch
unter dem Namen CLI bekannt. Es handelt sich um ein eigenstÀndiges Tool das von innerhalb
einer Konsole lÀuft und ein Befehölszeilen Interface fÌr den {0} Server bereitstellt.
Sie können Befehle Ìber das CLI aufrufen und Skripte fÌr die DurchfÌhrung
automatisierter Aufgaben ausfÃŒhren. In der Dokumentation finden Sie weitere Informationen
zur Installation und Verwendung des CLI. </p>
+view_admin_downloads_cli_link_value=CLI {0} ({1}) herunterladen
+view_admin_downloads_cli_loadError=Erhalt von CLI Versionsinfo nicht möglich
# #view_admin_downloads_cliDownload = Command Line Client Download
# #view_admin_downloads_cli_buildNumber = CLI Build
# #view_admin_downloads_cli_help = <p> This is the Command Line Client tool,
otherwise known as the CLI. It is a standalone tool that runs from within a console and
provides a command line interface to the {0} Server. You can invoke commands via the CLI
as well as run scripts to perform automated tasks. See the documentation for more
information on how to install and use the CLI. </p>
@@ -803,6 +921,14 @@ view_admin_downloads_cliAlertScripts_none=Es liegen keine
CLI-Alarm-Skripte fÃŒr
# #view_admin_downloads_cli_loadError = Cannot get CLI version info
view_admin_downloads_cli_md5=MD5 PrÃŒfsumme des CLI
view_admin_downloads_cli_version=Version des CLI
+view_admin_downloads_connectorsDownload=Konnektoren Download
+view_admin_downloads_connectors_help=Bei Konnektoren handelt es sich um Software die
erforderlich ist, damit einige Produkte durch {0} verwaltet werden können. Konnektoren
werden in einige verwaltete Produkte installiert, damit {0} Agenten mit diesen
kommunizieren können. Weitere Informationen finden Sie in der Dokumentation.
+view_admin_downloads_connectors_loadError=Erhalt von Konnektoren Info nicht möglich
+view_admin_downloads_connectors_none=Keine Konnektoren zum Download verfÃŒgbar
+view_admin_downloads_scriptModulesDownload=Skript Module Download
+view_admin_downloads_scriptModules_help=<p> Skript Module sind wiederverwendbare
Komponenten, die von der RHQ bereitgestellt werden, um in Ihren Skripten verwendet zu
werden (entweder Alarm Skripte oder CLI Skripte). Sie können mittels des
"rhq\://downloads/<module-name-without-file-extension>" URI in der
Skriptsprache Ihrer Wahl darauf zugreifen (d.h. in javascript wÃŒrden Sie die
"require"-Funktion verwenden).</p>
+view_admin_downloads_scriptModules_loadError=Kann die Liste von verfÃŒgbaren
Skriptmodulen nicht laden
+view_admin_downloads_scriptModules_none=Keine Skriptmodule zum Download verfÃŒgbar
# #view_admin_downloads_connectorsDownload = Connectors Download
# #view_admin_downloads_connectors_help = Connectors are software that is needed in order
for some products to be manageable by {0}. You install connectors into some managed
products so {0} agents can talk to them. See the documentation for more information.
# #view_admin_downloads_connectors_loadError = Cannot get connectors info
@@ -813,6 +939,7 @@ view_admin_downloads_cli_version=Version des CLI
# #view_admin_downloads_scriptModules_none = No script modules are available for
download
view_admin_landing=In dieser Sektion können die globalen Einstellungen fÌr {0}
verwaltet werden. Dies schlieÃt Sicherheitseinstellungen und Plugins ein, sowie die
Verwaltung der {0} Server- und Agentplugins.
view_admin_measTemplates_updateExisting_title=Existierende ZeitplÀne aktualisieren
+view_admin_measTemplates_updateExisting_tooltip=Markieren Sie dieses KÀstchen, um die
Collection ZeitplÀne fÌr die gewÀhlten Metriken an allen Ressourcen dieses Typs zu
aktualisieren. Ist es nicht markiert, so werden die VorlagenzeitplÀne nur an neuen
Ressourcen dieses Typs angewendet, die zu einem spÀteren Zeitpunkt dem Inventar
hinzugefÃŒgt werden.
# #view_admin_measTemplates_updateExisting_tooltip = Check this box to update the
collection schedules for the selected metrics on all existing resources of this type. If
this is not checked, the template schedules will only be applied to new resources of this
type that are added to inventory in the future.
view_admin_plugins_agent=Agent
view_admin_plugins_agentDeleteConfirm=<b>Achtung\!</b><br/>\nDie
folgenden Agent-Plugins werden gelöscht\:<br/>\n{0}<br/>\nSind Sie sicher,
dass sie diese löschen wollen?
@@ -835,6 +962,10 @@ view_admin_plugins_purgedAgentPlugins=Das AufrÀumen der
Agent-Plugins {0} wird
view_admin_plugins_purgedAgentPluginsFailure=Konnte die Agent-Plugins nicht entfernen
view_admin_plugins_purgedServerPlugins=Server-Plugins {0} entfernt
view_admin_plugins_purgedServerPluginsFailure=Konnte die Server-Plugins nicht entfernen
+view_admin_plugins_restartMasterPC=Master Plugin Container neu starten
+view_admin_plugins_restartMasterPCComplete=Master Plugin Container wurde neu gestartet.
+view_admin_plugins_restartMasterPCFailure=Neustart von Master Plugin Container
fehlgeschlagen
+view_admin_plugins_restartMasterPCStarted=Starte Master Plugin Container neu...
# #view_admin_plugins_restartMasterPC = Restart Master Plugin Container
# #view_admin_plugins_restartMasterPCComplete = Master plugin container has been
restarted.
# #view_admin_plugins_restartMasterPCFailure = Failed to restart the master plugin
container
@@ -847,9 +978,12 @@ view_admin_plugins_serverConfig=Plugin-Konfiguration
view_admin_plugins_serverConfig_badSettings=Bitte geben Sie gÃŒltige Daten ein
view_admin_plugins_serverConfig_saveFailed=Konnte die Einstellungen nicht speichern
view_admin_plugins_serverConfig_settingsSaved=Die Einstellungen wurden gespeichert
+view_admin_plugins_serverControls=Steuerungen
# #view_admin_plugins_serverControls = Controls
view_admin_plugins_serverControls_badParams=Bitte geben Sie gÃŒltige Parameter an
view_admin_plugins_serverControls_clickForError=Klicken, um die Fehlermeldung anzuzeigen
+view_admin_plugins_serverControls_invokeFailure=Aufruf von Steuerung fehlgeschlagen
+view_admin_plugins_serverControls_name=Steuerung
# #view_admin_plugins_serverControls_invokeFailure = Failed to invoke the control
# #view_admin_plugins_serverControls_name = Control
view_admin_plugins_serverControls_parameters=Parameter
@@ -858,27 +992,95 @@
view_admin_plugins_serverDisableConfirm=<b>Achtung\!</b><br/>\nDie
folgenden Ser
view_admin_plugins_serverScheduleJobs=Geplante Aufgaben
view_admin_plugins_serverUndeployConfirm=<b>Achtung\!</b><br/>\nDie
folgenden Server-Plugins werden gelöscht\:<br/>\n{0}<br/>\nSind Sie sicher,
dass diese gelöscht werden sollen?
view_admin_plugins_showDeleted=Gelöschte anzeigen
+view_admin_plugins_showUndeployed=Undeployte anzeigen
+view_admin_plugins_undeploy=Undeployen
+view_admin_plugins_undeployedServerPlugins=Undeployte Server Plugins\: {0}
+view_admin_plugins_undeployedServerPluginsFailure=Konnte die Server-Plugins nicht
undeployen.
# #view_admin_plugins_showUndeployed = Show Undeployed
# #view_admin_plugins_undeploy = Undeploy
# #view_admin_plugins_undeployedServerPlugins = Undeployed server plugins: {0}
# #view_admin_plugins_undeployedServerPluginsFailure = Failed to undeploy server
plugins.
view_admin_plugins_upload=Plugin hochladen
view_admin_security=Sicherheit
+view_admin_systemSettings_ActiveDriftServerPlugin_desc=Der Drift Server Plugin der die
Persistenz von Drift-bezogenen Entities und Content verwaltet.
# #view_admin_systemSettings_ActiveDriftServerPlugin_desc = The drift server plugin that
manages the persistence of drift-related entities and content.
view_admin_systemSettings_ActiveDriftServerPlugin_name=Aktives Drift-Server-Plugin
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_desc=Wenn diese Zeit ohne Reaktion vom
Agent verlÀuft, so wird dieser stille Agent als auÃer Betrieb angesehen. Der Wert ist in
Minuten festgelegt.
+view_admin_systemSettings_AgentMaxQuietTimeAllowed_name=Agent Max Ruhezeit gestattet
+view_admin_systemSettings_AlertPurge_desc=Wie alt Verlaufselemente sein mÃŒssen, ehe sie
aus der Datenbank bereinigt werden. Dies ist in Tagen festgelegt.
view_admin_systemSettings_AlertPurge_name=Bereinigen der Alarme, die Àlter sind als
+view_admin_systemSettings_AvailabilityPurge_desc=Wie alt VerfÃŒgbarkeitsdaten sein
mÃŒssen, ehe sie aus der Datenbank bereinigt werden. Dies ist in Tagen festgelegt.
view_admin_systemSettings_AvailabilityPurge_name=Lösche VerfÌgbarkeitsdaten, die Àlter
sind als
+view_admin_systemSettings_BaseURL_desc=Eine URL zum Server GUI, die hauptsÀchlich
innerhalb von Alarm E-Mail Benachrichtigungen verwendet wird.
+view_admin_systemSettings_BaseURL_name=GUI Konsole URL
+view_admin_systemSettings_BaselineDataSet_desc=Die Menge an vergangenen Messdaten, die
zur Bestimmung des Referenzbands verwendet werden. Dies ist in Tagen festgelegt.
+view_admin_systemSettings_BaselineDataSet_name=Referenzband Datensatz
+view_admin_systemSettings_BaselineFrequency_desc=Die HÀufigkeit mit der die
auto-calculation (Selbstberechnung) von ReferenzbÀndern durchgefÌhrt wird. Falls 0, so
ist die Referenzband auto-calculation deaktiviert. Dies ist in Tagen festgelegt.
Maximalwert ist 'Baseline Dataset' (Referenzband Datensatz).
+view_admin_systemSettings_BaselineFrequency_name=Referenzband BerechnungshÀufigkeit
+view_admin_systemSettings_DataMaintenance_desc=Wie oft die Datenbankwartung durchgefÃŒhrt
wird (zum Beispiel Vacuuming bei Verwendung von Postgres). Dies wird in Stunden
festgelegt.
+view_admin_systemSettings_DataMaintenance_name=Datenbankwartungszeitraum
+view_admin_systemSettings_DataReindex_desc=Wenn aktiviert, so werden bestimmte
Datenbanken periodisch neu indiziert.
+view_admin_systemSettings_DataReindex_name=Datentabellen jede Nacht neu indizieren
+view_admin_systemSettings_DriftFilePurge_desc=Wie alt nicht benutzte und verwaiste Drift
Dateien sein mÃŒssen, ehe sie aus dem Backend-Speicher bereinigt werden. Dies ist in Tagen
festgelegt.
# #view_admin_systemSettings_DriftFilePurge_desc = How old unused and orphaned drift
files must be before being purged from backend storage. This is specified in days.
view_admin_systemSettings_DriftFilePurge_name=Bereinige ungenutzte Drift-Dateine, die
Àlter sind als
+view_admin_systemSettings_EnableAgentAutoUpdate_desc=Legt fest, ob der Server Agents ein
auto-update (Selbstaktualisierung) gestattet. Ist dies deaktiviert, so können Sie keine
Agent Distributionen vom Server herunterladen.
+view_admin_systemSettings_EnableAgentAutoUpdate_name=Agenten Auto-Updates aktivieren
+view_admin_systemSettings_EnableDebugMode_desc=Falls aktiviert, so startet der Server den
Fehlerbehebungsmodus.
+view_admin_systemSettings_EnableDebugMode_name=Fehlerbehebungsmodus aktivieren
+view_admin_systemSettings_EnableExperimentalFeatures_desc=Falls aktiviert werden im
aktuellen Produkt vorhandene experimentelle Features verfÃŒgbar.
+view_admin_systemSettings_EnableExperimentalFeatures_name=Experimentelle Features
aktivieren
+view_admin_systemSettings_EventPurge_desc=Wie alt Ereignisdaten sein mÃŒssen, ehe sie aus
der Datenbank bereinigt werden. Dies ist in Tagen festgelegt.
+view_admin_systemSettings_EventPurge_name=Ereignisse löschen, die Àlter sind als
+view_admin_systemSettings_JAASProvider_desc=Sollte zur Bestimmung der BenutzeridentitÀt
LDAP verwendet werden?
+view_admin_systemSettings_JAASProvider_name=LDAP aktivieren
+view_admin_systemSettings_LDAPBaseDN_desc=Die Basis des Verzeichnisbaums zur Suche nach
Benutzernamen und Passwörter werden der Authentifizierung von Benutzern, z.B.
ou\=People,dc\=redhat,dc\=com
view_admin_systemSettings_LDAPBaseDN_name=Basis fÃŒr Suche
+view_admin_systemSettings_LDAPBindDN_desc=Der Benutzername zur Verbindung mit dem LDAP
Server bei der Abfrage der LDAP Benutzerdatenbank. Dies ist in der Regel der vollstÀndige
LDAP distinguierte Name (DN) eines Manager Benutzers, z.B. cn\=Manager,dc\=redhat,dc\=com
+view_admin_systemSettings_LDAPBindDN_name=Benutzername
+view_admin_systemSettings_LDAPBindPW_desc=Die Berechtigungsnachweise des Benutzers, die
fÃŒr die Verbindung mit dem LDAP-Server bei der Abfrage der LDAP Benutzerdatenbank
verwendet werden.
+view_admin_systemSettings_LDAPBindPW_name=Passwort
+view_admin_systemSettings_LDAPFilter_desc=Etwaige zusÀtzliche Filter, die bei der LDAP
Suche angewendet werden sollen. Dies ist nÃŒtzlich, wenn die Population zur
Authentifizierung ÃŒber eine gegebene LDAP Property identifiziert werden kann, z.B.
RHQUser\=true
+view_admin_systemSettings_LDAPFilter_name=Suchfilter
+view_admin_systemSettings_LDAPGroupFilter_desc=LDAP Suchfilter, der alle fÃŒr die
Autorisierung verfÃŒgbaren LDAP Gruppen wiedergeben muss. Dies wird fÃŒr LDAP
Gruppenautorisierung verwendet.
+view_admin_systemSettings_LDAPGroupFilter_name=Gruppen Suchfilter
+view_admin_systemSettings_LDAPGroupMember_desc=LDAP Suchfilter der in Verbindung mit dem
Gruppen Suchfilter zur Bestimmung der Benutzerberechtigung verwendet wird. Dies wird fÃŒr
die LDAP Gruppenautorisierung verwendet.
+view_admin_systemSettings_LDAPGroupMember_name=Gruppen Mitgliederfilter
+view_admin_systemSettings_LDAPGroupPageSize_desc=Um RFC 2696 zu unterstÃŒtzen wird dieser
LDAP Group Page Size Suchparameter in Verbindung mit anderen Gruppensuchparametern
verwendet, um die Anzahl von mit jedem Abfragenergebnis wiedergegebene Anzahl von
Gruppenmitgliedern einzuschrÀnken. Dieser Wert sollte so hoch wie möglich eingestellt
werden und zum Serverseiten maximalen SeitengröÃenwert um die besten Ergebnisse zu
erhalten. Values > (server max page size) hat keine Auswirkung. Verringern Sie diesen
Wert wenn LDAP Gruppenanfragen zu lange fÃŒr die Wiedergabe brauchen. Der Standard sind
1000 Ergebnisse.
+view_admin_systemSettings_LDAPGroupPageSize_name=Group Search Page Size (Gruppen Suche
Seiten GröÃe)
+view_admin_systemSettings_LDAPGroupUsePaging_desc=Definiert, ob LDAP Gruppenanfragen die
"Simple Paged Results" FunktionalitÀt (wie von RFC 2696 definiert) verwenden
sollten. Insbesondere bei die Anfrageergebnisse einschrÀnkenden LDAP Servern wird der
Client Seite fÃŒr Seite alle Ergebnisse in der Group Page Size (GruppenseitengröÃe)
durchgehen, bis er fertig ist. Standardeinstellung ist false.
+view_admin_systemSettings_LDAPGroupUsePaging_name=Verwendung von Group Query Paging
+view_admin_systemSettings_LDAPGroupUsePosixGroup_desc=Definiert, ob PosixGroup Semantik
fÃŒr die GruppenmitgliedschaftsprÃŒfung verwendet werden soll. Mit PosixGroups ist der
Group Member Filter (Gruppenmitgliedschaftsfilter) in der Regel auf 'memberUid'
und der Group Filter (Gruppenfilter) auf 'objectclass\=posixGroup' eingestellt.
+view_admin_systemSettings_LDAPGroupUsePosixGroup_name=Ist PosixGroup
+view_admin_systemSettings_LDAPLoginProperty_desc=Die LDAP Eigenschaft, die den
Benutzernamen enthÀlt. Die Standardeinstellung ist "cn". Werden mehrere
Ãbereinstimmungen gefunden, so wird der erste Eintrag verwendet.
+view_admin_systemSettings_LDAPLoginProperty_name=Login Eigenschaft
+view_admin_systemSettings_LDAPProtocol_desc=Soll die Kommunikation mit dem LDAP Server
ÃŒber SSL erfolgen?
+view_admin_systemSettings_LDAPProtocol_name=SSL
+view_admin_systemSettings_LDAPUrl_desc=URL zum LDAP Server
+view_admin_systemSettings_LDAPUrl_name=LDAP URL
+view_admin_systemSettings_RHQSessionTimeout_desc=Wenn diese Zeit ohne Benutzerinteraktion
im Browser verlÀuft, so wird die Session als abgelaufen angesehen und der Benutzer wird
um erneute Anmeldung gebeten. Der Wert ist in Stunden festgelegt.
+view_admin_systemSettings_RHQSessionTimeout_name=GUI Session Timeout
+view_admin_systemSettings_RtDataPurge_desc=Wie alt Antwort Zeitdaten sein mÃŒssen, ehe
sie aus der Datenbank bereinigt werden. Dies ist in Tagen festgelegt.
+view_admin_systemSettings_RtDataPurge_name=Lösche Antwort Zeitdaten, die Àlter sind
als
+view_admin_systemSettings_TraitPurge_desc=Wie alt Mess Merkmaldaten sein mÃŒssen, ehe sie
aus der Datenbank bereinigt werden. Dies ist in Tagen festgelegt.
# #view_admin_systemSettings_RHQSessionTimeout_desc = If this amount of time passes
without any user interaction in the browser, the session is considered as expired and user
is aked to log in again. This value is specified in hours.
# #view_admin_systemSettings_RHQSessionTimeout_name = GUI Session Timeout
view_admin_systemSettings_TraitPurge_name=Bereinigen der Trait-Daten, die Àlter sind
als
+view_admin_systemSettings_cannotLoadServerDetails=Kann Server Details nicht laden
+view_admin_systemSettings_cannotLoadSettings=Erhalt aktueller Systemeinstellungen nicht
möglich
view_admin_systemSettings_dumpToLogFailed=Schreiben der Systeminformation in die
Server-Log-Datei ist fehlgeschlagen
view_admin_systemSettings_dumpedToLog=System informationen wurden erfolgreich in die
Server-Log-Datei geschrieben
+view_admin_systemSettings_fixBeforeSaving=Bitte korrigieren Sie ungÃŒltige Werte vor dem
Speichern
+view_admin_systemSettings_group_baseline=Automatische Referenzband
Konfigurationseigenschaften
+view_admin_systemSettings_group_dataMgr=Datenmanager Konfigurationseigenschaften
+view_admin_systemSettings_group_drift=Drift Server Konfigurationseigenschaften
+view_admin_systemSettings_group_general=Allgemeine Konfigurationseigenschaften
+view_admin_systemSettings_group_ldap=LDAP-Konfigurationseigenschaften
# #view_admin_systemSettings_group_drift = Drift Server Configuration Settings
view_admin_systemSettings_saveFailure=Das Speichern der Systemeinstellungen ist
fehlgeschlagen
view_admin_systemSettings_savedSettings=Sie haben die Systemeinstellungen erfolgreich
gespeichert
+view_admin_systemSettings_serverDetails=Server Details
+view_admin_systemSettings_serverDetails_buildNumber=Build-Nummer
view_admin_systemSettings_serverDetails_dbDriverName=Name des Datenbanktreibers
view_admin_systemSettings_serverDetails_dbDriverVersion=Version des Datenbanktreibers
view_admin_systemSettings_serverDetails_dbName=Produktname der Datenbank
@@ -892,6 +1094,7 @@ view_admin_systemSettings_serverDetails_tz=Zeitzone des Servers
view_admin_topology=Topologie
view_alert_common_tab_conditions=Bedingungen
view_alert_common_tab_conditions_expression=Alarm auslösen wenn
+view_alert_common_tab_conditions_expression_tooltip=Bestimmt ob ANY (eine) oder ALL
(alle) Bedingungen als "true" evaluiert werden mÃŒssen, damit der gesamte
Bedingungssatz als "true" angesehen wird.
# #view_alert_common_tab_conditions_expression_tooltip = Determines if ANY or ALL of the
conditions must evaluate to true in order for the entire condition set to be considered
true.
view_alert_common_tab_conditions_modalEdit_title=Bedingungen Àndern
view_alert_common_tab_conditions_modal_title=Bedingung hinzufÃŒgen
@@ -914,6 +1117,7 @@ view_alert_common_tab_conditions_type_metric_calltime_change_verb=um
mindestens
view_alert_common_tab_conditions_type_metric_calltime_delta_grows=WÀchst
view_alert_common_tab_conditions_type_metric_calltime_delta_other=Ãndert sich
view_alert_common_tab_conditions_type_metric_calltime_delta_shrinks=Schrumpft
+view_alert_common_tab_conditions_type_metric_calltime_destination=mit Aufruf
DestinationsÃŒbereinstimmung
# #view_alert_common_tab_conditions_type_metric_calltime_destination = with call
destination matching
view_alert_common_tab_conditions_type_metric_calltime_threshold=Call-Time ÃŒberschreitet
Schwellwert
view_alert_common_tab_conditions_type_metric_change=Wert der Metrik Àndert sich
@@ -923,6 +1127,7 @@
view_alert_common_tab_conditions_type_metric_range_outside_exclusive=Wertbereich
view_alert_common_tab_conditions_type_metric_range_outside_inclusive=Wertbereich der
Metrik\: [{0}] ausserhalb [{1}] und [{2}], inklusiv
view_alert_common_tab_conditions_type_metric_threshold=Metrik ÃŒberschreitet Schwellwert
view_alert_common_tab_conditions_type_metric_trait_change=Trait-Ãnderung
+view_alert_common_tab_conditions_type_metric_trait_matching=mit Trait Wert
Ãbereinstimmung
# #view_alert_common_tab_conditions_type_metric_trait_matching = with trait value
matching
view_alert_common_tab_conditions_type_operation=AusfÃŒhrung der Operation
view_alert_common_tab_conditions_type_operation_status=mit Ergebnis-Status
@@ -947,6 +1152,8 @@
view_alert_common_tab_dampening_partial_evalatuions_label_tooltip=Anzahl wie oft
view_alert_common_tab_dampening_partial_occurrences_label=Anzahl Vorkommen
view_alert_common_tab_dampening_partial_occurrences_label_tooltip=Anzahl wie oft die
Bedingungen innerhalb der letzten N Auswertungen wahr sein mÃŒssen, bevor der Alarm
ausgelöst wird.
view_alert_common_tab_general=Allgemeine Eigenschaften
+view_alert_common_tab_invalid_condition_category=UngÃŒltige Bedingungskategorie - bitte
berichten Sie diesen Fehler\: {0}
+view_alert_common_tab_invalid_dampening_category=UngÃŒltige Dampening Kategorie - bitte
berichten Sie diesen Fehler\: {0}
# #view_alert_common_tab_invalid_condition_category = Invalid condition category - please
report this as a bug: {0}
# #view_alert_common_tab_invalid_dampening_category = Invalid dampening category - please
report this as a bug: {0}
view_alert_common_tab_invalid_time_units=UngÃŒltige Zeiteinheit - bitte berichten Sie
diesen Fehler\: {0}
@@ -956,6 +1163,7 @@ view_alert_common_tab_notifications_sender=Sender
view_alert_common_tab_notifications_status=Status
view_alert_common_tab_recovery=Erholung
view_alert_definition_condition_editor_availabilityDuration=Dauer der VerfÃŒgbarkeit
+view_alert_definition_condition_editor_availabilityDuration_state=VerfÃŒgbarkeitsstatus
# #view_alert_definition_condition_editor_availabilityDuration_state = Availability
State
view_alert_definition_condition_editor_availabilityDuration_tooltip=Geben Sie die
Ãnderung der VerfÃŒgbarkeit und die LÀnge der Dauer des Zustandes an damit die Bedingung
zutrifft. Die Dauer ist in Minuten und sollte lang genug sein (mehrere Minuten), um dem
Agent Zeit zugeben eine potentielle Ãnderung des Zustands zu erkennen.
view_alert_definition_condition_editor_availabilityDuration_tooltip_duration=Die Anzahl
der Minuten in der die Ressource die gegeben VerfÃŒgbarkeit haben muss, bevor die
Bedingung zutrifft.
@@ -969,29 +1177,48 @@ view_alert_definition_condition_editor_common_min=Minimum
view_alert_definition_condition_editor_common_regex=RegulÀrer Ausdruck
view_alert_definition_condition_editor_delete_confirm=Die ausgewÀhlte(n)
Alarm-Bedingung(en) löschen?
view_alert_definition_condition_editor_drift_configname_regex=Name der Drift-Definition
+view_alert_definition_condition_editor_drift_configname_regex_tooltip=Falls festgelegt
ist dies der Drift Definitionsname, der fÃŒr den aufgespÃŒrten Drift verantwortlich war.
Dies kann optional ein regulÀrer Ausdruck sein, falls Sie eine Ãbereinstimmung mit
mehreren Drift Definitionsnamen haben möchten.
# #view_alert_definition_condition_editor_drift_configname_regex_tooltip = If specified,
this is the drift definition name that was responsible for the drift that was detected.
This can optionally be a regular expression if you wish to match multiple drift definition
names.
view_alert_definition_condition_editor_drift_pathname_regex=RegulÀrer Ausdruck fÌr den
Pfadnamen
+view_alert_definition_condition_editor_drift_pathname_regex_tooltip=Falls festgelegt ist
dies ein regulÀrer Ausdruck, der mit den Pfadnamen der Dateien mit Drift Ìbereinstimmen
muss.
+view_alert_definition_condition_editor_drift_tooltip=Diese Bedingung wird ausgelöst,
wenn Drift aufgespÃŒrt wurde.
# #view_alert_definition_condition_editor_drift_pathname_regex_tooltip = If specified,
this is a regular expression that must match the pathnames of those files that drifted.
# #view_alert_definition_condition_editor_drift_tooltip = This condition is triggered
when drift has been detected.
view_alert_definition_condition_editor_event_regexTooltip=If specified, this is a regular
expression that must match a collected event message in order to trigger the condition.
view_alert_definition_condition_editor_event_severity=Schwere des Ereignisses
+view_alert_definition_condition_editor_event_tooltip=Legen Sie eine Ereignisschwere fest,
bei der eine Ereignismeldung gemeldet werden muss, um diese Bedingung auszulösen. Falls
Sie einen optionalen regulÀren Audruck festlegen, muss die Ereignismeldung auch mit dem
regulÀren Ausdruck Ìbereinstimmen, um die Bedingung auszulösen.
+view_alert_definition_condition_editor_metric_baseline_percentage=Referenzband
Prozentsatz
+view_alert_definition_condition_editor_metric_baseline_percentage_tooltip=Ein gesammelter
metrischer Wert löst diese Bedingung beim Vergleich mit diesem Prozentsatz des gewÀhlten
Referenzbandswerts mittels des gewÀhlten Komparators aus.
+view_alert_definition_condition_editor_metric_baseline_tooltip=Legen Sie den
Referenzbandwert fest, der verletzt werden muss, um die Bedingung auszulösen. Der von
Ihnen festgelegte Wert ist ein Prozentsatz des gegebenen Referenzbandwerts.
# #view_alert_definition_condition_editor_event_tooltip = Specify the event severity that
an event message must be reported with in order to trigger this condition. If you specify
an optional regular expression, the event message must also match that regular expression
in order for the condition to trigger.
# #view_alert_definition_condition_editor_metric_baseline_percentage = Baseline
Percentage
# #view_alert_definition_condition_editor_metric_baseline_percentage_tooltip = A
collected metric value will trigger this condition when compared to this percentage of the
selected baseline value using the selected comparator
# #view_alert_definition_condition_editor_metric_baseline_tooltip = Specify the baseline
value that must be violated to trigger the condition. The value you specify is a
percentage of the given baseline value.
view_alert_definition_condition_editor_metric_baseline_value=Referenzband
view_alert_definition_condition_editor_metric_calltime_change_percentage=Ãnderung des
Prozentsatzes
+view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip=Ein
gesammelter Aufrufzeit Wert löst diese Bedingung aus, wenn er um mindestens diesen
Prozentsatz vom gewÀhlten Aufrufzeit Grenzwert differiert.
+view_alert_definition_condition_editor_metric_calltime_change_tooltip=Legen Sie den
Aufrufzeit Wert fest der die Bedingung auslöst, wenn er um mindestens eine festgelegte
Menge verÀndert wird. Sie mÌssen festlegen, welche Aufrufzeit Grenze geprÌft werden
soll (minimum, maximum oder durchschnittlicher Aufrufzeit Wert) und den Prozentsatz der
Ãnderung.
# #view_alert_definition_condition_editor_metric_calltime_change_percentage_tooltip = A
collected calltime value will trigger this condition when it differs by at least this
percentage of the selected calltime limit value
# #view_alert_definition_condition_editor_metric_calltime_change_tooltip = Specify the
calltime value that, when changed at least a specified amount, triggers the condition. You
must specify which calltime limit to check (minimum, maximum or average calltime value)
and the percentage of change that must occur.
view_alert_definition_condition_editor_metric_calltime_common_comparator=Komparator
view_alert_definition_condition_editor_metric_calltime_common_comparator_changes=Ãndert
sich
view_alert_definition_condition_editor_metric_calltime_common_comparator_grows=WÀchst
view_alert_definition_condition_editor_metric_calltime_common_comparator_shrinks=Schrumpft
+view_alert_definition_condition_editor_metric_calltime_common_comparator_tooltip=Wie ein
gesammelter Aufrufzeit Wert zur gegebenen Aufrufzeit Grenze verglichen werden soll
+view_alert_definition_condition_editor_metric_calltime_common_limit=Aufrufzeit Grenze
+view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip=Der
Aufrufzeit Grenzwert der mit dem gegebenen Wert verglichen werden soll
+view_alert_definition_condition_editor_metric_calltime_common_name=Aufrufzeit Metrik
# #view_alert_definition_condition_editor_metric_calltime_common_comparator_tooltip = How
a collected calltime value should be compared to the given calltime limit
# #view_alert_definition_condition_editor_metric_calltime_common_limit = Call Time Limit
# #view_alert_definition_condition_editor_metric_calltime_common_limit_tooltip = The
calltime limit value that is to be compared with the given value
# #view_alert_definition_condition_editor_metric_calltime_common_name = Call Time Metric
view_alert_definition_condition_editor_metric_calltime_regexTooltip=If specified, this is
a regular expression that must match a call destination in order to trigger the
condition.
+view_alert_definition_condition_editor_metric_calltime_threshold_tooltip=Legen Sie den
Aufrufzeit-Schwellwert fest, der verletzt werden muss, um die Bedingung auszulösen. Der
von Ihnen festgelegte Wert ist ein absoluter Wert, mit einem optionalen Einheiten
Spezifikationssymbol. Sie mÃŒssen auch festlegen, mit welcher Aufrufzeitgrenze der Wert
verglichen werden soll (minimum, maximum oder durchschnittlicher Aufrufzeit Wert).
+view_alert_definition_condition_editor_metric_calltime_threshold_value=Aufrufzeit Wert
+view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip=Der
Schwellwert der Metrik, die beim Vergleich mittels des gewÀhlten Komparators die
Bedingung auslöst.
+view_alert_definition_condition_editor_metric_change_tooltip=Legen Sie die Metrik fest,
deren Wert sich Àndern muss, um die Bedingung auszulösen.
+view_alert_definition_condition_editor_metric_common_definition_not_found=HÀtte
metrische Definition finden sollen - etwas stimmt nicht
+view_alert_definition_condition_editor_metric_nometrics=Bei Verwendung der ALL Verbindung
können Sie nicht dieselbe Metrik in mehreren Bedingungen verwenden und dieser Alarm
verwendet alle verfÃŒgbaren Metriken in aktuell vorhandenen Bedingungen.
# #view_alert_definition_condition_editor_metric_calltime_threshold_tooltip = Specify the
calltime threshold value that, when violated, triggers the condition. The value you
specify is an absolute value with an optional units specifier. You also must specify which
calltime limit to compare the value with (minimum, maximum or average calltime value).
# #view_alert_definition_condition_editor_metric_calltime_threshold_value = Call Time
Value
# #view_alert_definition_condition_editor_metric_calltime_threshold_value_tooltip = The
threshold value of the metric that will trigger the condition when compared using the
selected comparator.
@@ -1003,26 +1230,43 @@
view_alert_definition_condition_editor_metric_range_comparator_inside_exclusive=
view_alert_definition_condition_editor_metric_range_comparator_inside_inclusive=Innerhalb,
inklusiv
view_alert_definition_condition_editor_metric_range_comparator_outside_exclusive=Ausserhalb,
exklusiv
view_alert_definition_condition_editor_metric_range_comparator_outside_inclusive=Ausserhalb,
inklusiv
+view_alert_definition_condition_editor_metric_range_comparator_tooltip=Legt fest, ob ein
metrischer Wert diese Bedingung auslösen soll wenn der Bereich innerhalb oder auÃerhalb
verlÀuft. Falls inbegriffen, so wird der Wert als im Bereich angesehen, wenn sein Wert
einem Hoch- oder Tiefwert des Schwellwerts gleich ist. Falls exklusiv, so gilt der Wert
als nicht im Bereich wenn er dem Hoch- oder Tiefwert gleich ist.
# #view_alert_definition_condition_editor_metric_range_comparator_tooltip = Determines if
a metric value should trigger this condition when inside the range or outside of it.
view_alert_definition_condition_editor_metric_range_hivalue=Oberer Schwellwert
view_alert_definition_condition_editor_metric_range_hivalue_tooltip=Der obere Schwellwert
des Bereichs
view_alert_definition_condition_editor_metric_range_lovalue=Unterer Schwellwert
view_alert_definition_condition_editor_metric_range_lovalue_tooltip=Der untere
Schwellwert des Bereichs
+view_alert_definition_condition_editor_metric_range_tooltip=Vergleicht einen metrischen
Wert zu einem gegebenen Tief-/Hoch Bereichswert.
# #view_alert_definition_condition_editor_metric_range_tooltip = Compares a metric value
to a given low-high value range.
view_alert_definition_condition_editor_metric_threshold_comparator=Komparator
view_alert_definition_condition_editor_metric_threshold_comparator_equal=Gleich
view_alert_definition_condition_editor_metric_threshold_comparator_greater=GröÃer als
view_alert_definition_condition_editor_metric_threshold_comparator_less=Kleiner als
+view_alert_definition_condition_editor_metric_threshold_comparator_tooltip=Wie ein
gesammelter metrischer Wert mit dem gegebenen Schwellwert verglichen werden soll
# #view_alert_definition_condition_editor_metric_threshold_comparator_tooltip = How a
collected metric value should be compared to the given threshold value
view_alert_definition_condition_editor_metric_threshold_name=Metrik
+view_alert_definition_condition_editor_metric_threshold_tooltip=Legen Sie den Schwellwert
fest, der verletzt werden muss, um die Bedingung auszulösen. Der von Ihnen festgelegte
Wert ist ein absoluter Wert, mit einem optionalen Einheiten Spezifikationssymbol.
# #view_alert_definition_condition_editor_metric_threshold_tooltip = Specify the
threshold value that, when violated, triggers the condition. The value you specify is an
absolute value with an optional units specifier.
view_alert_definition_condition_editor_metric_threshold_value=Wert der Metrik
+view_alert_definition_condition_editor_metric_threshold_value_tooltip=Der Schwellwert der
Metrik, die beim Vergleich mittels des gewÀhlten Komparators die Bedingung auslöst.
+view_alert_definition_condition_editor_metric_trait_change_tooltip=Legen Sie das Merkmal
fest, dessen Wert sich Àndern muss, um die Bedingung auszulösen.
+view_alert_definition_condition_editor_metric_trait_change_value=Merkmal
+view_alert_definition_condition_editor_metric_trait_regexTooltip=Falls festgelegt ist
dies ein regulÀrer Ausdruck, der mit dem neuen Merkmalwert Ìbereinstimmen muss, um die
Bedingung auszulösen.
+view_alert_definition_condition_editor_metricswarning=Sie können nicht mehrere
Bedingungen haben, die dieselbe Metrik verwenden, wen Sie die ALL VerknÃŒpfung verwenden.
Diese Alarm Definition besitzt mehrere Bedingungen, die die Metrik [{0}] verwenden.
# #view_alert_definition_condition_editor_metric_threshold_value_tooltip = The threshold
value of the metric that will trigger the condition when compared using the selected
comparator.
# #view_alert_definition_condition_editor_metric_trait_change_tooltip = Specify the trait
whose value must change to trigger the condition.
# #view_alert_definition_condition_editor_metric_trait_change_value = Trait
# #view_alert_definition_condition_editor_metric_trait_regexTooltip = If specified, this
is a regular expression that must match the new trait value in order to trigger the
condition.
# #view_alert_definition_condition_editor_metricswarning = You cannot have multiple
conditions that use the same metric when using the ALL conjunction. This alert definition
has multiple conditions that use the metric [{0}].
view_alert_definition_condition_editor_operation_status=Zustand der Operation
+view_alert_definition_condition_editor_operation_tooltip=Legen Sie das Ergebnis fest, das
auftreten muss, wenn der gewÀhlte Vorgang ausgefÌhrt wird, damit die Bedingung
ausgelöst wird.
+view_alert_definition_condition_editor_operator_availability_durationDown=Bleibt auÃer
Betrieb
+view_alert_definition_condition_editor_operator_availability_durationNotUp=Bleibt nicht
in Betrieb
+view_alert_definition_condition_editor_operator_availability_goesDisabled=Wird
deaktiviert
+view_alert_definition_condition_editor_operator_availability_goesDown=Geht auÃer
Betrieb
+view_alert_definition_condition_editor_operator_availability_goesNotUp=Geht nicht in
Betrieb
+view_alert_definition_condition_editor_operator_availability_goesUnknown=Geht unbekannt
+view_alert_definition_condition_editor_operator_availability_goesUp=Geht in Betrieb
# #view_alert_definition_condition_editor_operation_tooltip = Specify the result that
must occur when the selected operation is executed in order to trigger the condition.
view_alert_definition_condition_editor_option_availability=Ãnderung der VerfÃŒgbarkeit
view_alert_definition_condition_editor_option_drift=Erkennung von Drift
@@ -1030,6 +1274,7 @@ view_alert_definition_condition_editor_option_event=Erkennung von
Ereignissen
view_alert_definition_condition_editor_option_label=Typ der Bedingung
view_alert_definition_condition_editor_option_metric_baseline=Schwelle des Referenzbands
view_alert_definition_condition_editor_option_metric_calltime_change=Ãnderung des
Call-Time-Werts
+view_alert_definition_condition_editor_option_metric_calltime_threshold=Aufrufzeit Wert
Schwellwert
# #view_alert_definition_condition_editor_option_metric_calltime_threshold = Call Time
Value Threshold
view_alert_definition_condition_editor_option_metric_change=Wert der Metrik Àndert sich
view_alert_definition_condition_editor_option_metric_range=Wertebereich
@@ -1043,16 +1288,27 @@ view_alert_definition_for_group=Gruppendefinition ansehen
view_alert_definition_for_type=Vorlage ansehen
view_alert_definition_notification_cliScript_editor_anotherUser=Anderer Benutzer
view_alert_definition_notification_cliScript_editor_existingScript=Vorhandenes Skript
+view_alert_definition_notification_cliScript_editor_loadFailed=Konnte CLI
Benachrichtigungs-Editor nicht laden.
+view_alert_definition_notification_cliScript_editor_newScriptVersion=Version
+view_alert_definition_notification_cliScript_editor_repository=Repository
view_alert_definition_notification_cliScript_editor_script=Skript
+view_alert_definition_notification_cliScript_editor_selectRepo=WÀhlen Sie das
Repository, in dem das Skript gespeichert werden soll
+view_alert_definition_notification_cliScript_editor_selectRepoFirst=WÀhlen Sie zuerst
ein Repository-Konfigurationstool
view_alert_definition_notification_cliScript_editor_thisUser=Aktueller Benutzer
+view_alert_definition_notification_cliScript_editor_uploadNewScript=Neues Skript
hochladen
+view_alert_definition_notification_cliScript_editor_verifyAuthentication=Verifizieren
+view_alert_definition_notification_cliScript_editor_whichUser=Benutzer, als der das
Skript ausgefÃŒhrt werden soll
view_alert_definition_notification_editor_delete_confirm=Sind Sie sicher, dass sie die
ausgewÀhlten Alarm-Benachrichtigungen löschen wollen?
view_alert_definition_notification_editor_field_configuration=Konfiguration
view_alert_definition_notification_editor_field_configuration_loadFailed=Konte die
Vorschau der Benachrichtigung nicht laden
view_alert_definition_notification_editor_field_configuration_not_loaded=Unbekannt
view_alert_definition_notification_editor_field_sender=Sender
view_alert_definition_notification_editor_loadFailed=Kann die Alarm-Sender nicht laden
+view_alert_definition_notification_editor_loadFailed_single=Erhalt von Alarm Sender
Konfigurationsdefinition nicht möglich
# #view_alert_definition_notification_editor_loadFailed_single = Cannot get alert sender
configuration definition
view_alert_definition_notification_editor_none_available=Keine Alarm-Sender verfÃŒgbar
+view_alert_definition_notification_editor_saveFailed=Kann die
Benachrichtigungskonfiguration nicht speichern
+view_alert_definition_notification_editor_sender=Benachrichtigungssender
# #view_alert_definition_notification_editor_saveFailed = Cannot save the notification
configuration
# #view_alert_definition_notification_editor_sender = Notification Sender
view_alert_definition_notification_editor_title_add=Benachrichtigung hinzufÃŒgen
@@ -1061,15 +1317,24 @@
view_alert_definition_notification_operation_editor_common_operation=Operation
view_alert_definition_notification_operation_editor_mode_relative=Relative Ressource
view_alert_definition_notification_operation_editor_mode_specific=Spezifische Ressource
view_alert_definition_notification_operation_editor_mode_this=Diese Ressource
+view_alert_definition_notification_operation_editor_mode_title=Ressourcen Auswahlmodus
# #view_alert_definition_notification_operation_editor_mode_title = Resource Selection
Mode
view_alert_definition_notification_operation_editor_mode_unknown=Unbekannte Option -
Berichten Sie diesen Fehler
+view_alert_definition_notification_operation_editor_operations_loadFailed=Konnte die
Liste der verfÃŒgbaren Operationen nicht laden
+view_alert_definition_notification_operation_editor_operations_no_parameters=Diese
Operation nimmt keine Parameter
# #view_alert_definition_notification_operation_editor_operations_loadFailed = Failed to
load the list of available operations
# #view_alert_definition_notification_operation_editor_operations_no_parameters = This
operation does not take any parameters
view_alert_definition_notification_operation_editor_relative_ancestor=Suche starten bei
+view_alert_definition_notification_operation_editor_relative_ancestor_loadFailed=Erhalt
von Typ Vorfahren nicht möglich
+view_alert_definition_notification_operation_editor_relative_ancestor_root=Root Vorfahren
Typ
+view_alert_definition_notification_operation_editor_relative_ancestor_tooltip=WÀhlen Sie
die Spitze der Typenhierarchie aus, von der aus der Baum der Abkömmlinge fÌr den Filter
nach Typ durchsucht werden soll
# #view_alert_definition_notification_operation_editor_relative_ancestor_loadFailed =
Cannot get type ancestry
# #view_alert_definition_notification_operation_editor_relative_ancestor_root = Root
Ancestor Type
# #view_alert_definition_notification_operation_editor_relative_ancestor_tooltip = Select
the top of the type hierarchy from which to search its descedant tree for the Filter By
type
view_alert_definition_notification_operation_editor_relative_descendant=dann filtern
nach
+view_alert_definition_notification_operation_editor_relative_descendant_filter_tooltip=Ein
spezifischer Name zur eindeutigen Identifizierung einer Ressource, wenn mehr als eine
Ressource des gewÀhlten Typs vorhanden sein kann. Dies ist optional wenn stets nur eine
Ressource des Ressourcentyps in der gewÀhlten Typhierarchie existiert.
+view_alert_definition_notification_operation_editor_relative_descendant_loadFailed=Erhalt
von Typ Abkömmlingen nicht möglich
+view_alert_definition_notification_operation_editor_relative_descendant_tooltip=Der
Ressourcentyp, nach dem unter dem in der Start Search From Auswahl (Suche starten von)
definierten Root Typ gesucht werden soll.
# #view_alert_definition_notification_operation_editor_relative_descendant_filter_tooltip
= A specific name to uniquely identify a resource when more than one resource of the
selected type might exist. This is optional if there will only ever be one resource of the
resource type in the selected type hierarchy.
# #view_alert_definition_notification_operation_editor_relative_descendant_loadFailed =
Cannot get type descendants
# #view_alert_definition_notification_operation_editor_relative_descendant_tooltip = The
resource type to search for under the root type defined in the Start Search From
selection.
@@ -1085,6 +1350,8 @@ view_alert_definition_notification_user_editor_loadFailed=Kann die
aktuellen Ben
view_alert_definition_notification_user_editor_restoreFailed=Kann die aktuellen Benutzer
nicht verwenden - starte ohne
view_alert_definition_notification_user_editor_saveFailed=Kann die ausgewÀhlten Benutzer
nicht sichern
view_alert_definition_recovery_editor_disable_when_fired=Nach dem Auslösen inaktiv
schalten
+view_alert_definition_recovery_editor_disable_when_fired_tooltip=Gibt an, ob dieser Alarm
nach dem feuern deaktiviert wird. Nach Deaktivierung kann der Alarm manuell wieder
aktiviert werden oder ein Wiederherstellungsalarm kann eingestellt werden, damit er
automatisch wieder aktiviert wird. Ist dieser Alarm selbst ein Wiederherstellungsalarm, so
ist diese Einstellung nicht möglich.
+view_alert_definition_recovery_editor_loadFailed=Kann WiederhesrtsellungsmenÌ nicht
erstellen
# #view_alert_definition_recovery_editor_disable_when_fired_tooltip = Indicates if this
alert will be disabled after it fires. Once disabled, the alert can be manually re-enabled
or a recovery alert can be set up to automatically re-enable it. If this alert is a
recovery alert itself, this setting cannot be turned on.
# #view_alert_definition_recovery_editor_loadFailed = Cannot build recovery menu
view_alert_definition_recovery_editor_none_available=Keiner
@@ -1110,6 +1377,7 @@ view_alert_definitions_update_failure=Aktualisieren der
Alarm-Definition fehlges
view_alert_definitions_update_success=Alarm-Definition erfolgreich aktualisiert
view_alert_details_field_ack_at=BestÀtigt um
view_alert_details_field_ack_by=BestÀtigt durch
+view_alert_details_field_parent_definition=Parent Definition
view_alert_details_field_recovery_info=Info zur Erholung
view_alert_details_field_resource_ancestry=Vorfahren der Ressource
view_alert_details_field_watched_resource=Beobachtere Ressource
@@ -1161,6 +1429,7 @@ view_autoDiscoveryQ_ignored=Ignoriert
view_autoDiscoveryQ_importFailure=Konnte die Ressourcen nicht importieren
view_autoDiscoveryQ_importInProgress=Die ausgewÀhlten Ressourcen werden in''s
Inventar aufgenommen
view_autoDiscoveryQ_importSuccessful=Sie haben die ausgewÀhlten Ressourcen erfolgreich
importiert
+view_autoDiscoveryQ_loadFailure=Konnte die Inventar Discovery Warteschlange nicht laden
# #view_autoDiscoveryQ_loadFailure = Failed to load the inventory discovery queue
view_autoDiscoveryQ_newAndIgnored=Neu und Ignoriert
view_autoDiscoveryQ_noperm=(Die erforderlichen "manage inventory" Rechte
fehlen. Kontaktieren Sie den Administrator)
@@ -1169,8 +1438,17 @@ view_autoDiscoveryQ_showStatus=Zeige
view_autoDiscoveryQ_title=Autodiscovery-Warteschlange
view_autoDiscoveryQ_unignore=Ignorieren aufheben
view_autoDiscoveryQ_unignoreFailure=Konnte das Ignorieren fÃŒr die Ressourcen nicht
aufheben.
+view_autoDiscoveryQ_unignoreInProgress=Hebe die Ignorierung der gewÀhlten Ressourcen
auf...
view_autoDiscoveryQ_unignoreSuccessful=Sie haben erfolgreich das Ignorieren der
ausgewÀhlten Ressourcen aufgehoben.
view_autoDiscoveryQ_uninventoried=Aus dem Inventory gelöscht
+view_bundleGroup_assignFailPerm=Sie sind nicht berechtigt, dieser Bundle Gruppe Bundles
zuzuweisen. Bitte wenden Sie sich an Ihren Administrator.
+view_bundleGroup_deleteConfirm=Sind Sie sicher, dass Sie diese Bundle Gruppe löschen
möchten? Bundles fÌr die dies die einzige zugewiesene Bundle Gruppe ist verlieren ihre
Zurodnung und deren Ansicht erfordert eine allgemeine View Bundles (Bundles ansehen)
Berechtigung.
+view_bundleGroup_deletesFailure=Konnte die Bundle Gruppen nicht löschen
+view_bundleGroup_deletesSuccessful=Sie haben die Bundle Gruppen erfolgreich gelöscht
+view_bundleGroup_unassignFailPerm=Sie sind nicht berechtigt, die Zurodnung von Bundles zu
dieser Bundle Gruppe aufzuheben. Bitte wenden Sie sich an Ihren Administrator.
+view_bundleVersion_loadFailure=Konnte aktuellste Bundle Versionsdaten nicht laden
+view_bundle_bundleDeployment=Bundle Deployment
+view_bundle_bundleDeployments=Bundle Deployments
# #view_bundleGroup_assignFailPerm = You are not authorized to assign bundles to this
bundle group. Please check with your administrator.
# #view_bundleGroup_deleteConfirm = Are you sure you want to delete this bundle group?
Bundles for which this is the only assigned bundle group will become unassigned, and will
require global View Bundles permission to view.
# #view_bundleGroup_deletesFailure = Failed to delete the bundle groups
@@ -1184,6 +1462,32 @@ view_bundle_bundleFiles=Bundle-Dateien
view_bundle_bundleType=Bundle-Type
view_bundle_bundleVersion=Bundle-Version
view_bundle_bundleVersions=Bundle-Versionen
+view_bundle_createWizard_bundleDistro=Bundle Distribution
+view_bundle_createWizard_cancelFailure=Konnte die Erstellung von Bundle [{0}], Version \=
[{1}] nicht vollstÀndig abbrechen - das Bundle ist möglicherweise noch vorhanden.
+view_bundle_createWizard_cancelFailurePerm=Konnte die Erstellung von Bundle [{0}],
Version \= [{1}] nicht vollstÀndig abbrechen da der Benutzer Berechtigung zur Erstellung,
nicht aber fÌr das Löschen besitzt. Das Bundle muss wahrscheinlich von einem
Administrator entfernt werden mÃŒssen.
+view_bundle_createWizard_cancelSuccessful=Erstellung von Bundle [{0}], Version \= [{1}]
abgebrochen
+view_bundle_createWizard_clickToUploadRecipe=Zum Laden einer Anleitungsdatei klicken
+view_bundle_createWizard_createFailure=Konnte das Bundle nicht erstellen
+view_bundle_createWizard_createSuccessful=Sie haben erfolgreich ein Bundle [{0}] mit
einer Version von [{1}] erstellt
+view_bundle_createWizard_enterRecipe=Bitte geben Sie eine gÃŒltige Anleitung ein
+view_bundle_createWizard_enterUrl=Bitte geben Sie eine gÃŒltige URL ein, von wo die
Bundle Distribution Datei heruntergeladen werden kann
+view_bundle_createWizard_failedToUploadDistroFile=Konnte die Bundle Distribution Datei
nicht hochladen
+view_bundle_createWizard_failedToUploadFile=Konnte die Bundle Datei nicht hochladen
+view_bundle_createWizard_groupsStep_assign=Weisen Sie mindestens eine der berechtigten
Bundle Gruppen zu\:
+view_bundle_createWizard_groupsStep_assigned=Die neue Bundle Version ist fÃŒr ein
vorhandenes Bundle und erbt seine Bundle Gruppen Zuweisungen\:
+view_bundle_createWizard_groupsStep_failedAssign=Zuordnung erster Bundle Gruppen an ein
Bundle namens [{0}] mit einer Version von [{1}] fehlgeschlagen. Bitte beenden Sie den
Erstellungs-Wizard und benachrichtigen Sie Ihren Administrator.
+view_bundle_createWizard_groupsStep_failedGetAssignable=Konnte zuweisbare Bundle Gruppen
nicht bestimmen. Bitte beenden Sie den Erstellungs-Wizard und benachrichtigen Sie Ihren
Administrator.
+view_bundle_createWizard_groupsStep_help=Ein neues Bundle wird erstellt, wenn die erste
Version fÃŒr dieses Bundle hochgeladen wird. Das neue Bundle wird dann seinen ersten
Bundle Gruppen zugewiesen. Ein Benutzer kann das neue Bundle nur Bundle Gruppen zuweisen,
fÃŒr die er eine Create Bundles (Bundles erstellen) Berechtigung besitzt, entweder
allgemein oder auf Bundle Gruppen Ebene. Es muss mindestens eine Bundle Gruppe zugewiesen
sein, auÃer der Benutzer besitzt allgemeine Berechtigungen zur Erstellung und Ansicht von
Bundles, in welchem Falle die Zuweisung ausbleiben kann.
+view_bundle_createWizard_groupsStep_leaveUnassigned=Das neue Bundle ohne Zuweisung
lassen.
+view_bundle_createWizard_groupsStep_noAssignable=Konnte erste Bundle Version nicht
erstellen, da Benutzer keine Bundle Gruppen besitzt zu denen eine Zuweisung erfolgen kann.
Bitte beenden Sie den Erstellungs-Wizard und benachrichtigen Sie Ihren Administrator.
+view_bundle_createWizard_groupsStep_noneAssigned=Die neue Bundle Version muss mindestens
einer Bundle Gruppe zugewiesen werden\!
+view_bundle_createWizard_groupsStep_radioTitle=Erste Bundle Gruppen Zuordnung fÃŒr das
neue Bundle
+view_bundle_createWizard_groupsStep_successAssign=Sie haben erfolgreich erste Bundle
Gruppen einem Bundle namens [{0}] mit einer Version von [{1}] zugeordnet
+view_bundle_createWizard_groupsStep_unassigned=Die neue Bundle Version ist fÃŒr ein
vorhandenes Bundle und erbt seine Bundle Gruppen Zuweisungen. Das Bundle ist aktuell
keinen Bundle Gruppen zugeordnet.
+view_bundle_createWizard_loadBundleFileFailure=Kann Kann Bundle Datei Informationen nicht
vom Server abrufen
+view_bundle_createWizard_noAdditionalFilesNeeded=Es mÃŒssen keine weiteren Dateien fÃŒr
dieses Bundle hochgeladen werden
+view_bundle_createWizard_noBundleTypesAvail=Es sind keine Bundle Typen verfÃŒgbar
+view_bundle_createWizard_noBundleTypesSupported=Es werden keine Bundle Typen unterstÃŒtzt
- Sie mÃŒssen einen gÃŒltigen Plugin deployen, der Bundle Deployments unterstÃŒtzt
# #view_bundle_createWizard_bundleDistro = Bundle Distribution
# #view_bundle_createWizard_cancelFailure = Failed to fully cancel the creation of bundle
[{0}], version=[{1}] - the bundle may still exist.
# #view_bundle_createWizard_cancelFailurePerm = Failed to fully cancel the creation of
bundle [{0}], version = [{1}] because the user has create but not delete permissions. The
bundle will likley need to be removed by an administrator.
@@ -1211,8 +1515,10 @@ view_bundle_bundleVersions=Bundle-Versionen
# #view_bundle_createWizard_noBundleTypesAvail = No bundle types are available
# #view_bundle_createWizard_noBundleTypesSupported = No bundle types are supported - you
must deploy a valid plugin that supports bundle deployments
view_bundle_createWizard_provideBundleDistro=Stellen Sie eine Bundle-Distribution bereit
+view_bundle_createWizard_recipeOption=Anleitung
# #view_bundle_createWizard_recipeOption = Recipe
view_bundle_createWizard_title=Bundle anlegen
+view_bundle_createWizard_unassigned=nicht zugeordnet
# #view_bundle_createWizard_unassigned = unassigned
view_bundle_createWizard_uploadInProgress=Datei wird hochgeladen ... Dies kann fÃŒr
groÃe Dateien mehrere Minuten dauern
view_bundle_createWizard_uploadOption=Hochladen
@@ -1223,9 +1529,13 @@ view_bundle_createWizard_urlTooltip=Benutzername und Password
können fÌr HTTP
view_bundle_createWizard_urlUserName=Benutzername
view_bundle_createWizard_windowTitle=Assistent zum Anlegen von Bundles
view_bundle_createWizard_youMustChooseOne=Sie mÌssen eine Option auswÀhlen, um ein
Bundle anlegen zu können\!
+view_bundle_deleteConfirm=Sind Sie sicher, dass Sie dieses Bundle löschen wollen? Alle
Versionen, Destinationen und Deployments fÌr dieses Bundle werden ebenfalls gelöscht.
Dies entfernt keine Inhalte von Remote-Maschinen.
# #view_bundle_deleteConfirm = Are you sure you want to delete this bundle? All versions,
destinations and deployments for this bundle will also be deleted. However, this will not
remove any content from remote machines.
view_bundle_deploy=Deploy
view_bundle_deployDir=Deploy-Verzeichnis
+view_bundle_deployWizard_createGroup_error_1=Die Gruppe wurde nicht erstellt. Gruppe fÃŒr
Deployment darf nicht leer sein.
+view_bundle_deployWizard_createGroup_error_2=Die Gruppe wurde nicht erstellt. Die
resultierende Gruppe muss kompatibel sein (Mitglieder desselben Typs).
+view_bundle_deployWizard_createGroup_error_3=Die Gruppe wurde nicht erstellt. Der
Ressourcentyp der resultierenden Gruppe unterstÃŒtzt keine Deployments.
# #view_bundle_deployWizard_createGroup_error_1 = The group was not created. Group for
deployment cannot be empty.
# #view_bundle_deployWizard_createGroup_error_2 = The group was not created. Resulting
group must be compatible (members of the same type).
# #view_bundle_deployWizard_createGroup_error_3 = The group was not created. The resource
type of the resulting group does not support deployments.
@@ -1233,7 +1543,24 @@ view_bundle_deployWizard_deployStep=Bundle auf die Zielplattformen
deployen
view_bundle_deployWizard_deploying=Deploying...
view_bundle_deployWizard_deploymentCreated=Deployment angelegt...
view_bundle_deployWizard_deploymentCreatedDetail=Deployment [{0}] mit Beschreibung [{1}]
angelegt
+view_bundle_deployWizard_deploymentCreatedDetail_concise=Sie haben das Deployment [{0}]
erstellt
view_bundle_deployWizard_deploymentScheduled=Bundle-Deployment geplant\!
+view_bundle_deployWizard_deploymentScheduledDetail=Sie haben das Bundle Deployment [{0}]
zur Destinationsgruppe [{1}] terminiert
+view_bundle_deployWizard_deploymentScheduledDetail_concise=Sie haben das Bundle
Deployment terminiert
+view_bundle_deployWizard_destinationCreatedDetail=Sie haben die Destination [{0}] mit der
Beschreibung [{1}] erstellt
+view_bundle_deployWizard_destinationCreatedDetail_concise=Sie haben die Destination [{0}]
erstellt
+view_bundle_deployWizard_error_1=Löschen des neuen Deployment bei Cancel (Abbrechen)
fehlgeschlagen
+view_bundle_deployWizard_error_10=Erstellen der Destination fehlgeschlagen, sie ist
möglicherweise bereits vorhanden. (Hinweis\: FÌr eine vorhandene Destination von
Destinationsansicht deployen)
+view_bundle_deployWizard_error_11=Auffinden definierter Deployments fehlgeschlagen.
+view_bundle_deployWizard_error_12=Auffinden definierter Bundles fehlgeschlagen.
+view_bundle_deployWizard_error_2=Löschen der neuen Destination bei Cancel (Abbrechen)
fehlgeschlagen
+view_bundle_deployWizard_error_3=Terminieren des Deployments fehlgeschlagen\!
+view_bundle_deployWizard_error_4=Terminieren von Deployment fehlgeschlagen\: {0}
+view_bundle_deployWizard_error_5=Erstellen des Deployments fehlgeschlagen\!
+view_bundle_deployWizard_error_6=Erstellen des Deployments fehlgeschlagen\: {0}
+view_bundle_deployWizard_error_7=Abruf des Deployment Namens fehlgeschlagen.
+view_bundle_deployWizard_error_8=Sie mÃŒssen eine gÃŒltige Ressourcengruppe aus dem
Drop-Down-MenÌ wÀhlen
+view_bundle_deployWizard_error_9=Löschen der neuen Destination in nextPage
fehlgeschlagen
view_bundle_deployWizard_error_noBundleConfig=Abruf von Bundle-Zielinformationen
fehlgeschlagen. Ist die von Ihnen ausgewÀhlte Gruppe eine gÌltige kompatible Gruppe, die
Ziel fÃŒr Bundle-Deployments sein kann?
view_bundle_deployWizard_getConfigSkip=Keine Konfiguration nötig fÌr diese
Bundle-Version.
view_bundle_deployWizard_getConfigStep=Deployment-Konfiguration einstellen
@@ -1294,6 +1621,9 @@ view_bundle_deploy_loadBundleFailure=Konnte das Bundle nicht finden
view_bundle_deploy_loadDeployFailure=Konnte Bundle-Deployments nicht laden
view_bundle_deploy_loadFailure=Konnte Bundle-Deployment nicht laden
view_bundle_deploy_name=Name des Deployments
+view_bundle_deploy_selectARow=Zur Anzeige der Installationsdetails eine Reihe wÀhlen
+view_bundle_deploy_tagUpdateFailure=Aktualisierung der Bundle Deployment Tags
fehlgeschlagen
+view_bundle_deploy_tagUpdateSuccessful=Deployment-Tags fÃŒr Bundle erfolgreich
aktualisiert
# #view_bundle_deploy_deployedBy = Deployed By
# #view_bundle_deploy_deploymentPlatforms = Deployment Resource
# #view_bundle_deploy_installDetails = Install Details
@@ -1310,8 +1640,22 @@ view_bundle_deployments=Deployments
view_bundle_dest_backToBundle=ZurÃŒck zum Bundle
view_bundle_dest_baseDirName=Basisverzeichnis
view_bundle_dest_created=Angelegt
+view_bundle_dest_deleteConfirm=Sind Sie sicher, dass Sie diese Bundle-Destination
löschen wollen? Dies löscht es nur aus der Datenbank. Alle auf Remote Rechnern deployten
Bundle-Inhalte an dieser Destination bleiben erhalten.
+view_bundle_dest_deleteFailure=Konnte die Bundle-Destination nicht löschen [{0}]
+view_bundle_dest_deleteSuccessful=Sie haben die Bundle-Destination [{0}] erfolgreich
gelöscht
view_bundle_dest_deployDir=Deploy-Verzeichnis
view_bundle_dest_group=Gruppe
+view_bundle_dest_lastDeployedVersion=Zuletzt deployte Version
+view_bundle_dest_lastDeploymentDate=Letztes Deployment Datum
+view_bundle_dest_lastDeploymentStatus=Letzter Deployment Status
+view_bundle_dest_loadFailure=Konnte Bundle-Destination nicht laden
+view_bundle_dest_loadFailureVersionInfo=Konnte Bundle Destination deployte
Versionsinformationen nicht laden
+view_bundle_dest_purgeConfirm=Dies bereinigt den Bundle Inhalt von allen Remote Rechnern.
Sind Sie sicher, dass Sie dies tun möchten?
+view_bundle_dest_purgeFailure=Bereinigung der Bundle Destination [{0}] von einigen oder
allen Remote Rechnern fehlgeschlagen.
+view_bundle_dest_purgeSuccessful=Sie haben die Bundle-Destination [{0}] erfolgreich von
allen Remote Rechnern bereinigt.
+view_bundle_dest_revertConfirm=Dies rollt alle Remote Rechner zurÃŒck zum vorherigen
Bundle Deployment. Sind Sie sicher, dass Sie dies tun möchten?
+view_bundle_dest_tagUpdateFailure=Konnte die Tags fÃŒr Bundle-Destination nicht
aktualisieren
+view_bundle_dest_tagUpdateSuccessful=Sie haben die Tags fÃŒr Bundle-Destination
erfolgreich aktualisiert
# #view_bundle_dest_lastDeployedVersion = Last Deployed Version
# #view_bundle_dest_lastDeploymentDate = Last Deployment Date
# #view_bundle_dest_lastDeploymentStatus = Last Deployment Status
@@ -1320,8 +1664,10 @@ view_bundle_dest_group=Gruppe
# #view_bundle_dest_tagUpdateFailure = Failed to update bundle destination tags
# #view_bundle_dest_tagUpdateSuccessful = You have successfully updated the bundle
destination tags
view_bundle_destinations=Ziele
+view_bundle_fail_existingName=Erstellen von [{0}] fehlgeschlagen. Der Name wird bereits
verwendet. Bitte versuchen Sie es mit einem anderen Namen.
# #view_bundle_fail_existingName = Failed to create [{0}]. The name is already being
used. Please try another name.
view_bundle_fileListView_fileSize=DateigröÃe
+view_bundle_fileListView_loadFailure=Konnte die Bundle-Datei-Daten nicht laden
# #view_bundle_fileListView_loadFailure = Failed to load bundle file data
view_bundle_fileListView_md5=MD5
view_bundle_fileListView_sha256=SHA256
@@ -1330,13 +1676,24 @@ view_bundle_latestVersion=Aktuelle Version
view_bundle_list_backToAll=ZurÃŒck zur Bundle-Ãbersicht
view_bundle_list_deleteConfirm=Sind Sie sicher, dass Sie dieses Bundle löschen wollen?
view_bundle_list_deleteFailure=Löschen des Bundles [{0}] fehlgeschlagen
+view_bundle_list_deleteSuccessful=Sie haben das Bundle [{0}] erfolgreich gelöscht
+view_bundle_list_deletesFailure=Löschen der Bundles fehlgeschlagen
+view_bundle_list_deletesSuccessful=Sie haben die Bundles erfolgreich gelöscht
# #view_bundle_list_deleteSuccessful = You successfully deleted the bundle named [{0}]
# #view_bundle_list_deletesFailure = Failed to delete the bundles
# #view_bundle_list_deletesSuccessful = You successfully deleted the bundles
view_bundle_list_destinationsCount=Anzahl Ziele
+view_bundle_list_error1=Laden von Bundle zum Deployen [{0}] fehlgeschlagen
+view_bundle_list_error2=Erhalt eines einzelnen Bundles zum Deployen [{0}] fehlgeschlagen
# #view_bundle_list_error1 = Failed to load bundle to deploy [{0}]
# #view_bundle_list_error2 = Failed to get a single bundle to deploy [{0}]
view_bundle_list_error3=Konnte das Bundle nicht laden
+view_bundle_list_error4=Keine Bundles in diesem Repository gefunden
+view_bundle_list_loadFailure=Laden von Bundle zum Deployen [{0}] fehlgeschlagen
+view_bundle_list_loadWithLatestFailure=Konnte Bundle mit aktuellsten Versionsdaten nicht
laden
+view_bundle_list_singleLoadFailure=Erhalt eines einzelnen Bundles zum Deployen [{0}]
fehlgeschlagen
+view_bundle_list_tagUpdateFailure=Aktualisierung von Bundle-Tags fehlgeschlagen
+view_bundle_list_tagUpdateSuccessful=Sie haben die Bundle-Tags erfolgreich aktualisiert
# #view_bundle_list_error4 = No bundles found in this repository
# #view_bundle_list_loadFailure = Failed to load the bundle to be deployed [{0}]
# #view_bundle_list_loadWithLatestFailure = Failed to load bundle with the latest version
data
@@ -1345,9 +1702,33 @@ view_bundle_list_error3=Konnte das Bundle nicht laden
# #view_bundle_list_tagUpdateSuccessful = You have successfully updated the bundle tags
view_bundle_list_versionsCount=Anzahl Versionen
view_bundle_purge=Bereinigen
+view_bundle_recipe=Anleitung
+view_bundle_resDeployDS_loadFailure=Konnte Ressourcen-Deployments nicht laden
# #view_bundle_recipe = Recipe
# #view_bundle_resDeployDS_loadFailure = Failed to load bundle resource deployments
view_bundle_revert=ZurÃŒckrollen
+view_bundle_revertWizard_confirmStep_confirmation=Rolle Live Deployment auf vorheriges
Deployment zurÃŒck. Klicken Sie auf "Next" (Weiter) um fortzufahren...
+view_bundle_revertWizard_confirmStep_failedToFindLiveDeployment=Konnte Live Deployment
nicht finden; kann nicht zurÃŒckrollen
+view_bundle_revertWizard_confirmStep_liveDeployment=Live Deployment
+view_bundle_revertWizard_confirmStep_name=Deployment BestÀtigung zurÌckrollen
+view_bundle_revertWizard_confirmStep_noLiveDeployment=Es wurde kein Live Deployment fÃŒr
die Destination [{0}] gefunden
+view_bundle_revertWizard_confirmStep_noLiveDeployment_concise=Es wurde kein Live
Deployment fÃŒr die Destination gefunden
+view_bundle_revertWizard_confirmStep_noPriorDeployment=Das Live Deployment [{0}] kann
nicht zurÃŒckgerollt werden, weil es kein frÃŒheres Deployment fÃŒr die Destination [{1}]
gibt
+view_bundle_revertWizard_confirmStep_noPriorDeployment_concise=Das Live Deployment kann
nicht zurÃŒckgerollt werden, weil es kein frÃŒheres Deployment gibt
+view_bundle_revertWizard_confirmStep_prevDeployment=Vorheriges Deployment
+view_bundle_revertWizard_getInfoStep_cleanDeploy=Clean Deployment? (löscht ein altes
vorhandenes Deploy-Verzeichnis vor dem Start des ZurÃŒckroll-Deployments)
+view_bundle_revertWizard_getInfoStep_getNameFailure=Erhalt von ZurÃŒckroll Deployment
Namen fehlgeschlagen
+view_bundle_revertWizard_getInfoStep_name=ZurÃŒckroll-Informationen bereitstellen
+view_bundle_revertWizard_getInfoStep_revertDeployDesc=Deploy Beschreibung zurÃŒckrollen
+view_bundle_revertWizard_getInfoStep_revertDeployDescFull=[REVERT From] {0} [REVERT To]
{1}
+view_bundle_revertWizard_getInfoStep_revertDeployName=Deploy Namen zurÃŒckrollen
+view_bundle_revertWizard_revertStep_name=Bundle zu Destinationsplattformen deployen
+view_bundle_revertWizard_revertStep_reverting=Rolle zurÃŒck...
+view_bundle_revertWizard_revertStep_scheduled=Sie haben das ZurÃŒckroll-Deployment
erfolgreich terminiert\!
+view_bundle_revertWizard_revertStep_scheduledDetails=Sie haben das ZurÃŒckrollen des
Bundle Deployment [{0}] von Ressourcen Gruppe [{1}] erfolgreich terminiert
+view_bundle_revertWizard_revertStep_scheduledFailure=Terminieren des
ZurÃŒckroll-Deployments fehlgeschlagen\!
+view_bundle_revertWizard_title=Bundle zurÃŒckrollen
+view_bundle_revertWizard_windowTitle=Bundle ZurÃŒckroll Wizard
view_bundle_tree_loadFailure=Konnte die Bundle-Daten nicht laden
view_bundle_tree_unassigned_desc=Dies sind Bundles die noch nicht mit einer Bundle-Gruppe
assoziiert sind.
view_bundle_tree_unassigned_name=Nicht zugewiesene Bundles
@@ -1414,6 +1795,7 @@ view_configEdit_invalidListSizeMax=Die Liste sollte höchstens {0}
Reihe(n) enth
view_configEdit_invalidListSizeMin=Die Liste sollte mindestens {0} Reihe(n) enthalten
view_configEdit_invalidListSizeMinMax=Die Liste sollte mindestens {0} und höchstens {1}
Reihe(n) enthalten
view_configEdit_jumpToSection=Zum Abschnitt springen
+view_configEdit_maxBoundsExceeded=Kann keinen weiteren Eintrag hinzufÃŒgen, da die
maximalen GröÃeneinschrÀnkungen erreicht wurden\: {0}
view_configEdit_minBoundsExceeded=Kann diesen Eintrag nicht löschen, da das Minimum
eingestellt wurde auf\: {0}
# #view_configEdit_maxBoundsExceeded = Cannot add another entry because the maximum size
bounds has been met: {0}
# #view_configEdit_minBoundsExceeded = Cannot delete this entry as the minimum has been
set to: {0}
@@ -1439,11 +1821,31 @@
view_configurationDetails_configNotUpdatedDueToNoChange=Konfiguration wurde nich
view_configurationDetails_error_updateFailure=Konnte die Konfiguration nicht
aktualisieren
view_configurationDetails_messageConcise=Konfiguration aktualisiert - aktuelle Version is
{0}
view_configurationDetails_messageDetailed=Konfiguration der Ressource [{1}] aktualisiert
auf Version [{0}].
+view_configurationDetails_noConfigurationFetched=Es wurde keine Konfiguration abgerufen.
Dies bedeutet, dass entweder das Laden der Konfiguration durch den Plugin fehlgeschlagen
ist oder dass die Konfigurations-Collection lediglich in den Verbindungseinstellungen
abgeschaltet ist.
view_configurationDetails_noPermission=Sie sind nicht berechtigt die Konfiguration dieser
Ressource zu bearbeiten.
view_configurationDetails_somePropertiesInvalid=Die folgenden
Konfigurations-Einstellungen haben ungÃŒtige Werte \: {0}. Die Werte mÃŒssen korrigiert
werden, ehe die Konfiguration gespeichert werden kann.
+view_configurationHistoryDetails_error_loadFailure=Konnte den Verlauf der Konfiguration
nicht laden.
+view_configurationHistoryList_cannotDeleteCurrent=Eines der gewÀhlten Verlaufselemente
reprÀsentiert die aktuelle Konfiguration - Sie können es nicht löschen.
+view_configurationHistoryList_cannotDeleteGroupItems=Eines oder mehrere der gewÀhlten
Konfigurationsverlaufselemente ist/sind Teil eines Gruppenkonfigurations-Updates. Sie
mÃŒssen dieses ÃŒbergeordnete Gruppenverlaufselement bereinigen, ehe Sie dessen einzelne
Ressourcen Verlaufselemente löschen können.
+view_configurationHistoryList_delete_failure=Konnte die Konfigurationsverlaufselemente
nicht löschen.
+view_configurationHistoryList_delete_success=Sie haben die gewÀhlten
Konfigurationsverlaufselemente erfolgreich gelöscht.
+view_configurationHistoryList_rollback=Rollback
+view_configurationHistoryList_rollback_failure=Konnte die Konfiguration nicht
zurÃŒcksetzen. Die ursprÃŒngliche Konfiguration ist noch wirksam.
+view_configurationHistoryList_rollback_success=Sie haben die Konfiguration erfolgreich
zur gewÀhlten vorherigen Konfiguration zurÌckgesetzt.
+view_configurationHistoryList_table_clickStatusIcon=FÃŒr mehr Details auf das Status Icon
klicken
+view_configurationHistoryList_table_statusFailure=Diese Konfigurationsaktualisierung ist
fehlgeschlagen
+view_configurationHistoryList_table_statusInprogress=Diese Konfigurationsaktualisierung
lÀuft noch
+view_configurationHistoryList_table_statusNochange=Es wurden keine Ãnderungen an dieser
Konfiguration vorgenommen
+view_configurationHistoryList_table_statusSuccess=Diese Konfigurationsaktualisierung war
erfolgreich
# #view_configurationHistoryDetails_error_loadFailure = Unable to load configuration
history.
# #view_configurationHistoryList_itemNamePlural = configuration history items
view_configurationHistoryList_title=KonfigurationsÀnderungen
+view_connectionSettingsDetails_allPropertiesValid=Alle Verbindungseinstellungen haben
gÌltige Werte, daher können die Einstellungen jetzt gespeichert werden.
+view_connectionSettingsDetails_error_updateFailure=Verbindungseinstellungen konnten nicht
aktualisiert werden.
+view_connectionSettingsDetails_messageConcise_updateSuccess=Aktualisierung fÃŒr die
Verbindungseinstellungen initiiert.
+view_connectionSettingsDetails_messageDetailed_updateSuccess=Aktualisierung von
Verbindungseinstellungen initiiert fÃŒr Ressource [{0}].
+view_connectionSettingsDetails_noPermission=Sie sind nicht berechtigt die
Verbindungseinstellungen dieser Ressource zu bearbeiten.
+view_connectionSettingsDetails_somePropertiesInvalid=Die folgenden
Verbindungseinstellungen haben ungÃŒtige Werte \: {0}. Die Werte mÃŒssen korrigiert
werden, ehe die Einstellungen gespeichert werden können.
# #view_connectionSettingsDetails_allPropertiesValid = All connection settings have valid
values, so the settings can now be saved.
# #view_connectionSettingsDetails_error_updateFailure = Failed to update connection
settings.
# #view_connectionSettingsDetails_messageConcise_updateSuccess = Connection settings
update initiated.
@@ -1465,8 +1867,21 @@ view_dashboard_favorites_error1=Konnte die Ressoucen-Lesezeichen
nicht laden
view_dashboardsManager_error1=Konnte das neue Dashboard nicht hinzufÃŒgen
view_dashboardsManager_message_title_details=<h1>Willkommen bei
{0}</h1>\n<p>Dieses Dashboard kan durch BetÀtigen des
Bearbeitungsmodus-Knopfes verÀndert werden.</p>\n<p>Was möchten Sie
tun?</p>\n<p> <a href\="{1}">Neu gefundene
Ressourcen importieren.</a></p>\n<p> <a
href\="{2}">Ressourcen
suchen.</a></p>\n<p> <a
href\="{3}">Hilfe und Dokumentation ansehen.</a></p>
view_dashboards_confirm1=Sind Sie sicher, dass Sie löschen möchten
+view_dashboards_portlets_refresh_fail1=Aktualisierung von Auto-refresh Intervall
fehlgeschlagen
+view_dashboards_portlets_refresh_fail2=Deaktivierung von erneutem Laden von Auto-refresh
Intervall fehlgeschlagen
+view_dashboards_portlets_refresh_multiple_min={0} Minuten
+view_dashboards_portlets_refresh_none=Kein Aktualisieren
+view_dashboards_portlets_refresh_one_min=1 Minute
+view_dashboards_portlets_refresh_success1=Aktualisierter Intervall fÃŒr auto-refresh
+view_dashboards_portlets_refresh_success2=Stoppe erneutes Laden fÃŒr auto-refresh
view_dashboards_title=Dashboard
view_drift_button_detectNow=Jetzt ermitteln
+view_drift_button_pinToDef=An Definition pinnen
+view_drift_button_pinToDef_confirm=Pinning (Festmachen) stellt diesen Schnappschuss als
Schnappschuss 0 fÃŒr die Definition ein. Alle anderen vorhandenen SchnappschÃŒsse werden
aus der Definition entfernt. Die Definition wird als "pinned" (festgemacht)
gekennzeichnet und nachfolgende Drifts werden stets gegen den festgemachten Schnappschuss
gemeldet. Soll dieser Schnappschuss an der Definition festgemacht werden?
+view_drift_button_pinToTemplate=An Vorlage festmachen
+view_drift_button_pinToTemplate_confirm=Nach dem Festmachen wird dieser Schnappschuss als
erster Schnappschuss fÃŒr alle mittels der Vorlage erstellten Definitionen verwendet.
Falls an einer bestehenden Vorlage festgemacht, so werden die bestehenden Definitionen der
Vorlage an dem neuen ersten Schnappschuss festgemacht und die bestehenden SchnappschÃŒsse
werden entfernt. Mit Vorlagenauswahl fortfahren?
+view_drift_carousel_sizeFilterLabel=Schnappschuss Anzeige Max
+view_drift_carousel_startFilterLabel=Schnappschuss Start
# #view_drift_button_pinToDef = Pin to Definition
# #view_drift_button_pinToDef_confirm = Pinning will set this snapshot as snapshot 0 for
the definition. All other existing snapshots will be removed from the definition. The
definition will be be marked as pinned and subsequent drift will always be reported
against the pinned snapshot. Pin this snapshot to the definition?
# #view_drift_button_pinToTemplate = Pin to Template
@@ -1475,8 +1890,27 @@ view_drift_button_detectNow=Jetzt ermitteln
# #view_drift_carousel_startFilterLabel = Snapshot Start
view_drift_category_fileAdded=Datei hinzugefÃŒgt
view_drift_category_fileChanged=Datei geÀndert
+view_drift_category_fileNew=Neu aufgefunden
# #view_drift_category_fileNew = Newly Detected
view_drift_category_fileRemoved=Datei gelöscht
+view_drift_confirm_deleteAllDefs=Alle Drift-Erkennungsdefinitionen löschen?
+view_drift_confirm_deleteDefs=Die ausgewÀhlte(n) Drift-Erkennungsdefinition(en)
löschen?
+view_drift_confirm_deleteTemplate=Warnung\! Das Löschen dieser Vorlage löscht auch alle
angehÀngten Drift-Definitionen. Diese angehÀngten Definitionen sowie alle deren
SchnappschÌsse werden dauerhaft vom System entfernt. Nicht angehÀngte Definitionen
werden nicht entfernt. Sind Sie sicher, dass Sie fortfahren möchten?
+view_drift_failure_deleteDefs=Löschen einiger oder alle Drift-Erkennungsdefinitionen
fehlgeschlagen.
+view_drift_failure_deleteTemplates=Löschen einiger oder alle Drift Vorlagen
fehlgeschlagen
+view_drift_failure_detectNow=Absenden von Anfrage zur AusfÃŒhrung der Drift-Erkennung
fehlgeschlagen
+view_drift_failure_load=Abruf von Drift Instanzen fehlgeschlagen
+view_drift_failure_pinToDef=Festmachen von Schnappschuss an Definition fehlgeschlagen
+view_drift_success_defUpdated=Drift Erkennung Definition aktualisiert und wird
Auswirkungen auf die nÀchste ErkennungsausfÌhrung haben.
+view_drift_success_delete=Erfolgreiche Löschung von {0} Drift Instanzen
+view_drift_success_deleteDefs=Erfolgreiche Löschung von {0} Drift Erkennung
Definitionen
+view_drift_success_deleteTemplate=Erfolgreiche Löschung von {0} Drift Vorlagen
+view_drift_success_detectNow=Absenden von Anfrage zur AusfÃŒhrung der Drift-Erkennung
erfolgreich
+view_drift_success_pinToDef=Erfolgreiches Festmachen von Schnappschuss {0} an Drift
Definition.
+view_drift_success_templateUpdated=Drift Vorlage aktualisiert und Ãnderungen an
angehÀngte Definitionen gepusht.
+view_drift_table_attached=AngehÀngt?
+view_drift_table_baseDir=Basis-Verzeichnis
+view_drift_table_driftHandlingMode=Der Umgang mit Drift
# #view_drift_confirm_deleteAllDefs = Delete all drift detection definitions?
# #view_drift_confirm_deleteDefs = Delete the selected drift detection definition(s)?
# #view_drift_confirm_deleteTemplate = Warning! Deleting this template will also cause
all attached drift definitions to be deleted as well. Those attached definitions along
with all of their snapshots will be permanently removed from the system. Detached
definitions will not be removed. Are you sure you want to continue?
@@ -1497,7 +1931,13 @@ view_drift_category_fileRemoved=Datei gelöscht
# #view_drift_table_driftHandlingMode = Drift Handling
view_drift_table_driftHandlingMode_normal=normal
view_drift_table_driftHandlingMode_plannedChanges=geplante Ãnderungen
+view_drift_table_hover_defNotPinned=Die Drift Definition ist nicht festgemacht. Zur
Ansicht des ersten Schnappschusses klicken.
+view_drift_table_hover_defPinned=Die Drift Definition ist an ihrem ersten Schnappschuss
festgemacht. FÃŒr Ansicht des ersten Schnappschusses klicken.
+view_drift_table_hover_edit=Zur Ansicht oder Bearbeitung der Drift Definition oder
Vorlagen Eigenschaften klicken.
+view_drift_table_hover_outOfCompliance_drift=Drift vorhanden
view_drift_table_hover_outOfCompliance_noBaseDir=Das Basisverzeichnis existiert nicht
+view_drift_table_hover_templateNotPinned=Die Drift Vorlage ist nicht an einem
Schnappschuss festgemacht.
+view_drift_table_hover_templatePinned=Die Drift Vorlage ist an einem Schnappschuss
festgemacht. FÃŒr Ansicht des festgemachten Schnappschusses klicken.
# #view_drift_table_hover_defNotPinned = The drift definition is not pinned Click to
view the initial snapshot.
# #view_drift_table_hover_defPinned = The drift definition is pinned to its initial
snapshot. Click to view the initial snapshot.
# #view_drift_table_hover_edit = Click to view or edit the drift definition or template
properties.
@@ -1507,11 +1947,44 @@ view_drift_table_hover_outOfCompliance_noBaseDir=Das
Basisverzeichnis existiert
# #view_drift_table_hover_templatePinned = The drift template is pinned to a snapshot.
Click to view the pinned snapshot.
view_drift_table_newFile=Neue Datei
view_drift_table_oldFile=Alte Datei
+view_drift_table_pinned=Festgemacht?
+view_drift_table_resourceDef=Ressource Drift Erkennung Definition
+view_drift_table_resourceHistory=Ressource Drift Historie
view_drift_table_snapshot=Schnappschuss
view_drift_table_snapshotTime=Schnappschuss Zeit
view_drift_table_template=Vorlage
+view_drift_table_title_initialSnapshot=Erster Schnappschuss fÃŒr Definition [{0}] \:
Pinned \= [{1}]
view_drift_table_title_snapshot=Schnappschuss [{0}] fÃŒr Definition [{1}]
+view_drift_table_title_templateSnapshot=Festgemachter Schnappschuss fÃŒr Vorlage [{0}]
+view_drift_wizard_addDef_failure=HinzufÃŒgen der neuen Drift Erkennung Definition [{0}]
fehlgeschlagen
+view_drift_wizard_addDef_infoStepHelp=Jede Drift Erkennungsdefinition beschreibt einen
Satz Dateien, fÃŒr die die Drift Ãberwachung durchgefÃŒhrt wird. Die Definition kann
aktiviert und deaktiviert sein, definiert den ErkennungsausfÃŒhrungsintervall und legt ein
Basisverzeichnis und optionale Dateifilter fest. FÃŒr jeden Ressourcentyp der Drift
Erkennung bietet gibt es eine oder mehrere vordefinierte Vorlagen zur Verwendung als
Startdefinition, die anschlieÃend bearbeitet werden können.
+view_drift_wizard_addDef_infoStepName=WÀhlen Sie die Vorlage fÌr die neue Drift
Erkennungsdefinition
+view_drift_wizard_addDef_success=Neue Drift Erkennungsdefinition [{0}] erfolgreich
hinzugefÃŒgt. Agent(en) wird/werden aktualisiert.
+view_drift_wizard_addDef_templatePrompt=Drift Definition Vorlagen
+view_drift_wizard_addDef_title=Drift Erkennung Definition fÃŒr Ressource vom Typ [{0}]
hinzufÃŒgen
+view_drift_wizard_addDef_windowTitle=Drift Erkennung Definition Wizard hinzufÃŒgen
+view_drift_wizard_addTemplate_failure=HinzufÃŒgen der neuen Drift Vorlage [{0}]
fehlgeschlagen
+view_drift_wizard_addTemplate_infoStepHelp=Jede Drift Vorlage ist von einer bestehenden
Vorlage abgeleitet. Dies bietet eine schnelle Weise der Erstellung neuer Vorlagen, die
bestehenden Vorlagen Àhneln oder die ihren Ursprung in Plugin-definierten Vorlagen haben.
Wie auch eine Drift Definition beschreibt die Vorlage einen Satz von Dateien, fÃŒr die
Drift Ãberwachung durchgefÃŒhrt wird. Je nach Situation können einer von einer Vorlage
abgeleiteten Definition Ãnderungen am Dateisatz oder anderen Einstellungen gestattet oder
nicht gestattet werden. Die Vorlagennamen mÃŒssen innerhalb eines Ressourcentyps eindeutig
sein.
+view_drift_wizard_addTemplate_infoStepName=Startvorlage auswÀhlen
+view_drift_wizard_addTemplate_success=HinzufÃŒgen der neuen Drift Vorlage [{0}]
erfolgreich.
+view_drift_wizard_addTemplate_title=Drift Definition Vorlage fÃŒr Typ [{0}] hinzufÃŒgen
+view_drift_wizard_addTemplate_windowTitle=Drift Definition Vorlage Wizard hinzufÃŒgen
+view_drift_wizard_pinTemplate_confirmNotPinned=Nach dem Festmachen besitzt jede aktuelle
und zukÃŒnftige Drift Definition fÃŒr die Vorlage ihren ersten Schnappschuss, der auf den
festgemachten Schnappschuss der Vorlage eingestellt ist. Vorhandene Definitionen fÃŒr
diese Vorlage werden auf den neuen ersten Schnappschuss zurÃŒckgesetzt und alle
bestehenden SchnappschÃŒsse werden entfernt. Mit dem Festmachen der Vorlage an den
Schnappschuss fortfahren?
+view_drift_wizard_pinTemplate_confirmPinned=Warnung\! Diese Vorlage ist bereits
festgemacht. Die Vorlage kann erneut an diesem Schnappschuss festgemacht werden. Nach dem
erneuten Festmachen ist jede aktuelle und zukÃŒnftige Drift Definition fÃŒr die Vorlage
mit ihrem ersten Schnappschuss auf den festgemachten Schnappschuss der Vorlage
eingestellt. Bestehende Definitionen fÃŒr diese Vorlage werden auf den ersten
Schnappschuss zurÃŒckgesetzt und alle bestehenden SchnappschÃŒsse zurÃŒckgesetzt. Mit dem
erneuten Festmachen der Vorlage mit diesem neuen Schnappschuss fortfahren?
view_drift_wizard_pinTemplate_duplicate_name_error=Vorlagen Name muss eindeutig sein
+view_drift_wizard_pinTemplate_failure=Festmachen des Schnappschusses an Drift Vorlage
[{0}] fehlgeschlagen
+view_drift_wizard_pinTemplate_infoStepExistingTemplate=An bestehender Vorlage festmachen
+view_drift_wizard_pinTemplate_infoStepHelp=Nach dem Festmachen besitzt jede aktuelle und
zukÃŒnftige Drift Definition fÃŒr die Vorlage ihren ersten Schnappschuss, der auf den
festgemachten Schnappschuss der Vorlage eingestellt ist. Und die Definition selbst wird
als festgemacht markiert. Dies wird zur Erkennung von Drift von einem erwarteten Dateisatz
verwendet. Vorhandene Definitionen fÃŒr diese Vorlage werden auf den neuen ersten
Schnappschuss zurÃŒckgesetzt und alle bestehenden SchnappschÃŒsse werden entfernt.
+view_drift_wizard_pinTemplate_infoStepName=WÀhlen Sie die festzumachende Vorlage
+view_drift_wizard_pinTemplate_infoStepNewTemplate=An neuer Vorlage festmachen (abgeleitet
von der Drift Definition des Schnappschusses)
+view_drift_wizard_pinTemplate_infoStepRadioHelp=Der Schnappschuss kann an einer neuen
oder bestehenden Drift Vorlage festgemacht werden. Die "New Template" Option
(neue Vorlage) gestattet es dem Benutzer eine vertrauenswÃŒrdige Definition und einen
Schnappschuss auf Ressourcenebene bis zur Typebene zu begÃŒnstigen. Die neue kann dann an
Mitgliedern des Typs angewendet werden. Die neue Vorlage ist anfangs eine Kopie der Drift
Definition des Schnappschusses, aber sie kann im nÀchsten Schritt bearbeitet werden. Der
Name sollte geÀndert werden und muss ein eindeutiger Drift Vorlagen Name fÌr den Typ
sein. Die "Existing Template" Option (vorhandene Option) gestattet dem Benutzer
das Festmachen oder das erneute Festmachen mit dem gewÀhlten Schnappschuss. Um gÌltig zu
sein muss die vorhandene Vorlage dieselben Verzeichnisse ÃŒberwachen, die die Definition
des Schnappschusses. Das AuswahlkÀstchen zeigt nur gÌltige bestehende Vorlagen an. Falls
es keine gÃŒltigen bestehenden
Vorlagen gibt, so kann diese Option nicht gewÀhlt werden.
+view_drift_wizard_pinTemplate_infoStepRadioTitle=Vorlagenauswahl
+view_drift_wizard_pinTemplate_infoStepSelectBlocked=Es sind keine bestehenden Vorlagen
vorhanden, die dieselben Verzeichnisse ÃŒberwachen wie die Definition des Schnappschusses.
WÀhlen Sie die "New Template" Option (neue Vorlage) um fortzufahren.
+view_drift_wizard_pinTemplate_infoStepSelectTitle=Bestehende Vorlagen
+view_drift_wizard_pinTemplate_success=Festmachen der neuen Drift Vorlage [{0}]
erfolgreich.
+view_drift_wizard_pinTemplate_title=Schnappschuss [{0}] von Definition [{1}] an Drift
Vorlage fÃŒr Typ [{2}] festmachen
+view_drift_wizard_pinTemplate_windowTitle=Drift Definition Vorlage Wizard festmachen
+view_dynagroup_children=DynaGroup Kinder
# #view_drift_table_pinned = Pinned?
# #view_drift_table_resourceDef = Resource Drift Detection Definition
# #view_drift_table_resourceHistory = Resource Drift History
@@ -1574,10 +2047,14 @@ view_dynagroup_exprBuilder_expressionType_resource=Ressource
view_dynagroup_exprBuilder_expressionType_resourceCategory=Ressourcen-Kategorie
view_dynagroup_exprBuilder_expressionType_resourceConfig=Ressourcen-Konfiguration
view_dynagroup_exprBuilder_expressionType_resourceType=Ressourcen-Typ
+view_dynagroup_exprBuilder_expressionType_tooltip=Der Type von Eigenschaft, den dieser
Ausdruck einschaltet\:<br/> <b>Ressource</b>\: Eine
Ressourceneigenschaft wie deren Name oder Version<br/>
<b>Ressourcetyp</b>\: Suche nach Ressourcen eines bestimmten Typs<br/>
<b>Ressourcenkategorie</b>\: Suche nach Ressourcen nach Kategorie\: Plattform,
Server, Dienst<br/> <b>Merkmal</b>\: Ressourcen, die ausgewÀhlte Werte
fÃŒr ein ÃŒberwachtes Merkmal besitzen<br/> <b>Plugin
Konfiguration</b>\: Suche nach der Plugin Komponente Konfigurationseinstellung der
Komponente<br/> <b>Ressourcenkonfiguration</b>\: Suche nach der
Konfigurationsenstellung der verwalteten Ressource
view_dynagroup_exprBuilder_expressionType_trait=Trait
+view_dynagroup_exprBuilder_expression_tooltip=Dies ist der vollstÀndige Ausdruck, der
von den Auswahlen im Formular unten reprÀsentiert wird. Dieser Text wird dem Text Ihres
Gruppendefinitionsausdrucks hinzugefÌgt, wenn Sie auf die SchaltflÀche "Add
Expression" (Ausdruck hinzufÃŒgen) klicken.
view_dynagroup_exprBuilder_groupBy=Gruppieren nach
+view_dynagroup_exprBuilder_groupBy_tooltip=Durch GroupBy schwenkt das System die Werte
der eingegebenen AusdrÃŒcke und erstellt eine separate Gruppe fÃŒr jeden Wert. Zum
Beispiel GroupBy am Cluster Namen zur Erstellung einer Gruppe fÃŒr jeden Cluster mit allen
Cluster Mitgliedern darin.
# #view_dynagroup_exprBuilder_groupBy_tooltip = groupby will cause the system to pivot on
the values from the entered expressions creating a separate group for each value. For
example, groupby on the cluster name to create a group for each cluster with all cluster
members in it.
view_dynagroup_exprBuilder_memberOf=Mitglied von
+view_dynagroup_exprBuilder_memberOf_tooltip=memberof schrÀnkt die dynagroup Mitglieder
auf einen Untersatz der festgelegten Ressourcengruppe ein. Die Festlegung mehrerer
memberof Bedingungen schrÀnkt die dynagroup Mitglieder auf einen Untersatz der
Vereinigung von Mitgliedern der festgelegten Gruppen ein.
# #view_dynagroup_exprBuilder_memberOf_tooltip = memberof will restrict the dynagroup
members to be a subset of the specified resource group. Specifying multiple memberof
conditions will restrict the dynagroup members to be a subset of the union of members of
the specified groups.
view_dynagroup_exprBuilder_noPlugins=--Keine Plugins--
view_dynagroup_exprBuilder_noProperties=--Keine Eigenschaften--
@@ -1585,13 +2062,25 @@ view_dynagroup_exprBuilder_noResourceTypes=--Keine
Ressourcen-Typen--
view_dynagroup_exprBuilder_pluginLoadFailure=Kann die Liste der Plugins nicht laden
view_dynagroup_exprBuilder_propLoadFailure=Kann die Liste der Eigenschaften nicht laden
view_dynagroup_exprBuilder_propertyName=Name der Eigenschaft
+view_dynagroup_exprBuilder_propertyName_tooltip=Der Name der abzufragenden Eigenschaft.
Dies wird sowohl durch den Ausdruckstyp als auch den Ressourcentyp definiert.
+view_dynagroup_exprBuilder_resTypeLoadFailure=Erhalt der Liste von Ressourcentypen fÃŒr
Plugin [{0}] nicht möglich
+view_dynagroup_exprBuilder_resource=Ressource
+view_dynagroup_exprBuilder_resourceType=Ressourcen-Typ
+view_dynagroup_exprBuilder_resourceType_tooltip=Der Ressourcentyp
+view_dynagroup_exprBuilder_resource_child=Child
+view_dynagroup_exprBuilder_resource_grandparent=Grandparent
view_dynagroup_exprBuilder_resource_greatGrandparent=GreatGrandparent
view_dynagroup_exprBuilder_resource_greatGreatGrandparent=GreatGreatGrandparent
view_dynagroup_exprBuilder_resource_parent=Eltern
view_dynagroup_exprBuilder_resource_resource=Ressource
view_dynagroup_exprBuilder_resource_tooltip=WÀhlen Sie die Ebene der Ressource, die Sie
wÀhlen möchten. Wenn Sie zum Beispiel "parent" wÀhlen, so finden Sie
Ressourcen, deren ÃŒbergeordnete Ressource ("Parent" Ressource) mit dem Rest des
Ausdrucks ÃŒbereinstimmt.
view_dynagroup_exprBuilder_savedExpression=Gespeicherter Ausdruck
+view_dynagroup_exprBuilder_title=Expression-Builder
+view_dynagroup_exprBuilder_unset=Ungesetzt
+view_dynagroup_exprBuilder_unset_tooltip=Unset (Ungesetzt) findet alle Werte mit einem
Nullwert in der Datenbank. Dies ist nicht mittels des "\=" Operators möglich,
wegen der Art undWeise auf die Datenbanken Daten speichern und abfragen.
+view_dynagroup_exprBuilder_value_tooltip=Der String-Wert fÃŒr den abzufragenden Ausdruck
view_dynagroup_expression=Ausdruck
+view_dynagroup_expressionBuilderIconTooltip=Expression Builder...
view_dynagroup_expressionSet=Ausdruck
view_dynagroup_lastCalculationTime=Zeitpunkt letzte Berechnung
view_dynagroup_loadDefinitionFailure=Konnte die Gruppendefinition [{0}] nicht laden
@@ -1616,6 +2105,8 @@ view_dynagroup_template_customExpression=Benutzerdefinierter
Ausdruck...
view_dynagroup_template_downedResources=Alle Ressourcen derzeit auÃer Betrieb
view_dynagroup_template_jbossas4_clusters=JBossAS 4 - Cluster
view_dynagroup_template_jbossas4_earClusters=JBossAS 4 - Geclusterte EARs
+view_dynagroup_template_jbossas4_hostingApp=JBossAS 4 - Alle, die eine beliebige Version
von "my" App hosten
+view_dynagroup_template_jbossas4_nonsecured=JBossAS 4 - Alle nicht gesicherten
view_dynagroup_template_jbossas4_uniqueVersions=JBossAS 4 - Eindeutige Versionen
view_dynagroup_template_jbossas5_clusters=JBossAS 5/6 - Cluster
view_dynagroup_template_platforms=Plattform Ressourcen im Inventar
@@ -1652,17 +2143,25 @@ view_group_detail_failRecursiveChange=Konnte die Einstellung
''Rekursiv'' fÃŒr d
view_group_detail_implicitAvail=Group availability for all members (includes recursive
members).
view_group_detail_recursiveChange=Sie haben erfolgreich die
''Rekursiv''-Einstellung fÌr die Gruppe [{0}] geÀndert.
view_group_inventory_activity_no_recent_metrics=Diese Gruppe hat keine aktuellen
Metriken
+view_group_meas_schedules_title=Gruppen Metrik Collection ZeitplÀne
# #view_group_meas_schedules_title = Group Metric Collection Schedules
view_group_membership_failFetch=Konnte die Ressourcen-Gruppe nicht laden
view_group_membership_saveFailure=Aktualisierung der Mitgliedschaft von Gruppe [{0}]
fehlgeschlagen
view_group_membership_saveSuccessful=Sie haben die die Mitgliedschaft von Gruppe [{0}]
aktualisiert
+view_group_operationScheduleDetails_failedToLoadMembers=Konnte die Gruppen Mitglieder
Ressourcen nicht laden.
view_group_operationScheduleDetails_field_execute=AusfÃŒhren
+view_group_operationScheduleDetails_field_haltOnFailure=Bei Fehlschlagen anhalten?
view_group_operationScheduleDetails_memberResource=Mitglied Ressource
+view_group_operationScheduleDetails_value_parallel=parallel
+view_group_operationScheduleDetails_value_sequential=in der unten festgelegten
Reihenfolge (Mitglieder Ressourcen zur Ãnderung der Reihenfolge ziehen und ablegen)
view_group_pluginConfig_edit_currentGroupProperties=Aktuelle Gruppeneigenschaften
+view_group_pluginConfig_edit_invalid=Die folgenden Verbindungseinstellungseigenschaften
haben ungÃŒtige Werte und mÃŒssen korrigiert werden, ehe die Verbindungseinstellungen
gespeichert werden können\: [{0}]
view_group_pluginConfig_edit_noperm=Sie sind nicht berechtigt diese Gruppen
Verbindungseinstellungen zu bearbeiten
+view_group_pluginConfig_edit_saveFailure=Die Initiierung der Gruppen
Verbindungseinstellungsaktualisierungen fÃŒr die [{0}] kompatible Gruppe namens [{1}] ist
fehlgeschlagen
view_group_pluginConfig_edit_saveInitiated_concise=Die Gruppen
Verbindungseinstellungsaktualisierungen wurden instantiiert
view_group_pluginConfig_edit_saveInitiated_full=Die Gruppen
Verbindungseinstellungsaktualisierungen wurden instantiiert fÃŒr die [{0}] kompatible
Gruppe namens [{1}]
view_group_pluginConfig_edit_saveTooltip=Die Verbindungseinstellungen aller
Gruppenmitglieder aktualisieren
+view_group_pluginConfig_edit_valid=Alle Verbindungseinstellungseigenschaften haben
gÌltige Werte, daher können die Verbindungseinstellungen jetzt gespeichert werden.
# #view_group_membership_saveFailure = Failed to update membership of group [{0}]
# #view_group_membership_saveSuccessful = You have updated the membership of group [{0}]
# #view_group_pluginConfig_edit_currentGroupProperties = Current Group Properties
@@ -1674,20 +2173,25 @@ view_group_pluginConfig_edit_saveTooltip=Die
Verbindungseinstellungen aller Grup
# #view_group_pluginConfig_edit_saveTooltip = Update the connection settings of all group
members
# #view_group_pluginConfig_edit_valid = All connection setting properties have valid
values, so the connection settings can now be saved
view_group_pluginConfig_members_fetchFailure=Failed to get plugin config update history
for members of group [{0}]
+view_group_pluginConfig_members_fetchFailureConn=Abruf von Mitglieder
Verbindungseinstellungen fehlgeschlagen fÃŒr [{0}]
+view_group_pluginConfig_members_fetchFailureConnInProgress=Eine Gruppen Plugin
Konfigurationsaktualisierung lÀuft derzeit. Sie mÌssen warten, bis die Aktualisierung
abgeschlossen ist, ehe Sie die Gruppeneinstellungen ansehen können.
view_group_pluginConfig_members_statusDetails=Status Details
view_group_pluginConfig_members_statusFailure=Die Konfigurationsaktualisierung ist aus
unbekanntem Grund fehlgeschlagen
view_group_pluginConfig_members_statusInprogress=Diese Konfigurationsaktualisierung
lÀuft noch
view_group_pluginConfig_members_statusNochange=Es wurden keine Ãnderungen an dieser
Konfiguration vorgenommen
view_group_pluginConfig_members_statusSuccess=Diese Konfigurationsaktualisierung war
erfolgreich
+view_group_pluginConfig_members_title=Gruppen Verbindungseinstellungen Mitglieder
Verlauf
view_group_pluginConfig_table_clickStatusIcon=FÃŒr mehr Details auf das Status Icon
klicken
view_group_pluginConfig_table_deleteFailure=Konnte die Gruppen Plugin Config History
nicht löschen
view_group_pluginConfig_table_deleteSuccessful=Sie haben [{0}] VerlaufseintrÀge
gelöscht
view_group_pluginConfig_table_failFetch=Konnte die Gruppen Plugin Config History nicht
abrufen
+view_group_pluginConfig_table_msg1=Mitglieder Historie fÃŒr Status jeder einzelnen
Ressource ansehen
view_group_pluginConfig_table_statusDetails=Status Details
view_group_pluginConfig_table_statusFailure=Diese Konfigurationsaktualisierung ist
fehlgeschlagen
view_group_pluginConfig_table_statusInprogress=Diese Gruppen Konfigurationsaktualisierung
lÀuft noch
view_group_pluginConfig_table_statusNochange=Es wurden keine Ãnderungen an dieser
Gruppen Konfiguration vorgenommen
view_group_pluginConfig_table_statusSuccess=Diese Gruppen Konfigurationsaktualisierung
ist fehlgeschlagen
+view_group_pluginConfig_table_title=Verlauf der Gruppen Verbindungs-Einstellungen
view_group_pluginConfig_table_viewMemberHistory=Mitglieder Historie ansehen
view_group_pluginConfig_table_viewSettings=Einstellungen ansehen
# #view_group_pluginConfig_members_statusFailure = This configuration update failed for
an unknown reason
@@ -1712,21 +2216,31 @@ view_group_pluginConfig_view_noperm=Sie haben nicht die
Berechtigung, um die Ver
view_group_resConfig_edit_invalid=Die folgenden Konfigurations-Einstellungen haben
ungÌtige Werte und mÌssen korrigiert werden, um die Einstellungen speichen zu können\:
[{0}]
view_group_resConfig_edit_loadFail=Abruf von Mitglieder Ressourcen Konfigurationen
fehlgeschlagen fÃŒr [{0}]
view_group_resConfig_edit_noperm=Sie sind nicht berechtigt diese Gruppen Konfiguration zu
bearbeiten
+view_group_resConfig_edit_saveFailure=Die Initiierung der Gruppen
Konfigurationsaktualisierungen fÃŒr die [{0}] kompatible Gruppe namens [{1}] ist
fehlgeschlagen
+view_group_resConfig_edit_saveInitiated_concise=Die Gruppen
Konfigurationsaktualisierungen wurden initiiert
view_group_resConfig_edit_saveInitiated_full=Die Gruppen Konfigurationsaktualisierungen
wurden instantiiert fÃŒr die [{0}] kompatible Gruppe namens [{1}]
view_group_resConfig_edit_saveTooltip=Die Konfigurationen aller Gruppenmitglieder
aktualisieren
view_group_resConfig_edit_valid=Alle Konfigurationseigenschaften haben gÃŒltige Werte,
daher kann die Konfiguration jetzt gespeichert werden
+view_group_resConfig_members_fetchFailure=Erhalt des Ressourcen config
Aktualisierungsverlaufs fÃŒr Mitglieder der Gruppe [{0}] fehlgeschlagen
+view_group_resConfig_members_fetchFailureConfig=Abruf von Mitglieder Ressourcen
Konfigurationenseinstellungen fehlgeschlagen fÃŒr [{0}]
+view_group_resConfig_members_fetchFailureConfigInProgress=Eine Gruppen Ressourcen
Konfigurationsaktualisierung lÀuft derzeit. Sie mÌssen warten, bis die Aktualisierung
abgeschlossen ist, ehe Sie die Gruppeneinstellungen ansehen können.
view_group_resConfig_members_statusDetails=Status Details
view_group_resConfig_members_statusFailure=Die Konfigurationsaktualisierung ist aus
unbekanntem Grund fehlgeschlagen
view_group_resConfig_members_statusInprogress=Diese Konfigurationsaktualisierung lÀuft
noch
view_group_resConfig_members_statusNochange=Es wurden keine Ãnderungen an dieser
Konfiguration vorgenommen
view_group_resConfig_members_statusSuccess=Diese Konfigurationsaktualisierung war
erfolgreich
+view_group_resConfig_members_title=Gruppen Ressourcen Konfiguration Mitglieder Verlauf
view_group_resConfig_table_clickStatusIcon=FÃŒr mehr Details auf das Status Icon klicken
+view_group_resConfig_table_deleteFailure=Konnte die Gruppen Ressourcen Config History
nicht löschen
view_group_resConfig_table_deleteSuccessful=Sie haben [{0}] VerlaufseintrÀge gelöscht
+view_group_resConfig_table_failFetch=Erhalt der Gruppen Ressourcen Config History
fehlgeschlagen
+view_group_resConfig_table_msg1=Mitglieder Historie fÃŒr Status jeder einzelnen Ressource
ansehen
view_group_resConfig_table_statusDetails=Status Details
view_group_resConfig_table_statusFailure=Diese Konfigurationsaktualisierung ist
fehlgeschlagen
view_group_resConfig_table_statusInprogress=Diese Gruppen Konfigurationsaktualisierung
lÀuft noch
view_group_resConfig_table_statusNochange=Es wurden keine Ãnderungen an dieser Gruppen
Konfiguration vorgenommen
view_group_resConfig_table_statusSuccess=Diese Gruppen Konfigurationsaktualisierung ist
fehlgeschlagen
+view_group_resConfig_table_title=Gruppen Ressourcen Konfigurationsverlauf
view_group_resConfig_table_viewMemberHistory=Mitglieder Historie ansehen
view_group_resConfig_table_viewSettings=Einstellungen ansehen
view_group_resConfig_view_groupProperties=Gruppen-Eigenschaften
@@ -1738,15 +2252,19 @@ view_group_resConfig_view_noperm=Sie haben nicht die Berechtigung,
um die Konfig
# #view_group_resConfig_edit_saveTooltip = Update the configurations of all group
members
# #view_group_resConfig_edit_valid = All configuration properties have valid values, so
the configuration can now be saved
view_group_summary_compatible=Kompatible
+view_group_summary_descUpdateFailure=Konnte Beschreibung der Ressourcen Gruppe mit ID
[{0}] nicht Àndern
view_group_summary_descUpdateSuccessful=Sie haben die Beschreibung dieser
Ressourcen-Gruppe geÀndert.
# #view_group_summary_descUpdateFailure = Failed to change the description of the
resource group with ID [{0}]
# #view_group_summary_descUpdateSuccessful = You have changed the description of this
resource group
view_group_summary_dynamic=Dynamisch
+view_group_summary_dynamicNote=Dynamische Gruppen Namen und Beschreibungen werden
gemanagt und können daher nicht bearbeitet werden
# #view_group_summary_dynamicNote = Dynamic group names and descriptions are managed, and
therefore are not editable
view_group_summary_groupDefinition=Gruppen-Definition
view_group_summary_memberCount=Anzahl Mitglieder
view_group_summary_memberType=Mitglieds-Typ
view_group_summary_mixed=Gemischt
+view_group_summary_nameUpdateFailure=Ãnderung des Namens der Ressourcen Gruppe mit ID
[{0}] nicht Àndern - konnte ihn nicht von [{1}] zu [{2}] Àndern
+view_group_summary_nameUpdateSuccessful=Sie haben den Namen der Ressourcen Gruppe mit ID
[{0}] von [{1}] zu [{2}] geÀndert
# #view_group_summary_nameUpdateFailure = Failed to change the name of the resource group
with ID [{0}] - could not change from [{1}] to [{2}]
# #view_group_summary_nameUpdateSuccessful = You have changed the name of the resource
group with ID [{0}] from [{1}] to [{2}]
view_group_summary_recursive=Rekursiv
@@ -1758,11 +2276,18 @@ view_inventory_allGroups=Alle Gruppen
view_inventory_allResources=Alle Ressourcen
view_inventory_collectionInterval=Erfassungs-Intervall
view_inventory_dynagroupDefs=Dynagroup-Definitionen
+view_inventory_eventDetails_loadFailed=Ein Fehler ist beim Laden der Ereignisdetails
aufgetreten
+view_inventory_eventHistory_deleteFailed=Konnte die ausgewÀhlten Ereignisse fÌr [{0}]
nicht löschen
+view_inventory_eventHistory_deleteSuccessful=Sie haben [{0}] Ereignisse fÃŒr [{1}]
erfolgreich gelöscht
# #view_inventory_eventDetails_loadFailed = An error occurred loading the event details
# #view_inventory_eventHistory_deleteFailed = Failed to deleted selected events for
[{0}]
# #view_inventory_eventHistory_deleteSuccessful = You have successfully deleted [{0}]
events for [{1}]
view_inventory_eventHistory_details=Details
view_inventory_eventHistory_detailsFilter=Filter fÃŒr Details
+view_inventory_eventHistory_groupEventHistory=Gruppen Ereignisse Verlauf
+view_inventory_eventHistory_purgeFailed=Konnte Ereignisse fÃŒr [{0}] nicht bereinigen
+view_inventory_eventHistory_purgeSuccessful=Sie haben [{0}] Ereignisse fÃŒr [{1}]
erfolgreich bereinigt
+view_inventory_eventHistory_resourceEventHistory=Verlauf Ressourcen Ereignisse
# #view_inventory_eventHistory_groupEventHistory = Group Event History
# #view_inventory_eventHistory_purgeFailed = Failed to purge events for [{0}]
# #view_inventory_eventHistory_purgeSuccessful = You have successfully purged [{0}]
events for [{1}]
@@ -1770,10 +2295,15 @@ view_inventory_eventHistory_detailsFilter=Filter fÃŒr Details
view_inventory_eventHistory_severity=Schwere
view_inventory_eventHistory_severityFilter=Filter fÃŒr Schwere
view_inventory_eventHistory_sourceFilter=Filter fÃŒr Quelle
+view_inventory_eventHistory_sourceLocation=Speicherort Quelle
# #view_inventory_eventHistory_sourceLocation = Source Location
view_inventory_eventHistory_timestamp=Zeitunkt
view_inventory_groups=Gruppen
view_inventory_groups_children=Kinder
+view_inventory_groups_deleteFailed=Konnte die gewÀhlten Ressourcen-Gruppen nicht
löschen
+view_inventory_groups_deleteSuccessful=Sie haben die gewÀhlten Ressourcen Gruppen
erfolgreich gelöscht
+view_inventory_groups_descendants=Abkömmlinge
+view_inventory_groups_loadFailed=Konnte die zusammengesetzten Gruppendaten nicht laden
# #view_inventory_groups_deleteFailed = Failed to delete the selected resource groups
# #view_inventory_groups_deleteSuccessful = You have successfully deleted the selected
resource groups
# #view_inventory_groups_descendants = Descendants
@@ -1782,18 +2312,38 @@ view_inventory_ignoredResources=Ignorierte Ressourcen
view_inventory_mixed=gemischt
view_inventory_platforms=Platformen
view_inventory_problemGroups=Gruppen mit Problemen
+view_inventory_resource_loadFailed=Ressource mit [{0}] existiert nicht oder ist nicht
zugÀnglich
# #view_inventory_resource_loadFailed = Resource with id [{0}] does not exist or is not
accessible
view_inventory_resources_deleteConfirm=Sind Sie sicher, dass Sie die ausgewÀhlten
Ressourcen löschen wollen?
view_inventory_resources_deleteFailed=Löschen der ausgewÀhlten Ressourcen ist
fehlgeschlagen
+view_inventory_resources_deleteFailed2=Löschen der gewÀhlten Ressourcen fehlgeschlagen.
Verbindung mit dem Agent nicht möglich. Dies kann darauf hindeuten, dass der Agent nicht
in Betrieb ist.
+view_inventory_resources_deleteSuccessful=Eine Anfrage zur DurchfÃŒhrung einer
Ressourcenlöschung wurde erfolgreich bei dem/den Agent(en) eingereicht.
+view_inventory_resources_disableConfirm=Sind Sie sicher, dass Sie die ausgewÀhlten
Ressourcen deaktivieren wollen? Vom Agent gemeldete, deaktivierte VerfÃŒgbarkeiten werden
ignoriert. Die Deaktivierung kann fÃŒr Ressourcen von Nutzen sein, von denen erwartet
wird, dass sie als Teil der normalen Operationen oder Wartung auÃer Betrieb sind.
view_inventory_resources_disableFailed=Deaktivierung der ausgewÀhlten Ressourcen ist
fehlgeschlagen
+view_inventory_resources_disableSuccessful=Sie haben die gewÀhlten Ressourcen und deren
untergeordnete Ressourcen erfolgreich deaktiviert, [{0}] Ressourcen.
+view_inventory_resources_enableConfirm=Sind Sie sicher, dass Sie die ausgewÀhlten
Ressourcen deaktivieren wollen? Wenn aktiviert, so wird die VerfÃŒgbarkeit auf UNKNOWN
(unbekannt) eingestellt, bis die Agenten das nÀchste Mal zur VerfÌgbarkeit der
Ressourcen Bericht erstatten. Bei den Agenten wird um die möglichst schnelle
Berichterstattung der aktuellen VerfÃŒgbarkeiten angefragt.
view_inventory_resources_enableFailed=Aktivierung der ausgewÀhlten Ressourcen ist
fehlgeschlagen.
+view_inventory_resources_enableSuccessful=Sie haben die gewÀhlten Ressourcen und deren
untergeordnete Ressourcen erfolgreich aktiviert, [{0}] Ressourcen.
+view_inventory_resources_ignoreConfirm=Sind Sie sicher, dass die gewÀhlten Ressourcen
ignoriert werden sollen? Sie werden dann nicht mehr im Inventar angezeigt.
# #view_inventory_resources_deleteSuccessful = A request to perform the resource deletion
has been submitted successfully to the agent(s).
# #view_inventory_resources_disableSuccessful = You have successfully disabled the
selected resources and their children, [{0}] resources.
# #view_inventory_resources_ignoreConfirm = Are you sure you want the selected resources
to be ignored? They will no longer show up in inventory.
view_inventory_resources_ignoreFailed=Konnte die Ressourcen nicht ignorieren
+view_inventory_resources_ignoreSkipAllPlatforms=Sie können Plattformen nicht ignorieren.
Alle Ihre Auswahlen sind Plattformen, daher geschieht nichts. Falls Sie eine Plattform
nicht mehr managen wollen, so beenden Sie deren assoziierten Agent und entfernen Sie die
Plattform aus dem Inventar.
+view_inventory_resources_ignoreSkipSomePlatforms=Sie können Plattformen nicht
ignorieren. Die [{0}] Plattformen, die Sie gewÀhlt haben, werden Ìbersprungen. Falls Sie
eine Plattform nicht mehr managen wollen, so beenden Sie deren assoziierten Agent und
entfernen Sie die Plattform aus dem Inventar.
# #view_inventory_resources_ignoreSkipAllPlatforms = You cannot ignore platforms. All of
your selections are platforms so nothing will be done. If you no longer want to manage a
platform, shutdown its associated agent and uninventory the platform.
# #view_inventory_resources_ignoreSkipSomePlatforms = You cannot ignore platforms. The
[{0}] platforms you selected will be skipped. If you no longer want to manage a platform,
shutdown its associated agent and uninventory the platform.
view_inventory_resources_ignoreSuccessful=Sie haben die ausgewÀhlten Ressourcen
erfolgreich ignoriert
+view_inventory_resources_ignoreSuccessfulSkipPlatforms=Sie haben einige der gewÀhlten
Ressourcen erfolgreich ignoriert, jedoch wurden die [{0}] Plattformen, die Sie gewÀhlt
haben, ÃŒbersprungen. Falls Sie eine Plattform nicht mehr managen wollen, so beenden Sie
deren assoziierten Agent und entfernen Sie die Plattform aus dem Inventar.
+view_inventory_resources_loadFailed=Konnte die zusammengesetzten Ressourcendaten nicht
laden
+view_inventory_resources_members=Mitglieder Ressourcen
+view_inventory_resources_unignoreConfirm=Sind Sie sicher, dass das Ignorieren der
gewÀhlten Ressourcen aufheben wollen? Sie werden dann wieder im Inventar angezeigt.
+view_inventory_resources_unignoreFailed=Konnte das Ignorieren fÃŒr die Ressourcen nicht
aufheben.
+view_inventory_resources_unignoreSuccessful=Sie haben erfolgreich das Ignorieren der
ausgewÀhlten Ressourcen aufgehoben.
+view_inventory_resources_uninventoryConfirm=Sind Sie sicher, dass Sie die ausgewÀhlten
Ressourcen aus dem Inventar entfernen wollen? Beachten Sie dass - falls eine gewÀhlte
Ressource noch vorhanden ist - sie beim nÀchsten Discovery Scan des Agents aufgespÌrt
wird.
+view_inventory_resources_uninventoryFailed=Entfernung der ausgewÀhlten Ressourcen aus
dem Inventar ist fehlgeschlagen
+view_inventory_resources_uninventoryStorageConfirm=Sie sind im indestenseine Ressource
aus dem Inventar zu entfernen, die vom Storage Cluster verwendet wird. Um in Zukunft
Fehler zu vermeiden, sollten Sie "undeploy the node" (Undeployment des Knotens)
vor diesem Schritt ausfÌhren. Möchten Sie wirklich auf eigenes Risiko fortfahren?
+view_inventory_resources_uninventorySuccessful=Sie haben die ausgewÀhlten Ressourcen
erfolgreich aus dem Inventar entfernt
# #view_inventory_resources_ignoreSuccessfulSkipPlatforms = You have successfully ignored
some of the selected resources, however, the [{0}] platforms you selected were skipped.
Platforms cannot be ignored. If you no longer want to manage a platform, shutdown its
associated agent and uninventory the platform.
# #view_inventory_resources_loadFailed = Failed to load resource composite data
# #view_inventory_resources_members = Member Resources
@@ -1873,6 +2423,11 @@ view_operationHistoryDetails_status=Status
view_operationHistoryList_button_forceDelete=Löschen erzwingen
view_operationHistoryList_button_runOperation=Operation ausfÃŒhren
view_operationHistoryList_cancelConfirm=Sind Sie sicher, dass Sie die gewÀhlten
Operationen abbrechen möchten? HINWEIS\: Nur diejenigen der gewÀhlten Operationen, die
den Status "in progress" ("im Gange") besitzen, werden abgebrochen.
+view_operationHistoryList_cancelFailure=Die Anfrage zum Abbruch wurde fÃŒr die Operation
mit der Historien ID [{0}] ist fehlgeschlagen.
+view_operationHistoryList_cancelSubmitted=Anfragen zum Abbruch von [{0}] "in
progress" Operationen (im Gange) wurden eingereicht.
+view_operationHistoryList_cancelSuccess=Die Anfrage zum Abbruch wurde fÃŒr die Operation
mit der Historien ID [{0}] erfolgreich eingereicht.
+view_operationHistoryList_deleteFailure=Konnte Operations Historie [{0}] nicht löschen.
+view_operationHistoryList_deletePartialSuccess=Es wurden [{0}] Operations
Historienelemente gelöscht, aber Löschen fehlgeschlagen fÌr Elemente mit den folgenden
IDs\: {1}
# #view_operationHistoryList_cancelConfirm = Are you sure you want to cancel the selected
operations? NOTE: Only those selected operations that are currently "in
progress" will be attempted to be canceled.
# #view_operationHistoryList_cancelFailure = The cancel request failed for the operation
with the history ID of [{0}].
# #view_operationHistoryList_cancelSubmitted = Requests to cancel [{0}] "in
progress" operations have been submitted.
@@ -1906,7 +2461,10 @@ view_portlet_defaultName_group_config_updates=Gruppen\:
Aktualisierungen der Kon
view_portlet_defaultName_group_events=Gruppen\: Events
view_portlet_defaultName_group_metrics=Gruppen\: Metriken
view_portlet_defaultName_group_oobs=Gruppen\: OOB
+view_portlet_defaultName_group_operations=Gruppe\: Operationen
+view_portlet_defaultName_group_pkg_hisory=Gruppe\: Paketverlauf
view_portlet_defaultName_inventorySummary=InventarÃŒbersicht
+view_portlet_defaultName_mashup=Mashup
# #view_portlet_defaultName_mashup = Mashup
view_portlet_defaultName_message=Nachricht
view_portlet_defaultName_operations=KÃŒrzlich ausgefÃŒhrte Operationen
@@ -1914,6 +2472,7 @@ view_portlet_defaultName_platformSummary=Platformauslastung
view_portlet_defaultName_problemResources=Nicht verfÃŒgbare Resourcen oder mit Alarmen
view_portlet_defaultName_recentAlerts=KÌrzlich ausgelöste Alarme
view_portlet_defaultName_recentlyAddedResources=Zuletzt hinzugefÃŒgte Ressourcen
+view_portlet_defaultName_resourceMetric=Charts fÃŒr Ressourcen-Metriken
view_portlet_defaultName_resource_alerts=Ressource\: Alarme
view_portlet_defaultName_resource_bundles=Ressource\: Bundle Deployments
view_portlet_defaultName_resource_config_updates=Ressource\:
Konfigurationsaktualisierungen
@@ -1925,6 +2484,10 @@ view_portlet_defaultName_resource_pkg_hisory=Ressource\:
Paketverlauf
view_portlet_factory_invalidPortlet=Dies ist ein obsoletes Portlet, das nicht mehr
gÌltig ist. Bitte löschen Sie es.
view_portlet_graph_configure_metricDefinition_graph=Die ID der Metrik, die dargestellt
werden soll
view_portlet_graph_configure_resource_graph=Die Ressource deren Metrik dargestellt werden
soll
+view_portlet_help_autodiscovery=Dieses Portlet gestattet das Importieren oder Ignorieren
von neu aufgefundenen Ressourcen. Importierte Ressourcen werden dem Inventar zur
Beobachtung und Verwaltung hinzugefÃŒgt. Ignorierte Ressourcen werden nicht importiert und
bleiben der Ansicht verborgen falls das Ignorieren nicht explizit aufgehoben wird.
+view_portlet_help_bundle_deps=Dieses Portlet zeigt die relevante Bundle Deployments an,
basierend auf den konfigurierten Anzeigekriterien.
+view_portlet_help_config_updates=Dieses Portlet zeigt aktuelle KonfigurationsÀnderungen,
die konsistent mit Konfigurationseinstellungen sind.
+view_portlet_help_eventcounts=Dieses Portlet zeigt EreigniszÀhlungen an, die konsistent
mit den konfigurierten Anzeigekriterien sind.
# #view_portlet_graph_configure_title = Graph Config
# #view_portlet_graph_configure_title_desc = Configuration of the graph portlet
# #view_portlet_graph_help_msg = This Portlet supports the graphing of a resource
metric.
@@ -1932,12 +2495,23 @@ view_portlet_graph_configure_resource_graph=Die Ressource deren
Metrik dargestel
# #view_portlet_graph_help_unconfigured = This graph is unconfigured, click the settings
button to configure.
# #view_portlet_graph_title = Resource Graph
view_portlet_help_favoriteResources=Dieses Portlet zeigt die Lesezeichen des Benutzers
fÃŒr Ressourcen
+view_portlet_help_graph=Dieses Portlet zeigt das Ressourcen Metrik Diagramm an.
view_portlet_help_inventorySummary=Dieses Portlet zeigt eine Ãbersicht ÃŒber das fÃŒr
den Benutzer sichtbare Inventar
view_portlet_help_mashup=Dieses Portlet zeigt den Inhalt eines HTTP-Requests in einem
IFrame dar.
view_portlet_help_message=Dieses Portlet zeigt eine statische HTML-Seite an. Die
<i>Nachricht</i> kann konfiguriert werden.
+view_portlet_help_metrics=Dieses Portlet liefert eine grafische Darstellung relevanter
metrischer Daten basierend auf den konfigurierten Anzeigekriterien.
view_portlet_help_none=FÃŒr dieses Portlet ist keine Hilfe verfÃŒgbar
view_portlet_help_oobs=Dieses Portlet zeigt Metriken, die aus dem Baseband gelaufen sind
+view_portlet_help_operations=Dieses Portlet zeigt die zuletzt ausgefÃŒhrten Operationen
fÃŒr das Inventar des aktuellen Benutzers an.
+view_portlet_help_operations_criteria=Dieses Portlet zeigt Operationen an, die konsistent
mit den konfigurierten Anzeigekriterien sind.
+view_portlet_help_pkg_history=Dieses Portlet zeigt die relevante Paket Historie an,
basierend auf den konfigurierten Anzeigekriterien.
+view_portlet_help_platformSummary=Dieses Portlet zeigt die Auslastungsdaten (wie etwa
aktuelle CPU- und Speicherauslastung) fÃŒr Plattform-Ressourcen an, auf die der aktuelle
Benutzer zugreifen kann.
view_portlet_help_problemResources=Dieses Portlet zeigt die "alerted" oder
"unavailable" Ressourcen des aktuellen Benutzers an.
+view_portlet_help_recentAlerts=Dieses Portlet zeigt Alarm Meldungen an, die aktuell am
sichtbaren Inventar des Benutzers herausgegeben werden.
+view_portlet_help_recentDrifts=Dieses Portlet zeigt den aktuellen Datei Drift am
sichtbaren Inventar des Benutzers an.
+view_portlet_help_recentlyAdded=Dieses Portlet zeigt Ressourcen an, die aktuell in das
Inventar importiert wurden.
+view_portlet_help_scheduledOperations=Dieses Portlet zeigt die als nÀchstes terminierten
Operationen fÃŒr das Inventar des aktuellen Benutzers an.
+view_portlet_help_tagCloud=Dieses Portlet zeigt die relative Tag ZÀhlungen fÌr das
Inventar des aktuellen Benutzers an.
# #view_portlet_help_recentAlerts = This portlet displays alerts recently fired on the
current user''s viewable inventory.
# #view_portlet_help_recentDrifts = This portlet displays recent file drift on the
current user''s viewable inventory.
view_portlet_inventory_error1=Konnte die InventarÃŒbersicht nicht laden
@@ -1946,7 +2520,9 @@ view_portlet_inventory_tooltip_expand=Klicken, um mehr Details fÃŒr
diese Ressou
view_portlet_message_title=Nachricht
# #view_portlet_message_unconfigured = Message not yet configured, click the settings
button to setup this portlet.
view_portlet_operations_config_completed=Fertiggestellte Operationen
+view_portlet_operations_config_completed_enable=Ob die Gruppierung fertiggestellter
Operationsergebnisse fÃŒr das Dashboard aktiviert werden soll.
view_portlet_operations_config_completed_maximum=Maximale Anzahl anzuzeigender
abgeschlossener Operationen.
+view_portlet_operations_config_scheduled_enable=Ob die Gruppierung terminierter
Operationsergebnisse fÃŒr das Dashboard aktiviert werden soll.
view_portlet_operations_config_scheduled_maximum=Maximale Anzahl anzuzeigender geplanter
Operationen.
# #view_portlet_operations_config_completed_enable = Whether to enable completed
operations results grouping for dashboard.
# #view_portlet_operations_config_completed_maximum = Maximum number of Completed
operations to display.
@@ -1958,11 +2534,16 @@ view_portlet_operations_disabled=(Ergebnisse derzeit deaktiviert.
Ãndern Sie di
view_portlet_platform_platform_error_1=Laden der Plattform Metriken fehlgeschlagen
view_portlet_platform_type_error_1=Konnte Typdaten nicht laden
view_portlet_problemResources_config_display_maximum=Maximale Anzahl anzuzeigender
Problemressourcen.
+view_portlet_problemResources_config_display_range=Problem Ressourcen um so viele Stunden
rÃŒckwirkend anzeigen.
view_portlet_problemResources_config_display_range2=Von {0} bis {1}
view_portlet_problemResources_maxDisplaySetting=Maximaler Ressourcen.
+view_portlet_recentAlerts_config_members=Mitglieder auswÀhlen
+view_portlet_recentAlerts_config_priority_label=PrioritÀt Alarme
# #view_portlet_recentAlerts_config_members = Select Members
# #view_portlet_recentAlerts_config_priority_label = priority Alerts,
view_portlet_recentAlerts_config_when=innerhalb der letzten
+view_portlet_recentAlerts_fail_msg=Laden von fÃŒr Alarm Filterung zugewiesenen Ressourcen
fehlgeschlagen.
+view_portlet_recentlyAdded_error1=Laden zuletzt hinzugefÃŒgter Ressourcen fehlgeschlagen
view_portlet_recentlyAdded_setting_addedPlatforms=zuletzt hinzugefÃŒgte Plattformen
# #view_portlet_recentlyAdded_approved_platforms = recently approved platforms on
dashboard.
# #view_portlet_recentlyAdded_error1 = Failed to load recently added resources
@@ -1974,6 +2555,9 @@ view_remoteAgentInstall_agentStatusDefault=-Klicken Sie auf
SchaltflÀche Status
# #view_remoteAgentInstall_agentStatusDefault = -Click Update Status Button-
view_remoteAgentInstall_buttonFindAgent=Agent suchen
view_remoteAgentInstall_connInfo=Verbindungsinformationen
+view_remoteAgentInstall_error_1=Fehler bei der Suche nach dem Pfad der
Agent-Installation
+view_remoteAgentInstall_error_2=Bei der Suche in Speicherorten konnte kein installierter
Agent gefunden werden
+view_remoteAgentInstall_error_3=Konnte keinen an oder unter [{0}] installierten Agent
finden
# #view_remoteAgentInstall_connInfo = Connection Information
# #view_remoteAgentInstall_error_1 = Error occurred while trying to find agent install
path
# #view_remoteAgentInstall_error_2 = Could not find an agent installed when looking in
common locations
@@ -2003,6 +2587,7 @@ view_reportsTop_description=Dieser Abschnitt bietet Zugang zu
applikationsweiten
view_reportsTop_title=Berichte
view_reports_alertDefinitions=Alarmierungskriterien
view_reports_alertDefinitions_parentHover=Klicken, um zur ÃŒbergeordneten
Alarm-Definition zu gelangen
+view_reports_alertDefinitions_resTypeLoadError=Erhalt von Ressourcentyp Vorlage nicht
möglich - Ansicht von Alarm Vorlage nicht möglich.
# #view_reports_alertDefinitions_resTypeLoadError = Cannot get the template resource type
- unable to view the alert template.
view_reports_driftCompliance=Drift-Ãbereinstimmung
view_reports_inventorySummary_failFetch=Konnte die Inventar-Zusammenfassung nicht laden
@@ -2012,11 +2597,15 @@ view_resourceResourceGroupList_error_fetchFailure=Abruf der
Gruppen der Ressourc
view_resourceResourceGroupList_error_updateFailure=Fehler beim Aktualisieren der
zugewiesenen Ressourcen-Gruppen.
view_resourceResourceGroupList_message_updateSuccess=Gruppenmitgliedschaft aktualisiert
fÃŒr [{0}].
view_resource_inventory_activity_changed_by=GeÀndert von
+view_resource_inventory_activity_criteria_no_recent_events=Keine EreigniszÀhlungen
basieren auf Anzeigekriterien.
view_resource_inventory_activity_no_recent_alerts=Es liegen keine aktuellen Alarme vor
view_resource_inventory_activity_no_recent_bundle_deploy=Es liegen keine aktuelle
BÃŒndel-Deployments vor
+view_resource_inventory_activity_no_recent_config_history=Keine KonfigurationsÀnderungen
Historie
view_resource_inventory_activity_no_recent_events=Keine Ereignisse in den letzten 24
Stunden
view_resource_inventory_activity_no_recent_metrics=Diese Ressource hat keine aktuellen
Metriken
view_resource_inventory_activity_no_recent_oob=Keine OOB Bedingungen gefunden
+view_resource_inventory_activity_no_recent_operations=Keine aktuelle Operations-Historie
+view_resource_inventory_activity_no_recent_pkg_history=Keine aktuelle Paket Historie
view_resource_inventory_childhistory_createdChild=Kind erstellt
view_resource_inventory_childhistory_deletedChild=Kind gelöscht
# #view_resourceResourceGroupList_error_fetchFailure = Failed to fetch
Resource''s groups.
@@ -2080,8 +2669,11 @@ view_resource_monitor_table_last=Live Wert
# #view_resource_monitor_table_last = Live Value
view_resource_monitor_table_max=Maximum
view_resource_monitor_table_min=Minimum
+view_resource_title_component_errors_cleanup=Nach Behebung dieses Problems, werden Sie
die Nachricht unten löschen mÌssen, um das 'managed component error' (Fehler bei
gemanagter Komponente) Symbol vom vorherigen Bildschirm zu löschen.
view_resource_title_component_errors_tooltip=Zeigt Fehler der gemanagten Ressource.
Klicken fÃŒr Details
view_resource_title_tagUpdateFailed=Fehler beim Aktualisieren der Ressourcen-Tags
+view_searchBar_buttonTooltip=Zum Anzeigen/Verbergen der Suchvorschlagsliste klicken.
Verbergen der Liste erfolgt auch durch DrÃŒcken auf Escape wenn der Fokus in der
Suchmuster Textbox ist.
+view_searchBar_savedSearch_buttonTooltip=Klicken Sie, um in den Saved Search
(Gespeicherte Suche) Modus umzuschalten. Wenn aktiv, speichern Sie das aktuelle Muster,
indem Sie einen Namen eingeben und auf die Eingabetaste klicken. Bearbeiten Sie eine
bestehende Suche, indem Sie sie in der Liste auswÀhlen, das Muster oder den Namen
aktualisieren und im NamenstextkÀstchen auf Eingabe drÌcken. Das Löschen erfolgt durch
Doppelklicken des Listeneintrags.
# #view_searchBar_buttonTooltip = Click to hide/show the search suggestion list. Also
hide the list by hitting Escape when focus is in the search pattern text box.
# #view_searchBar_savedSearch_buttonTooltip = Click to toggle Saved Search mode. When
active, save the current pattern by entering a name and hitting return. Edit an existing
search by selecting it in the list, updating the pattern or name, and hitting return in
the name text box. Delete by double-clicking the list entry.
view_searchBar_savedSearch_confirmDelete=Die gespeicherte Suche mit dem Namen [{0}]
löschen?
@@ -2101,6 +2693,7 @@ view_searchGUI_loginStatus=Kann Login-Status nicht bestimmen,
ÃŒberprÃŒfen Sie d
view_selector_assigned=Zugewiesen {0}
view_selector_available=VerfÃŒgbar {0}
view_subTab_error_disabled=Kann den deaktivierten Unter-Reiter [{0}] nicht anwÀhlen.
+view_summaryDashboard_resetConfirm=Auf standardmÀÃiges Ãbersichts-Dashboard
zurÃŒcksetzen (lokale Ãnderungen gehen verloren)?
view_summaryOverviewForm_error_descriptionChangeFailure=Konnte die Beschreibung der
Ressource mit der id {0} nicht von [{1}] auf [{2}] Àndern.
view_summaryOverviewForm_error_locationChangeFailure=Konnte den Ort der Ressource mit der
id {0} nicht von [{1}] auf [{2}] Àndern.
view_summaryOverviewForm_error_nameChangeFailure=Konnte den Namen der Ressource mit der
id {0} nicht von [{1}] auf [{2}] Àndern.
@@ -2204,6 +2797,7 @@ view_tree_common_contextMenu_type_name_label=Typ\: {0}
view_tree_common_createFailed_autoCluster=Erstellung oder Aktualisierung von autocluster
Backing Gruppe fehlgeschlagen
view_tree_common_loadFailed_children=Konnte die Kinder fÃŒr den Knoten nicht laden
view_tree_common_loadFailed_create=Konnte die Ansicht fÃŒr diesen Knoten nicht erzeugen
+view_tree_common_loadFailed_descendants=Konnte Abkömmlinge fÌr Baumansicht nicht laden
# #view_tree_common_loadFailed_descendants = Failed to load descendants for tree
view_tree_common_loadFailed_generic=Konnte die Daten fÃŒr den Bau nicht laden
view_tree_common_loadFailed_group=Konnte die Gruppe mit ID [{0}] nicht laden
@@ -2305,6 +2899,7 @@ widget_resourceFactoryWizard_execute1=Konnte keine neue Ressource
anlegen - es w
widget_resourceFactoryWizard_execute2=Erstellung einer neuen Ressource fehlgeschlagen.
Verbindung mit dem Agent nicht möglich. Dies kann darauf hindeuten, dass der Agent nicht
in Betrieb ist.
widget_resourceFactoryWizard_execute3=Erstellung einer neuen Ressource fehlgeschlagen.
widget_resourceFactoryWizard_failedToDeleteVersion=Löschen der Paketversion
fehlgeschlagen wÀhrend Abbruch einer Ressourcenerstellung
+widget_resourceFactoryWizard_failedToGetType=Erhalt des Pakettyps fÃŒr neue Ressource
fehlgeschlagen
# widget_resourceFactoryWizard_execute2 = Failed to create a new resource. Cannot connect
to the agent. This may indicate that the agent is down.
# #widget_resourceFactoryWizard_failedToDeleteVersion = Failed to delete package version
while canceling a resource create
# #widget_resourceFactoryWizard_failedToGetType = Failed to get backing package type for
new resource
@@ -2316,12 +2911,16 @@ widget_resourceFactoryWizard_importWizardTitle=Importieren von
Ressourcen des Ty
widget_resourceFactoryWizard_importWizardWindowTitle=Wizard zum Import von Ressourcen
widget_resourceFactoryWizard_infoStepName=Information ÃŒber die Ressource
widget_resourceFactoryWizard_infoStep_loadFail=Konnte die verfÃŒgbaren Architekturen
nicht ermitteln
+widget_resourceFactoryWizard_nameComment=Nicht alle Management Plug-ins oder deren
gemanagte Ressourcen gestatten dem Agent die Einstellung des Namens fÃŒr eine neue
Ressource. Dieser Wert wird nur von Agent Plug-ins verwendet, die diese Möglichkeit
unterstÃŒtzen. FÃŒr Plug-ins, die dies nicht unterstÃŒtzen, kann die Ressource bei deren
Auffinden einen generischen oder anderen Namen erhalten.
widget_resourceFactoryWizard_namePrompt=Name der neuen Ressource
# widget_resourceFactoryWizard_nameComment = Not all management plug-ins or their managed
resources allow the agent to set the name for a new resource. This value will only be used
by agent plug-ins that support the capability. For plug-ins that do not support the
capability, the resource may receive a generic or different name when it is discovered.
widget_resourceFactoryWizard_templatePrompt=Vorlage fÃŒr die Verbindungseinstellungen
widget_resourceFactoryWizard_timeoutFailure=Timeout
+widget_resourceFactoryWizard_timeoutHelp=Eine Timeout Dauer, die - falls festgelegt - den
standardmÀÃigen Timeout fÃŒr die Erstellung der untergeordneten Ressource auÃer Kraft
setzt (am {0} Agent). Der standardmÀÃige Timeout ist auf 60 Sekunden eingestellt. Ein
höherer Wert kann von bei besonders langen ErstellungsvorgÀngen von Nutzen sein, wie
etwa bei dem Deployment einer groÃen Applikation. Wird in der Regel verwendet, wenn es
beim vorherigen Versuch zu einem Fehlschlagen aufgrund eines Timeout kam. Beachten Sie,
dass es bei einem Fehlschlagen aufgrund eines Timeout trotzdem möglich ist, dass das
Ressourcen Deployment erfolgreich verlief. Im Falle eines Timeout empfiehlt sich ein
Discovery Scan vor dem erneuten Versuch des Deployments der Ressource.
# #widget_resourceFactoryWizard_timeoutHelp = A timeout duration that if specified will
override the default timeout for child resource creation (on the {0} Agent). The default
timeout is set to 60 seconds. A higher value may be useful for particularly long create
actions, like deployment of a large application. Usually used if a previous attempt
suffered a timeout failure. Note that if there is a timeout failure, it is still possible
that the resource deployment succeeded. In the event of a timeout you may want to execute
a discovery scan before attempting to redeploy the resource.
widget_resourceFactoryWizard_uploadFailure=Konnte die Datei nicht hochladen
+widget_resourceFactoryWizard_uploadFileStepName=Laden Sie die Ressourcen Content Datei
hoch
+widget_resourceFactoryWizard_uploadInProgress=Datei wird hochgeladen ... Dies kann fÃŒr
groÃe Distributionsdateien mehrere Minuten dauern.
# ##widget_resourceFactoryWizard_timeoutFailure = Timed out
# #widget_resourceFactoryWizard_uploadFileStepName = Upload Resource Content File
# #widget_resourceFactoryWizard_uploadInProgress = The upload is in progress... This can
take several minutes to complete for large distribution files.
diff --git
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/coregui/client/Messages_ja.properties
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/coregui/client/Messages_ja.properties
index 328383c..aa366a0 100644
---
a/modules/enterprise/gui/coregui/src/main/resources/org/rhq/coregui/client/Messages_ja.properties
+++
b/modules/enterprise/gui/coregui/src/main/resources/org/rhq/coregui/client/Messages_ja.properties
@@ -1358,36 +1358,36 @@
view_alert_definition_notification_operation_editor_specific_resource=ãªãœãŒ
view_alert_definition_notification_role_editor_loadFailed=çŸåšã®ããŒã«ã決å®ã§ããŸãã
- 空ã§éå§ããŸã
view_alert_definition_notification_role_editor_restoreFailed=çŸåšã®ããŒã«ãå©çšã§ããŸãã
- 空ããéå§ããŸã
view_alert_definition_notification_role_editor_saveFailed=éžæãããããŒã«ãä¿åã§ããŸãã
-view_alert_definition_notification_user_editor_loadFailed=çŸåšã®ãŠãŒã¶ãŒã決å®ã§ããŸãã
- 空ããéå§ããŸã
-view_alert_definition_notification_user_editor_restoreFailed=çŸåšã®ãŠãŒã¶ãŒã䜿çšã§ããŸãã
- 空ããéå§ããŸã
+view_alert_definition_notification_user_editor_loadFailed=çŸåšã®ãŠãŒã¶ãŒã決å®ã§ããŸãã
- 空ã§éå§ããŸã
+view_alert_definition_notification_user_editor_restoreFailed=çŸåšã®ãŠãŒã¶ãŒã䜿çšã§ããŸãã
- 空ã§éå§ããŸã
view_alert_definition_notification_user_editor_saveFailed=éžæãããŠãŒã¶ãŒãä¿åã§ããŸãã
-view_alert_definition_recovery_editor_disable_when_fired=çºç«æéãç¡å¹ã«ãã
-view_alert_definition_recovery_editor_disable_when_fired_tooltip=ãã®ã¢ã©ãŒããçºç«ããåŸã«ç¡å¹ã«ãããã¹ããæå®ããŸããäžåºŠç¡å¹ã«ããããšããã®ã¢ã©ãŒãã¯æåã§å床æå¹ã«ãããããŸãã¯èªåçã«å床æå¹ã«ããããã®ãªã«ããªã¢ã©ãŒããèšå®ã§ããŸãã
+view_alert_definition_recovery_editor_disable_when_fired=çºçæã«ç¡å¹
+view_alert_definition_recovery_editor_disable_when_fired_tooltip=ãã®ã¢ã©ãŒããçºçããåŸã«ç¡å¹ã«ãªããã©ããã瀺ããŸããç¡å¹ã«ãªã£ãã¢ã©ãŒãã¯ãæäœæ¥ã§å床æå¹ã«ã§ãããªã«ããªã¢ã©ãŒããèšå®ããŠèªåçã«å床æå¹ã«ããããšãå¯èœã§ãã
view_alert_definition_recovery_editor_loadFailed=ãªã«ããªã¡ãã¥ãŒãæ§ç¯ã§ããŸãã
view_alert_definition_recovery_editor_none_available=ãªã
view_alert_definition_recovery_editor_recovery_alert=ã¢ã©ãŒãã®ãªã«ããª
-view_alert_definition_recovery_editor_recovery_alert_tooltip=ã¢ã©ãŒããåŒãèµ·ããããåŸã«ãªã«ããªããã(ã€ãŸããå床æå¹å)ã¿ãŒã²ããã¢ã©ãŒãããªã«ããªã¢ã©ãŒããå®çŸ©ããã®ã§ã¯ãªãã®ãªãããã§ã¢ã©ãŒããéžæããªãã§ãã ããã
+view_alert_definition_recovery_editor_recovery_alert_tooltip=ã¢ã©ãŒããåŒãèµ·ããããåŸã«ãªã«ããªããã
(åæå¹åãªã©)
ã¿ãŒã²ããã¢ã©ãŒãããªã«ããªã¢ã©ãŒããå®çŸ©ããå Žåã®ã¿ã¢ã©ãŒããéžæããŠãã ããã
view_alert_definitions_create_failure=ã¢ã©ãŒãå®çŸ©ã®äœæã«å€±æããŸãã
view_alert_definitions_create_success=ã¢ã©ãŒãå®çŸ©ã®äœæã«æåããŸãã
view_alert_definitions_delete_confirm=éžæãããã¢ã©ãŒãå®çŸ©ãåé€ããŸãã?
view_alert_definitions_delete_failure=éžæãããã¢ã©ãŒãå®çŸ©ãåé€ããã®ã«å€±æããŸãã
-view_alert_definitions_delete_success={0}
ã¢ã©ãŒãå®çŸ©ãåé€ããã®ã«æåããŸãã
+view_alert_definitions_delete_success={0}
ã®ã¢ã©ãŒãå®çŸ©ãæ£åžžã«åé€ããŸãã
view_alert_definitions_disable_confirm=éžæãããã¢ã©ãŒãå®çŸ©ãç¡å¹ã«ããŸãã?
view_alert_definitions_disable_failure=éžæãããã¢ã©ãŒãå®çŸ©ãç¡å¹ã«ããã®ã«å€±æããŸãã
-view_alert_definitions_disable_success={0}
ã¢ã©ãŒãå®çŸ©ãç¡å¹ã«ããã®ã«æåããŸãã
-view_alert_definitions_enable_confirm=éžæãããã¢ã©ãŒãå®çŸ©ãã«ããŸãã?
+view_alert_definitions_disable_success={0} ã®ã¢ã©ãŒãå®çŸ©ãç¡å¹ã«ããŸãã
+view_alert_definitions_enable_confirm=éžæãããã¢ã©ãŒãå®çŸ©ãæå¹ã«ããŸãã?
view_alert_definitions_enable_failure=éžæãããã¢ã©ãŒãå®çŸ©ãæå¹ã«ããã®ã«å€±æããŸãã
-view_alert_definitions_enable_success={0}
ã¢ã©ãŒãå®çŸ©ãæå¹ã«ããã®ã«æåããŸãã
+view_alert_definitions_enable_success={0} ã®ã¢ã©ãŒãå®çŸ©ãæå¹ã«ããŸãã
view_alert_definitions_leaveUnsaved=ç·šéããã¢ã©ãŒãå®çŸ©ãä¿åããŸãã?
# #view_alert_definitions_leaveUnsaved = Do you want to save the modified alert
definition?
-view_alert_definitions_loadFailed=ã¢ã©ãŒãå®çŸ©ããŒã¿ãåãåºãã®ã«å€±æããŸãã
-view_alert_definitions_loadFailed_single=ID {0}
ã®ä»ããã¢ã©ãŒãå®çŸ©ã®ããŒã¿ãåãåºãã®ã«å€±æããŸãã
+view_alert_definitions_loadFailed=ã¢ã©ãŒãå®çŸ©ããŒã¿ã®ååŸã«å€±æããŸãã
+view_alert_definitions_loadFailed_single=ID {0}
ã®ã¢ã©ãŒãå®çŸ©ã®ããŒã¿ãååŸã§ããŸããã§ãã
view_alert_definitions_table_title_group=ã°ã«ãŒãã¢ã©ãŒãå®çŸ©
view_alert_definitions_table_title_resource=ãªãœãŒã¹ã¢ã©ãŒãå®çŸ©
view_alert_definitions_update_failure=ã¢ã©ãŒãå®çŸ©ã®æŽæ°ã«å€±æããŸãã
view_alert_definitions_update_success=ã¢ã©ãŒãå®çŸ©ã®æŽæ°ã«æåããŸãã
-view_alert_details_field_ack_at=次ã®å Žæã§ç¢ºèªæžã¿ã§ã
-view_alert_details_field_ack_by=次ã®äººã«ãã£ãŠç¢ºèªæžã¿ã§ã
+view_alert_details_field_ack_at=確èªå Žæ\:
+view_alert_details_field_ack_by=確èªè
\:
view_alert_details_field_parent_definition=芪å®çŸ©
# #view_alert_details_field_parent_definition = Parent definition
view_alert_details_field_recovery_info=ãªã«ããªæ
å ±
@@ -1395,12 +1395,12 @@ view_alert_details_field_resource_ancestry=ãªãœãŒã¹ã®ç¥å
view_alert_details_field_watched_resource=ãŠã©ããããããªãœãŒã¹
# #view_alert_details_field_resource_ancestry = Resource Ancestry
# #view_alert_details_field_watched_resource = Watched Resource
-view_alert_details_loadFailed=ã¢ã©ãŒãã®è©³çŽ°ãåãåºãã®ã«å€±æããŸãã
+view_alert_details_loadFailed=ã¢ã©ãŒã詳现ã®ååŸã«å€±æããŸãã
view_alerts_ack_confirm=éžæãããã¢ã©ãŒãã確èªããŸãã?
view_alerts_ack_confirm_all=ãã®ãœãŒã¹ãããã¹ãŠã®ã¢ã©ãŒãã確èªããŸãã?
-view_alerts_ack_failure=ID {0}
ã®ä»ããã¢ã©ãŒãã確èªããã®ã«å€±æããŸãã
-view_alerts_ack_failure_all=ãã®ãœãŒã¹ãããã¹ãŠã®ã¢ã©ãŒãã確èªããã®ã«å€±æããŸãã
-view_alerts_ack_success={0} ã¢ã©ãŒãã®ç¢ºèªã«æåããŸãã
+view_alerts_ack_failure=ID {0} ã®ã¢ã©ãŒãã確èªã§ããŸããã§ãã
+view_alerts_ack_failure_all=ãã®ãœãŒã¹ãããã¹ãŠã®ã¢ã©ãŒãã確èªã§ããŸããã§ãã
+view_alerts_ack_success={0} ã¢ã©ãŒãã確èªããŸãã
view_alerts_delete_confirm=éžæãããã¢ã©ãŒããåé€ããŸãã?
view_alerts_delete_confirm_all=ãã®ãœãŒã¹ãããã¹ãŠã®ã¢ã©ãŒããåé€ããŸãã?
view_alerts_delete_failure=ID {0}
ã®ä»ããã¢ã©ãŒããåé€ããã®ã«å€±æããŸãã
@@ -1408,8 +1408,8 @@
view_alerts_delete_failure_all=ãã®ãœãŒã¹ãããã¹ãŠã®ã¢ã©ãŒãã
view_alerts_delete_success={0} ã¢ã©ãŒããåé€ããã®ã«æåããŸãã
view_alerts_field_ack_status=ã¹ããŒã¿ã¹
view_alerts_field_ack_status_ack=ç¢ºèª ({0})
-view_alerts_field_ack_status_ackHover={1} ã«ãã㊠{0}
ã«ãã£ãŠç¢ºèªãããŸãã
-view_alerts_field_ack_status_noAck=æªç¢ºèª
+view_alerts_field_ack_status_ackHover={1} ã«ãã㊠{0} ã確èª
+view_alerts_field_ack_status_noAck=確èªãªã
view_alerts_field_ack_status_noAckHover=ãŸã 確èªãããŠããŸãã
view_alerts_field_ack_subject=確èªãµããžã§ã¯ã
view_alerts_field_ack_time=確èªæå»
@@ -1422,8 +1422,8 @@ view_alerts_field_modified_time=ä¿®æ£æå»
view_alerts_field_parent=芪
view_alerts_field_priority=åªå
床
view_alerts_field_protected=ä¿è·ãããŠãã
-view_alerts_field_protected_tooltip=ããtrueãªãããã®å®çŸ©ã¯èŠªå®çŸ©ã«ããå€æŽããä¿è·ãããŠããŸããä»ã®èšèã§èšãã°ããã®èŠªå®çŸ©èšå®ã¯ãã®å®çŸ©ãäžæžãããŸããã
-view_alerts_loadFailed=ã¢ã©ãŒãããŒã¿ãåãåºãã®ã«ããŸãã
+view_alerts_field_protected_tooltip=true
ã®å Žåããã®å®çŸ©ã¯ä¿è·ããã芪å®çŸ©ãå€æŽã§ããŸããããã£ãŠã芪å®çŸ©ã®èšå®ã¯ãã®å®çŸ©ãäžæžãã§ããŸããã
+view_alerts_loadFailed=ã¢ã©ãŒãããŒã¿ã®ååŸã«å€±æããŸãã
view_alerts_table_filter_priority=åªå
床ãã£ã«ã¿ãŒ
view_alerts_table_title_group=ã°ã«ãŒãã¢ã©ãŒãå±¥æŽ
view_alerts_table_title_resource=ãªãœãŒã¹ã¢ã©ãŒãå±¥æŽ
@@ -1455,7 +1455,7 @@
view_autoDiscoveryQ_unignoreInProgress=éžæããããªãœãŒã¹ã®ç¡èŠã
view_autoDiscoveryQ_unignoreSuccessful=éžæãããªãœãŒã¹ã®ç¡èŠè§£é€ã«æåããŸãã
view_autoDiscoveryQ_uninventoried=ã€ã³ãã³ããªç»é²ãããªã
view_bundleGroup_assignFailPerm=ãã³ãã«ããã®ãã³ãã«ã°ã«ãŒããžå²ãåœãŠãæš©å©ããããŸããã管çè
ãžåãåãããŠãã ããã
-view_bundleGroup_deleteConfirm=ãã®ãã³ãã«ã°ã«ãŒããåé€ããŠãããããã§ãã?
å¯äžå²ãåœãŠããããã³ãã«ã°ã«ãŒãã®ãã³ãã«ãå²ãåœãŠè§£é€ãšãªããé²èŠ§ã«ã°ããŒãã«
View Bundles ããŒããã·ã§ã³ãå¿
èŠãšãªããŸãã
+view_bundleGroup_deleteConfirm=ãã®ãã³ãã«ã°ã«ãŒããåé€ããŠãããããã§ãã?
å¯äžå²ãåœãŠããããã³ãã«ã°ã«ãŒãã®ãã³ãã«ãå²ãåœãŠè§£é€ãšãªããé²èŠ§ã«ã°ããŒãã«ã®ããã³ãã«ã®è¡šç€ºãããŒããã·ã§ã³ãå¿
èŠãšãªããŸãã
view_bundleGroup_deletesFailure=ãã³ãã«ã°ã«ãŒããåé€ã§ããŸããã§ãã
view_bundleGroup_deletesSuccessful=ãã³ãã«ã°ã«ãŒããæ£åžžã«åé€ããŸãã
view_bundleGroup_unassignFailPerm=ãã®ãã³ãã«ã°ã«ãŒããããã³ãã«ãå²ãåœãŠè§£é€ããæš©å©ããããŸããã管çè
ã«åãåãããŠãã ããã
@@ -1473,22 +1473,22 @@ view_bundle_bundleType=ãã³ãã«ã¿ã€ã
view_bundle_bundleVersion=ãã³ãã«ããŒãžã§ã³
view_bundle_bundleVersions=ãã³ãã«ããŒãžã§ã³
view_bundle_createWizard_bundleDistro=ãã³ãã«é
åž
-view_bundle_createWizard_cancelFailure=ãã³ãã« [{0}], ããŒãžã§ã³ \= [{1}]
ã®äœæã®å®å
šãªãã£ã³ã»ã«ã«å€±æããŸãã -
ãã³ãã«ã¯ããŒã¿ããŒã¹ã«ãŸã æ®ã£ãŠãããããããŸãã
+view_bundle_createWizard_cancelFailure=ãã³ãã« [{0}]ãããŒãžã§ã³ \= [{1}]
ã®äœæãå®å
šã«ãã£ã³ã»ã«ã§ããŸããã§ãã -
ãã³ãã«ããŸã ååšããå¯èœæ§ããããŸãã
view_bundle_createWizard_cancelFailurePerm=ãŠãŒã¶ãŒãããŒããã·ã§ã³ãäœæããåé€ããªãã£ãããããã³ãã«
[{0}]ãããŒãžã§ã³ \= [{1}] ã®äœæãå®å
šã«ãã£ã³ã»ã«ã§ããŸããã§ããã管çè
ã«ãããã³ãã«ã®åé€ãå¿
èŠã«ãªããšäºæ³ãããŸãã
# #view_bundle_createWizard_cancelFailurePerm = Failed to fully cancel the creation of
bundle [{0}], version = [{1}] because the user has create but not delete permissions. The
bundle will likley need to be removed by an administrator.
-view_bundle_createWizard_cancelSuccessful=ãã³ãã« [{0}], ããŒãžã§ã³ \= [{1}]
ã®äœæããã£ã³ã»ã«ããŸãã
-view_bundle_createWizard_clickToUploadRecipe=ã¬ã·ããã¡ã€ã«ã®ããŒãããããã«ã¯ãªãã¯ããŠãã ãã
-view_bundle_createWizard_createFailure=ãã³ãã«ãäœæããã®ã«å€±æããŸãã
+view_bundle_createWizard_cancelSuccessful=ãã³ãã« [{0}]ãããŒãžã§ã³ \= [{1}]
ã®äœæããã£ã³ã»ã«ããŸãã
+view_bundle_createWizard_clickToUploadRecipe=ã¯ãªãã¯ãããšã¬ã·ããã¡ã€ã«ãããŒãããŸã
+view_bundle_createWizard_createFailure=ãã³ãã«ãäœæã«å€±æããŸãã
view_bundle_createWizard_createSuccessful=ããŒãžã§ã³ [{1}] ã® [{0}]
ãšããååã®ãã³ãã«ã®äœæã«æåããŸãã
view_bundle_createWizard_enterRecipe=æ£ããã¬ã·ããæäŸããŠãã ãã
-view_bundle_createWizard_enterUrl=ãã³ãã«é
åžãã¡ã€ã«ãããŠã³ããŒãã§ããæ£ããURLãå
¥åããŠãã ãã
+view_bundle_createWizard_enterUrl=ãã³ãã«é
åžãã¡ã€ã«ãããŠã³ããŒãã§ããæ£ãã URL ãå
¥åããŠãã ãã
view_bundle_createWizard_failedToUploadDistroFile=ãã³ãã«é
åžãã¡ã€ã«ã®ã¢ããããŒãã«å€±æããŸãã
view_bundle_createWizard_failedToUploadFile=ãã³ãã«ãã¡ã€ã«ã®ã¢ããããŒãã«å€±æããŸãã
view_bundle_createWizard_groupsStep_assign=æå¹ãªãã³ãã«ã°ã«ãŒãã 1
ã€ä»¥äžå²ãåœãŠãŸã\:
view_bundle_createWizard_groupsStep_assigned=æ°ãããã³ãã«ããŒãžã§ã³ã¯æ¢åã®ãã³ãã«çšã§ããã³ãã«ã°ã«ãŒãã®å²ãåœãŠãç¶æ¿ããŸã\:
view_bundle_createWizard_groupsStep_failedAssign=æåã®ãã³ãã«ã°ã«ãŒãããããŒãžã§ã³
[{1}] ã® [{0}]
ãšããååã®ãã³ãã«ãžå²ãåœãŠã§ããŸããã§ãããäœæãŠã£ã¶ãŒãããã£ã³ã»ã«ãã管çè
ã«å ±åããŠãã ããã
view_bundle_createWizard_groupsStep_failedGetAssignable=å²ãåœãŠå¯èœãªãã³ãã«ã°ã«ãŒãã決å®ã§ããŸããã§ãããäœæãŠã£ã¶ãŒãããã£ã³ã»ã«ãã管çè
ã«å ±åããŠãã ããã
-view_bundle_createWizard_groupsStep_help=æ°ãããã³ãã«ã¯ããã®ãã³ãã«ã®æåã®ããŒãžã§ã³ãã¢ããããŒãããæã«äœæãããŸãããã®åŸãæ°ãããã³ãã«ã¯æåã®ãã³ãã«ã°ã«ãŒããžå²ãåœãŠãããŸããæ°ãããã³ãã«ã¯ãã°ããŒãã«ãŸãã¯ãã³ãã«ã°ã«ãŒãã¬ãã«ã«ãŠãCreate
Bundles
ããŒããã·ã§ã³ãæã€ãã³ãã«ã°ã«ãŒããžã®ã¿å²ãåœãŠã§ããŸãããŠãŒã¶ãŒãã°ããŒãã«ã®
Create ãŸã㯠View Bundles
ããŒããã·ã§ã³ãæã£ãŠãããšããã³ãã«ã°ã«ãŒãã¯å²ãåœãŠãããŸããããã®å Žå以å€ã¯ãæäœã§ã
1 ã€ã®ãã³ãã«ã°ã«ãŒããå²ãåœãŠãå¿
èŠããããŸãã
+view_bundle_createWizard_groupsStep_help=æ°ãããã³ãã«ã¯ããã®ãã³ãã«ã®æåã®ããŒãžã§ã³ãã¢ããããŒãããæã«äœæãããŸãããã®åŸãæ°ãããã³ãã«ã¯æåã®ãã³ãã«ã°ã«ãŒããžå²ãåœãŠãããŸããæ°ãããã³ãã«ã¯ãã°ããŒãã«ãŸãã¯ãã³ãã«ã°ã«ãŒãã¬ãã«ã«ãŠãããã³ãã«ã®äœæãããŒããã·ã§ã³ãæã€ãã³ãã«ã°ã«ãŒããžã®ã¿å²ãåœãŠã§ããŸãããŠãŒã¶ãŒãã°ããŒãã«ã®ãäœæãããã³ããã³ãã«ã®è¡šç€ºã
ããŒããã·ã§ã³ãæã£ãŠãããšããã³ãã«ã°ã«ãŒãã¯å²ãåœãŠãããŸããããã®å Žå以å€ã¯ãæäœã§ã
1 ã€ã®ãã³ãã«ã°ã«ãŒããå²ãåœãŠãå¿
èŠããããŸãã
view_bundle_createWizard_groupsStep_leaveUnassigned=æ°ãããã³ãã«ã¯å²ãåœãŠãªãã§ãã ããã
view_bundle_createWizard_groupsStep_noAssignable=å²ãåœãŠã§ãããã³ãã«ã°ã«ãŒãããŠãŒã¶ãŒãæã£ãŠããªããããæåã®ãã³ãã«ããŒãžã§ã³ãäœæã§ããŸãããäœæãŠã£ã¶ãŒãããã£ã³ã»ã«ãã管çè
ã«å ±åããŠãã ããã
view_bundle_createWizard_groupsStep_noneAssigned=æ°ãããã³ãã«ããŒãžã§ã³ãæäœã§ã
1 ã€ã®ãã³ãã«ã°ã«ãŒããžå²ãåœãŠãå¿
èŠããããŸãã
@@ -1509,7 +1509,7 @@
view_bundle_createWizard_groupsStep_unassigned=æ°ãããã³ãã«ããŒãžã§
view_bundle_createWizard_loadBundleFileFailure=ãµãŒããŒãããã³ãã«ãã¡ã€ã«æ
å ±ã®ååŸãã§ããŸãã
view_bundle_createWizard_noAdditionalFilesNeeded=ãã®ãã³ãã«ã®ããã«ã¢ããããŒããããå¿
èŠãããè¿œå ãã¡ã€ã«ã¯ãããŸãã
view_bundle_createWizard_noBundleTypesAvail=ãã³ãã«ã¿ã€ããå©çšã§ããŸãã
-view_bundle_createWizard_noBundleTypesSupported=ãã³ãã«ã¿ã€ãã¯äžã€ããµããŒããããŠããŸãã
-
ãã³ãã«ãããã€ã¡ã³ãããµããŒãããæ£ãããã©ã°ã€ã³ããããã€ããªããã°ãªããŸãã
+view_bundle_createWizard_noBundleTypesSupported=ãµããŒãããããã³ãã«ã¿ã€ãã¯ãããŸãã
-
ãã³ãã«ãããã€ã¡ã³ãããµããŒãããæ£ãããã©ã°ã€ã³ããããã€ããå¿
èŠããããŸã
view_bundle_createWizard_provideBundleDistro=ãã³ãã«é
åžã®æäŸ
view_bundle_createWizard_recipeOption=ã¬ã·ã
view_bundle_createWizard_title=ãã³ãã«äœæ
@@ -1527,7 +1527,7 @@ view_bundle_createWizard_urlUserName=ãŠãŒã¶ãŒå
# #view_bundle_createWizard_urlUserName = User name
view_bundle_createWizard_windowTitle=ãã³ãã«äœæãŠã£ã¶ãŒã
view_bundle_createWizard_youMustChooseOne=ãã³ãã«ãäœæããããã®ãªãã·ã§ã³ãéžæããªããã°ãªããŸãã
-view_bundle_deleteConfirm=ãã®ãã³ãã«ãåé€ããŠãããããã§ãã?
ãã®ãã³ãã«ã®ãã¹ãŠã®ããŒãžã§ã³ãå®å
ããããã€ãåé€ãããŸãã
+view_bundle_deleteConfirm=ãã®ãã³ãã«ãåé€ããŠãããããã§ãã?
ãã®ãã³ãã«ã®ãã¹ãŠã®ããŒãžã§ã³ãå®å
ããããã€ãåé€ãããŸããããªã¢ãŒããã·ã³ã®å
容ã¯åé€ãããŸããã
view_bundle_deploy=ãããã€
view_bundle_deployDir=ãããã€ãã£ã¬ã¯ããª
view_bundle_deployWizard_createGroup_error_1=ã°ã«ãŒããäœæãããŸããã§ããããããã€ã¡ã³ãã®ã°ã«ãŒãã¯ç©ºã«ã¯ã§ããŸããã
@@ -1547,23 +1547,23 @@
view_bundle_deployWizard_deploymentScheduledDetail_concise=ãã³ãã«ããã
view_bundle_deployWizard_destinationCreatedDetail=ãã£ã¹ã¯ãªãã·ã§ã³ [{1}]
ã®ä»ãããããã€ã¡ã³ã [{0}] ãäœæããŸãã
view_bundle_deployWizard_destinationCreatedDetail_concise=å®å
[{0}] ãäœæããŸãã
view_bundle_deployWizard_error_1=ãã£ã³ã»ã«ã«ã€ããŠã®æ°ãããããã€ã¡ã³ãã®åé€ã«å€±æããŸãã
-view_bundle_deployWizard_error_10=å®å
ã®äœæã«å€±æããŸãããããã¯ãã§ã«ååšãããããããŸããã
(泚æïŒå®å
ãã¥ãŒããæ¢åã®å®å
ãããã€ã®ãã)
+view_bundle_deployWizard_error_10=å®å
ã®äœæã«å€±æããŸãããå®å
ã¯ãã§ã«ååšããå¯èœæ§ããããŸã (å®å
ãã¥ãŒãããããã€ãããæ¢åã®å®å
)ã
view_bundle_deployWizard_error_11=å®çŸ©æžã¿ãããã€ã¡ã³ãã®æ€çŽ¢ã«å€±æããŸãã
view_bundle_deployWizard_error_12=å®çŸ©æžã¿ãã³ãã«ã®æ€çŽ¢ã«å€±æããŸãã
-view_bundle_deployWizard_error_2=ãã£ã³ã»ã«ã«ã€ããŠã®æ°ããå®å
ã®åé€ã«å€±æããŸãã
+view_bundle_deployWizard_error_2=ãã£ã³ã»ã«ã§æ°ããå®å
ã®åé€ã«å€±æããŸãã
view_bundle_deployWizard_error_3=ãããã€ã¡ã³ãã®ã¹ã±ãžã¥ãŒã«ã«å€±æããŸãã\!
view_bundle_deployWizard_error_4=ãããã€ã¡ã³ãã®ã¹ã±ãžã¥ãŒã«ã«å€±æããŸãã\:
{0}
view_bundle_deployWizard_error_5=ãããã€ã¡ã³ãã®äœæã«å€±æããŸãã\!
view_bundle_deployWizard_error_6=ãããã€ã¡ã³ãã®äœæã«å€±æããŸãã\:
{0}
view_bundle_deployWizard_error_7=ãããã€ã¡ã³ãåã®ååŸã«å€±æããŸãã
-view_bundle_deployWizard_error_8=ããããããŠã³ããæ£ãããªãœãŒã¹ã°ã«ãŒããéžæããªããã°ãªããŸãã
+view_bundle_deployWizard_error_8=ããããããŠã³ã¡ãã¥ãŒããæ£ãããªãœãŒã¹ã°ã«ãŒããéžæããªããã°ãªããŸãã
view_bundle_deployWizard_error_9=次ããŒãžã§ã®æ°ããå®å
ã®åé€ã«å€±æããŸãã
view_bundle_deployWizard_error_noBundleConfig=ãã³ãã«ã¿ãŒã²ããæ
å ±ã®ååŸã«å€±æããŸãããéžæããã°ã«ãŒãã¯ãã³ãã«ãããã€ã¡ã³ãã®ã¿ãŒã²ããã«æãåŸãæ£åœãªäºæã°ã«ãŒãã§ãã?
view_bundle_deployWizard_getConfigSkip=ãã®ãã³ãã«ããŒãžã§ã³ã«èšå®ã¯å¿
èŠãããŸãã
view_bundle_deployWizard_getConfigStep=ãããã€ã¡ã³ãã®èšå®
view_bundle_deployWizard_getDestStep=æ°ããå®å
-view_bundle_deployWizard_getDest_deployDir=ã«ãŒããããã€ãã£ã¬ã¯ã㪠(å®å
ãã©ãããã©ãŒã äžã§ã®)
-view_bundle_deployWizard_getDest_deployDir_help=ãã®ãã³ãã«ããããã€ããããã£ã¬ã¯ããªããã®ãã£ã¬ã¯ããªã¯ãã¹ãŠã®ãªãœãŒã¹ã«é¢ãããã¹ãŠã®ãããã€çšãšããŠåããã®ã䜿ãããŸãããå®å
ã®åºæ¬ãã£ã¬ã¯ããªã®å Žæã«å¯Ÿããçžå¯Ÿãã£ã¬ã¯ããªã«ãªããŸãããã®ããšã¯ãç°ãªãã¿ãŒã²ãããªãœãŒã¹ã«ã€ããŠåºæ¬ãã£ã¬ã¯ããªã®é
眮ãã©ãã«ããããšããããšã«äŸåããŠããã®çµ¶å¯Ÿãã£ã¬ã¯ããªã¯ç°ãªãã¿ãŒã²ãããªãœãŒã¹ã«ãã£ãŠç°ãªããã¹ã«ãªãå¯èœæ§ãããããšãæå³ããŠããŸãã
+view_bundle_deployWizard_getDest_deployDir=ãããã€ã¡ã³ããã£ã¬ã¯ããª
+view_bundle_deployWizard_getDest_deployDir_help=ãã®ãã³ãã«ããããã€ããããã£ã¬ã¯ããªããã®ãã£ã¬ã¯ããªã¯ãã¹ãŠã®ãªãœãŒã¹ã®ãã¹ãŠã®ãããã€ã¡ã³ãã§åããã®ã䜿ãããŸãããå®å
ã®ããŒã¹ãã£ã¬ã¯ããªã®å Žæã«çžå¯ŸããŸãããã£ãŠãã¿ãŒã²ãããªãœãŒã¹äžã§ããŒã¹ãšãªãå Žæã«å¿ããŠã絶察ãã£ã¬ã¯ããªã¯ã¿ãŒã²ãããªãœãŒã¹ã«ãã£ãŠç°ãªããã¹ãæã€å¯èœæ§ããããŸãã
view_bundle_deployWizard_getDest_desc=å®å
ã®èª¬æ
view_bundle_deployWizard_getDest_destBaseDirName=åºæ¬ã®é
眮
view_bundle_deployWizard_getDest_group_help=ã¡ã³ããŒããã¹ãŠã®ãã³ãã«ãããã€ã®ããã®å®å
ã¿ãŒã²ãããšãªããããªã°ã«ãŒãããã³ãã«ãããã€ããµããŒããããªãœãŒã¹ãå«ãäºæã°ã«ãŒãã®ã¿ãéžæå¯èœã§ãã
@@ -1578,10 +1578,10 @@
view_bundle_deployWizard_getOptions_deployLater=åŸã§ãããã€ãã
view_bundle_deployWizard_getOptions_deployNow=ä»ãããããã€ãã
view_bundle_deployWizard_getOptions_deployTime=ãããã€æå»
view_bundle_deployWizard_selectBundleStep=ãããã€ãã³ãã«ã®éžæ
-view_bundle_deployWizard_selectBundle_single=ãããã€ã®ããã«åäžãã³ãã«ã ããéžæããŠãã ãã
+view_bundle_deployWizard_selectBundle_single=ãããã€ã«åäžã®ãã³ãã«ã®ã¿ãéžæããŠãã ãã
view_bundle_deployWizard_selectVersionStep=ãã³ãã«ããŒãžã§ã³ãéžæããŠãã ãã
view_bundle_deployWizard_selectVersion_latest=ææ°ããŒãžã§ã³ [{0}]
-view_bundle_deployWizard_selectVersion_live=åäœããŒãžã§ã³ [{0}]
+view_bundle_deployWizard_selectVersion_live=ã©ã€ãããŒãžã§ã³ [{0}]
view_bundle_deployWizard_selectVersion_select=ãªã¹ãããããŒãžã§ã³ãéžæããŠãã ãã\:
view_bundle_deployWizard_title=ãã³ãã«ãããã€ã®ãŠã£ã¶ãŒã
view_bundle_deploy_action=ã¢ã¯ã·ã§ã³
@@ -1607,20 +1607,20 @@ view_bundle_deployments=ãããã€
view_bundle_dest_backToBundle=ãã³ãã«ãžæ»ã
view_bundle_dest_baseDirName=åºæ¬ã®é
眮
view_bundle_dest_created=äœæããã
-view_bundle_dest_deleteConfirm=ãã®ãã³ãã«å®å
ãåé€ããŠãããããã§ãã?
ããã¯ããŒã¿ããŒã¹ããåé€ããã ãã§ããã€ãŸãããªã¢ãŒããã·ã³ã®ãã®å®å
ã«ãããã€ããããã¹ãŠã®ãã³ãã«ã®å
容ã¯æ®ãç¶ããŸã
+view_bundle_dest_deleteConfirm=ãã®ãã³ãã«å®å
ãåé€ããŠãããããã§ãã?
ããã¯ããŒã¿ããŒã¹ããã®ã¿åé€ãããŸããã€ãŸãããªã¢ãŒããã·ã³ã®ãã®å®å
ã«ãããã€ããããã¹ãŠã®ãã³ãã«ã®å
容ã¯åé€ãããŸããã
view_bundle_dest_deleteFailure=ãã³ãã«å®å
[{0}] ã®åé€ã«å€±æããŸãã
view_bundle_dest_deleteSuccessful=ãã³ãã«å®å
[{0}] ã®åé€ã«æåããŸãã
view_bundle_dest_deployDir=ãããã€ãã£ã¬ã¯ããª
view_bundle_dest_group=ã°ã«ãŒã
view_bundle_dest_lastDeployedVersion=æåŸã«ãããã€ãããããŒãžã§ã³
-view_bundle_dest_lastDeploymentDate=æåŸã®ãããã€ããããæ¥ä»
+view_bundle_dest_lastDeploymentDate=æåŸã®ãããã€ã¡ã³ãã®æ¥ä»
view_bundle_dest_lastDeploymentStatus=æåŸã®ãããã€ã¡ã³ãã¹ããŒã¿ã¹
view_bundle_dest_loadFailure=ãã³ãã«ã®å®å
ãããŒãããã®ã«å€±æããŸãã
view_bundle_dest_loadFailureVersionInfo=ãããã€ãããããŒãžã§ã³æ
å ±ã®ããŒãã«å€±æããŸãã
-view_bundle_dest_purgeConfirm=ãã®æäœã¯ãã¹ãŠã®ãªã¢ãŒããã·ã³ãããã³ãã«ã³ã³ãã³ããé€å»ããŸããããããã§ãã?
-view_bundle_dest_purgeFailure=ãªã¢ãŒããã·ã³ã®äžéšãããã¯ãã¹ãŠããã®ãã³ãã«å®å
[{0}] ã®é€å»ã«å€±æããŸãã
-view_bundle_dest_purgeSuccessful=ãªã¢ãŒããã·ã³ã®äžéšãããã¯ãã¹ãŠããã®ãã³ãã«å®å
[{0}] ã®é€å»ã«æåããŸãã
-view_bundle_dest_revertConfirm=ããã¯ãã¹ãŠã®ãªã¢ãŒããã·ã³ã以åã®ãã³ãã«ãããã€ã¡ã³ããžæ»ããŸãããããããŠãããããã§ãã?
+view_bundle_dest_purgeConfirm=ãã®æäœã¯ãã¹ãŠã®ãªã¢ãŒããã·ã³ãããã³ãã«ã³ã³ãã³ããããŒãžããŸããããããã§ãã?
+view_bundle_dest_purgeFailure=ãªã¢ãŒããã·ã³ã®äžéšãããã¯ãã¹ãŠãããã³ãã«å®å
[{0}] ã®ããŒãžã«å€±æããŸãã
+view_bundle_dest_purgeSuccessful=ãªã¢ãŒããã·ã³ã®äžéšãããã¯ãã¹ãŠãããã³ãã«å®å
[{0}] ãæ£åžžã«ããŒãžããŸãã
+view_bundle_dest_revertConfirm=ããã¯ãã¹ãŠã®ãªã¢ãŒããã·ã³ã以åã®ãã³ãã«ãããã€ã¡ã³ããžæ»ããŸããå®è¡ããŠãããããã§ãã?
view_bundle_dest_tagUpdateFailure=ãã³ãã«å®å
ã¿ã°ã®æŽæ°ã«å€±æããŸãã
view_bundle_dest_tagUpdateSuccessful=ãã³ãã«å®å
ã¿ã°ã®æŽæ°ã«æåããŸãã
view_bundle_destinations=å®å
@@ -1650,28 +1650,28 @@
view_bundle_list_singleLoadFailure=ãããã€ãããåäžãã³ãã« [{0}]
view_bundle_list_tagUpdateFailure=ãã³ãã«ã¿ã°ã®æŽæ°ã«å€±æããŸãã
view_bundle_list_tagUpdateSuccessful=ãã³ãã«ã¿ã°ã®æŽæ°ã«æåããŸãã
view_bundle_list_versionsCount=ããŒãžã§ã³æ°
-view_bundle_purge=é€å»
-view_bundle_recipe=ãªã·ã
-view_bundle_resDeployDS_loadFailure=ãã³ãã«ãªãœãŒã¹ãããã€ã®ããŒãã«å€±æããŸãã
+view_bundle_purge=ããŒãž
+view_bundle_recipe=ã¬ã·ã
+view_bundle_resDeployDS_loadFailure=ãã³ãã«ãªãœãŒã¹ãããã€ã¡ã³ãã®ããŒãã«å€±æããŸãã
view_bundle_revert=åãæ¶ã
view_bundle_revertWizard_confirmStep_confirmation=åäœäžã®ãããã€ã以åã®ãããã€ãžåãæ¶ãäžã§ããç¶ç¶ããã«ã¯"次ãž"ãã¯ãªãã¯ããŠãã ããã
view_bundle_revertWizard_confirmStep_failedToFindLiveDeployment=åäœäžã®ãããã€ãèŠã€ãããŸãããåãæ¶ããã§ããŸããã
view_bundle_revertWizard_confirmStep_liveDeployment=åäœäžã®ãããã€
view_bundle_revertWizard_confirmStep_name=åãæ¶ããããã€ç¢ºèª
-view_bundle_revertWizard_confirmStep_noLiveDeployment=ãã®å®å
[{0}] çšã®åäœäžã®ãããã€ã¯èŠã€ãããŸããã§ãã
-view_bundle_revertWizard_confirmStep_noLiveDeployment_concise=ãã®å®å
çšã®åäœäžã®ãããã€ã¯èŠã€ãããŸããã§ãã
-view_bundle_revertWizard_confirmStep_noPriorDeployment=以åã®ããã〠[{1}]
ãååšããªãã®ã§åäœäžã®ããã〠[{0}]
ã¯åãæ¶ãããšãã§ããŸããã§ãã
-view_bundle_revertWizard_confirmStep_noPriorDeployment_concise=以åã®ãããã€ãååšããªãã®ã§åäœäžã®ãããã€ã¯åãæ¶ãããšãã§ããŸããã§ãã
-view_bundle_revertWizard_confirmStep_prevDeployment=以åã®ãããã€
-view_bundle_revertWizard_getInfoStep_cleanDeploy=ãããã€ãåé€ããŸãã?
(ããã¯å€ããæ¢åã®ãããã€ãã£ã¬ã¯ããªãåãæ¶ããããã€ãéå§ããåã«åé€ããŸã)
-view_bundle_revertWizard_getInfoStep_getNameFailure=åãæ¶ããããã€åã®ååŸã«å€±æããŸãã
+view_bundle_revertWizard_confirmStep_noLiveDeployment=å®å
[{0}] çšã®åäœäžã®ãããã€ã¡ã³ãã¯èŠã€ãããŸããã§ãã
+view_bundle_revertWizard_confirmStep_noLiveDeployment_concise=å®å
çšã®åäœäžã®ãããã€ã¡ã³ãã¯èŠã€ãããŸããã§ãã
+view_bundle_revertWizard_confirmStep_noPriorDeployment=å®å
[{1}]
ã®ä»¥åã®ãããã€ã¡ã³ããååšããªããããåäœäžã®ãããã€ã¡ã³ã
[{0}] ã¯åãæ¶ãããšãã§ããŸããã§ãã
+view_bundle_revertWizard_confirmStep_noPriorDeployment_concise=以åã®ãããã€ãååšããªãããåäœäžã®ãããã€ã¯åãæ¶ãããšãã§ããŸããã§ãã
+view_bundle_revertWizard_confirmStep_prevDeployment=以åã®ãããã€ã¡ã³ã
+view_bundle_revertWizard_getInfoStep_cleanDeploy=ãããã€ã¡ã³ããåé€ããŸãã?
(ããã«ããããããã€ã¡ã³ãã®åãæ¶ããéå§ããåã«ãæ¢åã®å€ããããã€ãã£ã¬ã¯ããªãåé€ãããŸã)
+view_bundle_revertWizard_getInfoStep_getNameFailure=åãæ¶ããããã€ã¡ã³ãåã®ååŸã«å€±æããŸãã
view_bundle_revertWizard_getInfoStep_name=åãæ¶ãæ
å ±ã®æäŸ
view_bundle_revertWizard_getInfoStep_revertDeployDesc=ãããã€èšè¿°ã®åãæ¶ã
view_bundle_revertWizard_getInfoStep_revertDeployDescFull=[åãæ¶ã å] {0}
[åãæ¶ã åŸ] {1}
view_bundle_revertWizard_getInfoStep_revertDeployName=ãããã€åã®åãæ¶ã
view_bundle_revertWizard_revertStep_name=å®å
ãã©ãããã©ãŒã ãžãã³ãã«ããããã€
view_bundle_revertWizard_revertStep_reverting=åãæ¶ãäž...
-view_bundle_revertWizard_revertStep_scheduled=ãããã€ã®åãæ¶ãã®ã¹ã±ãžã¥ãŒã«ã«æåããŸããã
+view_bundle_revertWizard_revertStep_scheduled=ãããã€ã¡ã³ãã®åãæ¶ãã®ã¹ã±ãžã¥ãŒã«ã«æåããŸããã
view_bundle_revertWizard_revertStep_scheduledDetails=ãªãœãŒã¹ã°ã«ãŒã [{1}]
ãããã³ãã«ããã〠[{0}]
ã®åãæ¶ãã®ã¹ã±ãžã¥ãŒã«ã«æåããŸãã
view_bundle_revertWizard_revertStep_scheduledFailure=ãããã€ã®åãæ¶ãã®ã¹ã±ãžã¥ãŒã«ã«å€±æããŸãã
view_bundle_revertWizard_title=ãã³ãã«åãæ¶ã
@@ -1684,7 +1684,7 @@
view_bundle_tree_unassigned_name=å²ãåœãŠãããŠããªããã³ãã«
view_bundle_version_backToBundle=ãã³ãã«ãžæ»ã
view_bundle_version_bundleVersionTagUpdateFailure=ãã³ãã«ããŒãžã§ã³ã¿ã°ã®æŽæ°ã«å€±æããŸãã
view_bundle_version_bundleVersionTagUpdateSuccessful=ãã³ãã«ããŒãžã§ã³ã¿ã°ã®æŽæ°ã«æåããŸãã
-view_bundle_version_deleteConfirm=ãã®ãã³ãã«ããŒãžã§ã³ãåé€ããŠãããããã§ãã?
+view_bundle_version_deleteConfirm=ãã®ãã³ãã«ããŒãžã§ã³ãåé€ããŠãããããã§ãã?
ãªã¢ãŒããã·ã³ã®ã³ã³ãã³ãã¯åé€ãããŸããã
view_bundle_version_deleteFailure=ãã®ãã³ãã«ããŒãžã§ã³ [{0}]
ãåé€ããã®ã«å€±æããŸãã
view_bundle_version_deleteSuccessful=ãã³ãã«ããŒãžã§ã³ [{0}]
ã®åé€ã«æåããŸãã
view_bundle_version_loadFailure=ãã³ãã«ããŒãžã§ã³ã®ããŒãã«å€±æããŸãã
@@ -1722,7 +1722,7 @@ view_configEdit_msg_4=ãªã¹ãã«è¿œå ãããã¢ã€ãã
view_configEdit_properties=ããããã£
view_configEdit_property=ããããã£ãŒ
# #view_configEdit_property = Property
-view_configEdit_tooltip_1=ãªã¹ãããéžæãããã¢ã€ãã ãåé€ããŸã
+view_configEdit_tooltip_1=ãªã¹ãããéžæãããã¢ã€ãã ãåé€ããŸã
view_configEdit_tooltip_2=ãªã¹ãã«ã¢ã€ãã ãè¿œå ããŸã
view_configEdit_unset=æªèšå®ã«ããŸãã?
# #view_configEdit_unset = Unset?
@@ -1749,12 +1749,12 @@
view_configurationHistoryList_table_statusInprogress=ãã®èšå®ã®æŽæ°ã¯ãŸ
view_configurationHistoryList_table_statusNochange=ãã®èšå®ã¯å€æŽãããŸããã§ãã
view_configurationHistoryList_table_statusSuccess=ãã®èšå®ã®æŽæ°ã¯æåããŸãã
view_configurationHistoryList_title=èšå®å±¥æŽ
-view_connectionSettingsDetails_allPropertiesValid=ãã¹ãŠã®ã³ãã¯ã·ã§ã³èšå®ã¯æ£ããå€ã§ãã®ã§ããã®èšå®ã¯ä¿åå¯èœã§ã
-view_connectionSettingsDetails_error_updateFailure=ã³ãã¯ã·ã§ã³èšå®ã®æŽæ°ã«å€±æããŸãã
-view_connectionSettingsDetails_messageConcise_updateSuccess=ã³ãã¯ã·ã§ã³èšå®ãæŽæ°ãããŸãã
-view_connectionSettingsDetails_messageDetailed_updateSuccess=ãªãœãŒã¹ [{0}
ã®ããã®ã³ãã¯ã·ã§ã³èšå®ãæŽæ°ãããŸãã
-view_connectionSettingsDetails_noPermission=ãã®ãªãœãŒã¹ã®ã³ãã¯ã·ã§ã³èšå®ãç·šéããæš©éããããŸãã
-view_connectionSettingsDetails_somePropertiesInvalid=次ã®ã³ãã¯ã·ã§ã³èšå®ã¯äžæ£ãªå€\:
{0} ã§ããèšå®ãä¿åããåã«èšæ£ããªããã°ãªããŸããã
+view_connectionSettingsDetails_allPropertiesValid=ãã¹ãŠã®æ¥ç¶èšå®ã®å€ãæå¹ã§ãããããèšå®ãä¿åã§ããŸãã
+view_connectionSettingsDetails_error_updateFailure=æ¥ç¶èšå®ã®æŽæ°ã«å€±æããŸãã
+view_connectionSettingsDetails_messageConcise_updateSuccess=æ¥ç¶èšå®ã®æŽæ°ãéå§ãããŸããã
+view_connectionSettingsDetails_messageDetailed_updateSuccess=ãªãœãŒã¹ [{0}
ã®æ¥ç¶èšå®ã®æŽæ°ãéå§ãããŸããã
+view_connectionSettingsDetails_noPermission=ãã®ãªãœãŒã¹ã®æ¥ç¶èšå®ãç·šéããæš©éããããŸãã
+view_connectionSettingsDetails_somePropertiesInvalid=次ã®æ¥ç¶èšå®ã®å€ã¯ç¡å¹ã§ã\:
{0}ãèšå®ãä¿åããã«ã¯ãå€ãä¿®æ£ããå¿
èŠããããŸãã
view_core_loggedOut=ãã°ã¢ãŠã
view_core_noRecentAlerts=ã¬ããŒããã¹ãæè¿ã®ã¢ã©ãŒãã¯ååšããŸãã
view_core_recentAlerts=[{0}] åã®æè¿ã®ã¢ã©ãŒãããããŸãã -
æè¿ã®ã¢ã©ãŒãã¬ããŒããžã¯ãªãã¯ããŠãã ãã
@@ -1797,8 +1797,8 @@ view_drift_category_fileNew=æ°èŠã«æ€åºããããã¡ã€ã«
view_drift_category_fileRemoved=åé€ãã¡ã€ã«
view_drift_confirm_deleteAllDefs=ããªããæ€åºå®çŸ©ããã¹ãŠåé€ããŸãã?
view_drift_confirm_deleteDefs=éžæããããªããæ€åºå®çŸ©ãåé€ããŸãã?
-view_drift_confirm_deleteTemplate=èŠå\!
ãã®ãã³ãã¬ãŒããåé€ãããšãã¢ã¿ãããããããªããå®çŸ©ããã¹ãŠåé€ãããŸããã¢ã¿ãããããå®çŸ©ã¯ãããã®ã¹ãããã·ã§ãããšãšãã«ã·ã¹ãã ããæ°žä¹
çã«åé€ãããŸããã§ã¿ãããããå®çŸ©ã¯åé€ãããŸãããæ¬åœã«ç¶ç¶ããŠãããããã§ãã?
-view_drift_failure_deleteDefs=ããã€ãããããã¯ãã¹ãŠã®ããªããæ€åºå®çŸ©ã®åé€ã«å€±æããŸãã
+view_drift_confirm_deleteTemplate=èŠå\!
ãã®ãã³ãã¬ãŒããåé€ãããšãã¢ã¿ãããããããªããå®çŸ©ããã¹ãŠåé€ãããŸããã¢ã¿ãããããå®çŸ©ã¯ãããã®ã¹ãããã·ã§ãããšãšãã«ã·ã¹ãã ããæ°žä¹
çã«åé€ãããŸãããã¿ãããããå®çŸ©ã¯åé€ãããŸãããæ¬åœã«ç¶ç¶ããŠãããããã§ãã?
+view_drift_failure_deleteDefs=äžéšãããã¯ãã¹ãŠã®ããªããæ€åºå®çŸ©ã®åé€ã«å€±æããŸãã
view_drift_failure_deleteTemplates=ããªãããã³ãã¬ãŒãã®äžéšãŸãã¯ãã¹ãŠãåé€ã§ããŸããã§ããã
view_drift_failure_detectNow=ããªããæ€åºå®è¡ãªã¯ãšã¹ãã®éä¿¡ã«å€±æããŸãã
view_drift_failure_load=ããªããã€ã³ã¹ã¿ã³ã¹ã®åãåºãã«å€±æããŸãã
@@ -1834,35 +1834,35 @@ view_drift_table_title_initialSnapshot=å®çŸ© [{0}]
ã®ããã®åæã¹ãã
view_drift_table_title_snapshot=å®çŸ© [{1}] ã®ããã®ã¹ãããã·ã§ãã [{0}]
view_drift_table_title_templateSnapshot=ãã³ãã¬ãŒã [{0}]
ã®ããã®ãã³çããããã¹ãããã·ã§ãã
view_drift_wizard_addDef_failure=ããªããæ€åºå®çŸ©ã[{0}]ãã®æ°èŠè¿œå ã«å€±æããŸãã
-view_drift_wizard_addDef_infoStepHelp=åããªããæ€åºå®çŸ©ã¯ããªããã¢ãã¿ãªã³ã°ãå®è¡ãããäžåŒã®ãã¡ã€ã«ãèšè¿°ããŸãããã®å®çŸ©ã¯æå¹ãŸãã¯ç¡å¹ã«ããããæ€åºã®å®è¡ééãå®çŸ©ããããåºæ¬ãã£ã¬ã¯ããªãšãã¡ã€ã«ãã£ã«ã¿(ãªãã·ã§ã³)ãæå®ããããšãã§ããŸããããªããæ€åºãæäŸãããªãœãŒã¹ã¿ã€ãããšã«ãéå§ããå®çŸ©ãšããŠäœ¿çšããããã®äžã€ä»¥äžã®æ¢å®ã®ãã³ãã¬ãŒããååšããŸãã
-view_drift_wizard_addDef_infoStepName=ãã®æ°èŠããªããæ€åºå®çŸ©ã®ãã³ãã¬ãŒããéžæããŠãã ãã
+view_drift_wizard_addDef_infoStepHelp=åããªããæ€åºå®çŸ©ã¯ãããªããã®ç£èŠãå®è¡ããããã¡ã€ã«ãèšè¿°ããŸããå®çŸ©ã¯æå¹ãŸãã¯ç¡å¹ã«ã§ããæ€åºå®è¡ã®ééãå®çŸ©ããããŒã¹ãã£ã¬ã¯ããªãšãªãã·ã§ã³ã®ãã¡ã€ã«ãã£ã«ã¿ãŒãæå®ããŸããããªããæ€åºãæäŸãããªãœãŒã¹ã¿ã€ãããšã«ãæåã®å®çŸ©ãšããŠäœ¿çšã§ãã
1
ã€ä»¥äžã®äºåå®çŸ©ãã³ãã¬ãŒãããããŸãããã®ãã³ãã¬ãŒãã¯ç·šéå¯èœã§ãã
+view_drift_wizard_addDef_infoStepName=æ°èŠããªããæ€åºå®çŸ©ã®ãã³ãã¬ãŒããéžæããŠãã ãã
view_drift_wizard_addDef_success=æ°èŠããªããæ€åºå®çŸ© [{0}]
ã®è¿œå ã«æåããŸããããšãŒãžã§ã³ãã¯æŽæ°ãããŸãã
view_drift_wizard_addDef_templatePrompt=ããªããå®çŸ©ãã³ãã¬ãŒã
-view_drift_wizard_addDef_title=ã¿ã€ãã®ãªãœãŒã¹ [{0}]
ã®ããã®ããªããæ€åºå®çŸ©ãè¿œå ããŠãã ãã
+view_drift_wizard_addDef_title=ã¿ã€ã [{0}]
ã®ãªãœãŒã¹ã®ããªããæ€åºå®çŸ©ãè¿œå
view_drift_wizard_addDef_windowTitle=ããªããæ€åºå®çŸ©ãŠã£ã¶ãŒãã®è¿œå
view_drift_wizard_addTemplate_failure=æ°èŠããªããæ€åºãã³ãã¬ãŒã [{0}]
ã®è¿œå ã«å€±æããŸãã
-view_drift_wizard_addTemplate_infoStepHelp=åããªãããã³ãã¬ãŒãã¯æ¢åã®ãã³ãã¬ãŒããã掟çããŠäœæã§ããŸããããã¯æ¢åãã³ãã¬ãŒãã«é¡äŒŒãããã®ãããã©ã°ã€ã³ãå®çŸ©ãããã³ãã¬ãŒãããæ°èŠãã³ãã¬ãŒããæ§ç¯ããçŽ æ©ãæ¹æ³ãæäŸããŸããããªããå®çŸ©ã®ããã«ããã®ãã³ãã¬ãŒãã¯ããªãããç£èŠãå®è¡ããäžåŒã®ãã¡ã€ã«ãèšè¿°ããŸããç¶æ³ã«ãã£ãŠã¯ããã®ãã³ãã¬ãŒãããå°åºãããå®çŸ©ã¯ãã®ãã¡ã€ã«ã»ããã®å€æŽããä»ã®èšå®ã®å€æŽãèš±ããããèš±ããªãã£ããããŸãããã³ãã¬ãŒãåã¯äžã€ã®ãªãœãŒã¹ã¿ã€ãå
ã§ãŠããŒã¯ã§ãªããã°ãªããŸããã
+view_drift_wizard_addTemplate_infoStepHelp=åããªãããã³ãã¬ãŒãã¯æ¢åã®ãã³ãã¬ãŒããåºã«ããŸããããã«ãããæ¢åã®ãã³ãã¬ãŒããšäŒŒãŠããæ°èŠãã³ãã¬ãŒããããã©ã°ã€ã³ãå®çŸ©ããããã³ãã¬ãŒããåºã«ããæ°èŠãã³ãã¬ãŒããè¿
éã«æ§ç¯ã§ããŸãããã©ããå®çŸ©ãšåæ§ã«ããã³ãã¬ãŒãã¯ããªããç£èŠãå®è¡ããããã¡ã€ã«ãèšè¿°ããŸãããã³ãã¬ãŒããåºã«ããå®çŸ©ã®ãã¡ã€ã«ã»ãããŸãã¯ä»ã®èšå®ã®å€æŽã¯ãç¶æ³ã«å¿ããŠèš±å¯ãŸãã¯æåŠãããŸãããã³ãã¬ãŒãåã¯ãªãœãŒã¹ã¿ã€ãå
ã§äžæã§ãªããã°ãªããŸããã
view_drift_wizard_addTemplate_infoStepName=éå§ãã³ãã¬ãŒãã®éžæ
view_drift_wizard_addTemplate_success=æ°èŠããªãããã³ãã¬ãŒã [{0}]
ã®è¿œå ã«æåããŸãã
view_drift_wizard_addTemplate_title=ã¿ã€ã [{0}]
ã®ããªããå®çŸ©ãã³ãã¬ãŒããè¿œå ããŠãã ãã
view_drift_wizard_addTemplate_windowTitle=ããªããå®çŸ©ãã³ãã¬ãŒãå®çŸ©ãã³ãã¬ãŒããŠã£ã¶ãŒãã®è¿œå
-view_drift_wizard_pinTemplate_confirmNotPinned=ãã®ãã³ãã¬ãŒãã®ããã®çŸåšãšå°æ¥ã®åããªããå®çŸ©ããã£ãããã³çãããããšããã®ãã³ãã¬ãŒãã¯ãã®åæã¹ãããã·ã§ããããã³ãã¬ãŒãã®ãã³çããããã¹ãããã·ã§ãããšããŠèšå®ãããããã«ããŸãããã®ãã³ãã¬ãŒãã®æ¢åã®å®çŸ©ã¯æ°èŠã®åæã¹ãããã·ã§ãããžãªã»ãããããŸãããã®ãã³ãã¬ãŒãã®æ¢åå®çŸ©ã¯æ°èŠåæã¹ãããã·ã§ãããžãªã»ããããããã¹ãŠã®æ¢åã¹ãããã·ã§ããã¯åé€ãããŸãããã®ã¹ãããã·ã§ãããžã®ãã³ãã¬ãŒãã®ãã³çããç¶ããŸãã?
-view_drift_wizard_pinTemplate_confirmPinned=èŠå\!
ãã®ãã³ãã¬ãŒãã¯ãã§ã«ãã³çããããŠããŸãããã®ãã³ãã¬ãŒãã¯ãã®æ°èŠã¹ãããã·ã§ããã«å床ãã³çãããããšãå¯èœã§ãããã®ãã³ãã¬ãŒãã®ããã®çŸåšãšå°æ¥ã®åããªããå®çŸ©ããã£ãããã³çãããããšããã®ãã³ãã¬ãŒãã¯åæã¹ãããã·ã§ããããã®ãã³ãã¬ãŒããæã€ãã³çããããã¹ãããã·ã§ãããšããŠèšå®ãããããã«ããŸãããã®ãã³ãã¬ãŒãã®æ¢åå®çŸ©ã¯æ°èŠåæã¹ãããã·ã§ãããžãªã»ããããããã¹ãŠã®æ¢åã¹ãããã·ã§ããã¯åé€ãããŸãããã®æ°èŠã¹ãããã·ã§ãããæã€ãã³ãã¬ãŒãã®ãã³çããç¶ããŸãã?
+view_drift_wizard_pinTemplate_confirmNotPinned=ãã³ãã¬ãŒãã®çŸåšããã³ä»åŸã®ããªããå®çŸ©ããã³çãããããšããã³ãã¬ãŒãã®ãã³çããããã¹ãããã·ã§ããã«åæã¹ãããã·ã§ãããèšå®ãããŸãããã®ãã³ãã¬ãŒãã®æ¢åã®å®çŸ©ã¯æ°ããåæã¹ãããã·ã§ãããžãªã»ãããããæ¢åã®ã¹ãããã·ã§ããã¯ãã¹ãŠåé€ãããŸãããã³ãã¬ãŒãã®ã¹ãããã·ã§ãããžã®ãã³çããç¶è¡ããŸãã?
+view_drift_wizard_pinTemplate_confirmPinned=èŠå\!
ãã®ãã³ãã¬ãŒãã¯ãã§ã«ãã³çããããŠããŸãããã³ãã¬ãŒãããã®æ°èŠã¹ãããã·ã§ããã«å床ãã³çãããããšãå¯èœã§ããå床ãã³çããããšããã³ãã¬ãŒãã®çŸåšããã³ä»åŸã®ããªããå®çŸ©ãæã€åæã¹ãããã·ã§ããããã³ãã¬ãŒãã®ãã³çããããã¹ãããã·ã§ãããžèšå®ãããŸãããã®ãã³ãã¬ãŒãã®æ¢åã®å®çŸ©ã¯æ°ããåæã¹ãããã·ã§ãããžãªã»ãããããæ¢åã®ã¹ãããã·ã§ããã¯ãã¹ãŠåé€ãããŸãããã®æ°èŠã¹ãããã·ã§ãããæã€ãã³ãã¬ãŒããå床ãã³çãããŸãã?
view_drift_wizard_pinTemplate_duplicate_name_error=ãã³ãã¬ãŒãåã¯äžæã§ãªããã°ãªããŸãã
view_drift_wizard_pinTemplate_failure=ããªãããã³ãã¬ãŒã [{0}]
ãžã®ã¹ãããã·ã§ããããã³çãããã®ã«å€±æããŸãã
view_drift_wizard_pinTemplate_infoStepExistingTemplate=çŸåšã®ãã³ãã¬ãŒããžã®ãã³çã
-view_drift_wizard_pinTemplate_infoStepHelp=ãã³çãããããã³ãã¬ãŒããéžæããŠãã ããããã®ãã³ãã¬ãŒãã®ããã®çŸåšãšå°æ¥ã®åããªããå®çŸ©ããã£ãããã³çãããããšããã®ãã³ãã¬ãŒãã¯åæã¹ãããã·ã§ããããã®ãã³ãã¬ãŒããæã€ãã³çããããã¹ãããã·ã§ãããšããŠèšå®ãããæã€ããã«ãªããŸããããã«ããŸãããããŠãã®å®çŸ©èªèº«ã¯ãã³çãããããã®ãšããŠããŒã¯ãããŸããããã¯æåŸ
ããããã¡ã€ã«ã»ããããããªãããæ€åºããã®ã«äœ¿ãããŸãããã®ãã³ãã¬ãŒãã®ããã®æ¢åå®çŸ©ã¯æ°èŠã®åæã¹ãããã·ã§ããã«ãªã»ããããããã¹ãŠã®æ¢åã¹ãããã·ã§ããã¯åé€ãããããšã«æ³šæããŠãã ããã
+view_drift_wizard_pinTemplate_infoStepHelp=ãã³ãã¬ãŒãã®çŸåšããã³ä»åŸã®ããªããå®çŸ©ããã³çãããããšããã³ãã¬ãŒãã®ãã³çããããã¹ãããã·ã§ããã«åæã¹ãããã·ã§ãããèšå®ãããŸãããŸããå®çŸ©èªäœããã³çãããããšã¿ãªãããŸããããã¯ãæ³å®ããããã¡ã€ã«ã»ããããããªãããæ€åºããããã«äœ¿çšãããŸãããã®ãã³ãã¬ãŒãã®æ¢åã®å®çŸ©ã¯æ°ããåæã¹ãããã·ã§ãããžãªã»ãããããæ¢åã®ã¹ãããã·ã§ããã¯ãã¹ãŠåé€ãããããšã«æ³šæããŠãã ããã
view_drift_wizard_pinTemplate_infoStepName=ãã³çãããããã³ãã¬ãŒãã®éžæ
-view_drift_wizard_pinTemplate_infoStepNewTemplate=æ°èŠãã³ãã¬ãŒããžã®ãã³çã
(ã¹ãããã·ã§ããã®ããªããå®çŸ©ããå°åºããããã®)
-view_drift_wizard_pinTemplate_infoStepRadioHelp=ãã®ã¹ãããã·ã§ããã¯æ°èŠãŸãã¯æ¢åã®ããªãããã³ãã¬ãŒãã«ãã³çãããããšãå¯èœã§ãããã®''æ°èŠãã³ãã¬ãŒã''ãªãã·ã§ã³ã¯ããŠãŒã¶ãŒã®æã«ãã£ãŠä¿¡é Œããå®çŸ©ãã¹ãããã·ã§ãããããªãœãŒã¹ã¬ãã«ãã¿ã€ãã¬ãã«ã§ããã³ãã¬ãŒãåã§ããããã«ããŸãããã®æ°èŠãã³ãã¬ãŒãã¯ã次ã«ããã®ã¿ã€ãã®ã¡ã³ããŒã«å¯ŸããŠé©çšã§ããŸãããã®æ°èŠãã³ãã¬ãŒãã¯åææã¯ã¹ãããã·ã§ããã®ããªããå®çŸ©ã®ã³ããŒã§ããã次ã®ã¹ãããã§ç·šéããããšãã§ããŸãããã®ååã¯å€æŽãã¹ãã§ããã®ã¿ã€ãã®ãŠããŒã¯ãªããªãããã³ãã¬ãŒãåã§ãªããã°ãªããŸããã''æ¢åãã³ãã¬ãŒã''ãªãã·ã§ã³ã¯ããŠãŒã¶ãŒãéžæããã¹ãããã·ã§ãããæã€æ¢åãã³ãã¬ãŒãã«å¯ŸããŠããã³çã
ãŸãã¯å床ãã³çããã§ããããã«ããŸããæ£ããèšå®ããã«ã¯ããã®æ¢åãã³ãã¬ãŒãã¯åããã£ã¬ã¯ããªããã®ã¹ãããã·ã§ããå®çŸ©ãšããŠç£èŠã§ããªããã°ãªããŸãããã»ã¬ã¯ã·ã§ã³ããã¯ã¹ã¯æ£åœãªæ¢åã®ãã³ãã¬ãŒãã ãã衚瀺ããŸããããæ£åœã§ãªãæ¢åãã³ãã¬ãŒããååšãããšããŠããã®ãªãã·ã§ã³ã§ã¯éžæãããŸããã
+view_drift_wizard_pinTemplate_infoStepNewTemplate=æ°èŠãã³ãã¬ãŒããžã®ãã³çã
(ã¹ãããã·ã§ããã®ããªããå®çŸ©ãã掟ç)
+view_drift_wizard_pinTemplate_infoStepRadioHelp=ã¹ãããã·ã§ãããæ°èŠãŸãã¯æ¢åã®ããªãããã³ãã¬ãŒãã«ãã³çãã§ããŸãããæ°èŠãã³ãã¬ãŒãããªãã·ã§ã³ã䜿çšãããšããŠãŒã¶ãŒã¯ãªãœãŒã¹ã¬ãã«ã®ä¿¡é Œã§ããå®çŸ©ããã³ã¹ãããã·ã§ããããã¿ã€ãã¬ãã«ãžææ Œã§ããŸãããã®åŸãæ°èŠãã³ãã¬ãŒããã¿ã€ãã®ã¡ã³ããŒãžé©çšã§ããŸããæ°èŠãã³ãã¬ãŒãã¯ãæåã¯ã¹ãããã·ã§ããã®ããªããå®çŸ©ã®ã³ããŒã§ããã次ã®ã¹ãããã§ç·šéå¯èœã§ããã¿ã€ãã«ãŠäžæã®ããªãããã³ãã¬ãŒãåãšãªãããã«ãååãå€æŽããå¿
èŠããããŸãããæ¢åãã³ãã¬ãŒãããªãã·ã§ã³ã䜿çšãããšããŠãŒã¶ãŒã¯éžæãããã¹ãããã·ã§ãããæã€æ¢åã®ãã³ãã¬ãŒãããã³çããŸãã¯å床ãã³çãã§ããŸããæ¢åã®ãã³ãã¬ãŒãã¯ãã¹ãããã·ã
§ããã®å®çŸ©ãšåããã£ã¬ã¯ããªãç£èŠããå¿
èŠããããŸããéžæããã¯ã¹ã¯æå¹ãªæ¢åãã³ãã¬ãŒãã®ã¿ã衚瀺ããŸããæå¹ãªæ¢åãã³ãã¬ãŒãããªãå Žåããã®ãªãã·ã§ã³ãéžæã§ããŸããã
view_drift_wizard_pinTemplate_infoStepRadioTitle=ãã³ãã¬ãŒãã®éžæ
-view_drift_wizard_pinTemplate_infoStepSelectBlocked=æ¢åãã³ãã¬ãŒãã§ã¹ãããã·ã§ããã®å®çŸ©ãšåããã£ã¬ã¯ããªãç£èŠãããã®ã¯ååšããŸãããç¶ç¶ããã«''æ°èŠãã³ãã¬ãŒã''ãªãã·ã§ã³ãéžæããŠãã ããã
+view_drift_wizard_pinTemplate_infoStepSelectBlocked=ã¹ãããã·ã§ããã®å®çŸ©ãšåããã£ã¬ã¯ããªãç£èŠããæ¢åãã³ãã¬ãŒãã¯ãããŸãããç¶ç¶ããã«ã¯ãæ°èŠãã³ãã¬ãŒãããªãã·ã§ã³ãéžæããŠãã ããã
view_drift_wizard_pinTemplate_infoStepSelectTitle=æ¢åãã³ãã¬ãŒã
view_drift_wizard_pinTemplate_success=ããªãããã³ãã¬ãŒã [{0}]
ã®ãã³çãã«æåããŸãã
view_drift_wizard_pinTemplate_title=ã¿ã€ã [{2}]
ã®ããªãããã³ãã¬ãŒããžã®å®çŸ© [{1}] ã®ã¹ãããã·ã§ãã [{0}]
ããã³çã
view_drift_wizard_pinTemplate_windowTitle=ããªããå®çŸ©ãã³ãã¬ãŒããŠã£ã¶ãŒãã®ãã³çã
-view_dynagroup_children=åçã°ã«ãŒãã®å
-view_dynagroup_compatible=äºæ
+view_dynagroup_children=DynaGroup ã®å
+view_dynagroup_compatible=äºææ§
view_dynagroup_definitionAlreadyExists=ãã§ã«ãã®ååã®ã°ã«ãŒãå®çŸ©ãååšããŸã
view_dynagroup_definitionCreated=ã°ã«ãŒãå®çŸ©å [{0}]
ã®äœæã«æåããŸãã
view_dynagroup_definitionLoadFailure=ã°ã«ãŒãå®çŸ©ã®ããŒãã«å€±æããŸãã
@@ -1872,13 +1872,13 @@ view_dynagroup_deleteSuccessfulSelection=[{0}]
ã°ã«ãŒãå®çŸ©ã®åé€ã«æ
view_dynagroup_editing=[{0}] ãç·šéäž
view_dynagroup_exprBuilder_addExpression=åŒã®è¿œå
view_dynagroup_exprBuilder_comparisonType=æ¯èŒã¿ã€ã
-view_dynagroup_exprBuilder_comparisonType_contains=ãå«ã
-view_dynagroup_exprBuilder_comparisonType_endsWith=ã§çµãã
+view_dynagroup_exprBuilder_comparisonType_contains=次ãå«ã\:
+view_dynagroup_exprBuilder_comparisonType_endsWith=次ã§çµãã\:
view_dynagroup_exprBuilder_comparisonType_equals=çãã
-view_dynagroup_exprBuilder_comparisonType_startsWith=ã§éå§ãã
+view_dynagroup_exprBuilder_comparisonType_startsWith=次ãšéå§ãã\:
view_dynagroup_exprBuilder_comparisonType_tooltip=æ¯èŒã¿ã€ã
view_dynagroup_exprBuilder_definingPlugin=å®çŸ©ãã©ã°ã€ã³
-view_dynagroup_exprBuilder_definingPlugin_tooltip=æ€çŽ¢ã®ããã®ãã©ã°ã€ã³
+view_dynagroup_exprBuilder_definingPlugin_tooltip=æ€çŽ¢ãããã©ã°ã€ã³
view_dynagroup_exprBuilder_expression=åŒ
view_dynagroup_exprBuilder_expressionType=åŒã®ã¿ã€ã
view_dynagroup_exprBuilder_expressionType_pluginConfig=ãã©ã°ã€ã³èšå®
@@ -1902,7 +1902,7 @@
view_dynagroup_exprBuilder_noResourceTypes=--ãªãœãŒã¹ã¿ã€ããªã--
view_dynagroup_exprBuilder_pluginLoadFailure=ãã©ã°ã€ã³ã®ãªã¹ãã®ååŸãã§ããŸãã
view_dynagroup_exprBuilder_propLoadFailure=ããããã£ã®ãªã¹ãã®ååŸãã§ããŸãã
view_dynagroup_exprBuilder_propertyName=ããããã£å
-view_dynagroup_exprBuilder_propertyName_tooltip=åãåããçšã®ããããã£åãããã¯ãªãœãŒã¹ã¿ã€ããšåæ§ã«åŒã¿ã€ãã«ãã£ãŠå®çŸ©ãããŸãã
+view_dynagroup_exprBuilder_propertyName_tooltip=ã¯ãšãªããããããã£ãŒã®ååãåŒã¿ã€ãããã³ãªãœãŒã¹ã¿ã€ãã«ãã£ãŠå®çŸ©ãããŸãã
view_dynagroup_exprBuilder_resTypeLoadFailure=ãã©ã°ã€ã³ [{0}]
ã®ãªãœãŒã¹ã¿ã€ãã®ãªã¹ãã®ååŸãã§ããŸãã
view_dynagroup_exprBuilder_resource=ãªãœãŒã¹
view_dynagroup_exprBuilder_resourceType=ãªãœãŒã¹ã¿ã€ã
@@ -1913,12 +1913,12 @@ view_dynagroup_exprBuilder_resource_greatGrandparent=æŸç¥ç¶æ¯
view_dynagroup_exprBuilder_resource_greatGreatGrandparent=æŸç¥ç¶æ¯ã®èŠª
view_dynagroup_exprBuilder_resource_parent=芪
view_dynagroup_exprBuilder_resource_resource=ãªãœãŒã¹
-view_dynagroup_exprBuilder_resource_tooltip=ãªãœãŒã¹ã®ã¬ãã«ãæã¿ã®ãã®ã«éžæããŠãã ãããäŸãã°ã"芪"ãéžæãããšã芪ãªãœãŒã¹ãåŒã®æ®ãã®éšåã«äžèŽãããããªãªãœãŒã¹ãçºèŠã§ããŸãã
+view_dynagroup_exprBuilder_resource_tooltip=åžæã®ãªãœãŒã¹ã¬ãã«ãéžæããŸããããšãã°ãã芪ããéžæãããšã芪ãªãœãŒã¹ãä»ã®åŒãšäžèŽãããªãœãŒã¹ãèŠã€ããŸãã
view_dynagroup_exprBuilder_savedExpression=ä¿åãããåŒ
view_dynagroup_exprBuilder_title=åŒãã«ããŒ
view_dynagroup_exprBuilder_unset=èšå®è§£é€
-view_dynagroup_exprBuilder_unset_tooltip=èšå®è§£é€ã¯ããŒã¿ããŒã¹å
ã®nullå€ãæã€å€ãã®ãã¹ãŠãçºèŠããŸããããã¯ããŒã¿ããŒã¹ã¹ãã¢ãšåãåããããŒã¿ã®çç±ã«ãã"\="ãªãã¬ãŒã¿ã䜿ãããšã¯å¯èœã§ã¯ãããŸããã
-view_dynagroup_exprBuilder_value_tooltip=åãåããåŒã®ããã®æååå€
+view_dynagroup_exprBuilder_unset_tooltip=èšå®è§£é€ãæå®ãããšãnull
ã§ããå€ããã¹ãŠèŠã€ããŸããããŒã¿ããŒã¹ãããŒã¿ãä¿åããã³ã¯ãšãªããæ¹æ³ã«ãããã\=ãæŒç®åã¯äœ¿çšã§ããŸããã
+view_dynagroup_exprBuilder_value_tooltip=ã¯ãšãªããåŒã®æååå€
view_dynagroup_expression=åŒ
view_dynagroup_expressionBuilderIconTooltip=åŒãã«ããŒ...
view_dynagroup_expressionSet=åŒã»ãã
@@ -1938,34 +1938,34 @@ view_dynagroup_recalculationInterval=åèšç®ã®éé (å)
view_dynagroup_recalculationInterval_error=å€ã¯æŽæ°ã§ãªããã°ãªããŸãã
# view_dynagroup_recalculationInterval = \u518D\u8A08\u7B97\u9593\u9694 (min)
view_dynagroup_recursive=ååž°
-view_dynagroup_saveAndRecalculate=ä¿å & åèšç®
+view_dynagroup_saveAndRecalculate=ä¿åãšåèšç®
view_dynagroup_saveFailure=ã°ã«ãŒãå®çŸ©å [{0}] ã®ä¿åã«å€±æããŸãã
view_dynagroup_saveSuccessful=ã°ã«ãŒãå®çŸ©å [{0}] ã®ä¿åã«æåããŸãã
-view_dynagroup_singleSaveFailure=ãšã©ãŒãçºçããŸãã -
äžã€äœæãããã¹ãã§ãããã代ããã« [{0}] åäœãããŸãã
+view_dynagroup_singleSaveFailure=ãšã©ãŒãçºçããŸãã - 1
ã€äœæãããã¯ãã [{0}] åäœæãããŸãã
view_dynagroup_template_customExpression=ã«ã¹ã¿ã åŒ...
view_dynagroup_template_downedResources=ãã¹ãŠã®ãªãœãŒã¹ãçŸåšããŠã³ããŠããŸã
view_dynagroup_template_jbossas4_clusters=JBossAS 4 - ã¯ã©ã¹ã¿
-view_dynagroup_template_jbossas4_earClusters=JBossAS 4 - ã¯ã©ã¹ã¿å EARs
+view_dynagroup_template_jbossas4_earClusters=JBossAS 4 - ã¯ã©ã¹ã¿å EAR
view_dynagroup_template_jbossas4_hostingApp=JBossAS 4 -
ãã¹ãã£ã³ã°ããŠãã"èªåã®"ã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠ
view_dynagroup_template_jbossas4_nonsecured=JBossAS 4 - ã»ãã¥ã¢ã§ãªããã¹ãŠ
-view_dynagroup_template_jbossas4_uniqueVersions=JBossAS 4 - ãŠããŒã¯ããŒãžã§ã³
+view_dynagroup_template_jbossas4_uniqueVersions=JBossAS 4 - äžæã®ããŒãžã§ã³
view_dynagroup_template_jbossas5_clusters=JBossAS 5/6 - ã¯ã©ã¹ã¿
view_dynagroup_template_platforms=ã€ã³ãã³ããªå
ã®ãã©ãããã©ãŒã ãªãœãŒã¹
-view_dynagroup_template_uniqueResourceTypes=ã€ã³ãã³ããªå
ã®ãŠããŒã¯ãªãœãŒã¹ã¿ã€ã
+view_dynagroup_template_uniqueResourceTypes=ã€ã³ãã³ããªå
ã®äžæã®ãªãœãŒã¹ã¿ã€ã
view_groupConfigEdit_member=ã¡ã³ããŒ
view_groupConfigEdit_noListProps=ã°ã«ãŒãèšå®ã§çŸåšãµããŒããããŠããªãããããã£ã®ãªã¹ã
-view_groupConfigEdit_saveReminder=èšå®ãå€æŽãããŠããŸã -
ãããã®å€æŽãä¿åããã®ãå¿ããªãã§ãã ããããããªããšå€±ãããŸãã
-view_groupConfigEdit_setAll=ãã¹ãŠã®å€ãèšå®\:
-view_groupConfigEdit_tooltip_1=ã¡ã³ããŒå€ã®éã -
ç·šéããããã«ã¢ã€ã³ã³ãã¯ãªãã¯ããŸã
+view_groupConfigEdit_saveReminder=èšå®ã®äžéšãå€æŽãããŸãã -
å€æŽãä¿åããªããšå€æŽå
容ã倱ãããŸãã\n
+view_groupConfigEdit_setAll=ãã¹ãŠã®å€ã次ã«èšå®\:
+view_groupConfigEdit_tooltip_1=ã¡ã³ããŒå€ãç°ãªããŸã -
ã¢ã€ã³ã³ãã¯ãªãã¯ããŠç·šéããŠãã ããã
view_groupConfigEdit_unset=èšå®è§£é€
view_groupConfigEdit_valsDiff=ã¡ã³ããŒå€ã®éã
-view_groupConfigEdit_valsDiffForProp=ãããã㣠[{0}] ã®ããã®ã¡ã³ããŒå€
+view_groupConfigEdit_valsDiffForProp=ãããã㣠[{0}] ã®ã¡ã³ããŒå€
view_groupCreateWizard_createFailure=ãªãœãŒã¹ã°ã«ãŒã [{0}]
ã®äœæã«å€±æããŸãã \: {1}
view_groupCreateWizard_createStepName=ã°ã«ãŒãèšå®
view_groupCreateWizard_createStep_group_exists=[{0}]
ãšããååã®ã°ã«ãŒãã¯ãã§ã«ååšããŸã
view_groupCreateWizard_createStep_recursive=ååž°
view_groupCreateWizard_createSuccessful_concise=[{0}]
ãšããååã®æ°èŠã®ãªãœãŒã¹ã°ã«ãŒããäœæããŸããã
-view_groupCreateWizard_createSuccessful_full=[{2}] ã¡ã³ããŒãªãœãŒã¹ãå«ã
åå [{1}] ã®æ°èŠ [{0}] ãªãœãŒã¹ã°ã«ãŒããäœæããŸããã
+view_groupCreateWizard_createSuccessful_full=[{2}]
ã¡ã³ããŒãªãœãŒã¹ãå«ãŸããåå [{1}] ãæã€æ°ãã [{0}]
ãªãœãŒã¹ã°ã«ãŒããäœæãããŸããã
view_groupCreateWizard_membersStepName=ã¡ã³ããŒã®éžæ
view_groupCreateWizard_title=ã°ã«ãŒãäœæ
view_groupCreateWizard_windowTitle=ã°ã«ãŒãäœæ
@@ -1993,22 +1993,22 @@
view_group_operationScheduleDetails_memberResource=ã¡ã³ããŒãªãœãŒã¹
view_group_operationScheduleDetails_value_parallel=䞊è¡å®è¡
view_group_operationScheduleDetails_value_sequential=以äžã«ç€ºããé
(ã¡ã³ããŒãªãœãŒã¹ããã©ãã°ã¢ã³ãããããããŠé çªãå€æŽ)
view_group_pluginConfig_edit_currentGroupProperties=çŸåšã®ã°ã«ãŒãããããã£
-view_group_pluginConfig_edit_invalid=次ã®ã³ãã¯ã·ã§ã³èšå®ããããã£ã«ã¯äžæ£ãªå€ãèšå®ãããŠããŸãã®ã§ãã³ãã¯ã·ã§ã³èšå®ãä¿åããããŸãã«ä¿®æ£ãããå¿
èŠããããŸã\: [{0}]
-view_group_pluginConfig_edit_noperm=ãã®ã°ã«ãŒãã³ãã¯ã·ã§ã³èšå®ãç·šéããæš©éããããŸãã
+view_group_pluginConfig_edit_invalid=次ã®æ¥ç¶èšå®ããããã£ãŒã«ã¯ç¡å¹ãªå€ãå«ãŸããŠããŸããç¡å¹ãªå€ãä¿®æ£ããªããšãèšå®ãä¿åã§ããŸãã\:
[{0}]
+view_group_pluginConfig_edit_noperm=ãã®ã°ã«ãŒãæ¥ç¶èšå®ãç·šéããæš©éããããŸãã
view_group_pluginConfig_edit_saveFailure=ã°ã«ãŒãå [{1}] ãšäºææ§ã®ãã
[{0}] ã®ããã®ã°ã«ãŒãèšå®æŽæ°ã®éå§ã«å€±æããŸãã
-view_group_pluginConfig_edit_saveInitiated_concise=ã°ã«ãŒãã³ãã¯ã·ã§ã³èšå®ã®æŽæ°ãéå§ãããŸãã
-view_group_pluginConfig_edit_saveInitiated_full=ã°ã«ãŒãã³ãã¯ã·ã§ã³èšå®ã®æŽæ°ã¯ã°ã«ãŒãå
[{1}] ãšäºææ§ã®ãã [{0}] ã®ããã«éå§ãããŸãã
-view_group_pluginConfig_edit_saveTooltip=ãã¹ãŠã®ã°ã«ãŒãã¡ã³ããŒã®ã³ãã¯ã·ã§ã³èšå®ãæŽæ°ããŸã
-view_group_pluginConfig_edit_valid=ãã¹ãŠã®ã³ãã¯ã·ã§ã³èšå®ããããã£ã«ã¯æ£ããå€ãèšå®ãããŠããŸãã®ã§ãã³ãã¯ã·ã§ã³èšå®ã¯ä¿åã§ããŸã
+view_group_pluginConfig_edit_saveInitiated_concise=ã°ã«ãŒãæ¥ç¶èšå®ã®æŽæ°ãéå§ãããŸãã
+view_group_pluginConfig_edit_saveInitiated_full=ã°ã«ãŒãæ¥ç¶èšå®ã®æŽæ°ãã[{1}]
ãšããååã® [{0}]
ãšäºææ§ã®ããã°ã«ãŒãã«å¯ŸããŠéå§ãããŸãã
+view_group_pluginConfig_edit_saveTooltip=ãã¹ãŠã®ã°ã«ãŒãã¡ã³ããŒã®æ¥ç¶èšå®ãæŽæ°ããŸã
+view_group_pluginConfig_edit_valid=ãã¹ãŠã®æ¥ç¶èšå®ããããã£ãŒã®å€ãæå¹ã§ãããããèšå®ãä¿åã§ããŸã
view_group_pluginConfig_members_fetchFailure=ã°ã«ãŒã [{0}]
ã®ã¡ã³ããŒã®ãã©ã°ã€ã³èšå®æŽæ°å±¥æŽã®ååŸã«å€±æããŸãã
-view_group_pluginConfig_members_fetchFailureConn=[{0}]
ã®ããã®ã¡ã³ããŒã³ãã¯ã·ã§ã³èšå®ã®åãåºãã«å€±æããŸãã
+view_group_pluginConfig_members_fetchFailureConn=[{0}]
ã®ã¡ã³ããŒæ¥ç¶èšå®ã®èªã¿åºãã«å€±æããŸãã
view_group_pluginConfig_members_fetchFailureConnInProgress=ã°ã«ãŒããã©ã°ã€ã³èšå®ã®æŽæ°ã¯çŸåšé²è¡äžã§ããã°ã«ãŒãèšå®ãé²èŠ§ããã«ã¯ãæŽæ°ãçµäºãããŸã§åŸ
æ©ããå¿
èŠããããŸãã
view_group_pluginConfig_members_statusDetails=ã¹ããŒã¿ã¹ã®è©³çŽ°
view_group_pluginConfig_members_statusFailure=ãã®èšå®ã®æŽæ°ã¯æªç¥ã®çç±ã«ãã倱æããŸãã
view_group_pluginConfig_members_statusInprogress=ãã®èšå®ã®æŽæ°ã¯ãŸã é²è¡äžã§ã
view_group_pluginConfig_members_statusNochange=ãã®èšå®ã¯å€æŽãããŸããã§ãã
view_group_pluginConfig_members_statusSuccess=ãã®èšå®ã®æŽæ°ã¯æåããŸãã
-view_group_pluginConfig_members_title=ã°ã«ãŒãã³ãã¯ã·ã§ã³èšå®ã®ã¡ã³ããŒå±¥æŽ
+view_group_pluginConfig_members_title=ã°ã«ãŒãæ¥ç¶èšå®ã®ã¡ã³ããŒå±¥æŽ
view_group_pluginConfig_table_clickStatusIcon=詳现ã¯ã¹ããŒã¿ã¹ã¢ã€ã³ã³ãã¯ãªãã¯ããŠãã ãã
view_group_pluginConfig_table_deleteFailure=ã°ã«ãŒããã©ã°ã€ã³èšå®å±¥æŽã®åé€ã«å€±æããŸãã
view_group_pluginConfig_table_deleteSuccessful=[{0}] ã®å±¥æŽãåé€ããŸãã
@@ -2019,11 +2019,11 @@
view_group_pluginConfig_table_statusFailure=ãã®ã°ã«ãŒãèšå®ã®æŽæ°ã¯
view_group_pluginConfig_table_statusInprogress=ãã®ã°ã«ãŒãèšå®ã®æŽæ°ã¯é²è¡äžã§ã
view_group_pluginConfig_table_statusNochange=ãã®ã°ã«ãŒãèšå®ã¯å€æŽãããŸããã§ãã
view_group_pluginConfig_table_statusSuccess=ãã®ã°ã«ãŒãèšå®ã®æŽæ°ã¯æåããŸãã
-view_group_pluginConfig_table_title=ã°ã«ãŒãã³ãã¯ã·ã§ã³èšå®å±¥æŽ
+view_group_pluginConfig_table_title=ã°ã«ãŒãæ¥ç¶èšå®å±¥æŽ
view_group_pluginConfig_table_viewMemberHistory=ã¡ã³ããŒå±¥æŽã®é²èŠ§
view_group_pluginConfig_table_viewSettings=èšå®ã®é²èŠ§
view_group_pluginConfig_view_groupProperties=ã°ã«ãŒãããããã£
-view_group_pluginConfig_view_noperm=ã³ãã¯ã·ã§ã³èšå®ã®é²èŠ§æš©éããããŸãã
+view_group_pluginConfig_view_noperm=æ¥ç¶èšå®ã®é²èŠ§æš©éããããŸãã
view_group_resConfig_edit_invalid=次ã®èšå®ããããã£ãŒã«ã¯ç¡å¹ãªå€ãå«ãŸããŠããŸããç¡å¹ãªå€ãä¿®æ£ããªããšãèšå®ãä¿åã§ããŸãã\:
[{0}]
view_group_resConfig_edit_loadFail=[{0}]
ã®ã¡ã³ããŒãªãœãŒã¹èšå®ã®èªã¿åºãã«å€±æããŸãã
view_group_resConfig_edit_noperm=ãã®ã°ã«ãŒãèšå®ãç·šéããæš©éããããŸãã
@@ -2635,7 +2635,7 @@
widget_resourceFactoryWizard_infoStep_loadFail=ã¢ãŒããã¯ãã£ãŒãå©çš
widget_resourceFactoryWizard_nameComment=管çãã©ã°ã€ã³ãŸãã¯ãããã®ç®¡ç察象ãªãœãŒã¹ã®äžéšã¯ããšãŒãžã§ã³ãã«ããæ°ãããªãœãŒã¹ã®ååèšå®ãèš±å¯ããŸããããã®å€ã¯ããã®æ©èœããµããŒããããšãŒãžã§ã³ããã©ã°ã€ã³ã®ã¿ã䜿çšããŸãããã®æ©èœããµããŒãããªããã©ã°ã€ã³ã®å ŽåããªãœãŒã¹ãçºèŠããããšãã«ãªãœãŒã¹ã«æ±çšãŸãã¯ç°ãªãååãä»ããããå¯èœæ§ããããŸãã
widget_resourceFactoryWizard_namePrompt=æ°èŠãªãœãŒã¹å
# widget_resourceFactoryWizard_nameComment = Not all management plug-ins or their managed
resources allow the agent to set the name for a new resource. This value will only be used
by agent plug-ins that support the capability. For plug-ins that do not support the
capability, the resource may receive a generic or different name when it is discovered.
-widget_resourceFactoryWizard_templatePrompt=ã³ãã¯ã·ã§ã³èšå®ãã³ãã¬ãŒã
+widget_resourceFactoryWizard_templatePrompt=æ¥ç¶èšå®ãã³ãã¬ãŒã
widget_resourceFactoryWizard_timeoutFailure=ã¿ã€ã ã¢ãŠãããŸãã
widget_resourceFactoryWizard_timeoutHelp=æå®ãããå ŽåãåãªãœãŒã¹äœæ
({0} ãšãŒãžã§ã³ãäž)
ã®ããã©ã«ãã®ã¿ã€ã ã¢ãŠãå€ãäžæžãããã¿ã€ã ã¢ãŠãã®æéã§ããããã©ã«ãã®ã¿ã€ã ã¢ãŠãå€ã¯
60
ç§ã§ãã倧åã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã¡ã³ããªã©ãç¹ã«é·ãäœæäœæ¥ã§ã¯å€ã倧ãããããšããã§ããããéåžžã以åã®äœæãã¿ã€ã ã¢ãŠãã«ãã£ãŠå€±æã«çµãã£ãå Žåã«äœ¿çšãããŸããã¿ã€ã ã¢ãŠãã«ãã£ãŠå€±æããå Žåã§ãããªãœãŒã¹ã®ãããã€ã¡ã³ãã¯æåããå¯èœæ§ããããã泚æããŠãã ãããã¿ã€ã ã¢ãŠããçºçããå ŽåããªãœãŒã¹ãåãããã€ããåã«ãã£ã¹ã«ããªã¹ãã£ã³ãå®è¡ãããšããã§ãããã
# ##widget_resourceFactoryWizard_timeoutFailure = Timed out
commit a29ca38d5fe802eaf9157768d65f080578cac06c
Author: Thomas Segismont <tsegismo(a)redhat.com>
Date: Tue Dec 10 13:42:16 2013 +0100
AS7 plugin minor changes: share base component logger and ASConnection verbose mode
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
index a6043c4..2451743 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java
@@ -18,6 +18,8 @@
*/
package org.rhq.modules.plugins.jbossas7;
+import static org.rhq.modules.plugins.jbossas7.ASConnection.verbose;
+
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
@@ -82,6 +84,8 @@ import org.rhq.modules.plugins.jbossas7.json.Result;
public class BaseComponent<T extends ResourceComponent<?>> implements
AS7Component<T>, MeasurementFacet,
ConfigurationFacet, DeleteResourceFacet, CreateChildResourceFacet, OperationFacet {
+ private static final Log LOG = LogFactory.getLog(BaseComponent.class);
+
static final String INTERNAL = "_internal:";
static final int INTERNAL_SIZE = INTERNAL.length();
static final String EXPRESSION = "_expr:";
@@ -90,7 +94,11 @@ public class BaseComponent<T extends ResourceComponent<?>>
implements AS7Compone
public static final String MANAGED_SERVER = "Managed Server";
- final Log log = LogFactory.getLog(this.getClass());
+ /**
+ * @deprecated as of 4.10. Use your own logger or {@link #getLog()} method.
+ */
+ @Deprecated
+ final Log log = LOG;
ResourceContext<T> context;
Configuration pluginConfiguration;
@@ -101,7 +109,6 @@ public class BaseComponent<T extends ResourceComponent<?>>
implements AS7Compone
String key;
boolean includeRuntime;
- private boolean verbose = ASConnection.verbose;
private BaseServerComponent serverComponent;
protected ASConnection testConnection;
@@ -192,7 +199,7 @@ public class BaseComponent<T extends ResourceComponent<?>>
implements AS7Compone
Result res = getASConnection().execute(op);
if (!res.isSuccess()) {
- log.warn("Getting metric [" + req.getName() + "] at [
" + address + "] failed: "
+ getLog().warn("Getting metric [" + req.getName() + "]
at [ " + address + "] failed: "
+ res.getFailureDescription());
continue;
}
@@ -217,7 +224,7 @@ public class BaseComponent<T extends ResourceComponent<?>>
implements AS7Compone
addMetric2Report(report, req, val, resolveExpression);
}
} catch (NumberFormatException e) {
- log.warn("Non numeric input for [" + req.getName() +
"] : [" + val + "]");
+ getLog().warn("Non numeric input for [" + req.getName()
+ "] : [" + val + "]");
}
} else if (req.getDataType() == DataType.TRAIT) {
@@ -226,8 +233,8 @@ public class BaseComponent<T extends ResourceComponent<?>>
implements AS7Compone
ResolveExpression resolveExpressionOperation = new
ResolveExpression(expression);
Result result =
getASConnection().execute(resolveExpressionOperation);
if (!result.isSuccess()) {
- if (log.isWarnEnabled()) {
- log.warn("Skipping trait [" + req.getName()
+ if (getLog().isWarnEnabled()) {
+ getLog().warn("Skipping trait [" +
req.getName()
+ "] in measurement report. Could not resolve
expression [" + expression
+ "], failureDescription:" +
result.getFailureDescription());
continue;
@@ -250,8 +257,8 @@ public class BaseComponent<T extends ResourceComponent<?>>
implements AS7Compone
ResolveExpression resolveExpressionOperation = new
ResolveExpression(expression);
Result result = getASConnection().execute(resolveExpressionOperation);
if (!result.isSuccess()) {
- if (log.isWarnEnabled()) {
- log.warn("Skipping metric [" + req.getName()
+ if (getLog().isWarnEnabled()) {
+ getLog().warn("Skipping metric [" + req.getName()
+ "] in measurement report. Could not resolve expression
[" + expression
+ "], failureDescription:" +
result.getFailureDescription());
return;
@@ -354,7 +361,7 @@ public class BaseComponent<T extends ResourceComponent<?>>
implements AS7Compone
@Override
public void deleteResource() throws Exception {
- log.info("Removing AS7 resource [" + path + "]...");
+ getLog().info("Removing AS7 resource [" + path + "]...");
if (context.getResourceType().getName().equals(MANAGED_SERVER)) {
// We need to do two steps because of AS7-4032
@@ -461,7 +468,7 @@ public class BaseComponent<T extends ResourceComponent<?>>
implements AS7Compone
JsonNode uploadResult = uploadConnection.finishUpload();
if (verbose) {
- log.info(uploadResult);
+ getLog().info(uploadResult);
}
if (ASUploadConnection.isErrorReply(uploadResult)) {
@@ -496,7 +503,7 @@ public class BaseComponent<T extends ResourceComponent<?>>
implements AS7Compone
String deploymentName, String hash) {
boolean toServerGroup =
context.getResourceKey().contains("server-group=");
- log.info("Deploying [" + runtimeName + "] (toDomainOnly=" +
!toServerGroup + ")...");
+ getLog().info("Deploying [" + runtimeName + "]
(toDomainOnly=" + !toServerGroup + ")...");
ASConnection connection = getASConnection();
@@ -546,7 +553,7 @@ public class BaseComponent<T extends ResourceComponent<?>>
implements AS7Compone
resourceKey = serverGroupAddress.getPath();
if (verbose) {
- log.info("Deploy operation: " + cop);
+ getLog().info("Deploy operation: " + cop);
}
result = connection.execute(cop, 300);
@@ -556,14 +563,14 @@ public class BaseComponent<T extends
ResourceComponent<?>> implements AS7Compone
String failureDescription = result.getFailureDescription();
report.setErrorMessage(failureDescription);
report.setStatus(CreateResourceStatus.FAILURE);
- log.warn("Deploy of [" + runtimeName + "] failed: " +
failureDescription);
+ getLog().warn("Deploy of [" + runtimeName + "] failed: "
+ failureDescription);
} else {
report.setStatus(CreateResourceStatus.SUCCESS);
report.setResourceName(runtimeName);
report.setResourceKey(resourceKey);
report.getPackageDetails().setSHA256(hash);
report.getPackageDetails().setInstallationTimestamp(System.currentTimeMillis());
- log.info("Deploy of [" + runtimeName + "] succeeded - Resource
key is [" + resourceKey + "].");
+ getLog().info("Deploy of [" + runtimeName + "] succeeded -
Resource key is [" + resourceKey + "].");
}
return report;
@@ -656,7 +663,7 @@ public class BaseComponent<T extends ResourceComponent<?>>
implements AS7Compone
}
operation.addAdditionalProperty(pl.getName(), items);
} else {
- log.error("PropertyMap for " + prop.getName() + " not
yet supported");
+ getLog().error("PropertyMap for " + prop.getName() + "
not yet supported");
}
}
}
@@ -698,7 +705,7 @@ public class BaseComponent<T extends ResourceComponent<?>>
implements AS7Compone
PropertyDefinitionSimple pds = (PropertyDefinitionSimple) pd;
return getObjectForProperty(prop, pds);
} else {
- log.warn("Property [" + prop.getName() + "] is not understood
yet");
+ getLog().warn("Property [" + prop.getName() + "] is not
understood yet");
return null;
}
}
@@ -866,7 +873,7 @@ public class BaseComponent<T extends ResourceComponent<?>>
implements AS7Compone
if (defaultValue != null) {
multicastHost = defaultValue;
} else {
- log.error("Failed to resolve expression value
[" + expressionValue
+ getLog().error("Failed to resolve expression
value [" + expressionValue
+ "] of 'multicast-address'
attribute.");
}
}
@@ -912,4 +919,12 @@ public class BaseComponent<T extends
ResourceComponent<?>> implements AS7Compone
}
}
+ /**
+ * Get the logger for AS7 plugin resource components.
+ *
+ * @return
+ */
+ public static Log getLog() {
+ return LOG;
+ }
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DeploymentComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DeploymentComponent.java
index 9a15a85..94c101f 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DeploymentComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DeploymentComponent.java
@@ -1,5 +1,26 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2013 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
package org.rhq.modules.plugins.jbossas7;
+import static org.rhq.modules.plugins.jbossas7.ASConnection.verbose;
+
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
@@ -29,7 +50,6 @@ import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.pluginapi.content.ContentFacet;
import org.rhq.core.pluginapi.content.ContentServices;
import org.rhq.core.pluginapi.content.FileContentDelegate;
-import org.rhq.core.pluginapi.inventory.CreateResourceReport;
import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
@@ -52,8 +72,8 @@ import org.rhq.modules.plugins.jbossas7.json.Result;
*/
public class DeploymentComponent extends BaseComponent<ResourceComponent<?>>
implements OperationFacet, ContentFacet {
+
private static final String DOMAIN_DATA_CONTENT_SUBDIR = "/data/content";
- private boolean verbose = ASConnection.verbose;
private File deploymentFile;
@Override
@@ -123,13 +143,13 @@ public class DeploymentComponent extends
BaseComponent<ResourceComponent<?>> imp
@Override
public DeployPackagesResponse deployPackages(Set<ResourcePackageDetails>
packages, ContentServices contentServices) {
- log.debug("Starting deployment..");
+ getLog().debug("Starting deployment..");
DeployPackagesResponse response = new DeployPackagesResponse();
if (packages.size() != 1) {
response.setOverallRequestResult(ContentResponseResult.FAILURE);
response.setOverallRequestErrorMessage("Can only deploy one package at a
time");
- log.warn("deployPackages can only deploy one package at a time");
+ getLog().warn("deployPackages can only deploy one package at a
time");
}
ResourcePackageDetails detail = packages.iterator().next();
@@ -145,7 +165,7 @@ public class DeploymentComponent extends
BaseComponent<ResourceComponent<?>> imp
}
ResourceType resourceType = context.getResourceType();
- log.info("Deploying " + resourceType.getName() + " Resource with
key [" + detail.getKey() + "]...");
+ getLog().info("Deploying " + resourceType.getName() + " Resource
with key [" + detail.getKey() + "]...");
try {
contentServices.downloadPackageBits(context.getContentContext(),
detail.getKey(), out, true);
@@ -158,7 +178,7 @@ public class DeploymentComponent extends
BaseComponent<ResourceComponent<?>> imp
JsonNode uploadResult = uploadConnection.finishUpload();
if (verbose) {
- log.info(uploadResult);
+ getLog().info(uploadResult);
}
if (ASUploadConnection.isErrorReply(uploadResult)) {
@@ -183,7 +203,7 @@ public class DeploymentComponent extends
BaseComponent<ResourceComponent<?>> imp
response.setOverallRequestResult(ContentResponseResult.FAILURE);
}
- log.info("Result of deployment of " + resourceType.getName() + "
Resource with key [" + detail.getKey() + "]: "
+ getLog().info("Result of deployment of " + resourceType.getName() +
" Resource with key [" + detail.getKey() + "]: "
+ response);
return response;
@@ -288,7 +308,7 @@ public class DeploymentComponent extends
BaseComponent<ResourceComponent<?>> imp
return deploymentFile;
}
} else {
- log.warn("Could not determine the location of the deployment - the
content descriptor wasn't found for deployment"
+ getLog().warn("Could not determine the location of the deployment -
the content descriptor wasn't found for deployment"
+ getAddress() + ".");
return null;
}
@@ -296,7 +316,7 @@ public class DeploymentComponent extends
BaseComponent<ResourceComponent<?>> imp
Boolean archive = (Boolean) content.get(0).get("archive");
if (archive != null && !archive) {
- log.debug("Exploded deployments not supported for retrieving the
content.");
+ getLog().debug("Exploded deployments not supported for retrieving the
content.");
return null;
}
@@ -338,7 +358,7 @@ public class DeploymentComponent extends
BaseComponent<ResourceComponent<?>> imp
}
deploymentFile = getDeploymentFileFromHash(hash, contentPath);
} else {
- log.warn("Failed to determine the deployment file of " +
getAddress()
+ getLog().warn("Failed to determine the deployment file of " +
getAddress()
+ " deployment. Neither path nor hash attributes were
available.");
}
@@ -362,7 +382,7 @@ public class DeploymentComponent extends
BaseComponent<ResourceComponent<?>> imp
return new File(relativeTo, path);
} else {
- log.warn("Unsupported property used as a base for deployment path
specification: " + relativeTo);
+ getLog().warn("Unsupported property used as a base for deployment
path specification: " + relativeTo);
return null;
}
}
@@ -394,8 +414,8 @@ public class DeploymentComponent extends
BaseComponent<ResourceComponent<?>> imp
FileContentDelegate fileContentDelegate = new FileContentDelegate();
sha256 = fileContentDelegate.retrieveDeploymentSHA(file,
context.getResourceDataDirectory());
} catch (Exception iex) {
- if (log.isDebugEnabled()) {
- log.debug("Problem calculating digest of package [" +
file.getPath() + "]." + iex.getMessage());
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("Problem calculating digest of package [" +
file.getPath() + "]." + iex.getMessage());
}
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDeploymentComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDeploymentComponent.java
index 54cffbf..532d403 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDeploymentComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/DomainDeploymentComponent.java
@@ -1,3 +1,22 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2013 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
package org.rhq.modules.plugins.jbossas7;
import java.util.ArrayList;
@@ -49,7 +68,7 @@ public class DomainDeploymentComponent extends DeploymentComponent
implements Op
String resourceKey = context.getResourceKey();
resourceKey = resourceKey.substring(resourceKey.indexOf("=") + 1);
- log.info("Promoting [" + resourceKey + "] to server group(s)
[" + serverGroups + "]...");
+ getLog().info("Promoting [" + resourceKey + "] to server
group(s) [" + serverGroups + "]...");
PropertySimple simple = parameters.getSimple("enabled");
Boolean enabled = false;
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Ejb3BeanRuntimeComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Ejb3BeanRuntimeComponent.java
index 7f7bf33..4f8d88a 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Ejb3BeanRuntimeComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/Ejb3BeanRuntimeComponent.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2013 Red Hat, Inc.
+ * Copyright (C) 2005-2013 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -13,8 +13,8 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
package org.rhq.modules.plugins.jbossas7;
@@ -163,12 +163,13 @@ public class Ejb3BeanRuntimeComponent extends
BaseComponent<BaseComponent<?>> {
} else {
OSGiVersion currentAsVersion = getASVersion();
if (currentAsVersion == null) {
- log.warn("Could not determine the AS version while reporting
unexpected result of method" +
- " stats. Request: " + request);
+ getLog().warn(
+ "Could not determine the AS version while reporting
unexpected result of method"
+ + " stats. Request: " + request);
} else if
(FIRST_VERSION_SUPPORTING_METHOD_STATS.compareTo(currentAsVersion) <= 0) {
- log.error("Unexpected type of results when querying method
stats for measurement request " +
- request + ". Expected map but got " + (value ==
null ? "null" :
- value.getClass().getName()));
+ getLog().error(
+ "Unexpected type of results when querying method stats
for measurement request " + request
+ + ". Expected map but got " + (value == null ?
"null" : value.getClass().getName()));
}
}
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java
index 5c02170..c70fd3d 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java
@@ -57,10 +57,8 @@ public class ManagedASComponent extends
BaseComponent<HostControllerComponent<?>
public void start(ResourceContext<HostControllerComponent<?>>
hostControllerComponentResourceContext)
throws InvalidPluginConfigurationException, Exception {
super.start(hostControllerComponentResourceContext);
-
logFileEventDelegate = new LogFileEventResourceComponentHelper(context);
logFileEventDelegate.startLogFileEventPollers();
-
}
@Override
@@ -87,7 +85,7 @@ public class ManagedASComponent extends
BaseComponent<HostControllerComponent<?>
try {
result = getASConnection().execute(getStatus);
} catch (Exception e) {
- log.warn(e.getMessage());
+ getLog().warn(e.getMessage());
return AvailabilityType.DOWN;
}
if (!result.isSuccess())
@@ -149,18 +147,21 @@ public class ManagedASComponent extends
BaseComponent<HostControllerComponent<?>
}
if ("null".equals(val)) {
- if (realName.equals("product-name"))
+ if (realName.equals("product-name")) {
val = "JBoss AS";
- else if (realName.equals("product-version"))
+ }
+ else if (realName.equals("product-version")) {
val =
getStringValue(props.get("release-version"));
- else
- log.debug("Value for " + realName + " was
'null' and no replacement found");
+ }
+ else if (getLog().isDebugEnabled()) {
+ getLog().debug("Value for " + realName + " was
'null' and no replacement found");
+ }
}
MeasurementDataTrait data = new MeasurementDataTrait(request, val);
report.addData(data);
}
- } else {
- log.debug("getSKMRequests failed: " +
res.getFailureDescription());
+ } else if (getLog().isDebugEnabled()) {
+ getLog().debug("getSKMRequests failed: " +
res.getFailureDescription());
}
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterConfigurationDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterConfigurationDiscovery.java
index d8f3ea1..b58dfd4 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterConfigurationDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterConfigurationDiscovery.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2011 Red Hat, Inc.
+ * Copyright (C) 2005-2013 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -13,11 +13,14 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
+
package org.rhq.modules.plugins.jbossas7;
+import static org.rhq.modules.plugins.jbossas7.ASConnection.verbose;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
@@ -109,7 +112,7 @@ public class ModClusterConfigurationDiscovery extends
SubsystemDiscovery {
}
}
- if (Boolean.getBoolean("as7plugin.verbose"))
+ if (verbose)
log.info("total path: [" + path + "]");
if (lookForChildren) {
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextComponent.java
index 836b6a7..d22aa32 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ModClusterContextComponent.java
@@ -1,3 +1,22 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2013 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
package org.rhq.modules.plugins.jbossas7;
import org.rhq.core.domain.configuration.Configuration;
@@ -27,7 +46,7 @@ public class ModClusterContextComponent extends ModClusterComponent
implements A
int indexOfSeparator = this.context.getResourceKey().indexOf(":");
context =
ProxyInfo.Context.fromString(this.context.getResourceKey().substring(indexOfSeparator +
1));
} catch (Exception e) {
- log.warn("Invalid resourcekey is being used for modcluster component:
" + e.getMessage());
+ getLog().warn("Invalid resourcekey is being used for modcluster
component: " + e.getMessage());
return AvailabilityType.DOWN;
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
index e8f8301..8b68f46 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/SubsystemDiscovery.java
@@ -19,6 +19,8 @@
package org.rhq.modules.plugins.jbossas7;
+import static org.rhq.modules.plugins.jbossas7.ASConnection.verbose;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
@@ -112,7 +114,7 @@ public class SubsystemDiscovery implements
ResourceDiscoveryComponent<BaseCompon
}
}
- if (Boolean.getBoolean("as7plugin.verbose")) {
+ if (verbose) {
log.info("total path: [" + path + "]");
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/VHostComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/VHostComponent.java
index 342bcba..4f67159 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/VHostComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/VHostComponent.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2005-2012 Red Hat, Inc.
+ * Copyright (C) 2005-2013 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -13,8 +13,8 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
package org.rhq.modules.plugins.jbossas7;
@@ -56,7 +56,7 @@ public class VHostComponent extends BaseComponent<VHostComponent>
implements Mea
}
report.addData(data);
} else
- log.warn("Could not get aliases for " + getAddress() +
": " + res.getFailureDescription());
+ getLog().warn("Could not get aliases for " + getAddress() +
": " + res.getFailureDescription());
} else {
leftovers.add(request);
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/WebRuntimeComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/WebRuntimeComponent.java
index 072f4d7..9573cfb 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/WebRuntimeComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/WebRuntimeComponent.java
@@ -1,6 +1,6 @@
/*
* RHQ Management Platform
- * Copyright (C) 2012 Red Hat, Inc.
+ * Copyright (C) 2005-2013 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -13,9 +13,10 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * along with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
+
package org.rhq.modules.plugins.jbossas7;
import java.io.File;
@@ -56,12 +57,12 @@ public class WebRuntimeComponent extends
BaseComponent<BaseComponent<?>> {
}
if (logFile != null) {
- if (log.isDebugEnabled()) {
+ if (getLog().isDebugEnabled()) {
if (logFile.isFile()) {
- log.debug("[" + resourceContext.getResourceKey() + "]
is using the response time log file ["
+ getLog().debug("[" + resourceContext.getResourceKey() +
"] is using the response time log file ["
+ logFile + "]");
} else {
- log.debug("The response time log file [" + logFile +
"] for ["
+ getLog().debug("The response time log file [" + logFile +
"] for ["
+ resourceContext.getResourceKey() + "] does not exist
yet.");
}
}
@@ -70,8 +71,8 @@ public class WebRuntimeComponent extends
BaseComponent<BaseComponent<?>> {
this.responseTimeLogParser.setExcludes(responseTimeConfig.getExcludes());
this.responseTimeLogParser.setTransforms(responseTimeConfig.getTransforms());
} else {
- if (log.isDebugEnabled()) {
- log.debug("Cannot monitor response time for [" +
resourceContext.getResourceKey()
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("Cannot monitor response time for [" +
resourceContext.getResourceKey()
+ "] - unknown log file location");
}
}
@@ -96,12 +97,12 @@ public class WebRuntimeComponent extends
BaseComponent<BaseComponent<?>> {
this.responseTimeLogParser.parseLog(callTimeData);
report.addData(callTimeData);
} catch (Exception e) {
- log.error("Failed to retrieve call-time metric '" +
RESPONSE_TIME_METRIC + "' for "
+ getLog().error("Failed to retrieve call-time metric
'" + RESPONSE_TIME_METRIC + "' for "
+ context.getResourceType() + " Resource with key
[" + context.getResourceKey() + "].",
e);
}
} else {
- log.error("The '" + RESPONSE_TIME_METRIC + "'
metric is enabled for " + context.getResourceType()
+ getLog().error("The '" + RESPONSE_TIME_METRIC +
"' metric is enabled for " + context.getResourceType()
+ " Resource with key [" + context.getResourceKey()
+ "], but no value is defined for the '"
+
ResponseTimeConfiguration.RESPONSE_TIME_LOG_FILE_CONFIG_PROP + "' connection
property.");
// TODO: Communicate this error back to the server for display in the
GUI.
@@ -147,13 +148,13 @@ public class WebRuntimeComponent extends
BaseComponent<BaseComponent<?>> {
String logFileName = String.format("rt/%s%s_rt.log",
virtualHost, contextRoot);
logFile = new File(logDir, logFileName);
} else {
- if (log.isDebugEnabled()) {
- log.debug("Unknown context root for: " +
getAddress());
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("Unknown context root for: " +
getAddress());
}
}
} else {
- if (log.isDebugEnabled()) {
- log.debug("Unknown virtual host for: " +
getAddress());
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("Unknown virtual host for: " +
getAddress());
}
}
} catch (Exception e) {
commit 1425354139324151a088ffb94cec2d7f7fef3dc6
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Dec 9 22:02:45 2013 -0500
fixing bugs in foreach with criteria query
diff --git a/modules/enterprise/remoting/cli/src/main/samples/modules/util.js
b/modules/enterprise/remoting/cli/src/main/samples/modules/util.js
index 18c34b3..7de3db0 100644
--- a/modules/enterprise/remoting/cli/src/main/samples/modules/util.js
+++ b/modules/enterprise/remoting/cli/src/main/samples/modules/util.js
@@ -57,7 +57,7 @@ exports.foreach = function (obj, fn) {
MeasurementDefinition: function(criteria) { return
MeasurementDefinitionManager.findMeasurementDefinitionsByCriteria(criteria); },
JPADriftChangeSet: function(criteria) { return
DriftManager.findDriftChangeSetsByCriteria(criteria); },
JPADrift: function(criteria) { return DriftManager.findDriftsByCriteria(criteria);
},
- MeasurementSchedule: function(criteria) { return
MeasurementScheduleManager,findSchedulesByCriteria(criteria); },
+ MeasurementSchedule: function(criteria) { return
MeasurementScheduleManager.findSchedulesByCriteria(criteria); },
OperationDefinition: function(criteria) { return
OperationManager.findOperationDefinitionsByCriteria(criteria); },
ResourceOperationHistory: function(criteria) { return
OperationManager.findResourceOperationHistoriesByCriteria(criteria); },
ResourceType: function(criteria) { return
ResourceTypeManager.findResourceTypesByCriteria(criteria); },
@@ -79,24 +79,24 @@ exports.foreach = function (obj, fn) {
fn(iterator.next());
}
} else if (obj instanceof java.util.Map) {
- var iterator = obj.entrySet().iterator()
+ var iterator = obj.entrySet().iterator();
while (iterator.hasNext()) {
var entry = iterator.next();
fn(entry.key, entry.value);
}
} else if (obj instanceof Criteria) {
var criteria = obj;
- var executeQuery = criteriaExecutors[criteria.persistentClass];
+ var executeQuery = criteriaExecutors[criteria.persistentClass.simpleName];
if (executeQuery == null) {
throw "No criteria executor found for " + criteria.getClass().name +
". A new executor may need to be added to " +
"this script.";
}
- var currentPage = executeQuery();
+ var currentPage = executeQuery(criteria);
while (!currentPage.isEmpty()) {
- util.foreach(currentPage, fn);
+ this.foreach(currentPage, fn);
if (currentPage.pageControl == null && currentPage.pageControlOverrides ==
null) {
reachedEnd = true;
} else {
@@ -107,7 +107,7 @@ exports.foreach = function (obj, fn) {
}
currentPage.clear();
- currentPage = executeQuery();
+ currentPage = executeQuery(criteria);
}
}
} else { // assume we have a generic object
@@ -349,22 +349,4 @@ exports.asHash = function(configuration) {
})(configuration);
return ret;
-}
-
-exports.walkTree = function(root, visitorFn, nodesProperty, filterFn) {
- var nodes = root[nodesProperty];
- var stack = [];
- var pushChildNodesOntoStack = function(node) {
- exports.foreach(node[nodesProperty], function(childNode) {
- stack.push(childNode);
- });
- }
-
- pushChildNodesOntoStack(root);
-
- while (stack.length > 0) {
- var node = stack.pop();
- pushChildNodesOntoStack(node);
-
- }
}
\ No newline at end of file
commit f53379ad5c34dab9b8c4de2c64b05bbb49c6eb7b
Author: Simeon Pinder <spinder(a)fulliautomatix.conchfritter.com>
Date: Mon Dec 9 17:17:43 2013 -0500
BZ 1039664 - one more udpate to logged warning to refer to documentation.
diff --git
a/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/RHQControl.java
b/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/RHQControl.java
index 8f6d0b0..24e4995 100644
---
a/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/RHQControl.java
+++
b/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/RHQControl.java
@@ -140,7 +140,8 @@ public class RHQControl {
// but there are no other rpms other than the agent, so if we see
this jboss-on-* location, we know the agent is here.
log.warn("An agent RPM installation was found in ["
+ jonDir
- + "]!!! You will not be able to successfully run this older
agent anymore. You should manually remove it.");
+ + "]!!! You will not be able to successfully run this older
agent anymore. You should consult the "
+ +"install documentation about manually removing and/or
merging the old and new agent.");
return true;
} else {
return false;
commit 2fb6863b950dfa2df3b0cf8b2dfc2251dbc3b223
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon Dec 9 15:37:43 2013 -0500
BZ 1037855 - related to the fix for BZ 971556 - the last commit for this BZ caused the
api check to fail.
putting back the obsolete, but public, constants and marking them as deprecated.
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerPluginConfigurationProperties.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerPluginConfigurationProperties.java
index 7c30135..c2a1ba1 100644
---
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerPluginConfigurationProperties.java
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerPluginConfigurationProperties.java
@@ -45,6 +45,8 @@ public class ApplicationServerPluginConfigurationProperties {
public static final String SHUTDOWN_MBEAN_OPERATION_CONFIG_PROP =
"shutdownMBeanOperation";
public static final String SHUTDOWN_METHOD_CONFIG_PROP = "shutdownMethod";
public static final String SCRIPT_PREFIX_CONFIG_PROP = "scriptPrefix";
+ @Deprecated
+ public static final String AVAIL_CHECK_PERIOD_CONFIG_PROP =
"availabilityCheckPeriod";
private ApplicationServerPluginConfigurationProperties() {
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/helper/ServerPluginConfiguration.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/helper/ServerPluginConfiguration.java
index 4695e61..d4c7e48 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/helper/ServerPluginConfiguration.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/helper/ServerPluginConfiguration.java
@@ -44,6 +44,8 @@ public class ServerPluginConfiguration {
public static final String LOG_DIR = "logDir";
public static final String PRODUCT_TYPE = "productType";
public static final String HOST_CONFIG_FILE = "hostConfigFile";
+ @Deprecated
+ public static final String AVAIL_CHECK_PERIOD_CONFIG_PROP =
"availabilityCheckPeriod";
}
private Configuration pluginConfig;
@@ -144,4 +146,13 @@ public class ServerPluginConfiguration {
hostConfigFile.toString() : null);
}
+ @Deprecated
+ public Integer getAvailabilityCheckPeriod() {
+ return 0;
+ }
+
+ @Deprecated
+ public void setAvailabilityCheckPeriod(Integer availabilityCheckPeriod) {
+ }
+
}
diff --git
a/modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/JBossASServerComponent.java
b/modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/JBossASServerComponent.java
index 873caaa..01c795f 100644
---
a/modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/JBossASServerComponent.java
+++
b/modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/JBossASServerComponent.java
@@ -139,6 +139,8 @@ public class JBossASServerComponent<T extends
ResourceComponent<?>> implements M
public static final String SHUTDOWN_MBEAN_OPERATION_CONFIG_PROP =
"shutdownMbeanOperation";
public static final String SHUTDOWN_METHOD_CONFIG_PROP = "shutdownMethod";
public static final String JAVA_HOME_PATH_CONFIG_PROP = "javaHomePath";
+ @Deprecated
+ public static final String AVAIL_CHECK_PERIOD_CONFIG_PROP =
"availabilityCheckPeriod";
public static final String BINDING_ADDRESS_CONFIG_PROP = "bindingAddress";
commit 8049dd0690edd46a21cd6e8f5a776f303d36ee9d
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Mon Dec 9 14:13:52 2013 -0500
[998945] Too many statement timeout exceptions in server log
[999165] Frequent statement timeouts while updating availabilities
I did a visual inspection of code looking for things that may
contribute to the slow updates and/or timeouts reported in these BZs. In
general the updates for availReports (infrequent but can spike in
certain scenarios, 1 per avail report) and availPing
(frequent, 1 per minute per agent) should be very fast and not in
themselves be an issue. Slowness in these queries is likely caused by the
Agent table being locked by some other longer running transaction.
Everything looked pretty clean with one exception. When backfilling an agent
due to an agent shutdown or suspect job detection, it looked like we
may have locked th agent table for the duration of the backfilling, which
can be a fairly large operation for a big agent inventory. I'm not sure
this is the problem, but this commit should allevaite the Agent table
locking while the backfilling is performed.
Also:
- move some inline JPA updates on the Agent to be NamedQuery in the Agent
entity. No need to build those every time we update an agent ping time.
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Agent.java
b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Agent.java
index 788e189..186c968 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Agent.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/resource/Agent.java
@@ -75,7 +75,7 @@ import org.rhq.core.domain.cloud.Server;
+ "SELECT a.id " //
+ " FROM Agent a " //
+ " WHERE a.server.name = :serverName " //
- + " AND a.status <> 0 "), //
+ + " AND a.status <> 0 "), //
@NamedQuery(name = Agent.QUERY_FIND_ALL_WITH_STATUS, query = "" //
+ "SELECT a.id " //
+ " FROM Agent a " //
@@ -83,7 +83,7 @@ import org.rhq.core.domain.cloud.Server;
@NamedQuery(name = Agent.QUERY_UPDATE_CLEAR_STATUS_BY_IDS, query = "" //
+ "UPDATE Agent a " //
+ " SET a.status = 0 " //
- + " WHERE a.id IN ( :agentIds ) "), //
+ + " WHERE a.id IN ( :agentIds ) "), //
@NamedQuery(name = Agent.QUERY_FIND_BY_AFFINITY_GROUP, query = "" //
+ "SELECT a " //
+ " FROM Agent a " //
@@ -137,7 +137,16 @@ import org.rhq.core.domain.cloud.Server;
@NamedQuery(name = Agent.QUERY_UPDATE_STATUS_FOR_ALL, query = "" //
+ " UPDATE Agent a " //
+ " SET a.status = -1 " // negative numbers so that bitmask strategy
does not conflict with this one
- + " WHERE a.status = 0 ") //
+ + " WHERE a.status = 0 "), //
+ @NamedQuery(name = Agent.QUERY_UPDATE_LAST_AVAIL_REPORT, query = "" //
+ + " UPDATE Agent a " //
+ + " SET lastAvailabilityReport = :reportTime, backFilled = FALSE "
//
+ + " WHERE id = :agentId "), //
+ @NamedQuery(name = Agent.QUERY_UPDATE_LAST_AVAIL_PING, query = "" //
+ + " UPDATE Agent a " //
+ + " SET lastAvailabilityPing = :now, backFilled = FALSE " //
+ + " WHERE name = :agentName ") //
+
})
@SequenceGenerator(allocationSize = org.rhq.core.domain.util.Constants.ALLOCATION_SIZE,
name = "RHQ_AGENT_ID_SEQ", sequenceName = "RHQ_AGENT_ID_SEQ")
@Table(name = "RHQ_AGENT")
@@ -172,7 +181,10 @@ public class Agent implements Serializable {
public static final String QUERY_UPDATE_STATUS_BY_MEASUREMENT_BASELINE =
"Agent.updateStatusByMeasurementBasleine";
public static final String QUERY_UPDATE_STATUS_BY_AGENT =
"Agent.updateStatusByAgent";
public static final String QUERY_UPDATE_STATUS_FOR_ALL =
"Agent.updateStatusForAll";
-
+
+ public static final String QUERY_UPDATE_LAST_AVAIL_REPORT =
"Agent.updateLastAvailReport";
+ public static final String QUERY_UPDATE_LAST_AVAIL_PING =
"Agent.updateLastAvailPing";
+
// this value is set, when authorized user wants to reset the token
public static final String SECURITY_TOKEN_RESET = "@#$reset$#@";
@@ -237,7 +249,8 @@ public class Agent implements Serializable {
* @param remoteEndpoint
* @param agentToken
*/
- public Agent(@NotNull String name, String address, int port, String remoteEndpoint,
String agentToken) {
+ public Agent(@NotNull
+ String name, String address, int port, String remoteEndpoint, String agentToken) {
this.name = name;
this.address = address;
this.port = port;
@@ -269,7 +282,8 @@ public class Agent implements Serializable {
return this.name;
}
- public void setName(@NotNull String name) {
+ public void setName(@NotNull
+ String name) {
this.name = name;
}
@@ -284,7 +298,8 @@ public class Agent implements Serializable {
return this.address;
}
- public void setAddress(@NotNull String address) {
+ public void setAddress(@NotNull
+ String address) {
this.address = address;
}
@@ -313,7 +328,8 @@ public class Agent implements Serializable {
return agentToken;
}
- public void setAgentToken(@NotNull String agentToken) {
+ public void setAgentToken(@NotNull
+ String agentToken) {
this.agentToken = agentToken;
}
@@ -392,7 +408,7 @@ public class Agent implements Serializable {
/**
* Returns the {@link AffinityGroup} this agent currently belongs to.
- *
+ *
* @return the {@link AffinityGroup} this agent currently belongs to
*/
public AffinityGroup getAffinityGroup() {
@@ -401,7 +417,7 @@ public class Agent implements Serializable {
/**
* Sets the {@link AffinityGroup} this agent should belong to.
- *
+ *
* @param affinityGroup the {@link AffinityGroup} this agent should belong to
*/
public void setAffinityGroup(AffinityGroup affinityGroup) {
@@ -410,7 +426,7 @@ public class Agent implements Serializable {
/**
* Returns the {@link Server} this agent is currently communicating to.
- *
+ *
* @return the {@link Server} this agent is currently communicating to
*/
public Server getServer() {
@@ -418,8 +434,8 @@ public class Agent implements Serializable {
}
/**
- * Sets the {@link Server} this agent should communicate with.
- *
+ * Sets the {@link Server} this agent should communicate with.
+ *
* @param server the {@link Server} this agent should communicate with
*/
public void setServer(Server server) {
@@ -429,7 +445,7 @@ public class Agent implements Serializable {
/**
* Returns 0 if this agent is current. Otherwise, returns a mask of {@link
Agent.Status}
* elements corresponding to the updates that have occurred that are related to this
agent.
- *
+ *
* @return 0 if this agent is current. Otherwise, returns a mask of {@link
Agent.Status}
* elements corresponding to the updates that have occurred that are related to this
agent.
*/
@@ -440,8 +456,8 @@ public class Agent implements Serializable {
/**
* If this status was non-zero, some scheduled job would have had to come along to
perform
* some work on behalf of this agent. After that work is complete, the status can be
reset
- * (set to 0) signifying that no further work needs to be done on this agent (as long
as the
- * status remains 0).
+ * (set to 0) signifying that no further work needs to be done on this agent (as long
as the
+ * status remains 0).
*/
public void clearStatus() {
status = 0;
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
index 1c23836..2d4d58d 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerBean.java
@@ -242,8 +242,7 @@ public class AgentManagerBean implements AgentManagerLocal {
long maximumQuietTimeAllowed = 300000L;
try {
- String prop = systemManager.getUnmaskedSystemSettings(true).get(
- SystemSetting.AGENT_MAX_QUIET_TIME_ALLOWED);
+ String prop =
systemManager.getUnmaskedSystemSettings(true).get(SystemSetting.AGENT_MAX_QUIET_TIME_ALLOWED);
if (prop != null) {
maximumQuietTimeAllowed = Long.parseLong(prop);
}
@@ -286,7 +285,7 @@ public class AgentManagerBean implements AgentManagerLocal {
// about a downed agent once, at the time it is first backfilled.
if (!record.isBackFilled()) {
LOG.info("Have not heard from agent [" + record.getAgentName()
+ "] since ["
- + new Date(record.getLastAvailabilityPing()) + "]. Will be
backfilled since we suspect it is down");
+ + new Date(record.getLastAvailabilityPing()) + "]. Will be
backfilled since we suspect it is down");
agentManager.backfillAgentInNewTransaction(subjectManager.getOverlord(),
record.getAgentName(),
record.getAgentId());
@@ -304,20 +303,27 @@ public class AgentManagerBean implements AgentManagerLocal {
// problems
AvailabilityReportSerializer.getSingleton().lock(agentName);
try {
- // This marks the Agent as backfilled=true
- agentManager.setAgentBackfilled(agentId, true);
-
// This marks the top-level platform DOWN since we have not heard from it and
all
// child resources UNKNOWN since they are not reporting and may very well be
up
availabilityManager.updateAgentResourceAvailabilities(agentId,
AvailabilityType.DOWN,
AvailabilityType.UNKNOWN);
+ // This marks the Agent as backfilled=true. Although doing this in its own
transaction means the
+ // agent will be reflected as backfilled before the resource availability
changes are committed, that
+ // should not matter, as it affects only availability reporting which 1) is
locked out (see a few line above)
+ // and 2) at worst would only request a full avail report anyway, when
detecting a backfilled agent.
+ // What this buys is it shortens the locking on the agent table, because
backfilling a large inventory
+ // can take time. Performing this after the backfill to minimize the window
between the commits as
+ // much as possible.
+ agentManager.setAgentBackfilledInNewTransaction(agentId, true);
+
} finally {
AvailabilityReportSerializer.getSingleton().unlock(agentName);
}
}
- public void setAgentBackfilled(int agentId, boolean backfilled) {
+ @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
+ public void setAgentBackfilledInNewTransaction(int agentId, boolean backfilled) {
Query query = entityManager.createNamedQuery(Agent.QUERY_SET_AGENT_BACKFILLED);
query.setParameter("agentId", agentId);
query.setParameter("backfilled", backfilled);
@@ -662,12 +668,7 @@ public class AgentManagerBean implements AgentManagerLocal {
* since we already know we have to update the agent row with the last avail ping
time, might as well
* set the backfilled to false here (as opposed to called
agentManager.setBackfilled(agentId, false)
*/
- String updateStatement = "" //
- + "UPDATE Agent " //
- + " SET lastAvailabilityPing = :now, backFilled = FALSE " //
- + " WHERE name = :agentName ";
-
- Query query = entityManager.createQuery(updateStatement);
+ Query query =
entityManager.createNamedQuery(Agent.QUERY_UPDATE_LAST_AVAIL_PING);
query.setParameter("now", now);
query.setParameter("agentName", agentName);
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerLocal.java
index 7e2c3b9..4e07a08 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/AgentManagerLocal.java
@@ -44,11 +44,11 @@ import org.rhq.enterprise.server.agentclient.AgentClient;
@Local
public interface AgentManagerLocal {
- /**
+ /**
* Call this method to set the agent DOWN and mark it 'backfilled'. Also,
sets all of its monitored resources
* to an UNKNOWN avail state since the agent is no longer reporting availability.
Done in its own transaction to
* avoid large transactions if many agents are simultaneously backfilled.
- *
+ *
* @param subject
* @param agentName
* @param agentId
@@ -113,15 +113,17 @@ public interface AgentManagerLocal {
* @return list of all known agents in inventory
* @deprecated Use <code>findAgentsByCriteria()</code> instead
*/
+ @Deprecated
List<Agent> getAllAgents();
/**
* Returns a collection of paged agents, filtered by Server (if non-null).
*
- * @param serverId the server to filter the agent list by. pass null to view
unfiltered results.
+ * @param serverId the server to filter the agent list by. pass null to view
unfiltered results.
* @return list of all known agents in inventory
* @deprecated Use <code>findAgentsByCriteria()</code> instead
*/
+ @Deprecated
PageList<Agent> getAgentsByServer(Subject subject, Integer serverId,
PageControl pageControl);
/**
@@ -136,7 +138,7 @@ public interface AgentManagerLocal {
* name exists, <code>null</code> is returned.
* This method is very efficient if you want to find a single agent by its name.
* If you need to get more than one agent, you could use
<code>findAgentsByCriteria</code>.
- *
+ *
* @param agentName
*
* @return the agent whose name matches the given name; <code>null</code>
if there is no agent with the given name
@@ -184,7 +186,7 @@ public interface AgentManagerLocal {
/**
* Given a resource ID, this will return the agent responsible for servicing that
resource.
- * @param subject
+ * @param subject
*
* @param resourceId
*
@@ -246,9 +248,9 @@ public interface AgentManagerLocal {
/**
* Determines if the given agent version is supported by this server. In other words,
this will
* return <code>true</code> if this server can talk to any agent of the
given version.
- *
+ *
* @param agentVersion the version of the agent to verify
- *
+ *
* @return <code>true</code> if this server can support an agent with the
given version; if the server
* knows it cannot communicate successfully with an agent of that version,
<code>false</code>
* will be returned
@@ -259,9 +261,9 @@ public interface AgentManagerLocal {
* Returns the path on the server's file system where the agent update version
file is found.
* The agent update version file contains information about the agent update binary,
such
* as what version it is.
- *
+ *
* @return agent update version file location
- *
+ *
* @throws Exception if the file could not be created or found
*/
File getAgentUpdateVersionFile() throws Exception;
@@ -271,9 +273,9 @@ public interface AgentManagerLocal {
* of some name/value pairs.
* The agent update version file contains information about the agent update binary,
such
* as what version it is.
- *
+ *
* @return version properties found in the agent update version file.
- *
+ *
* @throws Exception if cannot read the agent update version file
*/
Properties getAgentUpdateVersionFileContent() throws Exception;
@@ -281,9 +283,9 @@ public interface AgentManagerLocal {
/**
* Returns the path on the server's file system where the agent update binary is
found.
* This is the actual agent distribution that can be installed on the agent
machines.
- *
+ *
* @return agent update binary location
- *
+ *
* @throws Exception if the binary file does not exist
*/
File getAgentUpdateBinaryFile() throws Exception;
@@ -292,13 +294,18 @@ public interface AgentManagerLocal {
* DO NOT USE THIS. You should be using one of the getAgentUpdateXXX methods directly
rather
* than looking in the download directory. Not all agent update files are located in
this download
* directory anymore. This API will be removed from the public API in the near
future.
- *
+ *
* @deprecated
*/
@Deprecated
File getAgentDownloadDir() throws Exception;
- void setAgentBackfilled(int agentId, boolean backfilled);
+ /**
+ * Do this in its own transaction to minimize locking on the agent table.
+ * @param agentId
+ * @param backfilled
+ */
+ void setAgentBackfilledInNewTransaction(int agentId, boolean backfilled);
/**
* Returns <code>true</code> if the agent is "suspect" and has
been backfilled. A "suspect agent" means one that the
@@ -313,7 +320,7 @@ public interface AgentManagerLocal {
/**
* Returns <code>true</code> indicating successful ping of agent. Exposed
so server could
- * initiate N requests so gwt clients wont face Single Origin Policy issues.
+ * initiate N requests so gwt clients wont face Single Origin Policy issues.
*
* @param agentId the id of the agent
*
@@ -323,17 +330,17 @@ public interface AgentManagerLocal {
/**
* Process a ping request from an agent, performing any requested actions and
returning any requested data.
- *
+ *
* @param request
* @return The updated request object.
*/
public PingRequest handlePingRequest(PingRequest request);
-
+
/**
* Fetches the agents based on provided criteria.
- *
+ *
* Subject needs MANAGE_SETTINGS and MANAGE_INVENTORY permissions.
- *
+ *
* @param subject caller
* @param criteria the criteria
* @return list of agents
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/AvailabilityManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/AvailabilityManagerBean.java
index 34922fe..629069f 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/AvailabilityManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/AvailabilityManagerBean.java
@@ -54,6 +54,7 @@ import org.rhq.core.domain.discovery.AvailabilityReport.Datum;
import org.rhq.core.domain.measurement.Availability;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.ResourceAvailability;
+import org.rhq.core.domain.resource.Agent;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.domain.resource.Resource;
import org.rhq.core.domain.resource.composite.ResourceIdWithAvailabilityComposite;
@@ -1073,12 +1074,7 @@ public class AvailabilityManagerBean implements
AvailabilityManagerLocal, Availa
* since we already know we have to update the agent row with the last avail
report time, might as well
* set the backfilled to false here (as opposed to called
agentManager.setBackfilled(agentId, false)
*/
- String updateStatement = "" //
- + "UPDATE Agent " //
- + " SET lastAvailabilityReport = :reportTime, backFilled = FALSE
" //
- + " WHERE id = :agentId ";
-
- Query query = entityManager.createQuery(updateStatement);
+ Query query =
entityManager.createNamedQuery(Agent.QUERY_UPDATE_LAST_AVAIL_REPORT);
query.setParameter("reportTime", System.currentTimeMillis());
query.setParameter("agentId", agentId);
commit f5a749f6e7e2cf7a16de063b7edd7341ca7fd8b7
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Dec 9 14:46:45 2013 -0500
add support in foreach for paging over criteria query results
This is basically a port of the code in CriteriaQuery.java
diff --git a/modules/enterprise/remoting/cli/src/main/samples/modules/util.js
b/modules/enterprise/remoting/cli/src/main/samples/modules/util.js
index b67eebc..18c34b3 100644
--- a/modules/enterprise/remoting/cli/src/main/samples/modules/util.js
+++ b/modules/enterprise/remoting/cli/src/main/samples/modules/util.js
@@ -13,32 +13,104 @@
/**
+ * <p>
* If obj is a JS array or a java.util.Collection, each element is passed to
- * the callback function. If obj is a java.util.Map, each map entry is passed
- * to the callback function as a key/value pair. If obj is none of the
- * aforementioned types, it is treated as a generic object and each of its
- * properties is passed to the callback function as a name/value pair.
+ * the callback function.
+ * </p>
+ * <p>
+ * If obj is a java.util.Map, each map entry is passed to the callback function
+ * as a key/value pair.
+ * </p>
+ * <p>
+ * If obj is a Criteria object, then the corresponding find by criteria method
+ * will be invoked. Each entity in the result set will be passed to the callback
+ * function. This function performs paging implicitly such that the callback will
+ * be invoked for all entities in the result set, even if it requires multiple
+ * criteria query finder method invocations.
+ * </p>
+ * <p>
+ * If obj is none of the aforementioned types, it is treated as a generic object
+ * and each of its properties is passed to the callback function as a name/value pair.
+ * </p>
*/
exports.foreach = function (obj, fn) {
+ var criteriaExecutors = {
+ Alert: function(criteria) { return AlertManager.findAlertsByCriteria(criteria); },
+ AlertDefinition: function(criteria) { return
AlertDefinitionManager.findAlertDefinitionsByCriteria(criteria); },
+ Agent: function(criteria) { return AgentManager.findAgentsByCriteria(criteria); },
+ Availability: function(criteria) { return
AvailabilityManager.findAvailabilityByCriteria(criteria); },
+ Bundle: function(criteria) { return BundleManager.findBundlesByCriteria(criteria);
},
+ BundleDeployment: function(criteria) { return
BundleManager.findBundleDeploymentsByCriteria(criteria); },
+ BundleDestination: function(criteria) { return
BundleManager.findBundleDestinationsByCriteria(criteria); },
+ BundleFile: function(criteria) { return
BundleManager.findBundleFilesByCriteria(criteria); },
+ BundleGroup: function(criteria) { return
BundleManager.findBundleGroupsByCriteria(criteria); },
+ BundleResourceDeployment: function(criteria) { return
BundleManager.findBundleResourceDeploymentsByCriteria(criteria); },
+ BundleVersion: function(criteria) { return
BundleManager.findBundleVersionsByCriteria(criteria); },
+ DriftDefinition: function(criteria) { return
DriftManager.findDriftDefinitionsByCriteria(criteria); },
+ DriftDefinitionTemplate: function(criteria) { return
DriftDefinitionTemplateManager.findTemplatesByCriteria(criteria); },
+ Event: function(criteria) { return EventManager.findEventsByCriteria(criteria); },
+ GroupOperationHistory: function(criteria) { return
OperationManager.findGroupOperationHistoriesByCriteria(criteria); },
+ GroupPluginConfigurationUpdate: function(criteria) { return
ConfigurationManager.findGroupPluginConfigurationUpdatesByCriteria(criteria); },
+ GroupResourceConfigurationUpdate: function(criteria) { return
ConfigurationManager.findGroupResourceConfigurationUpdatesByCriteria(criteria); },
+ InstalledPackage: function(criteria) { return
ContentManager.findInstalledPackagesByCriteria(criteria); },
+ MeasurementDataTrait: function(criteria) { return
MeasurementDataManager.findTraitsByCriteria(criteria); },
+ MeasurementDefinition: function(criteria) { return
MeasurementDefinitionManager.findMeasurementDefinitionsByCriteria(criteria); },
+ JPADriftChangeSet: function(criteria) { return
DriftManager.findDriftChangeSetsByCriteria(criteria); },
+ JPADrift: function(criteria) { return DriftManager.findDriftsByCriteria(criteria);
},
+ MeasurementSchedule: function(criteria) { return
MeasurementScheduleManager,findSchedulesByCriteria(criteria); },
+ OperationDefinition: function(criteria) { return
OperationManager.findOperationDefinitionsByCriteria(criteria); },
+ ResourceOperationHistory: function(criteria) { return
OperationManager.findResourceOperationHistoriesByCriteria(criteria); },
+ ResourceType: function(criteria) { return
ResourceTypeManager.findResourceTypesByCriteria(criteria); },
+ Resource: function(criteria) { return
ResourceManager.findResourcesByCriteria(criteria); },
+ Role: function(criteria) { return RoleManager.findRolesByCriteria(criteria); },
+ SavedSearch: function(criteria) { return
SavedSearchManager.findSavedSearchesByCriteria(criteria); },
+ StorageNode: function(criteria) { return
StorageNodeManager.findStorageNodesByCriteria(criteria); },
+ Subject: function(criteria) { return SubjectManager.findSubjectsByCriteria(criteria);
},
+ Tag: function(criteria) { return TagManager.findTagsByCriteria(criteria); }
+ };
+
if (obj instanceof Array) {
for (i in obj) {
fn(obj[i]);
}
- }
- else if (obj instanceof java.util.Collection) {
+ } else if (obj instanceof java.util.Collection) {
var iterator = obj.iterator();
while (iterator.hasNext()) {
fn(iterator.next());
}
- }
- else if (obj instanceof java.util.Map) {
+ } else if (obj instanceof java.util.Map) {
var iterator = obj.entrySet().iterator()
while (iterator.hasNext()) {
var entry = iterator.next();
fn(entry.key, entry.value);
}
- }
- else { // assume we have a generic object
+ } else if (obj instanceof Criteria) {
+ var criteria = obj;
+ var executeQuery = criteriaExecutors[criteria.persistentClass];
+
+ if (executeQuery == null) {
+ throw "No criteria executor found for " + criteria.getClass().name +
". A new executor may need to be added to " +
+ "this script.";
+ }
+
+ var currentPage = executeQuery();
+
+ while (!currentPage.isEmpty()) {
+ util.foreach(currentPage, fn);
+ if (currentPage.pageControl == null && currentPage.pageControlOverrides ==
null) {
+ reachedEnd = true;
+ } else {
+ if (currentPage.pageControlOverrides != null) {
+ currentPage.pageControlOverrides.pageNumber =
currentPage.pageControlOverrides.pageNumber + 1;
+ } else {
+ criteria.setPaging(currentPage.pageControl.pageNumber + 1,
currentPage.pageControl.pageSize);
+ }
+
+ currentPage.clear();
+ currentPage = executeQuery();
+ }
+ }
+ } else { // assume we have a generic object
for (i in obj) {
fn(i, obj[i]);
}
@@ -277,4 +349,22 @@ exports.asHash = function(configuration) {
})(configuration);
return ret;
+}
+
+exports.walkTree = function(root, visitorFn, nodesProperty, filterFn) {
+ var nodes = root[nodesProperty];
+ var stack = [];
+ var pushChildNodesOntoStack = function(node) {
+ exports.foreach(node[nodesProperty], function(childNode) {
+ stack.push(childNode);
+ });
+ }
+
+ pushChildNodesOntoStack(root);
+
+ while (stack.length > 0) {
+ var node = stack.pop();
+ pushChildNodesOntoStack(node);
+
+ }
}
\ No newline at end of file
commit 3ba8a5a2d17264cb37e80f86907d1198b31c7310
Author: John Sanda <jsanda(a)redhat.com>
Date: Wed Dec 4 09:21:04 2013 -0500
add debug logging
diff --git
a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
index f9d355e..33528e6 100644
---
a/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
+++
b/modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
@@ -52,7 +52,6 @@ import org.joda.time.Duration;
import org.rhq.core.domain.measurement.MeasurementDataNumeric;
import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite;
-import org.rhq.core.util.StringUtil;
import org.rhq.server.metrics.domain.AggregateNumericMetric;
import org.rhq.server.metrics.domain.AggregateType;
import org.rhq.server.metrics.domain.MetricsIndexEntry;
@@ -158,68 +157,71 @@ public class MetricsServer {
public Iterable<MeasurementDataNumericHighLowComposite> findDataForResource(int
scheduleId, long beginTime,
long endTime, int numberOfBuckets) {
+ Stopwatch stopwatch = new Stopwatch().start();
+ try {
+ DateTime begin = new DateTime(beginTime);
- if (log.isDebugEnabled()) {
- log.debug("Querying for metric data using parameters [scheduleId: "
+ scheduleId + ", beginTime: " +
- beginTime + ", endTime: " + endTime + ", numberOfBuckets:
" + numberOfBuckets + "]");
- }
-
- DateTime begin = new DateTime(beginTime);
+ if (dateTimeService.isInRawDataRange(begin)) {
+ Iterable<RawNumericMetric> metrics = dao.findRawMetrics(scheduleId,
beginTime, endTime);
+ return createRawComposites(metrics, beginTime, endTime,
numberOfBuckets);
+ }
- if (dateTimeService.isInRawDataRange(begin)) {
- Iterable<RawNumericMetric> metrics = dao.findRawMetrics(scheduleId,
beginTime, endTime);
- return createRawComposites(metrics, beginTime, endTime, numberOfBuckets);
- }
+ Iterable<AggregateNumericMetric> metrics = null;
+ if (dateTimeService.isIn1HourDataRange(begin)) {
+ metrics = dao.findOneHourMetrics(scheduleId, beginTime, endTime);
+ } else if (dateTimeService.isIn6HourDataRnage(begin)) {
+ metrics = dao.findSixHourMetrics(scheduleId, beginTime, endTime);
+ } else if (dateTimeService.isIn24HourDataRnage(begin)) {
+ metrics = dao.findTwentyFourHourMetrics(scheduleId, beginTime, endTime);
+ } else {
+ throw new IllegalArgumentException("beginTime[" + beginTime +
"] is outside the accepted range.");
+ }
- Iterable<AggregateNumericMetric> metrics = null;
- if (dateTimeService.isIn1HourDataRange(begin)) {
- metrics = dao.findOneHourMetrics(scheduleId, beginTime, endTime);
- } else if (dateTimeService.isIn6HourDataRnage(begin)) {
- metrics = dao.findSixHourMetrics(scheduleId, beginTime, endTime);
- } else if (dateTimeService.isIn24HourDataRnage(begin)) {
- metrics = dao.findTwentyFourHourMetrics(scheduleId, beginTime, endTime);
- } else {
- throw new IllegalArgumentException("beginTime[" + beginTime +
"] is outside the accepted range.");
+ return createComposites(metrics, beginTime, endTime, numberOfBuckets);
+ } finally {
+ stopwatch.stop();
+ if (log.isDebugEnabled()) {
+ log.debug("Retrieved resource data for [scheduleId: " +
scheduleId + ", beginTime: " + beginTime +
+ ", endTime: " + endTime + "] in " +
stopwatch.elapsed(TimeUnit.MILLISECONDS) + " ms");
+ }
}
-
- return createComposites(metrics, beginTime, endTime, numberOfBuckets);
}
public List<MeasurementDataNumericHighLowComposite>
findDataForGroup(List<Integer> scheduleIds, long beginTime,
long endTime, int numberOfBuckets) {
- if (log.isDebugEnabled()) {
- log.debug("Querying for metric data using parameters [scheduleIds:
" + scheduleIds + ", beingTime: " +
- beginTime + ", endTime: " + endTime + ", numberOfBuckets:
" + numberOfBuckets + "]");
- }
+ Stopwatch stopwatch = new Stopwatch().start();
+ try {
+ DateTime begin = new DateTime(beginTime);
- DateTime begin = new DateTime(beginTime);
+ if (dateTimeService.isInRawDataRange(begin)) {
+ Iterable<RawNumericMetric> metrics =
dao.findRawMetrics(scheduleIds, beginTime, endTime);
+ return createRawComposites(metrics, beginTime, endTime,
numberOfBuckets);
+ }
- if (dateTimeService.isInRawDataRange(begin)) {
- Iterable<RawNumericMetric> metrics = dao.findRawMetrics(scheduleIds,
beginTime, endTime);
- return createRawComposites(metrics, beginTime, endTime, numberOfBuckets);
- }
+ Iterable<AggregateNumericMetric> metrics = null;
+ if (dateTimeService.isIn1HourDataRange(begin)) {
+ metrics = dao.findOneHourMetrics(scheduleIds, beginTime, endTime);
+ } else if (dateTimeService.isIn6HourDataRnage(begin)) {
+ metrics = dao.findSixHourMetrics(scheduleIds, beginTime, endTime);
+ } else if (dateTimeService.isIn24HourDataRnage(begin)) {
+ metrics = dao.findTwentyFourHourMetrics(scheduleIds, beginTime,
endTime);
+ } else {
+ throw new IllegalArgumentException("beginTime[" + beginTime +
"] is outside the accepted range.");
+ }
- Iterable<AggregateNumericMetric> metrics = null;
- if (dateTimeService.isIn1HourDataRange(begin)) {
- metrics = dao.findOneHourMetrics(scheduleIds, beginTime, endTime);
- } else if (dateTimeService.isIn6HourDataRnage(begin)) {
- metrics = dao.findSixHourMetrics(scheduleIds, beginTime, endTime);
- } else if (dateTimeService.isIn24HourDataRnage(begin)) {
- metrics = dao.findTwentyFourHourMetrics(scheduleIds, beginTime, endTime);
- } else {
- throw new IllegalArgumentException("beginTime[" + beginTime +
"] is outside the accepted range.");
+ return createComposites(metrics, beginTime, endTime, numberOfBuckets);
+ } finally {
+ stopwatch.stop();
+ if (log.isDebugEnabled()) {
+ log.debug("Retrieved resource group data for [scheduleIds: " +
scheduleIds + ", beginTime: " +
+ beginTime + ", endTime: " + endTime + "] in " +
stopwatch.elapsed(TimeUnit.MILLISECONDS) + " ms");
+ }
}
-
- return createComposites(metrics, beginTime, endTime, numberOfBuckets);
}
public AggregateNumericMetric getSummaryAggregate(int scheduleId, long beginTime,
long endTime) {
- long start = System.currentTimeMillis();
+ Stopwatch stopwatch = new Stopwatch().start();
try {
- if (log.isDebugEnabled()) {
- log.debug("Calculating resource summary aggregate for [scheduleId:
" + scheduleId + ", beginTime: " +
- beginTime + ", endTime: " + endTime + "]");
- }
DateTime begin = new DateTime(beginTime);
if (dateTimeService.isInRawDataRange(begin)) {
@@ -240,9 +242,11 @@ public class MetricsServer {
return calculateAggregate(metrics, beginTime);
} finally {
- long end = System.currentTimeMillis();
+ stopwatch.stop();
if (log.isDebugEnabled()) {
- log.debug("Finished calculating resource summary aggregate in "
+ (end - start) + " ms");
+ log.debug("Finished calculating resource summary aggregate for
[scheduleId: " + scheduleId +
+ ", beginTime: " + beginTime + ", endTime: " +
endTime + "] in " +
+ stopwatch.elapsed(TimeUnit.MILLISECONDS) + " ms");
}
}
}
@@ -283,12 +287,8 @@ public class MetricsServer {
}
public AggregateNumericMetric getSummaryAggregate(List<Integer> scheduleIds,
long beginTime, long endTime) {
- long start = System.currentTimeMillis();
+ Stopwatch stopwatch = new Stopwatch().start();
try {
- if (log.isDebugEnabled()) {
- log.debug("Calculating group summary aggregate for [scheduleIds:
[" + StringUtil.listToString(
- scheduleIds) + "], beginTime: " + beginTime + ",
endTime: " + endTime + "]");
- }
DateTime begin = new DateTime(beginTime);
if (dateTimeService.isInRawDataRange(new DateTime(beginTime))) {
@@ -309,9 +309,11 @@ public class MetricsServer {
return calculateAggregate(metrics, beginTime);
} finally {
- long end = System.currentTimeMillis();
+ stopwatch.stop();
if (log.isDebugEnabled()) {
- log.debug("Finished calculating group summary aggregate in " +
(end - start) + " ms");
+ log.debug("Finished calculatig group summary aggregate for
[scheduleIds: " + scheduleIds +
+ ", beginTime: " + beginTime + ", endTime: " +
endTime + "] in " +
+ stopwatch.elapsed(TimeUnit.MILLISECONDS) + " ms");
}
}
}
commit a55ceef88c8e8bfce8b3d26cb025cc7f8a944257
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon Dec 9 12:49:46 2013 -0500
BZ 1039664 - log warning if jon agent rpm is detected
diff --git
a/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/RHQControl.java
b/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/RHQControl.java
index e4c27f8..8f6d0b0 100644
---
a/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/RHQControl.java
+++
b/modules/enterprise/server/server-control/src/main/java/org/rhq/server/control/RHQControl.java
@@ -26,6 +26,7 @@ package org.rhq.server.control;
import java.io.Console;
import java.io.File;
+import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
@@ -74,6 +75,8 @@ public class RHQControl {
String commandName = findCommand(commands, args);
command = commands.get(commandName);
+ logWarningIfAgentRPMIsInstalled(command);
+
validateInstallCommand(command, args);
// in case the installer gets killed, prepare the shutdown hook to try
the undo
@@ -119,6 +122,47 @@ public class RHQControl {
return;
}
+ private void logWarningIfAgentRPMIsInstalled(ControlCommand command) {
+ // we only care about warning if the user is installing or upgrading; otherwise,
just return silently
+ if (!"install".equalsIgnoreCase(command.getName()) &&
(!"upgrade".equalsIgnoreCase(command.getName()))) {
+ return;
+ }
+
+ // see if we can find an RPM installation somewhere.
+ boolean rpmInstalled;
+ File rpmParentLocation = new File("/usr/share");
+ File[] rpms = rpmParentLocation.listFiles(new FilenameFilter() {
+ @Override
+ public boolean accept(File dir, String name) {
+ if (name.startsWith("jboss-on-")) {
+ File jonDir = new File(dir, name);
+ // technically, we should look for the agent in new File(jonDir,
"agent") because that's the rpm install dir.
+ // but there are no other rpms other than the agent, so if we see
this jboss-on-* location, we know the agent is here.
+ log.warn("An agent RPM installation was found in ["
+ + jonDir
+ + "]!!! You will not be able to successfully run this older
agent anymore. You should manually remove it.");
+ return true;
+ } else {
+ return false;
+ }
+ }
+ });
+
+ // if there is an RPM install on this box, we need to pause for some time to give
the user a chance to read the message
+ rpmInstalled = (rpms != null && rpms.length > 0);
+ if (rpmInstalled) {
+ try {
+ log.warn("Please read the above warnings about the existence of
agent RPM installations. This "
+ + command.getName() + " will resume in a few seconds.");
+ Thread.sleep(30000L);
+ } catch (InterruptedException ie) {
+ Thread.currentThread().interrupt();
+ }
+ }
+
+ return;
+ }
+
private void validateInstallCommand(ControlCommand command, String[] args) {
if (!"install".equalsIgnoreCase(command.getName())) {
return;
commit 7792fc0874d9e2fc5c5c66ee835e247ccf7d7c91
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon Dec 9 12:11:49 2013 -0500
BZ 1037855 - related to the fix for BZ 971556 - fix test
diff --git
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/inventory/AvailabilityProxyConcurrencyTest.java
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/inventory/AvailabilityProxyConcurrencyTest.java
index bc54cdb..8c42a09 100644
---
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/inventory/AvailabilityProxyConcurrencyTest.java
+++
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/inventory/AvailabilityProxyConcurrencyTest.java
@@ -71,7 +71,7 @@ public class AvailabilityProxyConcurrencyTest implements
AvailabilityFacet {
Mockito.when(resourceContainer.getResourceComponent()).thenReturn(resourceComponent);
// our one proxy we want to call concurrently
- final AvailabilityProxy ap = new AvailabilityProxy(resourceContainer);
+ final AvailabilityProxy ap = new TestAvailabilityProxy(resourceContainer);
// make sure our mock object uses our own thread pool when submitting the
task
Mockito.when(resourceContainer.submitAvailabilityCheck(ap)).thenAnswer(
@@ -148,4 +148,16 @@ public class AvailabilityProxyConcurrencyTest implements
AvailabilityFacet {
}
return UP;
}
+
+ // for our test, we want to ensure the sync avail check doesn't time out - so
increase the timeout limit
+ private class TestAvailabilityProxy extends AvailabilityProxy {
+ public TestAvailabilityProxy(ResourceContainer rc) {
+ super(rc);
+ }
+
+ @Override
+ protected long getSyncTimeout() {
+ return 5000L;
+ }
+ }
}
\ No newline at end of file
commit 64c539b99d0011d96326028920ad723d2632761c
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon Dec 9 10:12:43 2013 -0500
BZ 1037855 - related to the fix for BZ 971556 - don't cache the thread pool in teh
avail proxy because this screws up in the arquillian test framework due to restarts of
the PC
this has a good side effect though - it shrinks the size of the proxy, which is good
as it lowers the PC footprint
diff --git a/modules/core/plugin-container/pom.xml
b/modules/core/plugin-container/pom.xml
index 426e097..5fad36b 100644
--- a/modules/core/plugin-container/pom.xml
+++ b/modules/core/plugin-container/pom.xml
@@ -71,6 +71,11 @@
</dependency>
<!-- Test dependencies -->
+ <dependency>
+ <groupId>org.powermock</groupId>
+ <artifactId>powermock-api-mockito</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityProxy.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityProxy.java
index 49a7452..965470e 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityProxy.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/AvailabilityProxy.java
@@ -24,13 +24,13 @@ import static org.rhq.core.domain.measurement.AvailabilityType.UP;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.rhq.core.domain.measurement.Availability;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.pluginapi.availability.AvailabilityFacet;
@@ -110,17 +110,13 @@ public class AvailabilityProxy implements AvailabilityFacet,
Callable<Availabili
AVAIL_ASYNC_TIMEOUT = asyncAvailTimeout;
}
- private final AvailabilityFacet resourceComponent;
-
- private final ExecutorService executor;
-
private Future<AvailabilityType> availabilityFuture = null;
private volatile Thread current;
private long lastSubmitTime = 0;
- private AvailabilityType lastAvail = UNKNOWN;
+ private final ResourceContainer resourceContainer;
/**
* Number of consecutive avail sync timeouts for the resource. This value is reset if
availability is
@@ -129,15 +125,11 @@ public class AvailabilityProxy implements AvailabilityFacet,
Callable<Availabili
*/
private byte availSyncConsecutiveTimeouts = 0;
- private final ClassLoader classLoader;
-
/**
* Constructs a new proxy.
*/
- public AvailabilityProxy(AvailabilityFacet resourceComponent, ExecutorService
executor, ClassLoader classLoader) {
- this.resourceComponent = resourceComponent;
- this.executor = executor;
- this.classLoader = classLoader;
+ public AvailabilityProxy(ResourceContainer resourceContainer) {
+ this.resourceContainer = resourceContainer;
}
@Override
@@ -145,8 +137,8 @@ public class AvailabilityProxy implements AvailabilityFacet,
Callable<Availabili
current = Thread.currentThread();
ClassLoader originalContextClassLoader = current.getContextClassLoader();
try {
- Thread.currentThread().setContextClassLoader(classLoader);
- return resourceComponent.getAvailability();
+
Thread.currentThread().setContextClassLoader(this.resourceContainer.getResourceClassLoader());
+ return this.resourceContainer.getResourceComponent().getAvailability();
} finally {
current.setContextClassLoader(originalContextClassLoader);
}
@@ -162,7 +154,6 @@ public class AvailabilityProxy implements AvailabilityFacet,
Callable<Availabili
*/
@Override
public AvailabilityType getAvailability() {
- // TODO take out DevDebug printlns when we're confident we don't need
them
AvailabilityType avail = UNKNOWN;
try {
@@ -172,7 +163,6 @@ public class AvailabilityProxy implements AvailabilityFacet,
Callable<Availabili
if (availabilityFuture.isDone()) {
// hold onto and report the last known value if necessary
avail = availabilityFuture.get();
- // System.out.println("DevDebug 1 [" +
System.currentTimeMillis() + "] future done avail [" + avail.name() +
"]");
} else {
// We are still waiting on the previously submitted async avail check
- let's just return
@@ -181,58 +171,49 @@ public class AvailabilityProxy implements AvailabilityFacet,
Callable<Availabili
// In this case, throw a detailed exception to the avail checker.
long elapsedTime = System.currentTimeMillis() - lastSubmitTime;
if (elapsedTime > getAsyncTimeout()) {
- // System.out.println("DevDebug 2 [" +
System.currentTimeMillis() + "] async timeout");
Throwable t = new Throwable();
if (current != null) {
t.setStackTrace(current.getStackTrace());
}
String msg = "Availability check ran too long [" +
elapsedTime + "ms], canceled for ["
- + resourceComponent + "]; Stack trace includes the timed
out thread's stack trace.";
+ + this.resourceContainer + "]; Stack trace includes the
timed out thread's stack trace.";
availabilityFuture.cancel(true);
// try again, maybe the situation will resolve in time for the
next check
- availabilityFuture = executor.submit(this);
+ availabilityFuture =
this.resourceContainer.submitAvailabilityCheck(this);
lastSubmitTime = System.currentTimeMillis();
- // System.out.println("DevDebug 3 [" +
System.currentTimeMillis() + "] async timeout submit");
throw new TimeoutException(msg, t);
} else {
- // System.out.println("DevDebug 4 [" +
System.currentTimeMillis() + "] no async timeout, return lastAvail [" +
lastAvail.name() + "]");
- return lastAvail;
+ return getLastAvailabilityType();
}
}
}
// request a thread to do an avail check
- availabilityFuture = executor.submit(this);
+ availabilityFuture = this.resourceContainer.submitAvailabilityCheck(this);
lastSubmitTime = System.currentTimeMillis();
- // System.out.println("DevDebug 5 [" + System.currentTimeMillis()
+ "] standard submit");
// if we have exceeded the timeout too many times in a row assume that this
is a slow
// resource and stop performing synchronous checks, which would likely fail
to return fast enough anyway.
if (availSyncConsecutiveTimeouts < getSyncTimeoutLimit()) {
// attempt to get availability synchronously
avail = availabilityFuture.get(getSyncTimeout(), TimeUnit.MILLISECONDS);
- // System.out.println("DevDebug 6 [" +
System.currentTimeMillis() + "] sync avail [" + avail.name() + "]");
// success (failure will throw exception)
availSyncConsecutiveTimeouts = 0;
availabilityFuture = null;
} else if (availSyncConsecutiveTimeouts == getSyncTimeoutLimit()) {
- // System.out.println("DevDebug 7 [" +
System.currentTimeMillis() + "] sync disabled");
-
// log one time that we are disabling synchronous checks for this
resource
++availSyncConsecutiveTimeouts;
if (LOG.isDebugEnabled()) {
- LOG.debug("Disabling synchronous availability collection for
[" + resourceComponent + "]; ["
+ LOG.debug("Disabling synchronous availability collection for
[" + resourceContainer + "]; ["
+ getSyncTimeoutLimit() + "] consecutive timeouts exceeding
[" + getSyncTimeout() + "ms]");
}
}
} catch (InterruptedException e) {
- // System.out.println("DevDebug 8 [" + System.currentTimeMillis()
+ "] Interrupted");
-
LOG.debug("InterruptedException; shut down is (likely) in
progress.");
availabilityFuture.cancel(true);
availabilityFuture = null;
@@ -243,8 +224,6 @@ public class AvailabilityProxy implements AvailabilityFacet,
Callable<Availabili
throw new RuntimeException("Availability check failed",
e.getCause());
} catch (java.util.concurrent.TimeoutException e) {
- // System.out.println("DevDebug 9 [" + System.currentTimeMillis()
+ "] Sync Timeout");
-
// failed to get avail synchronously. next call to the future will return
availability (we hope)
++availSyncConsecutiveTimeouts;
}
@@ -260,7 +239,7 @@ public class AvailabilityProxy implements AvailabilityFacet,
Callable<Availabili
break;
default:
if (LOG.isDebugEnabled()) {
- LOG.debug("ResourceComponent [" + resourceComponent + "]
getAvailability() returned " + type
+ LOG.debug("ResourceComponent [" + this.resourceContainer +
"] getAvailability() returned " + type
+ ". This is invalid and is being replaced with DOWN.");
}
result = DOWN;
@@ -269,27 +248,33 @@ public class AvailabilityProxy implements AvailabilityFacet,
Callable<Availabili
// whenever changing to UP we reset the timeout counter. This is because DOWN
resources often respond
// slowly to getAvailability() calls (for example, waiting for a connection
attempt to time out). When a
// resource comes up we should give it a chance to respond quickly and provide
live avail.
- if (result != lastAvail) {
+ AvailabilityType lastAvail = getLastAvailabilityType();
+ if (result != getLastAvailabilityType()) {
if (result == UP) {
if (availSyncConsecutiveTimeouts >= getSyncTimeoutLimit()) {
- // System.out.println("DevDebug 10 [" +
System.currentTimeMillis() + "] Enabling Sync");
-
if (LOG.isDebugEnabled()) {
- LOG.debug("Enabling synchronous availability collection for
[" + resourceComponent
+ LOG.debug("Enabling synchronous availability collection for
[" + resourceContainer
+ "]; Availability has just changed from [" +
lastAvail + "] to UP.");
}
}
availSyncConsecutiveTimeouts = 0;
}
- lastAvail = result;
}
- // System.out.println("DevDebug 11 [" + System.currentTimeMillis() +
"] returning processAvail [" + result.getName()+ "]");
-
return result;
}
+ private AvailabilityType getLastAvailabilityType() {
+ Availability av = this.resourceContainer.getAvailability();
+ if (av != null) {
+ AvailabilityType avt = av.getAvailabilityType();
+ return (avt != null) ? avt : AvailabilityType.UNKNOWN;
+ } else {
+ return AvailabilityType.UNKNOWN;
+ }
+ }
+
/**
* Override point. Typically for testing.
* @return something other than the env var setting.
@@ -323,9 +308,8 @@ public class AvailabilityProxy implements AvailabilityFacet,
Callable<Availabili
*/
@Override
public String toString() {
- return "AvailabilityProxy [resourceComponent=" + resourceComponent +
", lastAvail=" + lastAvail
- + ", lastSubmitTime=" + new java.util.Date(lastSubmitTime) +
", executor=" + executor
- + ", availabilityFuture=" + availabilityFuture + ",
current=" + current + ", timeouts="
- + availSyncConsecutiveTimeouts + "]";
+ return "AvailabilityProxy [resource=" + resourceContainer + ",
lastSubmitTime="
+ + new java.util.Date(lastSubmitTime) + ", availabilityFuture=" +
availabilityFuture + ", current="
+ + current + ", timeouts=" + availSyncConsecutiveTimeouts +
"]";
}
}
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/ResourceContainer.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/ResourceContainer.java
index aadd71d..2e7563b 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/ResourceContainer.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/ResourceContainer.java
@@ -217,8 +217,7 @@ public class ResourceContainer implements Serializable {
public void setResourceComponent(ResourceComponent resourceComponent) {
synchronized (this) {
this.resourceComponent = resourceComponent;
- this.availabilityProxy = new AvailabilityProxy(resourceComponent,
AVAIL_CHECK_THREAD_POOL,
- resourceClassLoader);
+ this.availabilityProxy = new AvailabilityProxy(this); // now that we have a
component, we can collect its avail via a proxy
}
}
@@ -305,6 +304,16 @@ public class ResourceContainer implements Serializable {
}
/**
+ * Submits a task to perform an availability check asynchonrously.
+ * NOTE: this is package scoped so the avail proxy can call it and submit itself as a
task to the containers thread pool.
+ *
+ * @return the future that will provide the avail value
+ */
+ Future<AvailabilityType>
submitAvailabilityCheck(Callable<AvailabilityType> callable) {
+ return AVAIL_CHECK_THREAD_POOL.submit(callable);
+ }
+
+ /**
* Updates the measurementSchedule with the modifications made in the
measurementScheduleUpdate.
*
* @param measurementScheduleUpdate the updates to the current measurementSchedule
diff --git
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/inventory/AvailabilityProxyConcurrencyTest.java
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/inventory/AvailabilityProxyConcurrencyTest.java
index 06753ca..bc54cdb 100644
---
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/inventory/AvailabilityProxyConcurrencyTest.java
+++
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/inventory/AvailabilityProxyConcurrencyTest.java
@@ -25,30 +25,67 @@ import java.util.Hashtable;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
+import org.rhq.core.domain.measurement.Availability;
import org.rhq.core.domain.measurement.AvailabilityType;
+import org.rhq.core.domain.resource.Resource;
import org.rhq.core.pluginapi.availability.AvailabilityFacet;
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
@Test
public class AvailabilityProxyConcurrencyTest implements AvailabilityFacet {
+ @BeforeMethod
+ @AfterMethod
+ public void clearInterrupts() {
+ // make sure we don't leave interrupt flag set, if somehow the test set it
+ Thread.interrupted();
+ }
+
private AtomicInteger numberOfFacetCalls = new AtomicInteger(-1);
public void testConcurrentAvailChecks() throws Exception {
Thread.interrupted(); // clear any hanging around interrupt status
- ExecutorService executor = Executors.newCachedThreadPool();
+ final ExecutorService executor = Executors.newCachedThreadPool();
try {
+ // mock out the resource container
+ ResourceComponent<?> resourceComponent =
Mockito.mock(ResourceComponent.class);
+ Mockito.when(resourceComponent.getAvailability()).thenAnswer(new
Answer<AvailabilityType>() {
+ public AvailabilityType answer(InvocationOnMock invocation) throws
Throwable {
+ return AvailabilityProxyConcurrencyTest.this.getAvailability();
+ }
+ });
+ ResourceContainer resourceContainer = Mockito.mock(ResourceContainer.class);
+
Mockito.when(resourceContainer.getResourceClassLoader()).thenReturn(getClass().getClassLoader());
+
Mockito.when(resourceContainer.getResourceComponent()).thenReturn(resourceComponent);
+
// our one proxy we want to call concurrently
- final AvailabilityProxy ap = new AvailabilityProxy(this, executor,
getClass().getClassLoader());
+ final AvailabilityProxy ap = new AvailabilityProxy(resourceContainer);
+
+ // make sure our mock object uses our own thread pool when submitting the
task
+ Mockito.when(resourceContainer.submitAvailabilityCheck(ap)).thenAnswer(
+ new Answer<Future<AvailabilityType>>() {
+ public Future<AvailabilityType> answer(InvocationOnMock
invocation) throws Throwable {
+ return executor.submit(ap);
+ }
+ });
// prime the pump by getting the first one without problems
AvailabilityType firstAvail = ap.getAvailability();
assert UP.equals(firstAvail) : "Can't even get our first avail
correctly: " + firstAvail;
+ Mockito.when(resourceContainer.getAvailability()).thenReturn(
+ new Availability(new Resource(1), AvailabilityType.UP)); // our last
avail is UP and will always be UP from now on
// create several threads that will concurrently call getAvailability
final int numThreads = 10;
diff --git
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/inventory/AvailabilityProxyTest.java
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/inventory/AvailabilityProxyTest.java
index e861845..952a27b 100644
---
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/inventory/AvailabilityProxyTest.java
+++
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/inventory/AvailabilityProxyTest.java
@@ -25,13 +25,20 @@ import static org.testng.AssertJUnit.fail;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.pluginapi.availability.AvailabilityFacet;
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
/**
* @author Elias Ross
@@ -44,12 +51,39 @@ public class AvailabilityProxyTest implements AvailabilityFacet {
private AvailabilityType returnedAvail = UP;
private final ExecutorService executor = Executors.newCachedThreadPool();
+ @BeforeMethod
+ @AfterMethod
+ public void clearInterrupts() {
+ // make sure we don't leave interrupt flag set, if somehow the test set it
+ Thread.interrupted();
+ }
+
/**
* Run a test. Note this may not be 100% reliable, as it depends on thread execution
to
* happen according to our sleep schedule...
*/
public void test() throws InterruptedException {
- TestAvailabilityProxy ap = new TestAvailabilityProxy(this, executor,
getClass().getClassLoader());
+ // mock out the resource container
+ ResourceComponent<?> resourceComponent =
Mockito.mock(ResourceComponent.class);
+ Mockito.when(resourceComponent.getAvailability()).thenAnswer(new
Answer<AvailabilityType>() {
+ public AvailabilityType answer(InvocationOnMock invocation) throws Throwable
{
+ return AvailabilityProxyTest.this.getAvailability();
+ }
+ });
+ ResourceContainer resourceContainer = Mockito.mock(ResourceContainer.class);
+
Mockito.when(resourceContainer.getResourceClassLoader()).thenReturn(getClass().getClassLoader());
+
Mockito.when(resourceContainer.getResourceComponent()).thenReturn(resourceComponent);
+
+ // our one proxy we want to call concurrently
+ final TestAvailabilityProxy ap = new TestAvailabilityProxy(resourceContainer);
+
+ // make sure our mock object uses our own thread pool when submitting the task
+ Mockito.when(resourceContainer.submitAvailabilityCheck(ap)).thenAnswer(new
Answer<Future<AvailabilityType>>() {
+ public Future<AvailabilityType> answer(InvocationOnMock invocation)
throws Throwable {
+ return executor.submit(ap);
+ }
+ });
+
LOG.debug("proxy " + ap);
assertEquals("should be up", UP, ap.getAvailability()); // waits 1ms
and returns synchronously
@@ -125,9 +159,8 @@ public class AvailabilityProxyTest implements AvailabilityFacet {
private Long asyncTimeout = null;
private Long syncTimeout = null;
- public TestAvailabilityProxy(AvailabilityFacet resourceComponent, ExecutorService
executor,
- ClassLoader classLoader) {
- super(resourceComponent, executor, classLoader);
+ public TestAvailabilityProxy(ResourceContainer rc) {
+ super(rc);
}
@Override
commit 2b470fd429e689b6a1a6cc052ac8d9f06fac9f67
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Fri Dec 6 12:57:30 2013 -0500
BZ 1037855 - related to the fix for BZ 971556 - we can remove the old async avail
infrastructure in plugin container since all resources now do resource async avail
diff --git
a/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/availability/AvailabilityCollectorRunnable.java
b/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/availability/AvailabilityCollectorRunnable.java
index 5ce5bd7..eabc7b3 100644
---
a/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/availability/AvailabilityCollectorRunnable.java
+++
b/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/availability/AvailabilityCollectorRunnable.java
@@ -23,94 +23,16 @@
package org.rhq.core.pluginapi.availability;
import java.util.concurrent.Executor;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicReference;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.rhq.core.domain.measurement.AvailabilityType;
-import org.rhq.core.util.exception.ThrowableUtil;
/**
- * A class that can be used by plugins whose components may not be able to collect
availability statuses fast enough.
- *
- * Typically, availability checks are very fast (sub-second). However, the plugin
container puts a time limit
- * on how long it will wait for a plugin's resource component to return availability
status from calls to
- * {@link AvailabilityFacet#getAvailability()}. This time limit is typically on the order
of several seconds.
- * The purpose of this time limit is to avoid having a rogue or misbehaving plugin from
causing delays in availability
- * reporting for the rest of the resources being managed within the system.
- *
- * This class provides an implementation to help resource components that can't
guarantee how fast its
- * availability checks will be. Some managed resources simply can't respond to
availability checks fast enough. In this
- * case, this class will provide an asynchronous method that will collect availability
without a timeout being involved
- * (in other words, availability will be retrieved by waiting as long as it takes). In
order to tell the plugin container
- * what the managed resource's current availability is, this class will provide a
fast method to return the last known
- * availability of the resource. In other words, it will be able to return the last know
availability that was last retrieved
- * by the asynchronous task - this retrieval of the last known availability will be very
fast.
- *
- * @since 1.3
- * @author John Mazzitelli
+ * @deprecated this is no longer necessary in 4.10+ since the plugin container makes all
avail checks asynchronous now
*/
+@Deprecated()
public class AvailabilityCollectorRunnable implements Runnable {
- private static final Log log =
LogFactory.getLog(AvailabilityCollectorRunnable.class);
-
- /**
- * The minimum interval allowed between availability checks, in milliseconds.
- */
public static final long MIN_INTERVAL = 60000L;
-
- /**
- * The thread pool to give this runnable a thread to run in when it needs to check
availability.
- */
- private final Executor threadPool;
-
- /**
- * If <code>true</code>, this collector runnable should be actively
polling the resource for availability status.
- */
- private final AtomicBoolean started = new AtomicBoolean(false);
-
- /**
- * The classloader to be used when checking availability.
- */
- private final ClassLoader contextClassloader;
-
- /**
- * The object that is used to check the availability for the managed resource.
- */
private final AvailabilityFacet availabilityChecker;
-
- /**
- * The time, in milliseconds, that this collector will pause in between availability
checks.
- */
- private final long interval;
-
- /**
- * The last known availability for the resource that this collector is monitoring.
- */
- private AtomicReference<AvailabilityType> lastKnownAvailability = new
AtomicReference<AvailabilityType>();
-
- /**
- * Just a cache of the facet toString used in log messages. We don't want to keep
calling toString on the
- * facet for fear we might get some odd blocking or exceptions thrown. So we call it
once and cache it here.
- */
- private final String facetId;
-
- /**
- * Creates a collector instance that will perform availability checking for a
particular managed resource.
- *
- * The interval is the time, in milliseconds, this collector will wait between
availability checks.
- * This is the amount of time this collector will sleep after each time an
availability
- * check returned with the latest status. A typically value should be something
around 1 minute
- * but if an availability check takes alot of system resources to perform or
adversely affects the
- * managed resource if performed too often, you can make this longer.
- * The shortest value allowed, however, is {@link #MIN_INTERVAL}.
- *
- * @param availabilityChecker the object that is used to periodically check the
managed resource (must not be <code>null</code>)
- * @param interval the interval, in millis, between checking availabilities.
- * @param contextClassloader the context classloader that will be used when checking
availability
- * @param threadPool the thread pool to be used to submit this runnable when it needs
to start
- */
public AvailabilityCollectorRunnable(AvailabilityFacet availabilityChecker, long
interval,
ClassLoader contextClassloader, Executor threadPool) {
@@ -118,100 +40,20 @@ public class AvailabilityCollectorRunnable implements Runnable {
throw new IllegalArgumentException("availabilityChecker is null");
}
- if (threadPool == null) {
- throw new IllegalArgumentException("threadPool is null");
- }
-
- if (interval < MIN_INTERVAL) {
- log.info("Interval is too short [" + interval + "] - setting
to minimum of [" + MIN_INTERVAL + "]");
- interval = MIN_INTERVAL;
- }
-
- if (contextClassloader == null) {
- contextClassloader = Thread.currentThread().getContextClassLoader();
- }
-
- this.threadPool = threadPool;
this.availabilityChecker = availabilityChecker;
- this.contextClassloader = contextClassloader;
- this.interval = interval;
- this.lastKnownAvailability.set(AvailabilityType.DOWN);
- this.facetId = availabilityChecker.toString();
}
- /**
- * This returns the last known availability status that was most recently retrieved
from the managed resource.
- * This will not perform a live check on the managed resource; instead, it
immediately returns the last known
- * state of the managed resource. For those resource components using this
availability collector utility,
- * their {@link AvailabilityFacet#getAvailability()} method should simply be calling
this method.
- *
- * @return {@link AvailabilityType#UP} if the resource can be accessed; otherwise
{@link AvailabilityType#DOWN}
- */
public AvailabilityType getLastKnownAvailability() {
- return this.lastKnownAvailability.get();
+ // this deprecated class will fall back to doing a sync call
+ return this.availabilityChecker.getAvailability();
}
- /**
- * For those resource components using this availability collector utility,
- * their {@link
org.rhq.core.pluginapi.inventory.ResourceComponent#start(org.rhq.core.pluginapi.inventory.ResourceContext)}
method must call this
- * to start the availability checking that this object performs.
- */
public void start() {
- boolean isStarted = (this.started.getAndSet(true));
- if (isStarted) {
- log.debug("Availability collector runnable [" + this.facetId +
"] is already started");
- } else {
- this.threadPool.execute(this);
- log.debug("Availability collector runnable [" + this.facetId +
"] submitted to thread pool");
- }
}
- /**
- * For those resource components using this availability collector utility,
- * their {@link org.rhq.core.pluginapi.inventory.ResourceComponent#stop()} method
must call this
- * to stop the availability checking that this object performs.
- */
public void stop() {
- this.started.set(false);
- log.debug("Availability collector runnable [" + this.facetId + "]
was told to stop");
}
- /**
- * Performs the actual availability checking. This is the method that is invoked
- * after this runnable is {@link #start() submitted to the thread pool}.
- * You should not be calling this method directly - use {@link #start()} instead.
- */
public void run() {
- log.debug("Availability collector runnable [" + this.facetId + "]
started");
-
- ClassLoader originalClassloader =
Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(this.contextClassloader);
-
- try {
- // while we are still running, we need to sleep then get the new
availability
- do {
- try {
- AvailabilityType availability =
this.availabilityChecker.getAvailability();
- this.lastKnownAvailability.set(availability);
- } catch (Throwable t) {
- log.warn("Availability collector [" + this.facetId
- + "] failed to get availability - keeping the last known
availability of ["
- + this.lastKnownAvailability.get() + "]. Cause: " +
ThrowableUtil.getAllMessages(t));
- }
-
- try {
- Thread.sleep(this.interval);
- } catch (InterruptedException e) {
- // we got interrupted, we assume we need to shutdown
- this.started.set(false);
- log.debug("Availability collector [" + this.facetId +
"] interrupted");
- }
- } while (this.started.get());
- } finally {
- Thread.currentThread().setContextClassLoader(originalClassloader);
- }
-
- log.debug("Availability collector runnable [" + this.facetId + "]
stopped");
- return;
}
}
diff --git
a/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/availability/AvailabilityContext.java
b/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/availability/AvailabilityContext.java
index a6f90b4..37ef4d6 100644
---
a/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/availability/AvailabilityContext.java
+++
b/modules/core/plugin-api/src/main/java/org/rhq/core/pluginapi/availability/AvailabilityContext.java
@@ -21,8 +21,6 @@
package org.rhq.core.pluginapi.availability;
import org.rhq.core.domain.measurement.AvailabilityType;
-import org.rhq.core.pluginapi.inventory.ResourceComponent;
-import org.rhq.core.pluginapi.inventory.ResourceContext;
/**
* Resource specific context through which to make availability related calls back into
the plugin container.
@@ -32,30 +30,9 @@ import org.rhq.core.pluginapi.inventory.ResourceContext;
public interface AvailabilityContext {
/**
- * Under certain circumstances, a resource component may want to perform asynchronous
availability checks, as
- * opposed to {@link AvailabilityFacet#getAvailability()} blocking waiting for the
managed resource to return
- * its availability status. Using asynchronous availability checking frees the
resource component from having
- * to guarantee that the managed resource will provide availability status in a
timely fashion.
- *
- * If the resource component needs to perform asynchronous availability checking, it
should call this
- * method to create an instance of {@link AvailabilityCollectorRunnable} inside the
{@link ResourceComponent#start} method.
- * It should then call the returned object's {@link
AvailabilityCollectorRunnable#start()} method within the same resource
- * component {@link ResourceComponent#start(ResourceContext)} method. The resource
component should call the
- * {@link AvailabilityCollectorRunnable#stop()} method when the resource component
- * {@link ResourceComponent#stop() stops}. The resource component's {@link
AvailabilityFacet#getAvailability()} method
- * should simply return the value returned by {@link
AvailabilityCollectorRunnable#getLastKnownAvailability()}. This
- * method will be extremely fast since it simply returns the last availability that
was retrieved by the
- * given availability checker. Only when the availability checker finishes checking
for availability of the managed resource
- * (however long it takes to do so) will the last known availability state change.
- *
- * For more information, read the javadoc in {@link AvailabilityCollectorRunnable}.
- *
- * @param availChecker the object that will perform the actual check of the managed
resource's availability
- * @param interval the interval, in milliseconds, between availability checks. The
minimum value allowed
- * for this parameter is {@link
AvailabilityCollectorRunnable#MIN_INTERVAL}.
- *
- * @return the availability collector runnable that will perform the asynchronous
checking
+ * @deprecated this is no longer useful - all resources' avail checks are async
since 4.10
*/
+ @Deprecated
public AvailabilityCollectorRunnable
createAvailabilityCollectorRunnable(AvailabilityFacet availChecker,
long interval);
@@ -64,7 +41,7 @@ public interface AvailabilityContext {
* metric. At times the plugin may want the PC to request an availability check be
done prior to the next
* scheduled check time. For example, Start/Stop/Restart operation implementations
may want to request that the PC
* check availability sooner rather than later, to pick up the new lifecycle state.
This method should be used
- * sparingly, and should not in general override the scheduled avail checks.
+ * sparingly, and should not in general override the scheduled avail checks.
*/
public void requestAvailabilityCheck();
@@ -72,7 +49,7 @@ public interface AvailabilityContext {
* This method will return the last reported AvailabilityType, which can be null if
not yet reported. This
* method *does not* invoke a call to {link {@link
AvailabilityFacet#getAvailability()}, raher it will return
* the result of the most recent call to that method, made by the plugin container.
- *
+ *
* @return the last reported availability type, or null if not yet reported.
*/
public AvailabilityType getLastReportedAvailability();
@@ -83,7 +60,7 @@ public interface AvailabilityContext {
* that alerting and availability reporting will essentionally be ignored for the
resource until it is
* again enabled. A user is free to enable a resource disabled by the component
code. If the resource is
* already disabled then the call has no effect.
- *
+ *
* @see {@link #enable()}
*/
public void disable();
@@ -93,7 +70,7 @@ public interface AvailabilityContext {
* a user can set a resource ENABLED. This should be used with care by component
code as it does not care
* how the resource was DISABLED. It can override a user action. If the resource is
already disabled then
* the call has no effect.
- *
+ *
* @see {@link #disable()}
*/
public void enable();
diff --git
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/avail/AvailTest.java
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/avail/AvailTest.java
index 956fb97..86cf746 100644
---
a/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/avail/AvailTest.java
+++
b/modules/core/plugin-container-itest/src/test/java/org/rhq/core/pc/avail/AvailTest.java
@@ -24,6 +24,7 @@ import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
import org.rhq.core.domain.resource.InventoryStatus;
import org.rhq.core.pc.PluginContainer;
+import org.rhq.core.pc.PluginContainerConfiguration;
import org.rhq.core.pc.inventory.AvailabilityExecutor;
import org.rhq.core.pc.inventory.AvailabilityExecutor.Scan;
import org.rhq.core.pc.inventory.ForceAvailabilityExecutor;
@@ -146,12 +147,22 @@ public class AvailTest extends Arquillian {
resourceComponent.start(c.getResourceContext());
}
}
+
+ // this is a hack to get this test to pass. If you run this test class on its
own, it passes fine.
+ // but if you run it in conjunction with other tests (e.g. mvn
-Dtest=AvailTest,DiscoveryCallbackAbortTest)
+ // then it fails. It appears our arquillian test infrastructure is shutting down
the PC / ResourceContainer
+ // but the ResourceContainer is not getting reinitialized by the time this test
class needs it. What then
+ // happens is the avail thread pool in ResourceContainer is shutdown and will not
accept any more tasks, causing failures.
+ // We should try to figure out why the Arquillian infrastructure is doing this,
but for now, to get tests
+ // passing again, this one-line fix needs to be here.
+ ResourceContainer.initialize(new PluginContainerConfiguration());
}
@Test(groups = "pc.itest.avail", priority = 20)
public void testDiscovery() throws Exception {
Assert.assertNotNull(pluginContainer);
Assert.assertTrue(pluginContainer.isStarted());
+ Assert.assertTrue(pluginContainer.isRunning());
// make sure we have all the resource containers for all the resources
Assert.assertEquals(parentContainers1.size(), 2, "missing parent1");
@@ -172,6 +183,8 @@ public class AvailTest extends Arquillian {
@Test(groups = "pc.itest.avail", priority = 21)
public void testAvailReport() throws Exception {
+ Assert.assertTrue(pluginContainer.isStarted());
+ Assert.assertTrue(pluginContainer.isRunning());
AvailabilityExecutor executor = new
ForceAvailabilityExecutor(this.pluginContainer.getInventoryManager());
dumpContainers("testAvailReport() Start");
AvailabilityReport report = executor.call();
@@ -215,6 +228,8 @@ public class AvailTest extends Arquillian {
@Test(groups = "pc.itest.avail", priority = 21)
public void testScheduling() throws Exception {
+ Assert.assertTrue(pluginContainer.isStarted());
+ Assert.assertTrue(pluginContainer.isRunning());
AvailabilityExecutor executor = new
ForceAvailabilityExecutor(this.pluginContainer.getInventoryManager());
AvailabilityReport report = executor.call();
Assert.assertNotNull(report);
@@ -270,6 +285,8 @@ public class AvailTest extends Arquillian {
// If a parent changes to UP, its children must all be checked as they could
legitimately be something
// other than UP.
public void testForceChildrenOfParentUp() throws Exception {
+ Assert.assertTrue(pluginContainer.isStarted());
+ Assert.assertTrue(pluginContainer.isRunning());
// don't use a ForceAvailabilityExecutor for this test, we want to manipulate
what gets checked
AvailabilityExecutor executor = new
AvailabilityExecutor(this.pluginContainer.getInventoryManager());
AvailabilityReport report = executor.call();
@@ -284,7 +301,7 @@ public class AvailTest extends Arquillian {
}
}
Assert.assertEquals(numUp, 1);
- // only the platform should have been checked, all others should only have been
scheduled for a check
+ // only the platform should have been checked, all others should only have been
scheduled for a check
AvailabilityExecutor.Scan scan = executor.getMostRecentScanHistory();
assertScan(scan, false, true, 29, 0, 1, 28, 0, 0);
@@ -333,6 +350,8 @@ public class AvailTest extends Arquillian {
@Test(groups = "pc.itest.avail", priority = 21)
// If a parent changes to DOWN, its children should all defer to being DOWN as well.
public void testDeferToParentDown() throws Exception {
+ Assert.assertTrue(pluginContainer.isStarted());
+ Assert.assertTrue(pluginContainer.isRunning());
// don't use a ForceAvailabilityExecutor for this test, we want to manipulate
what gets checked
AvailabilityExecutor executor = new
AvailabilityExecutor(this.pluginContainer.getInventoryManager());
AvailabilityReport report = executor.call();
@@ -347,7 +366,7 @@ public class AvailTest extends Arquillian {
}
}
Assert.assertEquals(numUp, 1);
- // only the platform should have been checked, all others should only have been
scheduled for a check
+ // only the platform should have been checked, all others should only have been
scheduled for a check
AvailabilityExecutor.Scan scan = executor.getMostRecentScanHistory();
assertScan(scan, false, true, 29, 0, 1, 28, 0, 0);
@@ -403,7 +422,9 @@ public class AvailTest extends Arquillian {
@Test(groups = "pc.itest.avail", priority = 21)
public void testCheckOnlyEligible() throws Exception {
- // Force all the avails to UP to start so we can avoid the scenario in
testForceChildrenOfParentUp()
+ Assert.assertTrue(pluginContainer.isStarted());
+ Assert.assertTrue(pluginContainer.isRunning());
+ // Force all the avails to UP to start so we can avoid the scenario in
testForceChildrenOfParentUp()
AvailabilityExecutor executor = new
ForceAvailabilityExecutor(this.pluginContainer.getInventoryManager());
AvailabilityReport report = executor.call();
Assert.assertNotNull(report);
@@ -468,6 +489,8 @@ public class AvailTest extends Arquillian {
@Test(groups = "pc.itest.avail", priority = 21)
public void testDeferToParent() throws Exception {
+ Assert.assertTrue(pluginContainer.isStarted());
+ Assert.assertTrue(pluginContainer.isRunning());
AvailabilityExecutor executor = new
ForceAvailabilityExecutor(this.pluginContainer.getInventoryManager());
AvailabilityReport report = executor.call();
Assert.assertNotNull(report);
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/availability/AvailabilityCollectorThreadPool.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/availability/AvailabilityCollectorThreadPool.java
deleted file mode 100644
index c4951d9..0000000
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/availability/AvailabilityCollectorThreadPool.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License, version 2, as
- * published by the Free Software Foundation, and/or the GNU Lesser
- * General Public License, version 2.1, also as published by the Free
- * Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License and the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License
- * and the GNU Lesser General Public License along with this program;
- * if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.rhq.core.pc.availability;
-
-import java.util.concurrent.Executor;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ThreadFactory;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.rhq.core.pc.PluginContainer;
-import org.rhq.core.pc.util.LoggingThreadFactory;
-import org.rhq.core.pluginapi.availability.AvailabilityCollectorRunnable;
-
-/**
- * A utility class that can be used by plugins whose components may not be able to
collect availability statuses
- * fast enough. This thread pool object can be used to submit {@link
AvailabilityCollectorRunnable} instances,
- * each of which will be used to collect availability statuses for a managed resource.
- *
- * This class is used in conjunction with instances of {@link
AvailabilityCollectorRunnable} - read its javadoc for more.
- *
- * @author John Mazzitelli
- */
-public class AvailabilityCollectorThreadPool implements Executor {
- private static final Log log =
LogFactory.getLog(AvailabilityCollectorThreadPool.class);
-
- /**
- * To avoid many plugins/components needing to spawn their own thread pools/threads,
this
- * will allow everyone to reuse the same thread pool. This thread pool will be
allowed to grow as needed,
- * but will reuse threads when they become available.
- */
- private ExecutorService threadPool;
-
- public void initialize() {
- synchronized (this) {
- if (threadPool == null) {
- log.debug("Initializing AvailabilityCollector thread pool");
- ThreadFactory daemonFactory = new
LoggingThreadFactory("AvailabilityCollector", true);
- threadPool = Executors.newCachedThreadPool(daemonFactory);
- }
- }
- return;
- }
-
- public void shutdown() {
-
- synchronized (this) {
- if (threadPool != null) {
- log.debug("Shutting down AvailabilityCollector thread
pool...");
- PluginContainer pluginContainer = PluginContainer.getInstance();
- pluginContainer.shutdownExecutorService(threadPool, true);
- threadPool = null;
- }
- }
- return;
- }
-
- /**
- * Given a {@link AvailabilityCollectorRunnable} instance, this will run that
instance in a thread, thus
- * allowing the availability status for a managed resource to be periodically checked
asynchronously. The
- * given runnable will store its last known availability status so it can be
retrieved very fast.
- *
- * The given runnable must be of type {@link AvailabilityCollectorRunnable},
otherwise a runtime exception will occur.
- *
- * @param runnable the availability collector runnable that will be invoked in a
thread to being collecting
- * availability status of a managed resource.
- */
- public void execute(Runnable runnable) {
- if (runnable instanceof AvailabilityCollectorRunnable) {
- synchronized (this) {
- if (threadPool != null) {
- threadPool.execute(runnable);
- }
- }
- return;
- } else if (runnable == null) {
- throw new NullPointerException("runnable == null");
- } else {
- throw new IllegalArgumentException("Runnable is of type [" +
runnable.getClass() + "]; must be of type ["
- + AvailabilityCollectorRunnable.class + "]");
- }
- }
-}
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/availability/AvailabilityContextImpl.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/availability/AvailabilityContextImpl.java
index 32fb361..2919014 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/availability/AvailabilityContextImpl.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/availability/AvailabilityContextImpl.java
@@ -20,8 +20,6 @@
package org.rhq.core.pc.availability;
-import java.util.concurrent.Executor;
-
import org.rhq.core.domain.measurement.Availability;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.resource.Resource;
@@ -36,29 +34,20 @@ import org.rhq.core.pluginapi.availability.AvailabilityFacet;
public class AvailabilityContextImpl implements AvailabilityContext {
private final Resource resource;
- private final Executor availCollectionThreadPool;
- public AvailabilityContextImpl(Resource resource, Executor availCollectionThreadPool)
{
+ public AvailabilityContextImpl(Resource resource) {
super();
this.resource = resource;
- this.availCollectionThreadPool = availCollectionThreadPool;
}
- /* (non-Javadoc)
- * @see
org.rhq.core.pluginapi.availability.AvailabilityContext#createAvailabilityCollectorRunnable(org.rhq.core.pluginapi.availability.AvailabilityFacet,
long)
- */
@Override
- public AvailabilityCollectorRunnable
createAvailabilityCollectorRunnable(AvailabilityFacet availChecker,
- long interval) {
-
- // notice that we assume we are called with the same context classloader that
will be need by the avail checker
- return new AvailabilityCollectorRunnable(availChecker, interval,
- Thread.currentThread().getContextClassLoader(),
this.availCollectionThreadPool);
+ @Deprecated
+ public AvailabilityCollectorRunnable
createAvailabilityCollectorRunnable(AvailabilityFacet facet, long i) {
+ // even though this shouldn't be used, plugins may still be using this. Allow
for these to still be
+ // created for backward compatibility, but its a dummy object nevertheless.
+ return new AvailabilityCollectorRunnable(facet, i, null, null);
}
- /* (non-Javadoc)
- * @see
org.rhq.core.pluginapi.availability.AvailabilityContext#requestAvailabilityCheck()
- */
@Override
public void requestAvailabilityCheck() {
PluginContainer.getInstance().getInventoryManager().requestAvailabilityCheck(resource);
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
index 5b01a26..35ba2af 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/inventory/InventoryManager.java
@@ -89,7 +89,6 @@ import org.rhq.core.pc.PluginContainerConfiguration;
import org.rhq.core.pc.ServerServices;
import org.rhq.core.pc.agent.AgentRegistrar;
import org.rhq.core.pc.agent.AgentService;
-import org.rhq.core.pc.availability.AvailabilityCollectorThreadPool;
import org.rhq.core.pc.availability.AvailabilityContextImpl;
import org.rhq.core.pc.component.ComponentInvocationContextImpl;
import org.rhq.core.pc.content.ContentContextImpl;
@@ -215,11 +214,6 @@ public class InventoryManager extends AgentService implements
ContainerService,
private DiscoveryComponentProxyFactory discoveryComponentProxyFactory;
/**
- * Used by resource components that want to perform asynchronous availability
checking.
- */
- private AvailabilityCollectorThreadPool availabilityCollectors;
-
- /**
* Handles the resource upgrade during the initialization of the inventory manager.
*/
private ResourceUpgradeDelegate resourceUpgradeDelegate = new
ResourceUpgradeDelegate(this);
@@ -242,11 +236,6 @@ public class InventoryManager extends AgentService implements
ContainerService,
this.agent = new Agent(this.configuration.getContainerName(), null, 0, null,
null);
- //make sure the avail collectors are available before we instantiate any
- //resource context - either from disk or from anywhere else.
- availabilityCollectors = new AvailabilityCollectorThreadPool();
- availabilityCollectors.initialize();
-
if (configuration.isInsideAgent()) {
loadFromDisk();
}
@@ -306,7 +295,6 @@ public class InventoryManager extends AgentService implements
ContainerService,
this.persistToDisk();
}
this.discoveryComponentProxyFactory.shutdown();
- this.availabilityCollectors.shutdown();
this.inventoryEventListeners.clear();
this.resourceContainersByUUID.clear();
this.resourceContainerByResourceId.clear();
@@ -1977,7 +1965,7 @@ public class InventoryManager extends AgentService implements
ContainerService,
getEventContext(resource), // for event access
getOperationContext(resource), // for operation manager access
getContentContext(resource), // for content manager access
- getAvailabilityContext(resource, this.availabilityCollectors), // for
components that want to perform async avail checking
+ getAvailabilityContext(resource),
getInventoryContext(resource),
this.configuration.getPluginContainerDeployment(), // helps components make determinations
of what to do
new ComponentInvocationContextImpl());
}
@@ -1997,7 +1985,7 @@ public class InventoryManager extends AgentService implements
ContainerService,
getEventContext(resource), // for event access
getOperationContext(resource), // for operation manager access
getContentContext(resource), // for content manager access
- getAvailabilityContext(resource, this.availabilityCollectors), // for
components that want avail manager access
+ getAvailabilityContext(resource), // for components that want avail manager
access
getInventoryContext(resource),
this.configuration.getPluginContainerDeployment()); // helps components make
determinations of what to do
}
@@ -2815,12 +2803,12 @@ public class InventoryManager extends AgentService implements
ContainerService,
// };
// }
- private AvailabilityContext getAvailabilityContext(Resource resource, Executor
availCollectionThreadPool) {
+ private AvailabilityContext getAvailabilityContext(Resource resource) {
if (null == resource.getUuid() || resource.getUuid().isEmpty()) {
log.error("RESOURCE UUID IS NOT SET! Availability features may not
work!");
}
- AvailabilityContext availabilityContext = new AvailabilityContextImpl(resource,
availCollectionThreadPool);
+ AvailabilityContext availabilityContext = new AvailabilityContextImpl(resource);
return availabilityContext;
}
diff --git
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/availability/AvailabilityCollectorTest.java
b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/availability/AvailabilityCollectorTest.java
deleted file mode 100644
index ec0538b..0000000
---
a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/availability/AvailabilityCollectorTest.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * RHQ Management Platform
- * Copyright (C) 2005-2008 Red Hat, Inc.
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License, version 2, as
- * published by the Free Software Foundation, and/or the GNU Lesser
- * General Public License, version 2.1, also as published by the Free
- * Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License and the GNU Lesser General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License
- * and the GNU Lesser General Public License along with this program;
- * if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.rhq.core.pc.availability;
-
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
-import org.rhq.core.domain.measurement.AvailabilityType;
-import org.rhq.core.pluginapi.availability.AvailabilityCollectorRunnable;
-import org.rhq.core.pluginapi.availability.AvailabilityFacet;
-
-@Test
-public class AvailabilityCollectorTest {
-
- private AvailabilityCollectorThreadPool threadPool;
-
- @BeforeTest
- public void beforeTest() {
- threadPool = new AvailabilityCollectorThreadPool();
- threadPool.initialize();
- }
-
- @AfterTest
- public void afterTest() {
- threadPool.shutdown();
- threadPool = null;
- }
-
- public void testCollector() throws Exception {
-
- AvailabilityType[] avail = new AvailabilityType[] { AvailabilityType.UP };
- TestAvailabilityFacet component = new TestAvailabilityFacet(avail);
- AvailabilityCollectorRunnable runnable = new
AvailabilityCollectorRunnable(component, 60000L, null,
- this.threadPool);
- runnable.start();
- Thread.sleep(1000L);
- assert AvailabilityType.UP == runnable.getLastKnownAvailability();
-
- // availability collector cannot allow for collections faster than 60s. So we
can't have tests faster than this.
- // set this if-check to true to fully test the collector (which takes a couple
mins of wait time to complete)
- if (System.getProperty("AvailabilityCollectorTest.longtest",
"false").equals("true")) {
- avail[0] = AvailabilityType.DOWN;
- System.out.println("~~~~~~~~~~sleeping for 60 secs");
- Thread.sleep(60100L);
- assert AvailabilityType.DOWN == runnable.getLastKnownAvailability() :
"Collector should have seen the change";
-
- runnable.stop();
- avail[0] = AvailabilityType.UP;
- System.out.println("~~~~~~~~~~sleeping for 60 secs");
- Thread.sleep(60100L);
- assert AvailabilityType.DOWN == runnable.getLastKnownAvailability() :
"Collector should have stopped and not see the change";
- }
- }
-
- protected class TestAvailabilityFacet implements AvailabilityFacet {
- private AvailabilityType[] avail;
-
- public TestAvailabilityFacet(AvailabilityType[] avail) {
- this.avail = avail;
- }
-
- public AvailabilityType getAvailability() {
- System.out.println("~~~~~~~~~~" + new java.util.Date() + " ==
" + this.avail[0]);
- return this.avail[0];
- }
- }
-}
diff --git
a/modules/plugins/database/src/test/java/org/rhq/plugins/database/ComponentTest.java
b/modules/plugins/database/src/test/java/org/rhq/plugins/database/ComponentTest.java
index 050aa2e..6caba36 100644
--- a/modules/plugins/database/src/test/java/org/rhq/plugins/database/ComponentTest.java
+++ b/modules/plugins/database/src/test/java/org/rhq/plugins/database/ComponentTest.java
@@ -19,13 +19,16 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
import javax.xml.bind.JAXBElement;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.testng.annotations.AfterSuite;
+import org.testng.annotations.AfterTest;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeSuite;
+
import org.rhq.core.clientapi.agent.metadata.PluginMetadataManager;
import org.rhq.core.clientapi.descriptor.AgentPluginDescriptorUtil;
import org.rhq.core.clientapi.descriptor.configuration.ConfigurationProperty;
@@ -73,10 +76,6 @@ import org.rhq.core.system.ProcessInfo;
import org.rhq.core.system.SystemInfo;
import org.rhq.core.system.SystemInfoFactory;
import org.rhq.core.system.pquery.ProcessInfoQuery;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeSuite;
/**
* Base class for RHQ Component Testing.
@@ -136,7 +135,6 @@ public abstract class ComponentTest {
private final String pluginContainerName = "rhq";
private final OperationContext operationContext = new OperationContextImpl(0);
private final ContentContext contentContext = new ContentContextImpl(0);
- private final Executor availCollectorThreadPool = Executors.newCachedThreadPool();
private PluginContainerDeployment pluginContainerDeployment = null;
private Resource platform;
private ResourceContainer platformContainer;
@@ -279,7 +277,7 @@ public abstract class ComponentTest {
String rclassname = pmm.getComponentClass(type);
ResourceComponent component = (ResourceComponent)
Class.forName(rclassname).newInstance();
- availabilityContext = new
AvailabilityContextImpl(cresource,availCollectorThreadPool);
+ availabilityContext = new AvailabilityContextImpl(cresource);
inventoryContext = new InventoryContextImpl(cresource);
EventContext eventContext = new EventContextImpl(resource);
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerComponent.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerComponent.java
index fb8bd27..67ae62d 100644
---
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerComponent.java
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerComponent.java
@@ -72,8 +72,6 @@ import org.rhq.core.domain.measurement.MeasurementDataNumeric;
import org.rhq.core.domain.measurement.MeasurementDataTrait;
import org.rhq.core.domain.measurement.MeasurementReport;
import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
-import org.rhq.core.pluginapi.availability.AvailabilityCollectorRunnable;
-import org.rhq.core.pluginapi.availability.AvailabilityFacet;
import org.rhq.core.pluginapi.configuration.ConfigurationFacet;
import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
import org.rhq.core.pluginapi.content.ContentContext;
@@ -135,17 +133,7 @@ public class ApplicationServerComponent<T extends
ResourceComponent<?>> implemen
private LogFileEventResourceComponentHelper logFileEventDelegate;
private CreateChildResourceFacetDelegate createChildResourceDelegate;
- private AvailabilityCollectorRunnable availCollector;
-
public AvailabilityType getAvailability() {
- if (this.availCollector != null) {
- return this.availCollector.getLastKnownAvailability();
- } else {
- return getAvailabilityNow();
- }
- }
-
- private AvailabilityType getAvailabilityNow() {
connectToProfileService();
AvailabilityType availability;
if (this.connection != null) {
@@ -200,35 +188,10 @@ public class ApplicationServerComponent<T extends
ResourceComponent<?>> implemen
this.createChildResourceDelegate = new CreateChildResourceFacetDelegate(this,
this.getResourceContext());
- // prepare to perform async avail checking
- Configuration pc = resourceContext.getPluginConfiguration();
- String availCheckPeriodProp = pc.getSimpleValue(
-
ApplicationServerPluginConfigurationProperties.AVAIL_CHECK_PERIOD_CONFIG_PROP, null);
- if (availCheckPeriodProp != null) {
- try {
- long availCheckMillis = Integer.parseInt(availCheckPeriodProp) * 1000L;
- this.availCollector =
resourceContext.getAvailabilityContext().createAvailabilityCollectorRunnable(
- new AvailabilityFacet() {
- public AvailabilityType getAvailability() {
- return getAvailabilityNow();
- }
- }, availCheckMillis);
- this.availCollector.start();
- } catch (NumberFormatException nfe) {
- log.error("avail check period config prop was not a valid number.
Cause: " + nfe);
- this.availCollector = null;
- }
- }
-
return;
}
public void stop() {
- if (this.availCollector != null) {
- this.availCollector.stop();
- this.availCollector = null;
- }
-
this.logFileEventDelegate.stopLogFileEventPollers();
disconnectFromProfileService();
this.jmxConnectionHelper.closeConnection();
diff --git
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerPluginConfigurationProperties.java
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerPluginConfigurationProperties.java
index c770844..7c30135 100644
---
a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerPluginConfigurationProperties.java
+++
b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/ApplicationServerPluginConfigurationProperties.java
@@ -45,7 +45,6 @@ public class ApplicationServerPluginConfigurationProperties {
public static final String SHUTDOWN_MBEAN_OPERATION_CONFIG_PROP =
"shutdownMBeanOperation";
public static final String SHUTDOWN_METHOD_CONFIG_PROP = "shutdownMethod";
public static final String SCRIPT_PREFIX_CONFIG_PROP = "scriptPrefix";
- public static final String AVAIL_CHECK_PERIOD_CONFIG_PROP =
"availabilityCheckPeriod";
private ApplicationServerPluginConfigurationProperties() {
}
diff --git a/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
index e213719..306aed6 100644
--- a/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-5/src/main/resources/META-INF/rhq-plugin.xml
@@ -1029,13 +1029,6 @@
description="Name of the operation to invoke when shutting down this
server through JMX.
Note that only operations with no parameter or with one
int parameter are supported. If the
operation requires an int parameter, '0' will be
supplied." />
- <c:simple-property name="availabilityCheckPeriod"
- description="The amount of time, in seconds, that must elapse between
availability checks to see if the server is up. If set, the availability checks will be
performed asynchronously thus allowing slow-responding servers to avoid being falsely
reported as down."
- units="seconds" required="false"
type="integer">
- <c:constraint>
- <c:integer-constraint minimum="60" />
- </c:constraint>
- </c:simple-property>
<c:simple-property name="serviceAvailabilityRefreshInterval"
units="minutes" required="false"
default="15" type="integer"
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
index 944d7c5..5e2f272 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java
@@ -43,8 +43,6 @@ import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.MeasurementDataTrait;
import org.rhq.core.domain.measurement.MeasurementReport;
import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
-import org.rhq.core.pluginapi.availability.AvailabilityCollectorRunnable;
-import org.rhq.core.pluginapi.availability.AvailabilityFacet;
import org.rhq.core.pluginapi.event.log.LogFileEventResourceComponentHelper;
import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.inventory.ResourceComponent;
@@ -87,7 +85,6 @@ public abstract class BaseServerComponent<T extends
ResourceComponent<?>> extend
private StartScriptConfiguration startScriptConfig;
private ServerPluginConfiguration serverPluginConfig;
private AvailabilityType previousAvailabilityType;
- private AvailabilityCollectorRunnable availabilityCollector;
private String releaseVersion;
@Override
@@ -102,23 +99,6 @@ public abstract class BaseServerComponent<T extends
ResourceComponent<?>> extend
logFileEventDelegate = new LogFileEventResourceComponentHelper(context);
logFileEventDelegate.startLogFileEventPollers();
startScriptConfig = new StartScriptConfiguration(pluginConfiguration);
-
- Integer availabilityCheckPeriod = null;
- try {
- availabilityCheckPeriod = serverPluginConfig.getAvailabilityCheckPeriod();
- } catch (NumberFormatException e) {
- log.error("Avail check period config prop was not a valid number. Cause:
" + e);
- }
- if (availabilityCheckPeriod != null) {
- long availCheckMillis = availabilityCheckPeriod * 1000L;
- this.availabilityCollector =
resourceContext.getAvailabilityContext().createAvailabilityCollectorRunnable(
- new AvailabilityFacet() {
- public AvailabilityType getAvailability() {
- return getAvailabilityNow();
- }
- }, availCheckMillis);
- this.availabilityCollector.start();
- }
}
@Override
@@ -126,29 +106,10 @@ public abstract class BaseServerComponent<T extends
ResourceComponent<?>> extend
connection.shutdown();
logFileEventDelegate.stopLogFileEventPollers();
previousAvailabilityType = null;
- if (this.availabilityCollector != null) {
- this.availabilityCollector.stop();
- this.availabilityCollector = null;
- }
}
@Override
public AvailabilityType getAvailability() {
- AvailabilityType ret;
- if (this.availabilityCollector != null) {
- ret = this.availabilityCollector.getLastKnownAvailability();
- } else {
- ret = getAvailabilityNow();
- }
-
- if (ret == AvailabilityType.DOWN) {
- releaseVersion = null;
- }
-
- return ret;
- }
-
- private AvailabilityType getAvailabilityNow() {
AvailabilityType availabilityType;
try {
readAttribute("launch-type");
@@ -166,6 +127,10 @@ public abstract class BaseServerComponent<T extends
ResourceComponent<?>> extend
previousAvailabilityType = availabilityType;
}
+ if (availabilityType == AvailabilityType.DOWN) {
+ releaseVersion = null;
+ }
+
return availabilityType;
}
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java
index ac92616..5c02170 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java
@@ -19,8 +19,6 @@
package org.rhq.modules.plugins.jbossas7;
-import static
org.rhq.modules.plugins.jbossas7.helper.ServerPluginConfiguration.Property.AVAIL_CHECK_PERIOD_CONFIG_PROP;
-
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
@@ -33,8 +31,6 @@ import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.MeasurementDataTrait;
import org.rhq.core.domain.measurement.MeasurementReport;
import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
-import org.rhq.core.pluginapi.availability.AvailabilityCollectorRunnable;
-import org.rhq.core.pluginapi.availability.AvailabilityFacet;
import org.rhq.core.pluginapi.event.log.LogFileEventResourceComponentHelper;
import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
import org.rhq.core.pluginapi.inventory.ResourceContext;
@@ -56,7 +52,6 @@ public class ManagedASComponent extends
BaseComponent<HostControllerComponent<?>
private static final String MANAGED_SERVER_TYPE_NAME = "Managed Server";
private LogFileEventResourceComponentHelper logFileEventDelegate;
- private AvailabilityCollectorRunnable availabilityCollector;
@Override
public void start(ResourceContext<HostControllerComponent<?>>
hostControllerComponentResourceContext)
@@ -66,33 +61,12 @@ public class ManagedASComponent extends
BaseComponent<HostControllerComponent<?>
logFileEventDelegate = new LogFileEventResourceComponentHelper(context);
logFileEventDelegate.startLogFileEventPollers();
- Integer availabilityCheckPeriod = null;
- try {
- availabilityCheckPeriod =
pluginConfiguration.getSimple(AVAIL_CHECK_PERIOD_CONFIG_PROP).getIntegerValue();
- } catch (NumberFormatException e) {
- log.error("Avail check period config prop was not a valid number. Cause:
" + e);
- }
- if (availabilityCheckPeriod != null) {
- long availCheckMillis = availabilityCheckPeriod * 1000L;
- this.availabilityCollector =
hostControllerComponentResourceContext.getAvailabilityContext()
- .createAvailabilityCollectorRunnable(new AvailabilityFacet() {
- public AvailabilityType getAvailability() {
- return getAvailabilityNow();
- }
- }, availCheckMillis);
- this.availabilityCollector.start();
- }
-
}
@Override
public void stop() {
super.stop();
logFileEventDelegate.stopLogFileEventPollers();
- if (this.availabilityCollector != null) {
- this.availabilityCollector.stop();
- this.availabilityCollector = null;
- }
}
/**
@@ -103,14 +77,6 @@ public class ManagedASComponent extends
BaseComponent<HostControllerComponent<?>
*/
@Override
public AvailabilityType getAvailability() {
- if (this.availabilityCollector != null) {
- return this.availabilityCollector.getLastKnownAvailability();
- } else {
- return getAvailabilityNow();
- }
- }
-
- private AvailabilityType getAvailabilityNow() {
if (context.getResourceType().getName().equals(MANAGED_SERVER_TYPE_NAME)) {
Address theAddress = new Address();
String host = pluginConfiguration.getSimpleValue("domainHost",
"local");
diff --git
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/helper/ServerPluginConfiguration.java
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/helper/ServerPluginConfiguration.java
index 3832ed2..4695e61 100644
---
a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/helper/ServerPluginConfiguration.java
+++
b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/helper/ServerPluginConfiguration.java
@@ -22,7 +22,6 @@ package org.rhq.modules.plugins.jbossas7.helper;
import java.io.File;
import org.rhq.core.domain.configuration.Configuration;
-import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.modules.plugins.jbossas7.JBossProductType;
/**
@@ -45,7 +44,6 @@ public class ServerPluginConfiguration {
public static final String LOG_DIR = "logDir";
public static final String PRODUCT_TYPE = "productType";
public static final String HOST_CONFIG_FILE = "hostConfigFile";
- public static final String AVAIL_CHECK_PERIOD_CONFIG_PROP =
"availabilityCheckPeriod";
}
private Configuration pluginConfig;
@@ -146,14 +144,4 @@ public class ServerPluginConfiguration {
hostConfigFile.toString() : null);
}
- public Integer getAvailabilityCheckPeriod() {
- PropertySimple propertySimple =
this.pluginConfig.getSimple(Property.AVAIL_CHECK_PERIOD_CONFIG_PROP);
- return propertySimple == null ? null : propertySimple.getIntegerValue();
- }
-
- public void setAvailabilityCheckPeriod(Integer availabilityCheckPeriod) {
- this.pluginConfig.setSimpleValue(Property.AVAIL_CHECK_PERIOD_CONFIG_PROP,
- availabilityCheckPeriod == null ? null :
availabilityCheckPeriod.toString());
- }
-
}
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 6cc3857..2dcf2bd 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -102,16 +102,6 @@
</c:group>
'>
- <!ENTITY availabilityCheckPeriod '
- <c:simple-property name="availabilityCheckPeriod"
- description="The amount of time, in seconds, that must
elapse between availability checks to see if the server is up. If set, the availability
checks will be performed asynchronously thus allowing slow-responding servers to avoid
being falsely reported as down. Minimum value is 60 seconds."
- units="seconds" required="false"
type="integer">
- <c:constraint>
- <c:integer-constraint minimum="60"/>
- </c:constraint>
- </c:simple-property>
-'>
-
<!ENTITY serverKindMetrics '
<metric property="_skm:release-codename" dataType="trait"
displayName="Server Code Name"/>
<metric property="_skm:release-version" dataType="trait"
displayName="Server Version"/>
@@ -952,9 +942,6 @@
&startScriptPluginConfigGroup;
&logSources;
- <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
- &availabilityCheckPeriod;
- </c:group>
</plugin-configuration>
<process-scan name="HostController"
query="process|basename|match=^java.*,arg|org.jboss.as.host-controller|match=.*"/>
@@ -1272,9 +1259,6 @@
&startScriptPluginConfigGroup;
&logSources;
- <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
- &availabilityCheckPeriod;
- </c:group>
</plugin-configuration>
<process-scan name="StandaloneAS"
query="process|basename|match=^java.*,arg|org.jboss.as.standalone|match=.*"/>
@@ -1723,9 +1707,6 @@
<plugin-configuration>
<c:simple-property name="path" readOnly="true"/>
&logSources;
- <c:group name="advanced" displayName="Advanced"
hiddenByDefault="true">
- &availabilityCheckPeriod;
- </c:group>
</plugin-configuration>
<operation name="start" description="Start this server
instance." displayName="Start">
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractJBossAS7PluginTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractJBossAS7PluginTest.java
index 8c61c8e..32e83f2 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractJBossAS7PluginTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractJBossAS7PluginTest.java
@@ -19,8 +19,6 @@
package org.rhq.modules.plugins.jbossas7.itest;
-import static org.rhq.core.domain.measurement.AvailabilityType.UP;
-import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import java.util.Set;
@@ -37,7 +35,6 @@ import org.rhq.core.pc.inventory.InventoryManager;
import org.rhq.core.pc.inventory.ResourceContainer;
import org.rhq.core.plugin.testutil.AbstractAgentPluginTest;
import org.rhq.core.pluginapi.operation.OperationResult;
-import org.rhq.modules.plugins.jbossas7.helper.ServerPluginConfiguration;
import org.rhq.modules.plugins.jbossas7.itest.domain.DomainServerComponentTest;
import org.rhq.modules.plugins.jbossas7.itest.standalone.StandaloneServerComponentTest;
import org.rhq.test.arquillian.AfterDiscovery;
@@ -157,21 +154,6 @@ public abstract class AbstractJBossAS7PluginTest extends
AbstractAgentPluginTest
return serverResource;
}
- protected void testAsynchronousAvailabilityCheck(Resource resource) throws Exception
{
- // Activate asynchronous availability checking
- ServerPluginConfiguration serverPluginConfig = new
ServerPluginConfiguration(resource.getPluginConfiguration());
- int availabilityCheckPeriod = 65;
- serverPluginConfig.setAvailabilityCheckPeriod(availabilityCheckPeriod);
- restartResourceComponent(resource);
-
- Thread.sleep((3 * availabilityCheckPeriod * 1000L) / 2);
- assertEquals(getAvailability(resource), UP);
-
- // Deactivate asynchronous availability checking as subsequent tests may rely on
immediate availabilty checking
- serverPluginConfig.setAvailabilityCheckPeriod(null);
- restartResourceComponent(resource);
- }
-
private void restartResourceComponent(Resource resource) throws
PluginContainerException {
InventoryManager inventoryManager = this.pluginContainer.getInventoryManager();
inventoryManager.deactivateResource(resource);
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainServerComponentTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainServerComponentTest.java
index 269474b..7706e23 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainServerComponentTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/DomainServerComponentTest.java
@@ -80,12 +80,6 @@ public class DomainServerComponentTest extends
AbstractServerComponentTest {
testServerAttributeValidation();
}
- @Test(priority = 1002)
- public void testDomainServerAsynchronousAvailabilityCheck() throws Exception {
- testAsynchronousAvailabilityCheck(getServerResource());
- }
-
-
// ******************************* METRICS ******************************* //
@Test(priority = 1003, enabled = true)
public void testDomainReleaseVersionTrait() throws Exception {
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/ManagedServerTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/ManagedServerTest.java
index 42bab08..cbc4400 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/ManagedServerTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/domain/ManagedServerTest.java
@@ -93,11 +93,6 @@ public class ManagedServerTest extends AbstractJBossAS7PluginTest {
assertEquals(avail, AvailabilityType.UP);
}
- @Test(priority = 1022)
- public void testManagedServerAsynchronousAvailabilityCheck() throws Exception {
- testAsynchronousAvailabilityCheck(getResource());
- }
-
private Resource getResource() {
InventoryManager im = pluginContainer.getInventoryManager();
diff --git
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/StandaloneServerComponentTest.java
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/StandaloneServerComponentTest.java
index 32f92c7..dd1b0ec 100644
---
a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/StandaloneServerComponentTest.java
+++
b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/standalone/StandaloneServerComponentTest.java
@@ -156,11 +156,6 @@ public class StandaloneServerComponentTest extends
AbstractServerComponentTest {
}
- @Test(priority = 8)
- public void testStandaloneServerAsynchronousAvailabilityCheck() throws Exception {
- testAsynchronousAvailabilityCheck(getServerResource());
- }
-
protected String getExpectedStartScriptFileName() {
return (File.separatorChar == '/') ? "standalone.sh" :
"standalone.bat";
}
diff --git
a/modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/JBossASServerComponent.java
b/modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/JBossASServerComponent.java
index 4e092af..873caaa 100644
---
a/modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/JBossASServerComponent.java
+++
b/modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/JBossASServerComponent.java
@@ -80,8 +80,6 @@ import org.rhq.core.domain.measurement.MeasurementDataTrait;
import org.rhq.core.domain.measurement.MeasurementReport;
import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
import org.rhq.core.domain.resource.CreateResourceStatus;
-import org.rhq.core.pluginapi.availability.AvailabilityCollectorRunnable;
-import org.rhq.core.pluginapi.availability.AvailabilityFacet;
import org.rhq.core.pluginapi.content.ContentContext;
import org.rhq.core.pluginapi.content.ContentFacet;
import org.rhq.core.pluginapi.content.ContentServices;
@@ -141,7 +139,6 @@ public class JBossASServerComponent<T extends
ResourceComponent<?>> implements M
public static final String SHUTDOWN_MBEAN_OPERATION_CONFIG_PROP =
"shutdownMbeanOperation";
public static final String SHUTDOWN_METHOD_CONFIG_PROP = "shutdownMethod";
public static final String JAVA_HOME_PATH_CONFIG_PROP = "javaHomePath";
- public static final String AVAIL_CHECK_PERIOD_CONFIG_PROP =
"availabilityCheckPeriod";
public static final String BINDING_ADDRESS_CONFIG_PROP = "bindingAddress";
@@ -204,8 +201,6 @@ public class JBossASServerComponent<T extends
ResourceComponent<?>> implements M
private MainDeployer mainDeployer;
- private AvailabilityCollectorRunnable availCollector;
-
private boolean loggedHijackedJnpUrlError;
// ResourceComponent Implementation --------------------------------------------
@@ -263,33 +258,10 @@ public class JBossASServerComponent<T extends
ResourceComponent<?>> implements M
this.logFileEventDelegate = new
LogFileEventResourceComponentHelper(this.resourceContext);
this.logFileEventDelegate.startLogFileEventPollers();
- // prepare to perform async avail checking
- String availCheckPeriodProp =
pluginConfig.getSimpleValue(AVAIL_CHECK_PERIOD_CONFIG_PROP, null);
- if (availCheckPeriodProp != null) {
- try {
- long availCheckMillis = Integer.parseInt(availCheckPeriodProp) * 1000L;
- this.availCollector =
resourceContext.getAvailabilityContext().createAvailabilityCollectorRunnable(
- new AvailabilityFacet() {
- public AvailabilityType getAvailability() {
- return getAvailabilityNow();
- }
- }, availCheckMillis);
- this.availCollector.start();
- } catch (NumberFormatException nfe) {
- log.error("avail check period config prop was not a valid number.
Cause: " + nfe);
- this.availCollector = null;
- }
- }
-
return;
}
public void stop() {
- if (this.availCollector != null) {
- this.availCollector.stop();
- this.availCollector = null;
- }
-
this.logFileEventDelegate.stopLogFileEventPollers();
if (this.connection != null) {
try {
@@ -304,14 +276,6 @@ public class JBossASServerComponent<T extends
ResourceComponent<?>> implements M
}
public AvailabilityType getAvailability() {
- if (this.availCollector != null) {
- return this.availCollector.getLastKnownAvailability();
- } else {
- return getAvailabilityNow();
- }
- }
-
- private AvailabilityType getAvailabilityNow() {
try {
File serverHomeViaJnp = getServerHome();
if
(this.configPath.getCanonicalPath().equals(serverHomeViaJnp.getCanonicalPath())) {
diff --git a/modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
index 36bc9fb..90776d1 100644
--- a/modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as/src/main/resources/META-INF/rhq-plugin.xml
@@ -158,12 +158,6 @@
description="Name of the operation to invoke when
shutting down this server through JMX.
Note that only operations with no parameter or with one
int parameter are supported. If the
operation requires an int parameter, '0' will be
supplied."/>
- <c:simple-property name="availabilityCheckPeriod"
description="The amount of time, in seconds, that must elapse between availability
checks to see if the server is up. If set, the availability checks will be performed
asynchronously thus allowing slow-responding servers to avoid being falsely reported as
down."
- units="seconds" required="false"
type="integer">
- <c:constraint>
- <c:integer-constraint minimum="60"/>
- </c:constraint>
- </c:simple-property>
<c:simple-property name="childJmxServerName"
displayName="JBoss AS JVM Name" default="JVM"
readOnly="true" required="false"
diff --git a/modules/plugins/mysql/src/test/java/org/rhq/plugins/mysql/ComponentTest.java
b/modules/plugins/mysql/src/test/java/org/rhq/plugins/mysql/ComponentTest.java
index 610cb61..3b431d6 100644
--- a/modules/plugins/mysql/src/test/java/org/rhq/plugins/mysql/ComponentTest.java
+++ b/modules/plugins/mysql/src/test/java/org/rhq/plugins/mysql/ComponentTest.java
@@ -38,13 +38,16 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
import javax.xml.bind.JAXBElement;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.testng.annotations.AfterSuite;
+import org.testng.annotations.AfterTest;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeSuite;
+
import org.rhq.core.clientapi.agent.metadata.PluginMetadataManager;
import org.rhq.core.clientapi.descriptor.AgentPluginDescriptorUtil;
import org.rhq.core.clientapi.descriptor.configuration.ConfigurationProperty;
@@ -92,10 +95,6 @@ import org.rhq.core.system.ProcessInfo;
import org.rhq.core.system.SystemInfo;
import org.rhq.core.system.SystemInfoFactory;
import org.rhq.core.system.pquery.ProcessInfoQuery;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeSuite;
/**
* Base class for RHQ Component Testing.
@@ -155,7 +154,6 @@ public abstract class ComponentTest {
private final String pluginContainerName = "rhq";
private final OperationContext operationContext = new OperationContextImpl(0);
private final ContentContext contentContext = new ContentContextImpl(0);
- private final Executor availCollectorThreadPool = Executors.newCachedThreadPool();
private PluginContainerDeployment pluginContainerDeployment = null;
private Resource platform;
private ResourceContainer platformContainer;
@@ -295,7 +293,7 @@ public abstract class ComponentTest {
String rclassname = pmm.getComponentClass(type);
ResourceComponent component = (ResourceComponent)
Class.forName(rclassname).newInstance();
- AvailabilityContext availContext = new
AvailabilityContextImpl(cresource,availCollectorThreadPool);
+ AvailabilityContext availContext = new AvailabilityContextImpl(cresource);
InventoryContext inventoryContext = new InventoryContextImpl(cresource);
EventContext eventContext = new EventContextImpl(resource);
diff --git
a/modules/plugins/oracle/src/test/java/org/rhq/plugins/oracle/ComponentTest.java
b/modules/plugins/oracle/src/test/java/org/rhq/plugins/oracle/ComponentTest.java
index 569bd09..e98c2e9 100644
--- a/modules/plugins/oracle/src/test/java/org/rhq/plugins/oracle/ComponentTest.java
+++ b/modules/plugins/oracle/src/test/java/org/rhq/plugins/oracle/ComponentTest.java
@@ -10,7 +10,6 @@ import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.Executors;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -134,7 +133,7 @@ public abstract class ComponentTest {
ResourceDiscoveryComponent resourceDiscoveryComponent = new
NothingDiscoveringDiscoveryComponent();
EventContext eventContext = new EventContextImpl(resource);
- AvailabilityContext availContext = new AvailabilityContextImpl(resource,
Executors.newCachedThreadPool());
+ AvailabilityContext availContext = new AvailabilityContextImpl(resource);
InventoryContext inventoryContext = new InventoryContextImpl(resource);
ResourceContext context = new ResourceContext(resource,
parentResourceComponent, parentResourceContext,
resourceDiscoveryComponent, systemInfo, temporaryDirectory,
dataDirectory, pluginContainerName,
@@ -172,7 +171,7 @@ public abstract class ComponentTest {
log.debug("rdc=" + rdc);
EventContext eventContext = new EventContextImpl(resource);
- AvailabilityContext availContext = new AvailabilityContextImpl(resource,
Executors.newCachedThreadPool());
+ AvailabilityContext availContext = new AvailabilityContextImpl(resource);
InventoryContext inventoryContext = new InventoryContextImpl(resource);
ResourceContext context = new ResourceContext(resource, component, parentContext,
resourceDiscoveryComponent,
systemInfo, temporaryDirectory, dataDirectory, pluginContainerName,
eventContext, operationContext,
@@ -204,7 +203,7 @@ public abstract class ComponentTest {
ResourceComponent component = (ResourceComponent)
Class.forName(rclassname).newInstance();
EventContext eventContext = new EventContextImpl(resource);
- AvailabilityContext availContext = new AvailabilityContextImpl(resource,
Executors.newCachedThreadPool());
+ AvailabilityContext availContext = new AvailabilityContextImpl(resource);
InventoryContext inventoryContext = new InventoryContextImpl(resource);
ResourceContext context = new ResourceContext(cresource, parentComponent,
parentContext,
resourceDiscoveryComponent, systemInfo, temporaryDirectory, dataDirectory,
pluginContainerName,
diff --git
a/modules/plugins/snmptrapd/src/test/java/org/rhq/plugins/snmptrapd/ComponentTest.java
b/modules/plugins/snmptrapd/src/test/java/org/rhq/plugins/snmptrapd/ComponentTest.java
index cd90737..24b6d9f 100644
---
a/modules/plugins/snmptrapd/src/test/java/org/rhq/plugins/snmptrapd/ComponentTest.java
+++
b/modules/plugins/snmptrapd/src/test/java/org/rhq/plugins/snmptrapd/ComponentTest.java
@@ -4,7 +4,6 @@ import java.io.File;
import java.io.InputStream;
import java.util.Set;
import java.util.UUID;
-import java.util.concurrent.Executors;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -98,7 +97,7 @@ public abstract class ComponentTest {
OperationContext operationContext = new OperationContextImpl(0);
ContentContext contentContext = new ContentContextImpl(0);
PluginContainerDeployment pluginContainerDeployment = null;
- AvailabilityContext availContext = new AvailabilityContextImpl(resource,
Executors.newCachedThreadPool());
+ AvailabilityContext availContext = new AvailabilityContextImpl(resource);
InventoryContext inventoryContext = new InventoryContextImpl(resource);
ResourceContext context = new ResourceContext(resource, parentResourceComponent,
parentResourceContext,
resourceDiscoveryComponent, systemInfo, temporaryDirectory, dataDirectory,
pluginContainerName,
commit daf1fd04313424a369355a3a162edb2f8aea50c2
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Mon Dec 9 13:54:15 2013 +0100
Bump the version of remoting
diff --git a/.classpath b/.classpath
index a334ae2..f8048fc 100644
--- a/.classpath
+++ b/.classpath
@@ -231,7 +231,7 @@
<classpathentry exported="true" kind="var"
path="M2_REPO/i18nlog/i18nlog/1.0.10/i18nlog-1.0.10.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/gnu-getopt/getopt/1.0.13/getopt-1.0.13.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/commons-httpclient/commons-httpclient/3.0.1/commons-httpclient-3.0.1.jar"
sourcepath="/M2_REPO/commons-httpclient/commons-httpclient/3.0.1/commons-httpclient-3.0.1-sources.jar"/>
- <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/remoting/jboss-remoting/2.5.4.SP4/jboss-remoting-2.5.4.SP4.jar"
sourcepath="M2_REPO/org/jboss/remoting/jboss-remoting/2.5.4.SP4/jboss-remoting-2.5.4.SP4-sources.jar"/>
+ <classpathentry exported="true" kind="var"
path="M2_REPO/org/jboss/remoting/jboss-remoting/2.5.4.SP5/jboss-remoting-2.5.4.SP5.jar"
sourcepath="M2_REPO/org/jboss/remoting/jboss-remoting/2.5.4.SP5/jboss-remoting-2.5.4.SP5-sources.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/oswego-concurrent/concurrent/1.3.4/concurrent-1.3.4.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/rss4j/rss4j/0.92-on.2/rss4j-0.92-on.2.jar"/>
<classpathentry exported="true" kind="var"
path="M2_REPO/org/apache/ant/ant/1.8.4/ant-1.8.4.jar"
sourcepath="M2_REPO/org/apache/ant/ant/1.8.4/ant-1.8.4-sources.jar"/>
diff --git a/pom.xml b/pom.xml
index cd099f6..77a3dcd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -116,7 +116,7 @@
<jboss-cache.version>1.4.1.SP9</jboss-cache.version>
<jboss-jmx.version>4.2.3.GA</jboss-jmx.version>
<jboss-common.version>1.2.1.GA</jboss-common.version> <!-- note this
is the old commons we used, not the newer commons-core -->
- <jboss-remoting.version>2.5.4.SP4</jboss-remoting.version>
+ <jboss-remoting.version>2.5.4.SP5</jboss-remoting.version>
<jboss-serialization.version>1.0.3.GA</jboss-serialization.version>
<jboss-system.version>4.2.3.GA</jboss-system.version>
<jbosssx.version>4.2.3.GA</jbosssx.version>
commit 8608dc0daa4c4c93f7249aa21620918bba864c91
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Sun Dec 8 22:31:26 2013 +0100
BZ 961000 - Allow to get and update metric definitions.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
index b33db05..831c24e 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
@@ -31,6 +31,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import javax.ejb.Asynchronous;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
@@ -123,6 +124,8 @@ public class MetricHandlerBean extends AbstractRestBean {
ResourceManagerLocal resMgr;
@EJB
ResourceGroupManagerLocal groupMgr;
+ @EJB
+ MetricHandlerBean metricHandlerBean;
@EJB
private StorageClientManagerBean sessionManager;
@@ -608,7 +611,7 @@ public class MetricHandlerBean extends AbstractRestBean {
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
@ApiOperation(value = "Update the schedule (enabled, interval) ",
responseClass = "MetricSchedule")
@ApiError(code = 404, reason = NO_SCHEDULE_FOR_ID)
- public Response updateSchedule(@ApiParam("Id of the schedule to query")
@PathParam("id") int scheduleId,
+ public Response updateSchedule(@ApiParam("Id of the schedule to update")
@PathParam("id") int scheduleId,
@ApiParam(value = "New schedule data", required
= true) MetricSchedule in,
@Context HttpHeaders headers) {
@@ -632,6 +635,69 @@ public class MetricHandlerBean extends AbstractRestBean {
return Response.ok(ret,headers.getAcceptableMediaTypes().get(0)).build();
}
+
+ @GET
+ @Path("/definition/{id}")
+ @Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
+ @ApiOperation(value = "Get the definition ", responseClass =
"MetricSchedule")
+ @ApiError(code = 404, reason = "No definition exists for the given id.")
+ public Response getDefinition(@ApiParam("Id of the definition to obtain")
@PathParam("id") int definitionId,
+ @Context HttpHeaders headers) {
+
+ MeasurementDefinition measurementDefinition =
definitionManager.getMeasurementDefinition(caller, definitionId);
+ if (measurementDefinition==null)
+ throw new StuffNotFoundException("Definition with id " +
definitionId);
+
+
+ MetricSchedule schedule = new MetricSchedule(definitionId,
+ measurementDefinition.getName(),
+ measurementDefinition.getDisplayName(),
+ measurementDefinition.isDefaultOn(),
+ measurementDefinition.getDefaultInterval(),
+ measurementDefinition.getUnits().getName(),
+ measurementDefinition.getDataType().name());
+
+ return Response.ok(schedule,headers.getAcceptableMediaTypes().get(0)).build();
+ }
+
+ @PUT
+ @Path("/definition/{id}")
+ @Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
+ @Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
+ @ApiOperation(value = "Update the definition (default enabled, default
interval)",
+ notes = "This operation may internally take a long time to complete and is
thus only triggered by this call. "
+ + "A return code of 200 only indicates that the operation was
successfully submitted."
+ , responseClass = "MetricSchedule")
+ @ApiError(code = 404, reason = "No definition exists for the given id.")
+ public Response updateDefinition(@ApiParam("Id of the definition to
update") @PathParam("id") int definitionId,
+ @ApiParam(value = "New definition data",
required = true) MetricSchedule in,
+ @ApiParam(value = "Update existing schedules for
this definition as well?") @QueryParam("updateExisting")
@DefaultValue("false") boolean updateExisting,
+ @Context HttpHeaders headers) {
+
+ MeasurementDefinition measurementDefinition =
definitionManager.getMeasurementDefinition(caller, definitionId);
+ if (measurementDefinition==null)
+ throw new StuffNotFoundException("Definition with id " +
definitionId);
+
+ // Call an async method to do the work as this can take a looong time
+ metricHandlerBean.submitDefinitionChange(definitionId, in, updateExisting);
+
+ StringValue ret = new StringValue("Request submitted - this may take a while
to complete.");
+
+ return Response.ok(ret,headers.getAcceptableMediaTypes().get(0)).build();
+ }
+
+ /**
+ * This method does the real updating, it is not exposed to the REST-clients, but
must be public so that #updateDefinition can
+ * call it and the container does an asynchronous request.
+ * @param definitionId Id of the measeuremnt definition to update
+ * @param in The data to be put in
+ * @param updateExisting Should existing schedules of the metric als be updated?
+ */
+ @Asynchronous
+ public void submitDefinitionChange(int definitionId, MetricSchedule in, boolean
updateExisting) {
+
scheduleManager.updateDefaultCollectionIntervalAndEnablementForMeasurementDefinitions(caller,new
int[]{definitionId},in.getCollectionInterval(),in.getEnabled(),updateExisting);
+ }
+
@GZIP
@ApiOperation(value = "Expose the raw metrics of a single schedule. This can
only expose raw data, which means the start date may "
+ "not be older than 7 days.")
diff --git
a/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/MetricsTest.java
b/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/MetricsTest.java
index 6e945a6..ab2b3a2 100644
---
a/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/MetricsTest.java
+++
b/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/MetricsTest.java
@@ -1025,11 +1025,11 @@ JsonPath jp =
given()
.header(acceptJson)
.queryParam("sid", numericScheduleId)
- .queryParam("dataPoints",99)
+ .queryParam("dataPoints", 99)
.expect()
.statusCode(200)
.log().ifError()
- .body("[0].dataPoints",iterableWithSize(99))
+ .body("[0].dataPoints", iterableWithSize(99))
// .body("[0].min",closeTo(1.5,0.1))
// .body("[0].max",closeTo(46.0,0.1)) // We may have data already
// .body("[0].avg",notNullValue())
@@ -1068,7 +1068,7 @@ JsonPath jp =
.expect()
.statusCode(200)
.log().ifError()
- .body("",iterableWithSize(2))
+ .body("", iterableWithSize(2))
// .body("[0].min", closeTo(1.5,0.1))
// .body("[0].max", notNullValue()) // We may have data already
// .body("[0].avg", notNullValue())
@@ -1077,7 +1077,91 @@ JsonPath jp =
.get("/metric/data");
}
+ @Test
+ public void testGetUpdateDefinition() throws Exception {
+
+ Schedule schedule = new Schedule();
+ schedule.setCollectionInterval(1234567);
+ schedule.setEnabled(true);
+
+ // First read the current data
+
+ Schedule def =
+ given()
+ .header(acceptJson)
+ .pathParam("id", numericScheduleDefinitionId)
+ .expect()
+ .statusCode(200)
+ .when()
+ .get("/metric/definition/{id}")
+ .as(Schedule.class);
+
+ long oldInterval = def.getCollectionInterval();
+
+
+ given()
+ .header(acceptJson)
+ .contentType(ContentType.JSON)
+ .pathParam("id", numericScheduleDefinitionId)
+ .body(schedule)
+ .expect()
+ .statusCode(200)
+ .log().ifError()
+ .when()
+ .put("/metric/definition/{id}");
+
+ // reset to original interval
+
+ schedule.setCollectionInterval(oldInterval);
+ given()
+ .header(acceptJson)
+ .contentType(ContentType.JSON)
+ .pathParam("id", numericScheduleDefinitionId)
+ .body(schedule)
+ .expect()
+ .statusCode(200)
+ .log().ifError()
+ .when()
+ .put("/metric/definition/{id}");
+
+
+
+ }
+ @Test
+ public void testUpdateBadDefinition() throws Exception {
+
+ Schedule schedule = new Schedule();
+ schedule.setCollectionInterval(1234567);
+ schedule.setEnabled(true);
+
+
+ given()
+ .header(acceptJson)
+ .contentType(ContentType.JSON)
+ .pathParam("id", 42)
+ .body(schedule)
+ .expect()
+ .statusCode(404)
+ .log().ifError()
+ .when()
+ .put("/metric/definition/{id}");
+
+ }
+
+ @Test
+ public void testGetBadDefinition() throws Exception {
+
+ given()
+ .header(acceptJson)
+ .pathParam("id",42)
+ .expect()
+ .statusCode(404)
+ .log().ifError()
+ .when()
+ .get("/metric/definition/{id}");
+
+ }
private void addDataToSchedule(int howMany) {
long now = System.currentTimeMillis();
diff --git
a/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/d/Schedule.java
b/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/d/Schedule.java
index c0deeef..31df671 100644
---
a/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/d/Schedule.java
+++
b/modules/integration-tests/rest-api/src/test/java/org/rhq/modules/integrationTests/restApi/d/Schedule.java
@@ -22,6 +22,8 @@
*/
package org.rhq.modules.integrationTests.restApi.d;
+import java.util.List;
+
/**
* A metric schedule for testing
* @author Heiko W. Rupp
@@ -32,6 +34,12 @@ public class Schedule {
private boolean enabled;
private long collectionInterval;
private int definitionId;
+ private String scheduleName;
+ private String displayName;
+ private String unit;
+ private String type;
+ List<Link> links;
+ private long mtime;
public Schedule() {
}
@@ -67,4 +75,52 @@ public class Schedule {
public void setDefinitionId(int definitionId) {
this.definitionId = definitionId;
}
+
+ public String getScheduleName() {
+ return scheduleName;
+ }
+
+ public void setScheduleName(String scheduleName) {
+ this.scheduleName = scheduleName;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public void setDisplayName(String displayName) {
+ this.displayName = displayName;
+ }
+
+ public String getUnit() {
+ return unit;
+ }
+
+ public void setUnit(String unit) {
+ this.unit = unit;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public List<Link> getLinks() {
+ return links;
+ }
+
+ public void setLinks(List<Link> links) {
+ this.links = links;
+ }
+
+ public long getMtime() {
+ return mtime;
+ }
+
+ public void setMtime(long mtime) {
+ this.mtime = mtime;
+ }
}
commit 9b39b1eb0ac578748b1fcdbfa4440fe993ab2219
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Sat Dec 7 23:37:49 2013 +0100
Improve description
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertDefinitionHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertDefinitionHandlerBean.java
index d42dade..b6c0695 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertDefinitionHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertDefinitionHandlerBean.java
@@ -155,7 +155,7 @@ public class AlertDefinitionHandlerBean extends AbstractRestBean {
@ApiParam("Should conditions and notifications be returned too?")
@QueryParam("full") @DefaultValue("false") boolean full,
@ApiParam(value = "Page number") @QueryParam("page")
Integer page,
@ApiParam(value = "Page size") @DefaultValue("20")
@QueryParam("ps") int pageSize,
- @ApiParam(value = "Resource id")
@QueryParam("resourceId") Integer resourceId,
+ @ApiParam(value = "Resource id to filter by")
@QueryParam("resourceId") Integer resourceId,
@Context HttpHeaders headers,
@Context UriInfo uriInfo) {
commit 2dd5b1ade251f97ad54e2960ac4d1a8430bee910
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Sat Dec 7 23:22:30 2013 +0100
BZ 1039107 - Allow to limit alert definitions display by resource id.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AbstractRestBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AbstractRestBean.java
index b043247..739e358 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AbstractRestBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AbstractRestBean.java
@@ -315,6 +315,12 @@ public class AbstractRestBean {
uri = uriBuilder.build(res.getId());
link = new Link("alerts", uri.toString());
rwt.addLink(link);
+ uriBuilder = uriInfo.getBaseUriBuilder();
+ uriBuilder.path("/alert/definitions");
+ uriBuilder.queryParam("resourceId",res.getId());
+ uri = uriBuilder.build(res.getId());
+ link = new Link("alertDefinitions", uri.toString());
+ rwt.addLink(link);
if (parent != null) {
uriBuilder = uriInfo.getBaseUriBuilder();
uriBuilder.path("/resource/{id}/");
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertDefinitionHandlerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertDefinitionHandlerBean.java
index 3b43bee..d42dade 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertDefinitionHandlerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/AlertDefinitionHandlerBean.java
@@ -155,6 +155,7 @@ public class AlertDefinitionHandlerBean extends AbstractRestBean {
@ApiParam("Should conditions and notifications be returned too?")
@QueryParam("full") @DefaultValue("false") boolean full,
@ApiParam(value = "Page number") @QueryParam("page")
Integer page,
@ApiParam(value = "Page size") @DefaultValue("20")
@QueryParam("ps") int pageSize,
+ @ApiParam(value = "Resource id")
@QueryParam("resourceId") Integer resourceId,
@Context HttpHeaders headers,
@Context UriInfo uriInfo) {
@@ -163,6 +164,9 @@ public class AlertDefinitionHandlerBean extends AbstractRestBean {
if (page!=null) {
criteria.setPaging(page,pageSize);
}
+ if (resourceId!=null) {
+ criteria.addFilterResourceIds(resourceId);
+ }
PageList<AlertDefinition> defs =
alertDefinitionManager.findAlertDefinitionsByCriteria(caller, criteria);
List<AlertDefinitionRest> ret = new
ArrayList<AlertDefinitionRest>(defs.size());
commit f575d2de32d2468f00ed57186ab0db8f1f20e56d
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Dec 6 17:06:46 2013 +0100
Add some more aliases for Jean-Frederic
diff --git a/.mailmap b/.mailmap
index 663fd9c..4ddd3a9 100644
--- a/.mailmap
+++ b/.mailmap
@@ -35,6 +35,8 @@ Jay Shaughnessy <jshaughn(a)redhat.com>
<jshaughn(a)jshaughn.csb>
Jay Shaughnessy <jshaughn(a)redhat.com> Jay Shaughnessy
<jshaughn(a)jshaughn.csb>
Jean-Frederic Clere <jclere(a)redhat.com>
Jean-Frederic Clere <jclere(a)redhat.com> <jfclere(a)neo2.gva.redhat.com>
+Jean-Frederic Clere <jclere(a)redhat.com> <jfclere(a)gmail.com>
+Jean-Frederic Clere <jclere(a)redhat.com> <jfclere(a)redhat.com>
Jeff Ortel <jortel(a)redhat.com>
Jérémie Lagarde <jer(a)printstacktrace.org>
Jessica Sant <jsant(a)redhat.com>
commit a01f618dc50fce9724a05ae7eabcf45931ab5e01
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Dec 6 11:14:38 2013 +0100
Intern the strings in the KeyType, as they tend to contain the same things over and
over again.
diff --git
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/plugin/CanonicalResourceKey.java
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/plugin/CanonicalResourceKey.java
index 18c6987..d59c373 100644
---
a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/plugin/CanonicalResourceKey.java
+++
b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/plugin/CanonicalResourceKey.java
@@ -136,9 +136,9 @@ public class CanonicalResourceKey implements Serializable {
if (type.getPlugin() == null) {
throw new PluginContainerException("plugin must not be null");
}
- this.key = key;
- this.type = type.getName();
- this.plugin = type.getPlugin();
+ this.key = key.intern();
+ this.type = type.getName().intern();
+ this.plugin = type.getPlugin().intern();
}
@Override
commit 5348eada15041f0666347a78b423040f978cb89b
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Sat Dec 7 01:02:23 2013 +0100
irc-bot: fixing the !support command
diff --git a/etc/rhq-ircBot/pom.xml b/etc/rhq-ircBot/pom.xml
index adbab6a..75c9249 100644
--- a/etc/rhq-ircBot/pom.xml
+++ b/etc/rhq-ircBot/pom.xml
@@ -8,7 +8,7 @@
<groupId>org.rhq.etc</groupId>
<artifactId>rhq-ircbot</artifactId>
- <version>1.1.1</version>
+ <version>1.1.2</version>
<packaging>jar</packaging>
<name>RHQ IRC Bot</name>
@@ -55,6 +55,12 @@
<artifactId>jsoup</artifactId>
<version>1.7.2</version>
</dependency>
+
+ <dependency>
+ <groupId>com.google.gdata</groupId>
+ <artifactId>core</artifactId>
+ <version>1.47.1</version>
+ </dependency>
<dependency>
<groupId>commons-codec</groupId>
diff --git a/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/GDocParser.java
b/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/GDocParser.java
new file mode 100644
index 0000000..84db12e
--- /dev/null
+++ b/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/GDocParser.java
@@ -0,0 +1,79 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 2005-2013 Red Hat, Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+package org.rhq.etc.ircbot;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.List;
+
+import com.google.gdata.client.spreadsheet.SpreadsheetService;
+import com.google.gdata.data.spreadsheet.CellFeed;
+import com.google.gdata.data.spreadsheet.SpreadsheetEntry;
+import com.google.gdata.data.spreadsheet.SpreadsheetFeed;
+import com.google.gdata.data.spreadsheet.WorksheetEntry;
+import com.google.gdata.data.spreadsheet.WorksheetFeed;
+import com.google.gdata.util.AuthenticationException;
+import com.google.gdata.util.ServiceException;
+
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+
+/**
+ * @author Jirka Kremser
+ *
+ */
+public class GDocParser {
+ public static String onSupport2() throws AuthenticationException,
MalformedURLException, IOException,
+ ServiceException, URISyntaxException {
+ SpreadsheetService service = new
SpreadsheetService("MySpreadsheetIntegration-foo");
+ URL url = new
URL("https://spreadsheets.google.com/feeds/spreadsheets/private/full...;
+ SpreadsheetFeed feed = service.getFeed(url, SpreadsheetFeed.class);
+ List<SpreadsheetEntry> spreadsheets = feed.getEntries();
+ SpreadsheetEntry spreadsheet = spreadsheets.get(0);
+ WorksheetFeed worksheetFeed = service.getFeed(spreadsheet.getWorksheetFeedUrl(),
WorksheetFeed.class);
+ List<WorksheetEntry> worksheets = worksheetFeed.getEntries();
+ WorksheetEntry worksheet = worksheets.get(0);
+ // fetch A1 only
+ URL cellFeedUrl = new URI(worksheet.getCellFeedUrl().toString() +
"?min-row=1&max-row=1&min-col=1&max-col=1")
+ .toURL();
+ CellFeed cellFeed = service.getFeed(cellFeedUrl, CellFeed.class);
+ // Iterate through each cell, printing its value.
+ String onSupport = cellFeed.getEntries().get(0).getCell().getValue();
+ return onSupport;
+ }
+
+ public static String onSupport1() {
+ // the simplest way of accessing the publicly available gdoc (OAuth is not needed
here)
+ String url =
"https://docs.google.com/spreadsheet/pub?key=0AsqiOfOdbEhBdEtMZGRGUTVZNTNmYXlFdllqdU9Oamc&single=true&gid=1&output=txt";
+ Document doc = null;
+ try {
+ doc = Jsoup.connect(url).get();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return doc.body().html().trim();
+ }
+
+ public static void main(String[] args) {
+ System.out.println(GDocParser.onSupport1());
+ }
+}
diff --git a/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
b/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
index 998efa9..7358e18 100644
--- a/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
+++ b/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBot.java
@@ -19,7 +19,6 @@
package org.rhq.etc.ircbot;
import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.KeyManagementException;
@@ -27,7 +26,6 @@ import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
-import java.util.Properties;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
@@ -45,7 +43,7 @@ public class RhqIrcBot extends PircBotX {
public RhqIrcBot(RhqIrcBotListener rhqBot) {
setName("rhq-bot");
- setVersion("1.1.1");
+ setVersion("1.1.2");
setFinger("RHQ IRC bot (source code in RHQ git under
etc/rhq-ircBot/)");
setVerbose(true);
@@ -74,24 +72,21 @@ public class RhqIrcBot extends PircBotX {
System.err.println("Provided property file [" + args[2] +
"] does not exist");
System.exit(2);
}
- Properties properties = new Properties();
- FileInputStream fis = new FileInputStream(propertyFile);
- properties.load(fis);
- String docspaceLogin = properties.getProperty("docspace_login");
- String docspacePassword =
properties.getProperty("docspace_password");
- if (docspaceLogin == null || docspaceLogin.isEmpty() || docspacePassword ==
null || docspacePassword.isEmpty()) {
- System.err.println("The property format has bad format");
- System.err.println("It must contain following key-value
pairs\n");
- System.err.println("docspace_login=X");
- System.err.println("docspace_password=Y");
- System.exit(3);
- }
- fis.close();
+// Properties properties = new Properties();
+// FileInputStream fis = new FileInputStream(propertyFile);
+// properties.load(fis);
+// String docspaceLogin = properties.getProperty("docspace_login");
+// String docspacePassword =
properties.getProperty("docspace_password");
+// if (docspaceLogin == null || docspaceLogin.isEmpty() || docspacePassword ==
null || docspacePassword.isEmpty()) {
+// System.err.println("The property format has bad format");
+// System.err.println("It must contain following key-value
pairs\n");
+// System.err.println("docspace_login=X");
+// System.err.println("docspace_password=Y");
+// System.exit(3);
+// }
+// fis.close();
setupTrustStore();
-
- rhqBotListener.setDocspaceLogin(docspaceLogin);
- rhqBotListener.setDocspacePassword(docspacePassword);
}
PircBotX bot = new RhqIrcBot(rhqBotListener);
diff --git a/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBotListener.java
b/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBotListener.java
index 3e3e6f9..1a70c3f 100644
--- a/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBotListener.java
+++ b/etc/rhq-ircBot/src/main/java/org/rhq/etc/ircbot/RhqIrcBotListener.java
@@ -7,7 +7,6 @@ import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
-import java.util.Random;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -17,7 +16,6 @@ import com.j2bugzilla.base.BugzillaConnector;
import com.j2bugzilla.base.BugzillaException;
import com.j2bugzilla.rpc.GetBug;
-import org.apache.commons.codec.binary.Base64;
import org.apache.xmlrpc.XmlRpcException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
@@ -43,7 +41,6 @@ public class RhqIrcBotListener extends ListenerAdapter<RhqIrcBot>
{
private static final Pattern BUG_PATTERN = Pattern.compile("(?i)(bz|bug)[
]*(\\d{6,7})");
private static final Pattern COMMIT_PATTERN =
Pattern.compile("(?i)(\\!commit|cm)[ ]*([0-9a-f]{3,40})");
private static final Pattern ECHO_PATTERN = Pattern.compile("(?i)echo[
]+(.+)");
- private static final String SUPPORT_LINK =
"https://docspace.corp.redhat.com/docs/DOC-124477";
private static final String COMMIT_LINK =
"https://git.fedorahosted.org/cgit/rhq/rhq.git/commit/?id=%s";
private static final String PTO_LINK =
"https://mail.corp.redhat.com/home/ccrouch@redhat.com/JBoss%20ON%20OOO?fmt=rss&view=day&start=0day&end=0day";
private static final DateFormat monthFormat = new SimpleDateFormat("MMM");
@@ -93,8 +90,6 @@ public class RhqIrcBotListener extends ListenerAdapter<RhqIrcBot>
{
private final String server;
private final String channel;
private final boolean isRedHatChannel;
- private String docspaceLogin;
- private String docspacePassword;
private BugzillaConnector bzConnector = new BugzillaConnector();
private final Map<Integer, Long> bugLogTimestamps = new HashMap<Integer,
Long>();
private final Map<String, String> names = new HashMap<String, String>();
@@ -119,6 +114,10 @@ public class RhqIrcBotListener extends
ListenerAdapter<RhqIrcBot> {
@Override
public void onMessage(MessageEvent<RhqIrcBot> event) throws Exception {
+ if (event.getUser().getNick().toLowerCase().contains("bot")) {
+ return; // never talk with artificial forms of life
+ }
+
PircBotX bot = event.getBot();
if (!bot.getNick().equals(bot.getName())) {
bot.changeNick(bot.getName());
@@ -290,7 +289,7 @@ public class RhqIrcBotListener extends
ListenerAdapter<RhqIrcBot> {
switch (command) {
case SUPPORT:
if (isRedHatChannel)
- return whoIsOnSupport(SUPPORT_LINK);
+ return whoIsOnSupport();
case PTO:
if (isRedHatChannel)
return whoIsOnPto(PTO_LINK);
@@ -301,67 +300,23 @@ public class RhqIrcBotListener extends
ListenerAdapter<RhqIrcBot> {
return null;
}
- private String whoIsOnSupport(String link) {
- if (docspaceLogin == null || docspaceLogin.isEmpty() || docspacePassword == null
|| docspacePassword.isEmpty()) {
- return "This command is not supported.";
- }
+ private String whoIsOnSupport() {
String month = monthFormat.format(new Date());
String dayInMonth = dayInMonthFormat.format(new Date());
- String cachedValue = ptoCache.get(month + "#" + dayInMonth);
+ String cachedValue = supportCache.get(month + "#" + dayInMonth);
if (cachedValue != null) {
return cachedValue;
}
- int dayInMonthInt = Integer.parseInt(dayInMonth);
- try {
- boolean monthFound = false;
- String login = docspaceLogin + ":" + docspacePassword;
- String base64login = new String(Base64.encodeBase64(login.getBytes()));
- Document doc = Jsoup.connect(link).header("Authorization",
"Basic " + base64login).get();
- Elements cells = doc.select("tr td");
- for (Element cell : cells) {
- String cellText = cell.text().toLowerCase();
- if (cellText.startsWith(month.toLowerCase())) {
- monthFound = true;
- if (cellText.substring(cellText.length() - 1,
cellText.length()).equals(dayInMonth)) {
- String value = doNotNotify(cell.firstElementSibling().text() +
" is on support this week");
- ptoCache.put(month + "#" + dayInMonth, value);
- return value;
- }
- continue;
- }
- if (monthFound && cellText.equals(dayInMonth)) {
- String value = doNotNotify(cell.firstElementSibling().text() + "
is on support this week");
- ptoCache.put(month + "#" + dayInMonth, value);
- return value;
- } else if (monthFound) {
- if (cell.equals(cell.firstElementSibling()) ||
cell.equals(cell.lastElementSibling())) {
- continue; //the first row with name or the last row with a
comment
- }
- int day;
- try {
- day = Integer.parseInt(cellText);
- if (day > dayInMonthInt) {
- String value =
doNotNotify(cell.parent().previousElementSibling().child(0).text() + " is on support
this week");
- ptoCache.put(month + "#" + dayInMonth, value);
- return value;
- }
- } catch (NumberFormatException nfe) {
- break; // next month
- }
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- // fallback solution if SSL is not set correctly
- String randomDevel = JON_DEVS.toArray(new String[JON_DEVS.size()])[new
Random().nextInt(JON_DEVS.size())];
- return "404 Developer Not Found, selecting randomly " +
doNotNotify(randomDevel) + ". Check the " + SUPPORT_LINK;
+ String onSupport = GDocParser.onSupport1();
+ String value = doNotNotify(onSupport + " is on support this week");
+ supportCache.put(month + "#" + dayInMonth, value);
+ return value;
}
private String whoIsOnPto(String link) {
String month = monthFormat.format(new Date());
String dayInMonth = dayInMonthFormat.format(new Date());
- String cachedValue = supportCache.get(month + "#" + dayInMonth);
+ String cachedValue = ptoCache.get(month + "#" + dayInMonth);
if (cachedValue != null) {
return cachedValue;
}
@@ -374,7 +329,7 @@ public class RhqIrcBotListener extends
ListenerAdapter<RhqIrcBot> {
}
if (!onPto.isEmpty()) {
String value = doNotNotify(onPto.substring(0, onPto.length() - 2));
- supportCache.put(month + "#" + dayInMonth, value);
+ ptoCache.put(month + "#" + dayInMonth, value);
return value;
}
} catch (IOException e) {
@@ -387,13 +342,4 @@ public class RhqIrcBotListener extends
ListenerAdapter<RhqIrcBot> {
//replace all vowels with unicode chars that look same not to spam users with
notifications
return nick.toLowerCase().replaceFirst("a",
"\u0430").replaceFirst("e",
"\u0435").replaceFirst("i",
"\u0456").replaceFirst("o",
"\u043E").replaceFirst("u",
"\u222A").replaceFirst("y", "\u028F");
}
-
- public void setDocspaceLogin(String docspaceLogin) {
- this.docspaceLogin = docspaceLogin;
- }
-
- public void setDocspacePassword(String docspacePassword) {
- this.docspacePassword = docspacePassword;
- }
-
}
diff --git a/etc/rhq-ircBot/src/main/resources/org/rhq/etc/ircbot/rhq-ircbot.properties
b/etc/rhq-ircBot/src/main/resources/org/rhq/etc/ircbot/rhq-ircbot.properties
index 25e325c..8b13789 100644
--- a/etc/rhq-ircBot/src/main/resources/org/rhq/etc/ircbot/rhq-ircbot.properties
+++ b/etc/rhq-ircBot/src/main/resources/org/rhq/etc/ircbot/rhq-ircbot.properties
@@ -1,2 +1 @@
-docspace_login=
-docspace_password=
+
commit d8ccc8a7ec54dbfa36ae71f7f80e8b625f979b85
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Dec 6 16:01:03 2013 -0500
[1037616] Pull calls to find current availability out of the processing loop
A fix in the new impl to handle multiple updates for the same resource in
the same report. In general an avail report should only have one update for
one resource, but the potential for building up reports looms in the
future, and we do have this scenario in test code.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/AvailabilityManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/AvailabilityManagerBean.java
index 0e73794..34922fe 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/AvailabilityManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/AvailabilityManagerBean.java
@@ -888,6 +888,9 @@ public class AvailabilityManagerBean implements
AvailabilityManagerLocal, Availa
latest = entityManager.merge(latest);
}
+ // update the Map to reflect the repaired latest avail
+ latestAvailabilities.put(resourceId, latest);
+
updateResourceAvailability(latest);
// ask the agent for a full report so as to ensure we are in sync
with agent
@@ -926,6 +929,9 @@ public class AvailabilityManagerBean implements
AvailabilityManagerLocal, Availa
latest = latestList.get(latestCount - 1);
updateResourceAvailability(latest);
+ // update the Map to reflect the repaired latest avail
+ latestAvailabilities.put(resourceId, latest);
+
// this is an unusual report - ask the agent for a full report so as
to ensure we are in sync with agent
mergeInfo.setAskForFullReport(true);
@@ -958,6 +964,10 @@ public class AvailabilityManagerBean implements
AvailabilityManagerLocal, Availa
// we are run-length encoded, so only persist data if the availability
changed
if (latest.getAvailabilityType() != reported.getAvailabilityType()) {
entityManager.persist(reported);
+ // the reported avail is the new latest avail, update the Map in case
we have multiple reported
+ // changes for the same resource in this report
+ latestAvailabilities.put(resourceId, reported);
+
mergeInfo.incrementNumInserted();
latest.setEndTime(reported.getStartTime());
commit 5cb1dbc9bbf4250e8a58a5b6ea6e8dc31e8afe8f
Author: Thomas Segismont <tsegismo(a)redhat.com>
Date: Fri Dec 6 16:25:21 2013 +0100
Comment out Query Cache resource type (perf issue)
For the RHQ Server resource only, 2000+ Query cache resources are inventoried.
The resource type will be commented out until we find a proper solution.
diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
index 4e0bf38..6cc3857 100644
--- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml
@@ -10129,25 +10129,25 @@
<metric property="put-count" description="Number of cacheable
entities/collections put in the cache."/>
</service>
- <service name="Query Cache"
- class="BaseComponent"
- discovery="QueryCacheDiscovery"
- description="Statistics for individual queries.">
-
- <plugin-configuration>
- <c:simple-property name="path" readOnly="true"/>
- </plugin-configuration>
-
- <metric property="query-cache-hit-count"
displayType="summary" measurementType="trendsup" description="Get
the number of times query was retrieved from cache."/>
- <metric property="query-cache-miss-count"
displayType="summary" measurementType="trendsup" description="Get
the number of times query was not found in cache."/>
- <metric property="query-cache-put-count"
displayType="summary" measurementType="trendsup" description="Get
the number of times query was put in cache."/>
- <metric property="query-execution-average-time"
description="Get the average time in milliseconds of the query."/>
- <metric property="query-execution-count"
displayType="summary" measurementType="trendsup" description="Get
number of times query has been executed."/>
- <metric property="query-execution-max-time" description="Get
the time in milliseconds of the query."/>
- <metric property="query-execution-min-time" description="Get
the minimum time in milliseconds of the query."/>
- <metric property="query-execution-row-count"
displayType="summary" measurementType="trendsup" description="Get
number of rows returned from executions of query."/>
- <metric property="query-name" dataType="trait"
description="Query name."/>
- </service>
+ <!--<service name="Query Cache"-->
+ <!--class="BaseComponent"-->
+ <!--discovery="QueryCacheDiscovery"-->
+ <!--description="Statistics for individual
queries.">-->
+
+ <!--<plugin-configuration>-->
+ <!--<c:simple-property name="path"
readOnly="true"/>-->
+ <!--</plugin-configuration>-->
+
+ <!--<metric property="query-cache-hit-count"
displayType="summary" measurementType="trendsup" description="Get
the number of times query was retrieved from cache."/>-->
+ <!--<metric property="query-cache-miss-count"
displayType="summary" measurementType="trendsup" description="Get
the number of times query was not found in cache."/>-->
+ <!--<metric property="query-cache-put-count"
displayType="summary" measurementType="trendsup" description="Get
the number of times query was put in cache."/>-->
+ <!--<metric property="query-execution-average-time"
description="Get the average time in milliseconds of the query."/>-->
+ <!--<metric property="query-execution-count"
displayType="summary" measurementType="trendsup" description="Get
number of times query has been executed."/>-->
+ <!--<metric property="query-execution-max-time"
description="Get the time in milliseconds of the query."/>-->
+ <!--<metric property="query-execution-min-time"
description="Get the minimum time in milliseconds of the query."/>-->
+ <!--<metric property="query-execution-row-count"
displayType="summary" measurementType="trendsup" description="Get
number of rows returned from executions of query."/>-->
+ <!--<metric property="query-name" dataType="trait"
description="Query name."/>-->
+ <!--</service>-->
<service name="Entity"
class="BaseComponent"
commit 305f6322f91308fac97bd1c94aa01ed28838e6f2
Author: Thomas Segismont <tsegismo(a)redhat.com>
Date: Fri Dec 6 16:18:53 2013 +0100
Bug 1030063 - Clean up plugin update to work synchronously
Make a pause between plugin update attempts
diff --git
a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
index 4f05315..b6cd741 100644
--- a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
+++ b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/AgentMain.java
@@ -18,6 +18,8 @@
*/
package org.rhq.enterprise.agent;
+import static java.util.concurrent.TimeUnit.SECONDS;
+
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -69,6 +71,7 @@ import org.apache.log4j.xml.DOMConfigurator;
import org.jboss.remoting.invocation.NameBasedInvocation;
import org.jboss.remoting.security.SSLSocketBuilder;
import org.jboss.remoting.transport.http.ssl.HTTPSClientInvoker;
+import org.jboss.util.file.FilenameSuffixFilter;
import org.rhq.core.clientapi.server.bundle.BundleServerService;
import org.rhq.core.clientapi.server.configuration.ConfigurationServerService;
@@ -1894,23 +1897,27 @@ public class AgentMain {
// so allow this to be configurable via the "update plugins at startup"
flag.
m_pluginUpdate = new
PluginUpdate(pc_config.getServerServices().getCoreServerService(), pc_config);
if (m_configuration.isUpdatePluginsAtStartupEnabled()) {
- boolean notified_user = false;
- // this can block forever...perhaps exit after a few tries?
- while (true) {
- if (!notified_user) {
- LOG.info(AgentI18NResourceKeys.WAITING_FOR_PLUGINS_WITH_DIR,
plugin_dir);
-
getOut().println(MSG.getMsg(AgentI18NResourceKeys.WAITING_FOR_PLUGINS));
- notified_user = true;
- } else {
- // let's keep logging this at debug level so we don't look
hung
- LOG.debug(AgentI18NResourceKeys.WAITING_FOR_PLUGINS_WITH_DIR,
plugin_dir);
- }
+ LOG.info(AgentI18NResourceKeys.WAITING_FOR_PLUGINS_WITH_DIR, plugin_dir);
+ getOut().println(MSG.getMsg(AgentI18NResourceKeys.WAITING_FOR_PLUGINS));
+ for (;;) {
try {
m_pluginUpdate.updatePlugins();
- break;
} catch (Exception e) {
LOG.error(e, AgentI18NResourceKeys.UPDATING_PLUGINS_FAILURE, e);
}
+ if (pluginsDirHasJarFile(plugin_dir)) {
+ break;
+ }
+ try {
+ Thread.sleep(SECONDS.toMillis(30));
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+
LOG.warn(AgentI18NResourceKeys.PLUGIN_CONTAINER_INITIALIZATION_INTERRUPTED);
+
getOut().println(MSG.getMsg(AgentI18NResourceKeys.PLUGIN_CONTAINER_INITIALIZATION_INTERRUPTED));
+ return false;
+ }
+ // let's keep logging this at debug level so we don't look hung
+ LOG.debug(AgentI18NResourceKeys.WAITING_FOR_PLUGINS_WITH_DIR,
plugin_dir);
}
} else if (plugin_dir.list().length == 0) {
LOG.warn(AgentI18NResourceKeys.NO_PLUGINS);
@@ -1934,6 +1941,10 @@ public class AgentMain {
return plugin_container.isStarted();
}
+ private boolean pluginsDirHasJarFile(File plugin_dir) {
+ return plugin_dir.listFiles(new FilenameSuffixFilter(".jar")).length !=
0;
+ }
+
/**
* Tell the agent to immediately switch to another server. The given
* server can be a simple hostname in which case, the current transport,
diff --git
a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/PluginUpdate.java
b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/PluginUpdate.java
index 5e24b14..8b7f622 100644
--- a/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/PluginUpdate.java
+++ b/modules/enterprise/agent/src/main/java/org/rhq/enterprise/agent/PluginUpdate.java
@@ -123,15 +123,11 @@ public class PluginUpdate {
List<Plugin> latest_plugins = coreServerService.getLatestPlugins();
if (LOG.isDebugEnabled()) {
- if (LOG.isDebugEnabled()) {
- LOG.debug(AgentI18NResourceKeys.LATEST_PLUGINS_COUNT,
latest_plugins.size());
- }
+ LOG.debug(AgentI18NResourceKeys.LATEST_PLUGINS_COUNT,
latest_plugins.size());
for (Plugin latest_plugin : latest_plugins) {
- if (LOG.isDebugEnabled()) {
- LOG.debug(AgentI18NResourceKeys.LATEST_PLUGIN,
latest_plugin.getId(), latest_plugin.getName(),
- latest_plugin.getDisplayName(), latest_plugin.getVersion(),
latest_plugin.getPath(),
- latest_plugin.getMd5(), latest_plugin.isEnabled(),
latest_plugin.getDescription());
- }
+ LOG.debug(AgentI18NResourceKeys.LATEST_PLUGIN, latest_plugin.getId(),
latest_plugin.getName(),
+ latest_plugin.getDisplayName(), latest_plugin.getVersion(),
latest_plugin.getPath(),
+ latest_plugin.getMd5(), latest_plugin.isEnabled(),
latest_plugin.getDescription());
}
}
commit acb5d8c4cbcfbb56fc100721417d1b0bfae2231b
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Thu Nov 21 12:31:24 2013 +0200
[BZ 1038067] - Resource Summary/Activity shows summary of disabled
metrics - fixing the issue for resource groups (Autogroups and
compatible ones).
Also doing some refactoring, because the same code was in the portlet
for resource and for group, so I moved the common functionality to the
group portled and resource portlet overrides the different parts. What
would be even better is to introduce a common abstract class in the new
package
org.rhq.coregui.client.dashboard.portlets.common (the same way it is
done in the org.rhq.coregui.client.inventory.common package). However,
all the portlets follow this pattern (ResourcePortlet extends
GroupPortles), so it would be inconsistent.
After the refactoring, the code is more flat because the callback hell is
not so evil when using own methods for each callback. The toll for it is
the number of arguments that has to be passed to those methods
representing the state that is needed inside the method.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/dashboard/portlets/groups/GroupMetricsPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/dashboard/portlets/groups/GroupMetricsPortlet.java
index c1d7269..e9ee86c 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/dashboard/portlets/groups/GroupMetricsPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/dashboard/portlets/groups/GroupMetricsPortlet.java
@@ -20,9 +20,9 @@ package org.rhq.coregui.client.dashboard.portlets.groups;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import com.google.gwt.user.client.Timer;
@@ -49,14 +49,15 @@ 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.MeasurementScheduleCriteria;
import org.rhq.core.domain.criteria.ResourceGroupCriteria;
import org.rhq.core.domain.dashboard.DashboardPortlet;
import org.rhq.core.domain.measurement.MeasurementDefinition;
+import org.rhq.core.domain.measurement.MeasurementSchedule;
import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite;
-import org.rhq.core.domain.resource.ResourceType;
import org.rhq.core.domain.resource.group.GroupCategory;
-import org.rhq.core.domain.resource.group.ResourceGroup;
import org.rhq.core.domain.resource.group.composite.ResourceGroupComposite;
+import org.rhq.core.domain.util.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.coregui.client.LinkManager;
import org.rhq.coregui.client.components.measurement.CustomConfigMeasurementRangeEditor;
@@ -73,9 +74,10 @@ import
org.rhq.coregui.client.inventory.common.detail.summary.AbstractActivityVi
import org.rhq.coregui.client.inventory.common.graph.CustomDateRangeState;
import
org.rhq.coregui.client.inventory.groups.detail.monitoring.table.CompositeGroupD3GraphListView;
import
org.rhq.coregui.client.inventory.groups.detail.monitoring.table.CompositeGroupD3MultiLineGraph;
-import org.rhq.coregui.client.inventory.resource.type.ResourceTypeRepository;
import org.rhq.coregui.client.util.BrowserUtility;
import org.rhq.coregui.client.util.Log;
+import org.rhq.coregui.client.util.async.Command;
+import org.rhq.coregui.client.util.async.CountDownLatch;
import org.rhq.coregui.client.util.enhanced.EnhancedVLayout;
/**
@@ -101,6 +103,9 @@ public class GroupMetricsPortlet extends EnhancedVLayout implements
CustomSettin
//instance ui widgets
protected Timer refreshTimer;
+
+ private volatile List<MeasurementSchedule> enabledSchedules = null;
+ private volatile boolean renderChart = false;
// final version needed to pass to anon classes
// so we can call refresh in anon callback handler
@@ -221,10 +226,80 @@ public class GroupMetricsPortlet extends EnhancedVLayout implements
CustomSettin
*/
protected void getRecentMetrics() {
+ renderChart = true;
+
//display container
final VLayout column = new VLayout();
column.setHeight(10);//pack
+ final CountDownLatch latch = CountDownLatch.create(2, new Command() {
+ @Override
+ public void execute() {
+ if (enabledSchedules.isEmpty() || !renderChart) {
+ DynamicForm row = getEmptyDataForm();
+ column.addMember(row);
+ return;
+ }
+ //build id mapping for measurementDefinition instances Ex. Free Memory
-> MeasurementDefinition[100071]
+ final HashMap<String, MeasurementDefinition> measurementDefMap =
new HashMap<String, MeasurementDefinition>();
+ for (MeasurementSchedule schedule : enabledSchedules) {
+ measurementDefMap.put(schedule.getDefinition().getDisplayName(),
schedule.getDefinition());
+ }
+ Set<String> displayNamesSet = measurementDefMap.keySet();
+ //bundle definition ids for async call.
+ int[] definitionArrayIds = new int[displayNamesSet.size()];
+ final String[] displayOrder = new String[displayNamesSet.size()];
+ displayNamesSet.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();
+ }
+
+ fetchEnabledMetrics(enabledSchedules, definitionArrayIds, displayOrder,
measurementDefMap, column);
+ }
+ });
+
+ //fetch only enabled schedules
+ fetchEnabledSchedules(latch);
+
+ //fetch the resource type
+ fetchResourceType(latch, column);
+
+ //cleanup
+ for (Canvas child : recentMeasurementsContent.getChildren()) {
+ child.destroy();
+ }
+ recentMeasurementsContent.addChild(column);
+ recentMeasurementsContent.markForRedraw();
+ }
+
+ private void fetchEnabledSchedules(final CountDownLatch latch) {
+ MeasurementScheduleCriteria criteria = new MeasurementScheduleCriteria();
+ criteria.addFilterEnabled(true);
+ criteria.fetchDefinition(true);
+ criteria.setPageControl(PageControl.getUnlimitedInstance());
+ addFilterKey(criteria);
+
GWTServiceLookup.getMeasurementDataService().findMeasurementSchedulesByCriteria(criteria,
new AsyncCallback<PageList<MeasurementSchedule>>() {
+
+ @Override
+ public void onSuccess(PageList<MeasurementSchedule> result) {
+ enabledSchedules = result;
+ latch.countDown();
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ latch.countDown();
+ }
+ });
+ }
+
+ protected void fetchResourceType(final CountDownLatch latch, final VLayout layout) {
//locate resourceGroupRef
ResourceGroupCriteria criteria = new ResourceGroupCriteria();
criteria.addFilterId(this.groupId);
@@ -251,211 +326,18 @@ public class GroupMetricsPortlet extends EnhancedVLayout implements
CustomSettin
Log.debug("Error retrieving resource group composite for group
[" + groupId + "]:"
+ caught.getMessage());
setRefreshing(false);
+ latch.countDown();
}
@Override
public void onSuccess(PageList<ResourceGroupComposite> results) {
- if (!results.isEmpty()) {
- final ResourceGroupComposite groupComposite = results.get(0);
- final ResourceGroup group = groupComposite.getResourceGroup();
- if (group.getGroupCategory() == GroupCategory.COMPATIBLE) {
- // Load the fully fetched ResourceType.
- ResourceType groupType = group.getResourceType();
- ResourceTypeRepository.Cache.getInstance().getResourceTypes(
- groupType.getId(),
- EnumSet.of(ResourceTypeRepository.MetadataType.content,
- ResourceTypeRepository.MetadataType.operations,
- ResourceTypeRepository.MetadataType.measurements,
- ResourceTypeRepository.MetadataType.events,
-
ResourceTypeRepository.MetadataType.resourceConfigurationDefinition),
- new ResourceTypeRepository.TypeLoadedCallback() {
- public void onTypesLoaded(ResourceType type) {
- group.setResourceType(type);
- //metric definitions
- Set<MeasurementDefinition> definitions =
type.getMetricDefinitions();
-
- //build id mapping for measurementDefinition
instances Ex. Free Memory -> MeasurementDefinition[100071]
- final HashMap<String,
MeasurementDefinition> measurementDefMap = new HashMap<String,
MeasurementDefinition>();
- for (MeasurementDefinition definition :
definitions) {
-
measurementDefMap.put(definition.getDisplayName(), definition);
- }
- //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().findDataForCompatibleGroup(
- groupId, definitionArrayIds,
-
CustomDateRangeState.getInstance().getStartTime(),
-
CustomDateRangeState.getInstance().getEndTime(), 60,
- new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
- @Override
- public void onFailure(Throwable caught)
{
- Log.debug("Error retrieving
recent metrics charting data for group ["
- + groupId + "]:" +
caught.getMessage());
- setRefreshing(false);
- }
-
- @Override
- public void onSuccess(
-
List<List<MeasurementDataNumericHighLowComposite>> results) {
- if (!results.isEmpty()) {
- boolean someChartedData = false;
- //iterate over the retrieved
charting data
- for (int index = 0; index <
displayOrder.length; index++) {
- //retrieve the correct
measurement definition
- final MeasurementDefinition
md = measurementDefMap
-
.get(displayOrder[index]);
-
- //load the data results for
the given metric definition
-
List<MeasurementDataNumericHighLowComposite> data = results
- .get(index);
-
- //locate last and minimum
values.
- double lastValue = -1;
- double minValue =
Double.MAX_VALUE;//
- for
(MeasurementDataNumericHighLowComposite d : data) {
- if
((!Double.isNaN(d.getValue()))
- &&
(!String.valueOf(d.getValue()).contains("NaN"))) {
- if (d.getValue() <
minValue) {
- minValue =
d.getValue();
- }
- lastValue =
d.getValue();
- }
- }
-
- //collapse the data into
comma delimited list for consumption by third party javascript library(jquery.sparkline)
- String commaDelimitedList =
"";
-
- for
(MeasurementDataNumericHighLowComposite d : data) {
- if
((!Double.isNaN(d.getValue()))
- &&
(!String.valueOf(d.getValue()).contains("NaN"))) {
- commaDelimitedList +=
d.getValue() + ",";
- }
- }
- DynamicForm row = new
DynamicForm();
- row.setNumCols(3);
- row.setColWidths(65,
"*", 100);
- row.setWidth100();
- row.setAutoHeight();
-
row.setOverflow(Overflow.VISIBLE);
- HTMLFlow graph = new
HTMLFlow();
- //
String contents = "<span id='sparkline_" + index + "'
class='dynamicsparkline' width='0'>"
- //
+ commaDelimitedList + "</span>";
- String contents =
"<span id='sparkline_" + index
- + "'
class='dynamicsparkline' width='0' " + "values='"
- + commaDelimitedList +
"'>...</span>";
- graph.setContents(contents);
-
graph.setContentsType(ContentsType.PAGE);
- //disable scrollbars on span
- graph.setScrollbarSize(0);
-
- CanvasItem graphContainer =
new CanvasItem();
-
graphContainer.setShowTitle(false);
-
graphContainer.setHeight(16);
- graphContainer.setWidth(60);
-
graphContainer.setCanvas(graph);
-
- final String title =
md.getDisplayName();
- LinkItem link =
AbstractActivityView.newLinkItem(title,
- null);
- link.setTooltip(title);
-
link.setTitleVAlign(VerticalAlignment.TOP);
-
link.setAlign(Alignment.LEFT);
- link.setClipValue(true);
- link.setWrap(true);
- link.setHeight(26);
- if
(!BrowserUtility.isBrowserPreIE9()) {
-
- link.addClickHandler(new
ClickHandler() {
- @Override
- public void
onClick(ClickEvent event) {
- ChartViewWindow
window = new ChartViewWindow(
- title,
"", refreshablePortlet);
-
CompositeGroupD3GraphListView graph = new CompositeGroupD3MultiLineGraph(
- groupId,
md.getId(), isAutoGroup);
-
window.addItem(graph);
-
graph.populateData();
- window.show();
- }
- });
- } else {
- link.disable();
- }
-
- //Value
- String convertedValue =
AbstractActivityView
-
.convertLastValueForDisplay(lastValue, md);
- StaticTextItem value =
AbstractActivityView
-
.newTextItem(convertedValue);
-
value.setVAlign(VerticalAlignment.TOP);
-
value.setAlign(Alignment.RIGHT);
-
value.setWidth("100%");
-
- row.setItems(graphContainer,
link, value);
- row.setWidth100();
- //if graph content returned
- if
((!md.getName().trim().contains("Trait."))
- && (lastValue !=
-1)) {
- column.addMember(row);
- someChartedData = true;
- }
- }
- if (!someChartedData) {// when
there are results but no chartable entries.
- DynamicForm row =
AbstractActivityView
-
.createEmptyDisplayRow(AbstractActivityView.RECENT_MEASUREMENTS_GROUP_NONE);
- column.addMember(row);
- } else {
- //insert see more link
- DynamicForm row = new
DynamicForm();
- String link = LinkManager
-
.getGroupMonitoringGraphsLink(context);
-
AbstractActivityView.addSeeMoreLink(row, link, column);
- }
- //call out to 3rd party
javascript lib
- new Timer() {
- @Override
- public void run() {
-
BrowserUtility.graphSparkLines();
- }
- }.schedule(200);
-
- } else {
- DynamicForm row =
AbstractActivityView.createEmptyDisplayRow(
-
AbstractActivityView.RECENT_MEASUREMENTS_GROUP_NONE);
- column.addMember(row);
- }
- setRefreshing(false);
- }
- }
- );
- }
- });
- }
- } else {
- DynamicForm row = AbstractActivityView
-
.createEmptyDisplayRow(AbstractActivityView.RECENT_MEASUREMENTS_GROUP_NONE);
- column.addMember(row);
- setRefreshing(false);
+ if (results.isEmpty()
+ || results.get(0).getResourceGroup().getGroupCategory() !=
GroupCategory.COMPATIBLE) {
+ renderChart = false;
}
+ latch.countDown();
}
});
-
- //cleanup
- for (Canvas child : recentMeasurementsContent.getChildren()) {
- child.destroy();
- }
- recentMeasurementsContent.addChild(column);
- recentMeasurementsContent.markForRedraw();
}
@Override
@@ -497,10 +379,10 @@ public class GroupMetricsPortlet extends EnhancedVLayout implements
CustomSettin
protected void setRefreshing(boolean currentlyRefreshing) {
this.currentlyLoading = currentlyRefreshing;
}
- public static class ChartViewWindow extends Window {
+ public static class ChartViewWindow extends Window {
- public ChartViewWindow(String title, String windowTitle,final GroupMetricsPortlet
portlet) {
+ public ChartViewWindow(String title, String windowTitle, final
GroupMetricsPortlet portlet) {
super();
if ((windowTitle != null) && (!windowTitle.trim().isEmpty())) {
setTitle(windowTitle + ": " + title);
@@ -533,4 +415,156 @@ public class GroupMetricsPortlet extends EnhancedVLayout implements
CustomSettin
}
}
+
+ protected void fetchEnabledMetrics(List<MeasurementSchedule> schedules, int[]
definitionArrayIds,
+ final String[] displayOrder, final Map<String, MeasurementDefinition>
measurementDefMap, final VLayout layout) {
+ GWTServiceLookup.getMeasurementDataService().findDataForCompatibleGroup(groupId,
definitionArrayIds,
+ CustomDateRangeState.getInstance().getStartTime(),
CustomDateRangeState.getInstance().getEndTime(), 60,
+ new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
+ @Override
+ public void onFailure(Throwable caught) {
+ Log.debug("Error retrieving recent metrics charting data for
group [" + groupId + "]:"
+ + caught.getMessage());
+ setRefreshing(false);
+ }
+
+ @Override
+ public void
onSuccess(List<List<MeasurementDataNumericHighLowComposite>> results) {
+ renderData(results, displayOrder, measurementDefMap, layout);
+ }
+ });
+ }
+
+
+ protected void
renderData(List<List<MeasurementDataNumericHighLowComposite>> results,
String[] displayOrder, Map<String, MeasurementDefinition> measurementDefMap, VLayout
layout) {
+ if (!results.isEmpty() && !measurementDefMap.isEmpty()) {
+ boolean someChartedData = false;
+ //iterate over the retrieved charting data
+ for (int index = 0; index < displayOrder.length; index++) {
+ //retrieve the correct measurement definition
+ final MeasurementDefinition md = measurementDefMap
+ .get(displayOrder[index]);
+
+ //load the data results for the given metric definition
+ List<MeasurementDataNumericHighLowComposite> data = results
+ .get(index);
+
+ //locate last and minimum values.
+ double lastValue = -1;
+ double minValue = Double.MAX_VALUE;
+ //collapse the data into comma delimited list for consumption by third
party javascript library(jquery.sparkline)
+ String commaDelimitedList = "";
+ for (MeasurementDataNumericHighLowComposite d : data) {
+ if ((!Double.isNaN(d.getValue()))
+ &&
(!String.valueOf(d.getValue()).contains("NaN"))) {
+ commaDelimitedList += d.getValue() + ",";
+ if (d.getValue() < minValue) {
+ minValue = d.getValue();
+ }
+ lastValue = d.getValue();
+ }
+ }
+ DynamicForm row = new DynamicForm();
+ row.setNumCols(3);
+ row.setColWidths(65, "*", 100);
+ row.setWidth100();
+ row.setAutoHeight();
+ row.setOverflow(Overflow.VISIBLE);
+ HTMLFlow graph = new HTMLFlow();
+ String contents = "<span id='sparkline_" + index
+ + "' class='dynamicsparkline' width='0'
" + "values='"
+ + commaDelimitedList + "'>...</span>";
+ graph.setContents(contents);
+ graph.setContentsType(ContentsType.PAGE);
+ //disable scrollbars on span
+ graph.setScrollbarSize(0);
+
+ CanvasItem graphContainer = new CanvasItem();
+ graphContainer.setShowTitle(false);
+ graphContainer.setHeight(16);
+ graphContainer.setWidth(60);
+ graphContainer.setCanvas(graph);
+
+ final String title = md.getDisplayName();
+ LinkItem link = AbstractActivityView.newLinkItem(title,
+ null);
+ link.setTooltip(title);
+ link.setTitleVAlign(VerticalAlignment.TOP);
+ link.setAlign(Alignment.LEFT);
+ link.setClipValue(true);
+ link.setWrap(true);
+ link.setHeight(26);
+ if (!BrowserUtility.isBrowserPreIE9()) {
+
+ link.addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(ClickEvent event) {
+ showPopupWithChart(title, md);
+ }
+ });
+ } else {
+ link.disable();
+ }
+
+ //Value
+ String convertedValue = AbstractActivityView
+ .convertLastValueForDisplay(lastValue, md);
+ StaticTextItem value = AbstractActivityView
+ .newTextItem(convertedValue);
+ value.setVAlign(VerticalAlignment.TOP);
+ value.setWidth("100%");
+
+ row.setItems(graphContainer, link, value);
+ row.setWidth100();
+ //if graph content returned
+ if ((!md.getName().trim().contains("Trait."))
+ && (lastValue != -1)) {
+ layout.addMember(row);
+ someChartedData = true;
+ }
+ }
+ if (!someChartedData) {// when there are results but no chartable entries.
+ DynamicForm row = getEmptyDataForm();
+ layout.addMember(row);
+ } else {
+ //insert see more link
+ DynamicForm row = new DynamicForm();
+ String link = getSeeMoreLink();
+ AbstractActivityView.addSeeMoreLink(row, link, layout);
+ }
+ //call out to 3rd party javascript lib
+ new Timer() {
+ @Override
+ public void run() {
+ BrowserUtility.graphSparkLines();
+ }
+ }.schedule(200);
+
+ } else {
+ DynamicForm row = getEmptyDataForm();
+ layout.addMember(row);
+ }
+ setRefreshing(false);
+ }
+
+ protected void showPopupWithChart(final String title, final MeasurementDefinition md)
{
+ ChartViewWindow window = new ChartViewWindow(title, "",
refreshablePortlet);
+ CompositeGroupD3GraphListView graph = new CompositeGroupD3MultiLineGraph(groupId,
md.getId(), isAutoGroup());
+ window.addItem(graph);
+ graph.populateData();
+ window.show();
+ }
+
+ protected DynamicForm getEmptyDataForm() {
+ return
AbstractActivityView.createEmptyDisplayRow(AbstractActivityView.RECENT_MEASUREMENTS_GROUP_NONE);
+ }
+
+ protected String getSeeMoreLink() {
+ return LinkManager.getGroupMonitoringGraphsLink(context);
+ }
+
+ protected MeasurementScheduleCriteria addFilterKey(MeasurementScheduleCriteria
criteria) {
+ criteria.addFilterResourceGroupId(groupId);
+ return criteria;
+ }
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/dashboard/portlets/resource/ResourceMetricsPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/dashboard/portlets/resource/ResourceMetricsPortlet.java
index df4e659..93d2d7c 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/dashboard/portlets/resource/ResourceMetricsPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/dashboard/portlets/resource/ResourceMetricsPortlet.java
@@ -18,27 +18,12 @@
*/
package org.rhq.coregui.client.dashboard.portlets.resource;
-import java.util.Arrays;
import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
+import java.util.Map;
-import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.smartgwt.client.types.Alignment;
-import com.smartgwt.client.types.ContentsType;
-import com.smartgwt.client.types.Overflow;
-import com.smartgwt.client.types.VerticalAlignment;
-import com.smartgwt.client.widgets.Canvas;
-import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.form.DynamicForm;
-import com.smartgwt.client.widgets.form.fields.CanvasItem;
-import com.smartgwt.client.widgets.form.fields.LinkItem;
-import com.smartgwt.client.widgets.form.fields.StaticTextItem;
-import com.smartgwt.client.widgets.form.fields.events.ClickEvent;
-import com.smartgwt.client.widgets.form.fields.events.ClickHandler;
import com.smartgwt.client.widgets.layout.VLayout;
import org.rhq.core.domain.common.EntityContext;
@@ -50,7 +35,6 @@ import
org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowCo
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.PageControl;
import org.rhq.core.domain.util.PageList;
import org.rhq.coregui.client.LinkManager;
import org.rhq.coregui.client.dashboard.Portlet;
@@ -61,9 +45,7 @@ import
org.rhq.coregui.client.inventory.common.detail.summary.AbstractActivityVi
import org.rhq.coregui.client.inventory.common.graph.CustomDateRangeState;
import org.rhq.coregui.client.inventory.resource.detail.monitoring.D3GraphListView;
import org.rhq.coregui.client.inventory.resource.type.ResourceTypeRepository;
-import org.rhq.coregui.client.util.BrowserUtility;
import org.rhq.coregui.client.util.Log;
-import org.rhq.coregui.client.util.async.Command;
import org.rhq.coregui.client.util.async.CountDownLatch;
/**
@@ -77,18 +59,14 @@ public class ResourceMetricsPortlet extends GroupMetricsPortlet {
public static final String KEY = "ResourceMetrics";
// A default displayed, persisted name for the portlet
public static final String NAME = MSG.view_portlet_defaultName_resource_metrics();
-
- private int resourceId = -1;
- private ChartViewWindow window;
- private D3GraphListView graphView;
+ private int resourceId = -1;
public ResourceMetricsPortlet(int resourceId) {
super(EntityContext.forResource(-1));
this.resourceId = resourceId;
}
-
- private volatile List<MeasurementSchedule> enabledSchedules = null;
+
private volatile Resource resource = null;
public static final class Factory implements PortletViewFactory {
@@ -104,37 +82,54 @@ public class ResourceMetricsPortlet extends GroupMetricsPortlet {
}
}
- /** Fetches recent metric information and updates the DynamicForm instance with
i)sparkline information,
- * ii) link to recent metric graph for more details and iii) last metric value
formatted to show significant
- * digits.
- */
@Override
- protected void getRecentMetrics() {
-
- //display container
- final VLayout column = new VLayout();
- column.setHeight(10);//pack
- column.setWidth100();
-
- final CountDownLatch latch = CountDownLatch.create(2, new Command() {
-
- @Override
- public void execute() {
- showEnabledMetrics(enabledSchedules == null ? null :
getEnabledDefinitions(enabledSchedules), column, resource);
- }
-
- private Set<MeasurementDefinition>
getEnabledDefinitions(List<MeasurementSchedule> enabledSchedules) {
- Set<MeasurementDefinition> enabledDefinitions = new
HashSet<MeasurementDefinition>(enabledSchedules.size());
- for (MeasurementSchedule schedule : enabledSchedules) {
- enabledDefinitions.add(schedule.getDefinition());
+ protected void showPopupWithChart(String title, MeasurementDefinition md) {
+ ChartViewWindow window = new ChartViewWindow(title, "",
refreshablePortlet);
+ D3GraphListView graphView = D3GraphListView.createSingleGraph(resource,
md.getId(), true);
+ window.addItem(graphView);
+ window.show();
+ }
+
+ @Override
+ protected DynamicForm getEmptyDataForm() {
+ return
AbstractActivityView.createEmptyDisplayRow(AbstractActivityView.RECENT_MEASUREMENTS_NONE);
+ }
+
+ @Override
+ protected String getSeeMoreLink() {
+ return LinkManager.getResourceMonitoringGraphsLink(resourceId);
+ }
+
+ @Override
+ protected MeasurementScheduleCriteria addFilterKey(MeasurementScheduleCriteria
criteria) {
+ criteria.addFilterResourceId(resourceId);
+ return criteria;
+ }
+
+ @Override
+ protected void fetchEnabledMetrics(List<MeasurementSchedule> schedules, int[]
definitionArrayIds,
+ final String[] displayOrder, final Map<String, MeasurementDefinition>
measurementDefMap, final VLayout layout) {
+ GWTServiceLookup.getMeasurementDataService().findDataForResource(resourceId,
definitionArrayIds,
+ CustomDateRangeState.getInstance().getStartTime(),
CustomDateRangeState.getInstance().getEndTime(), 60,
+ new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
+ @Override
+ public void onFailure(Throwable caught) {
+ Log.debug("Error retrieving recent metrics charting data for
resource [" + resourceId + "]:"
+ + caught.getMessage());
+ setRefreshing(false);
+ }
+
+ @Override
+ public void
onSuccess(List<List<MeasurementDataNumericHighLowComposite>> results) {
+ renderData(results, displayOrder, measurementDefMap, layout);
}
- return enabledDefinitions;
}
- });
-
- //fetch only enabled schedules
- fetchEnabledSchedules(latch);
+ );
+ }
+
+ @Override
+ protected void fetchResourceType(final CountDownLatch latch, final VLayout layout) {
//locate resource reference
ResourceCriteria criteria = new ResourceCriteria();
criteria.addFilterId(this.resourceId);
@@ -170,192 +165,5 @@ public class ResourceMetricsPortlet extends GroupMetricsPortlet {
}
}
});
-
- //cleanup
- for (Canvas child : recentMeasurementsContent.getChildren()) {
- child.destroy();
- }
- recentMeasurementsContent.addChild(column);
- recentMeasurementsContent.markForRedraw();
- }
-
- private void fetchEnabledSchedules(final CountDownLatch latch) {
- MeasurementScheduleCriteria criteria = new MeasurementScheduleCriteria();
- criteria.addFilterResourceId(resourceId);
- criteria.addFilterEnabled(true);
- criteria.fetchDefinition(true);
- criteria.setPageControl(PageControl.getUnlimitedInstance());
-
GWTServiceLookup.getMeasurementDataService().findMeasurementSchedulesByCriteria(criteria,
new AsyncCallback<PageList<MeasurementSchedule>>() {
-
- @Override
- public void onSuccess(PageList<MeasurementSchedule> result) {
- enabledSchedules = result;
- latch.countDown();
- }
-
- @Override
- public void onFailure(Throwable caught) {
- latch.countDown();
- }
- });
- }
-
-
- private void showEnabledMetrics(final Set<MeasurementDefinition> definitions,
final VLayout layout, final Resource resource) {
- if (resource == null || definitions == null) {
- Log.warn("Unable to render recent metrics properly.");
- return;
- }
-
- //build id mapping for measurementDefinition instances Ex. Free Memory ->
MeasurementDefinition[100071]
- final HashMap<String, MeasurementDefinition> measurementDefMap = new
HashMap<String, MeasurementDefinition>();
- for (MeasurementDefinition definition : definitions) {
- measurementDefMap.put(definition.getDisplayName(), definition);
- }
- //bundle definition ids for async 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().findDataForResource(resourceId,
definitionArrayIds,
- CustomDateRangeState.getInstance().getStartTime(),
CustomDateRangeState.getInstance().getEndTime(), 60,
- new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
- @Override
- public void onFailure(Throwable caught) {
- Log.debug("Error retrieving recent metrics charting data for
resource [" + resourceId + "]:"
- + caught.getMessage());
- setRefreshing(false);
- }
-
- @Override
- public void
onSuccess(List<List<MeasurementDataNumericHighLowComposite>> results) {
- if (!results.isEmpty()) {
- boolean someChartedData = false;
- //iterate over the retrieved charting data
- for (int index = 0; index < displayOrder.length; index++) {
- //retrieve the correct measurement definition
- final MeasurementDefinition md =
measurementDefMap.get(displayOrder[index]);
-
- //load the data results for the given metric definition
- List<MeasurementDataNumericHighLowComposite> data =
results.get(index);
-
- //locate last and minimum values.
- double lastValue = -1;
- double minValue = Double.MAX_VALUE;//
- for (MeasurementDataNumericHighLowComposite d : data) {
- if ((!Double.isNaN(d.getValue())) &&
(!String.valueOf(d.getValue()).contains("NaN"))) {
- if (d.getValue() < minValue) {
- minValue = d.getValue();
- }
- lastValue = d.getValue();
- }
- }
-
- //collapse the data into comma delimited list for consumption
by third party javascript library(jquery.sparkline)
- String commaDelimitedList = "";
-
- for (MeasurementDataNumericHighLowComposite d : data) {
- if ((!Double.isNaN(d.getValue())) &&
(!String.valueOf(d.getValue()).contains("NaN"))) {
- commaDelimitedList += d.getValue() + ",";
- }
- }
- DynamicForm row = new DynamicForm();
- row.setNumCols(3);
- row.setColWidths(65, "*", 100);
- row.setWidth100();
- row.setAutoHeight();
- row.setOverflow(Overflow.VISIBLE);
- HTMLFlow sparklineGraph = new HTMLFlow();
- String contents = "<span id='sparkline_" +
index + "' class='dynamicsparkline' width='0' "
- + "values='" + commaDelimitedList +
"'>...</span>";
- sparklineGraph.setContents(contents);
- sparklineGraph.setContentsType(ContentsType.PAGE);
- //disable scrollbars on span
- sparklineGraph.setScrollbarSize(0);
-
- CanvasItem sparklineContainer = new CanvasItem();
- sparklineContainer.setShowTitle(false);
- sparklineContainer.setHeight(16);
- sparklineContainer.setWidth(60);
- sparklineContainer.setCanvas(sparklineGraph);
-
- //Link/title element
- final String title = md.getDisplayName();
- LinkItem link = AbstractActivityView.newLinkItem(title,
null);
- link.setTooltip(title);
- link.setTitleVAlign(VerticalAlignment.TOP);
- link.setAlign(Alignment.LEFT);
- link.setClipValue(true);
- link.setWrap(true);
- link.setHeight(26);
- link.setWidth("100%");
- if (!BrowserUtility.isBrowserPreIE9()) {
- link.addClickHandler(new ClickHandler() {
- @Override
- public void onClick(ClickEvent event) {
- window = new ChartViewWindow(title, "",
refreshablePortlet);
-
- graphView =
D3GraphListView.createSingleGraph(resource, md.getId(), true);
-
- window.addItem(graphView);
- window.show();
- }
- });
- } else {
- link.disable();
- }
-
- //Value
- String convertedValue;
- convertedValue =
AbstractActivityView.convertLastValueForDisplay(lastValue, md);
- StaticTextItem value =
AbstractActivityView.newTextItem(convertedValue);
- value.setVAlign(VerticalAlignment.TOP);
- value.setAlign(Alignment.RIGHT);
-
- row.setItems(sparklineContainer, link, value);
- row.setWidth100();
-
- //if graph content returned
- if ((!md.getName().trim().contains("Trait."))
&& (lastValue != -1)) {
- layout.addMember(row);
- someChartedData = true;
- }
- }
- if (!someChartedData) {// when there are results but no chartable
entries.
- DynamicForm row =
AbstractActivityView.createEmptyDisplayRow(
-
- AbstractActivityView.RECENT_MEASUREMENTS_NONE);
- layout.addMember(row);
- } else {
- //insert see more link
- DynamicForm row = new DynamicForm();
- String link =
LinkManager.getResourceMonitoringGraphsLink(resourceId);
- AbstractActivityView.addSeeMoreLink(row, link, layout);
- }
- //call out to 3rd party javascript lib
- new Timer() {
- @Override
- public void run() {
- BrowserUtility.graphSparkLines();
- }
- }.schedule(200);
- } else {
- DynamicForm row = AbstractActivityView
-
.createEmptyDisplayRow(AbstractActivityView.RECENT_MEASUREMENTS_NONE);
- layout.addMember(row);
- }
- setRefreshing(false);
- }
- }
-
- );
}
}