[rhq] modules/enterprise
by lkrejci
modules/enterprise/remoting/cli/src/etc/rhq-cli-env.sh | 10 ++
modules/enterprise/remoting/cli/src/etc/rhq-cli.sh | 67 +++++++++--------
2 files changed, 47 insertions(+), 30 deletions(-)
New commits:
commit b576a5f674fcfd212a1ec62c88314ed7c828b0fd
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Fri Dec 13 17:39:57 2013 +0100
[BZ 1042892] Don't use ${} notation for shell variables in CLI scripts.
As of BZ 959603, the files are subject to maven resource filtering and
so it can happen that the build server passes a variable to the build
process that clashes with the variable name defined in the script.
(Yes, this actually happened on our Jenkins server that passed
"-DCLASSPATH=" to the maven process for some reason, which resulted in
wonderful corruption of the rhq-cli.sh script).
diff --git a/modules/enterprise/remoting/cli/src/etc/rhq-cli-env.sh b/modules/enterprise/remoting/cli/src/etc/rhq-cli-env.sh
index 112ec66..80f24c5 100755
--- a/modules/enterprise/remoting/cli/src/etc/rhq-cli-env.sh
+++ b/modules/enterprise/remoting/cli/src/etc/rhq-cli-env.sh
@@ -3,6 +3,14 @@
#===========================================================================
#
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+# IMPORTANT: Avoid enclosing shell variables in braces using the ${XXX}
+# notation. This file is subject to maven resource variable expansion
+# during the build and so it can happen that the build environment
+# could corrupt this file by expanding variables that clash with
+# the names defined herein.
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
# RHQ_CLI_DEBUG - If this is defined, the script will emit debug
# messages. It will also enable debug
# messages to be emitted from the cli itself.
@@ -41,7 +49,7 @@
# to the CLI's defaults, then you will want to
# use RHQ_CLI_ADDITIONAL_JAVA_OPTS instead.
#
-#RHQ_CLI_JAVA_OPTS="-Xms64m -Xmx128m -Djava.net.preferIPv4Stack=true -Drhq.scripting.modules.root-dir=${RHQ_CLI_MODULES_DIR}"
+#RHQ_CLI_JAVA_OPTS="-Xms64m -Xmx128m -Djava.net.preferIPv4Stack=true -Drhq.scripting.modules.root-dir=$RHQ_CLI_MODULES_DIR"
# RHQ_CLI_JAVA_ENDORSED_DIRS - Java VM command line option to set the
# endorsed dirs for the CLI's VM. If this
diff --git a/modules/enterprise/remoting/cli/src/etc/rhq-cli.sh b/modules/enterprise/remoting/cli/src/etc/rhq-cli.sh
index 8399b50..b0980e6 100644
--- a/modules/enterprise/remoting/cli/src/etc/rhq-cli.sh
+++ b/modules/enterprise/remoting/cli/src/etc/rhq-cli.sh
@@ -11,6 +11,14 @@
# set via rhq-client-env.sh, which is sourced by this script.
# =============================================================================
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+# IMPORTANT: Avoid enclosing shell variables in braces using the ${XXX}
+# notation. This file is subject to maven resource variable expansion
+# during the build and so it can happen that the build environment
+# could corrupt this file by expanding variables that clash with
+# the names defined herein.
+# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
# ----------------------------------------------------------------------
# Subroutine that simply dumps a message iff debug mode is enabled
# ----------------------------------------------------------------------
@@ -42,16 +50,17 @@ esac
_DOLLARZERO=`readlink "$0" 2>/dev/null || echo "$0"`
RHQ_CLI_BIN_DIR_PATH=`dirname "$_DOLLARZERO"`
-if [ -f "${RHQ_CLI_BIN_DIR_PATH}/rhq-cli-env.sh" ]; then
- debug_msg "Loading environment script: ${RHQ_CLI_BIN_DIR_PATH}/rhq-cli-env.sh"
- . "${RHQ_CLI_BIN_DIR_PATH}/rhq-cli-env.sh" $*
+if [ -f "$RHQ_CLI_BIN_DIR_PATH/rhq-cli-env.sh" ]; then
+ debug_msg "Loading environment script: $RHQ_CLI_BIN_DIR_PATH/rhq-cli-env.sh"
+ . "$RHQ_CLI_BIN_DIR_PATH/rhq-cli-env.sh" $*
else
- debug_msg "No environment script found at: ${RHQ_CLI_BIN_DIR_PATH}/rhq-cli-env.sh"
+ debug_msg "No environment script found at: $RHQ_CLI_BIN_DIR_PATH/rhq-cli-env.sh"
fi
# this variable is set during the build and defines the desired default behavior for directory changing
# we do want to change the dir in RHQ, but possibly don't want to do that in JBoss ON for backwards compatibility
# reasons.
+# (yes, this USES ${} in the source (not in the distribution) because we seed the default value from the build)
RHQ_CLI_CHANGE_DIR_ON_START_DEFAULT=${rhq.cli.change-dir-on-start-default}
if [ -z "$RHQ_CLI_CHANGE_DIR_ON_START" ]; then
RHQ_CLI_CHANGE_DIR_ON_START="$RHQ_CLI_CHANGE_DIR_ON_START_DEFAULT"
@@ -61,24 +70,24 @@ fi
# Previous versions always changed directory.
if [ -n "$RHQ_CLI_CHANGE_DIR_ON_START" -a "$RHQ_CLI_CHANGE_DIR_ON_START" != "false" ]; then
if [ -z "$RHQ_CLI_HOME" ]; then
- cd "${RHQ_CLI_BIN_DIR_PATH}/.."
+ cd "$RHQ_CLI_BIN_DIR_PATH/.."
else
- cd "${RHQ_CLI_HOME}" || {
- echo "Cannot go to the RHQ_CLI_HOME directory: ${RHQ_CLI_HOME}"
+ cd "$RHQ_CLI_HOME" || {
+ echo "Cannot go to the RHQ_CLI_HOME directory: $RHQ_CLI_HOME"
exit 1
}
fi
RHQ_CLI_HOME=`pwd`
else
if [ -z "$RHQ_CLI_HOME" ]; then
- RHQ_CLI_HOME="${RHQ_CLI_BIN_DIR_PATH}/.."
+ RHQ_CLI_HOME="$RHQ_CLI_BIN_DIR_PATH/.."
fi
#get an absolute path
RHQ_CLI_HOME=`readlink -f "$RHQ_CLI_HOME"`
if [ ! -d "$RHQ_CLI_HOME" ]; then
- echo "RHQ_CLI_HOME detected or defined as [${RHQ_CLI_HOME}] doesn't seem to exist or is not a directory"
+ echo "RHQ_CLI_HOME detected or defined as [$RHQ_CLI_HOME] doesn't seem to exist or is not a directory"
exit 1
fi
fi
@@ -90,7 +99,7 @@ debug_msg "RHQ_CLI_HOME: $RHQ_CLI_HOME"
# sample modules.
# ----------------------------------------------------------------------
if [ -z "$RHQ_CLI_MODULES_DIR" ]; then
- RHQ_CLI_MODULES_DIR="${RHQ_CLI_HOME}/samples/modules"
+ RHQ_CLI_MODULES_DIR="$RHQ_CLI_HOME/samples/modules"
fi
# ----------------------------------------------------------------------
@@ -110,7 +119,7 @@ fi
if [ -z "$RHQ_CLI_JAVA_EXE_FILE_PATH" ]; then
if [ -z "$RHQ_CLI_JAVA_HOME" ]; then
- RHQ_CLI_JAVA_HOME="${RHQ_CLI_HOME}/jre"
+ RHQ_CLI_JAVA_HOME="$RHQ_CLI_HOME/jre"
if [ -d "$RHQ_CLI_JAVA_HOME" ]; then
debug_msg "Using the embedded JRE"
else
@@ -119,7 +128,7 @@ if [ -z "$RHQ_CLI_JAVA_EXE_FILE_PATH" ]; then
fi
fi
debug_msg "RHQ_CLI_JAVA_HOME: $RHQ_CLI_JAVA_HOME"
- RHQ_CLI_JAVA_EXE_FILE_PATH=${RHQ_CLI_JAVA_HOME}/bin/java
+ RHQ_CLI_JAVA_EXE_FILE_PATH="$RHQ_CLI_JAVA_HOME/bin/java"
fi
debug_msg "RHQ_CLI_JAVA_EXE_FILE_PATH: $RHQ_CLI_JAVA_EXE_FILE_PATH"
@@ -133,14 +142,14 @@ fi
# Prepare the classpath (take into account possible spaces in dir names)
# ----------------------------------------------------------------------
-CLASSPATH="${RHQ_CLI_HOME}/conf"
-_JAR_FILES=`cd "${RHQ_CLI_HOME}/lib";ls -1 *.jar`
+CLASSPATH="$RHQ_CLI_HOME/conf"
+_JAR_FILES=`cd "$RHQ_CLI_HOME/lib";ls -1 *.jar`
for _JAR in $_JAR_FILES ; do
- _JAR="${RHQ_CLI_HOME}/lib/${_JAR}"
+ _JAR="$RHQ_CLI_HOME/lib/$_JAR"
if [ -z "$CLASSPATH" ]; then
- CLASSPATH="${_JAR}"
+ CLASSPATH="$_JAR"
else
- CLASSPATH="${CLASSPATH}:${_JAR}"
+ CLASSPATH="$CLASSPATH:$_JAR"
fi
debug_msg "CLASSPATH entry: $_JAR"
done
@@ -151,7 +160,7 @@ debug_msg "CLASSPATH entry: $_JAR"
# ----------------------------------------------------------------------
if [ -z "$RHQ_CLI_JAVA_OPTS" ]; then
- RHQ_CLI_JAVA_OPTS="-Xms64m -Xmx128m -Djava.net.preferIPv4Stack=true -Drhq.scripting.modules.root-dir=${RHQ_CLI_MODULES_DIR}"
+ RHQ_CLI_JAVA_OPTS="-Xms64m -Xmx128m -Djava.net.preferIPv4Stack=true -Drhq.scripting.modules.root-dir=$RHQ_CLI_MODULES_DIR"
fi
debug_msg "RHQ_CLI_JAVA_OPTS: $RHQ_CLI_JAVA_OPTS"
@@ -159,7 +168,7 @@ if [ "$RHQ_CLI_JAVA_ENDORSED_DIRS" = "none" ]; then
debug_msg "Not explicitly setting java.endorsed.dirs"
else
if [ -z "$RHQ_CLI_JAVA_ENDORSED_DIRS" ]; then
- RHQ_CLI_JAVA_ENDORSED_DIRS="${RHQ_CLI_HOME}/lib/endorsed"
+ RHQ_CLI_JAVA_ENDORSED_DIRS="$RHQ_CLI_HOME/lib/endorsed"
fi
# convert the path if on Windows
@@ -167,14 +176,14 @@ else
RHQ_CLI_JAVA_ENDORSED_DIRS=`cygpath --windows --path "$RHQ_CLI_JAVA_ENDORSED_DIRS"`
fi
debug_msg "RHQ_CLI_JAVA_ENDORSED_DIRS: $RHQ_CLI_JAVA_ENDORSED_DIRS"
- _JAVA_ENDORSED_DIRS_OPT="-Djava.endorsed.dirs=\"${RHQ_CLI_JAVA_ENDORSED_DIRS}\""
+ _JAVA_ENDORSED_DIRS_OPT="-Djava.endorsed.dirs=\"$RHQ_CLI_JAVA_ENDORSED_DIRS\""
fi
if [ "$RHQ_CLI_JAVA_LIBRARY_PATH" = "none" ]; then
debug_msg "Not explicitly setting java.library.path"
else
if [ -z "$RHQ_CLI_JAVA_LIBRARY_PATH" ]; then
- RHQ_CLI_JAVA_LIBRARY_PATH="${RHQ_CLI_HOME}/lib"
+ RHQ_CLI_JAVA_LIBRARY_PATH="$RHQ_CLI_HOME/lib"
fi
# convert the path if on Windows
@@ -182,7 +191,7 @@ else
RHQ_CLI_JAVA_LIBRARY_PATH=`cygpath --windows --path "$RHQ_CLI_JAVA_LIBRARY_PATH"`
fi
debug_msg "RHQ_CLI_JAVA_LIBRARY_PATH: $RHQ_CLI_JAVA_LIBRARY_PATH"
- _JAVA_LIBRARY_PATH_OPT="-Djava.library.path=\"${RHQ_CLI_JAVA_LIBRARY_PATH}\""
+ _JAVA_LIBRARY_PATH_OPT="-Djava.library.path=\"$RHQ_CLI_JAVA_LIBRARY_PATH\""
fi
debug_msg "RHQ_CLI_ADDITIONAL_JAVA_OPTS: $RHQ_CLI_ADDITIONAL_JAVA_OPTS"
@@ -201,8 +210,8 @@ if [ -n "$RHQ_CLI_DEBUG" ]; then
fi
# create the logs directory
-if [ ! -d "${RHQ_CLI_HOME}/logs" ]; then
- mkdir "${RHQ_CLI_HOME}/logs"
+if [ ! -d "$RHQ_CLI_HOME/logs" ]; then
+ mkdir "$RHQ_CLI_HOME/logs"
fi
# convert some of the paths if we are on Windows
@@ -220,15 +229,15 @@ fi
debug_msg "Executing the CLI with this command line:"
exit_code=0
if [ -z "$RHQ_CLI_CMDLINE_OPTS" ]; then
- debug_msg "${RHQ_CLI_JAVA_EXE_FILE_PATH} ${_JAVA_ENDORSED_DIRS_OPT} ${_JAVA_LIBRARY_PATH_OPT} ${RHQ_CLI_JAVA_OPTS} ${RHQ_CLI_ADDITIONAL_JAVA_OPTS} ${_LOG_CONFIG} -cp ${CLASSPATH} org.rhq.enterprise.client.ClientMain $@"
- "${RHQ_CLI_JAVA_EXE_FILE_PATH}" ${_JAVA_ENDORSED_DIRS_OPT} ${_JAVA_LIBRARY_PATH_OPT} ${RHQ_CLI_JAVA_OPTS} ${RHQ_CLI_ADDITIONAL_JAVA_OPTS} ${_LOG_CONFIG} -cp "${CLASSPATH}" org.rhq.enterprise.client.ClientMain "$@"
+ debug_msg "$RHQ_CLI_JAVA_EXE_FILE_PATH $_JAVA_ENDORSED_DIRS_OPT $_JAVA_LIBRARY_PATH_OPT $RHQ_CLI_JAVA_OPTS $RHQ_CLI_ADDITIONAL_JAVA_OPTS $_LOG_CONFIG -cp $CLASSPATH org.rhq.enterprise.client.ClientMain $@"
+ "$RHQ_CLI_JAVA_EXE_FILE_PATH" $_JAVA_ENDORSED_DIRS_OPT $_JAVA_LIBRARY_PATH_OPT $RHQ_CLI_JAVA_OPTS $RHQ_CLI_ADDITIONAL_JAVA_OPTS $_LOG_CONFIG -cp "$CLASSPATH" org.rhq.enterprise.client.ClientMain "$@"
exit_code=$?
else
- debug_msg "${RHQ_CLI_JAVA_EXE_FILE_PATH} ${_JAVA_ENDORSED_DIRS_OPT} ${_JAVA_LIBRARY_PATH_OPT} ${RHQ_CLI_JAVA_OPTS} ${RHQ_CLI_ADDITIONAL_JAVA_OPTS} ${_LOG_CONFIG} -cp ${CLASSPATH} org.rhq.enterprise.client.ClientMain ${RHQ_CLI_CMDLINE_OPTS}"
- "${RHQ_CLI_JAVA_EXE_FILE_PATH}" ${_JAVA_ENDORSED_DIRS_OPT} ${_JAVA_LIBRARY_PATH_OPT} ${RHQ_CLI_JAVA_OPTS} ${RHQ_CLI_ADDITIONAL_JAVA_OPTS} ${_LOG_CONFIG} -cp "${CLASSPATH}" org.rhq.enterprise.client.ClientMain ${RHQ_CLI_CMDLINE_OPTS}
+ debug_msg "$RHQ_CLI_JAVA_EXE_FILE_PATH $_JAVA_ENDORSED_DIRS_OPT $_JAVA_LIBRARY_PATH_OPT $RHQ_CLI_JAVA_OPTS $RHQ_CLI_ADDITIONAL_JAVA_OPTS $_LOG_CONFIG -cp $CLASSPATH org.rhq.enterprise.client.ClientMain $RHQ_CLI_CMDLINE_OPTS"
+ "$RHQ_CLI_JAVA_EXE_FILE_PATH" $_JAVA_ENDORSED_DIRS_OPT $_JAVA_LIBRARY_PATH_OPT $RHQ_CLI_JAVA_OPTS $RHQ_CLI_ADDITIONAL_JAVA_OPTS $_LOG_CONFIG -cp "$CLASSPATH" org.rhq.enterprise.client.ClientMain $RHQ_CLI_CMDLINE_OPTS
exit_code=$?
fi
debug_msg "$0 done."
-exit ${exit_code}
+exit $exit_code
10 years, 5 months
[rhq] Changes to 'heiko/agentFootprint'
by Heiko W. Rupp
New branch 'heiko/agentFootprint' available with the following commits:
commit fab3288cb739b0f0bbb46e4257449aa5609bd5b8
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Dec 13 14:13:50 2013 +0100
Slim down resource containers a bit.
commit 7dc78ecc2e676c8355579ac135ca9b1ddabbe56a
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Dec 13 12:42:30 2013 +0100
BZ 1031967 - Detach the resource configs into files and load for the config check when necessary.
commit 5a63da5bd688c0ae6f196e59ca1df2570bb4c714
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Dec 13 10:53:48 2013 +0100
BZ 1030399 - slim down resources and resource types for agent use.
commit 6361dcf4bd88fe4163e20f9b69951b3cdd8a3faa
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Dec 13 10:52:44 2013 +0100
Increase string table size for better performance of intern()ing
commit c74f5f8e7b63013c17e8181c1f983dc5e5df06d2
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Dec 13 10:50:46 2013 +0100
Intern the property name as this tends to be the same over and over again.
commit b387ba7dc818310be84a36aa8a12d2e4eb1dc790
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Dec 13 10:50:04 2013 +0100
BZ 1038689 - Don't allocate raw config by default to save space.
commit 7101fa4a318a4536c91a4ee8d8fd4c6ded9a43fd
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Dec 13 10:44:15 2013 +0100
BZ 1033913 - compact MeasurementScheduleRequests as we have hundreds of thousands of them
commit bba72678e2d953b6283238f1765793a2996d7990
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Dec 13 10:41:54 2013 +0100
BZ 1030452 - Cleanout plugin descriptors after parsing.
10 years, 5 months
[rhq] 2 commits - modules/plugins
by Heiko W. Rupp
modules/plugins/jboss-cache/src/main/java/org/rhq/plugins/jbosscache/JBossCacheDiscoveryComponent.java | 10 ++++++++--
modules/plugins/virt/src/main/java/org/rhq/plugins/virt/VirtualizationHostDiscoveryComponent.java | 9 +++++++--
2 files changed, 15 insertions(+), 4 deletions(-)
New commits:
commit 78049db67fa2fc7129e218c3f55df8696b5a3c7c
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Dec 13 10:08:04 2013 +0100
No need to print the stack trace here - many systems do not have libvirt installed.
diff --git a/modules/plugins/virt/src/main/java/org/rhq/plugins/virt/VirtualizationHostDiscoveryComponent.java b/modules/plugins/virt/src/main/java/org/rhq/plugins/virt/VirtualizationHostDiscoveryComponent.java
index 749c4c1..98aca93 100644
--- a/modules/plugins/virt/src/main/java/org/rhq/plugins/virt/VirtualizationHostDiscoveryComponent.java
+++ b/modules/plugins/virt/src/main/java/org/rhq/plugins/virt/VirtualizationHostDiscoveryComponent.java
@@ -35,7 +35,7 @@ import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
import org.rhq.plugins.virt.LibVirtConnection.HVInfo;
/**
- * Discovers Host and Guest information using
+ * Discovers Host and Guest information using
*/
public class VirtualizationHostDiscoveryComponent implements ResourceDiscoveryComponent, ManualAddFacet {
@@ -68,7 +68,12 @@ public class VirtualizationHostDiscoveryComponent implements ResourceDiscoveryCo
res.getPluginConfiguration().put(new PropertySimple("connectionURI", virt.getConnectionURI()));
virt.close();
} catch (Throwable t) {
- log.warn("Can not load libvirt: " + t.getMessage(), t);
+ String message = t.getMessage();
+ if (t.getCause()!=null) {
+ message += ": " + t.getCause().getMessage();
+ }
+ log.warn("Can not load libvirt: " + message);
+
}
return res;
commit c44e0dcd63d088e694918bfea91a150453e21a31
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Thu Dec 12 22:17:25 2013 +0100
Check if the parent can be cast to JMXComponent before doing so.
diff --git a/modules/plugins/jboss-cache/src/main/java/org/rhq/plugins/jbosscache/JBossCacheDiscoveryComponent.java b/modules/plugins/jboss-cache/src/main/java/org/rhq/plugins/jbosscache/JBossCacheDiscoveryComponent.java
index 4d1eecf..b3fabfa 100644
--- a/modules/plugins/jboss-cache/src/main/java/org/rhq/plugins/jbosscache/JBossCacheDiscoveryComponent.java
+++ b/modules/plugins/jboss-cache/src/main/java/org/rhq/plugins/jbosscache/JBossCacheDiscoveryComponent.java
@@ -23,6 +23,7 @@
package org.rhq.plugins.jbosscache;
+import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
@@ -43,10 +44,10 @@ import org.rhq.plugins.jmx.MBeanResourceDiscoveryComponent;
/**
* Discover JBossCache instances. The only way to detect them are to
* look for "*:cache-interceptor=CacheMgmtInterceptor,*" or "*:treecache-interceptor=CacheMgmtInterceptor,*"
- * This is done in {@link MBeanResourceDiscoveryComponent}. We postprocess the result here to
+ * This is done in {@link MBeanResourceDiscoveryComponent}. We postprocess the result here to
* get the base MBean name (without the property for detection) to be able to use this later and also
* for display purposes, as this is the MBean name the user set up in his MBean.
- *
+ *
* @author Heiko W. Rupp
*/
public class JBossCacheDiscoveryComponent extends MBeanResourceDiscoveryComponent<JMXComponent<?>> {
@@ -60,6 +61,11 @@ public class JBossCacheDiscoveryComponent extends MBeanResourceDiscoveryComponen
public Set<DiscoveredResourceDetails> discoverResources(ResourceDiscoveryContext<JMXComponent<?>> context) {
ResourceContext parentCtx = context.getParentResourceContext();
+
+ if (!(parentCtx.getParentResourceComponent() instanceof JMXComponent)) {
+ return Collections.emptySet();
+ }
+
JMXComponent<JBossASServerComponent<?>> gparentComponent = (JMXComponent<JBossASServerComponent<?>>) parentCtx.getParentResourceComponent();
Set<DiscoveredResourceDetails> discovered = super.performDiscovery(context.getDefaultPluginConfiguration(), gparentComponent, context.getResourceType(), false);
10 years, 5 months
[rhq] Branch 'mtho11/group-metrics' - 29 commits - .classpath etc/rhq-ircBot .mailmap modules/core modules/enterprise modules/integration-tests modules/plugins pom.xml
by mike thompson
.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?title=GSS...");
+ 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=0AsqiOfOdbEhBdEtMZGRGUTVZNTNm...";
+ 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...";
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);
- }
- }
-
- );
}
}
10 years, 5 months
[rhq] 3 commits - modules/enterprise
by lkrejci
modules/enterprise/remoting/cli/pom.xml | 19 ++
modules/enterprise/remoting/cli/src/etc/Remoting_Setup.txt | 43 -----
modules/enterprise/remoting/cli/src/etc/build.xml | 80 ----------
modules/enterprise/remoting/cli/src/etc/generate-jaxb-client-types.bat | 16 --
modules/enterprise/remoting/cli/src/etc/generate-jaxb-client-types.sh | 18 --
modules/enterprise/remoting/cli/src/etc/rhq-cli-env.bat | 32 +++-
modules/enterprise/remoting/cli/src/etc/rhq-cli-env.sh | 32 +++-
modules/enterprise/remoting/cli/src/etc/rhq-cli.bat | 51 +++++-
modules/enterprise/remoting/cli/src/etc/rhq-cli.sh | 51 +++++-
modules/enterprise/remoting/cli/src/etc/toRun.txt | 3
modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/script/ModulesDirectoryScriptSourceProvider.java | 33 +++-
modules/enterprise/remoting/cli/src/main/scripts/rhq-client.build.xml | 2
modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/script/ModulesDirectoryScriptSourceProviderTest.java | 67 ++++++++
13 files changed, 258 insertions(+), 189 deletions(-)
New commits:
commit 83d7c260f412c218c12374642174a9af0e2ac23d
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Thu Dec 12 22:43:55 2013 +0100
Better testability in the ModulesDirectoryScriptSourceProvider.
Also changed the default module path from "./samples/modules" to
"./modules". This should be safe with the fix for BZ 959603 which
causes the CLI to always pass the system property to load the modules
from. The new default path is less coupled with the FS layout of the CLI
distribution.
diff --git a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/script/ModulesDirectoryScriptSourceProvider.java b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/script/ModulesDirectoryScriptSourceProvider.java
index 0e46abe..6040e8e 100644
--- a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/script/ModulesDirectoryScriptSourceProvider.java
+++ b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/script/ModulesDirectoryScriptSourceProvider.java
@@ -30,13 +30,38 @@ import java.net.URI;
*/
public class ModulesDirectoryScriptSourceProvider extends FileSystemScriptSourceProvider {
- private static final File ROOT_DIR = new File(System.getProperty("rhq.scripting.modules.root-dir", "./samples/modules"));
private static final String SCHEME = "modules";
-
+
+ private File rootDir;
+
+ /**
+ * Creates a new instance of module script source provider that looks for the module sources in a directory
+ * specified by the "rhq.scripting.modules.root-dir" system property. If none such exists, the default value
+ * is assumed to be "./modules".
+ */
public ModulesDirectoryScriptSourceProvider() {
+ this(new File(System.getProperty("rhq.scripting.modules.root-dir", "./modules")));
+ }
+
+ /**
+ * Provided for testing purposes. A script source provider is only instantiated through its no-arg constructor
+ * in the scripting environment.
+ *
+ * @param rootDir the root directory under which to locate module sources
+ */
+ public ModulesDirectoryScriptSourceProvider(File rootDir) {
super(SCHEME);
+ this.rootDir = rootDir;
}
-
+
+ public File getRootDir() {
+ return rootDir;
+ }
+
+ public void setRootDir(File rootDir) {
+ this.rootDir = rootDir;
+ }
+
@Override
protected File getFile(URI location) {
String path = location.getPath();
@@ -44,6 +69,6 @@ public class ModulesDirectoryScriptSourceProvider extends FileSystemScriptSource
//remove the leading /
path = path.substring(1);
- return new File(ROOT_DIR, path);
+ return new File(rootDir, path);
}
}
diff --git a/modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/script/ModulesDirectoryScriptSourceProviderTest.java b/modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/script/ModulesDirectoryScriptSourceProviderTest.java
new file mode 100644
index 0000000..4060d07
--- /dev/null
+++ b/modules/enterprise/remoting/cli/src/test/java/org/rhq/enterprise/client/script/ModulesDirectoryScriptSourceProviderTest.java
@@ -0,0 +1,67 @@
+/*
+ * RHQ Management Platform
+ * Copyright (C) 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.enterprise.client.script;
+
+import static org.testng.Assert.assertEquals;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.junit.BeforeClass;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.Test;
+
+/**
+ * @author Lukas Krejci
+ * @since 4.10.0
+ */
+@Test
+public class ModulesDirectoryScriptSourceProviderTest {
+
+ private File scriptFile;
+
+ @BeforeClass
+ public void createScriptFile() throws IOException {
+ scriptFile = File.createTempFile("modules-test", ".js", new File("."));
+ PrintWriter wrt = new PrintWriter(new FileOutputStream(scriptFile));
+ try {
+ wrt.write("var a = 2;");
+ } finally {
+ wrt.close();
+ }
+ }
+
+ @AfterClass
+ public void deleteScriptFile() {
+ scriptFile.delete();
+ }
+
+ public void testLoad() throws URISyntaxException {
+ ModulesDirectoryScriptSourceProvider provider = new ModulesDirectoryScriptSourceProvider(new File("."));
+
+ File f = provider.getFile(new URI("modules:/" + scriptFile.getName()));
+
+ assertEquals(f, scriptFile, "Unexpected file loaded");
+ }
+}
commit f35bbe1a20a775c8273b551a924261e254dd199d
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Thu Dec 12 23:10:14 2013 +0100
[BZ 959603] - Don't change CWD on CLI startup.
Since the very beginning of CLI, RHQ always changed the CWD to
$RHQ_CLI_HOME when starting up, which is rather strange and
non-standard.
To keep the backwards compatibility, the behavior can be toggled on
or off.
The default behavior can be changed in the build by setting the
rhq.cli.change-dir-on-start-default
property. In RHQ, this defaults to "false", causing RHQ to NOT change
directories when starting up the CLI anymore.
Further, the behavior can be toggled by the user by setting the
RHQ_CLI_CHANGE_DIR_ON_START environment variable to "true" (or any
other value but "false" actually) or "false" explicitly.
Additionally, a new environment variable called "RHQ_CLI_MODULES_DIR"
was added. This was necessary to not break the loading of the
provided CommonJS modules available in the
$RHQ_CLI_HOME/samples/modules directory if the CLI was started from
another directory.
By adding the new RHQ_CLI_MODULES_DIR, which is initialized to the
correct value if not provided externally, we correctly load the
sample modules with the additional benefit of easier change of the
modules location for the user (previously this was only possible
through
RHQ_CLI_ADDITIONAL_JAVA_OPTS="-Drhq.scripting.modules.root-dir=..."
, while now one only needs RHQ_CLI_MODULES_DIR=...).
diff --git a/modules/enterprise/remoting/cli/pom.xml b/modules/enterprise/remoting/cli/pom.xml
index 7515110..296b490 100644
--- a/modules/enterprise/remoting/cli/pom.xml
+++ b/modules/enterprise/remoting/cli/pom.xml
@@ -13,7 +13,11 @@
<name>RHQ Enterprise Remote CLI</name>
<description>RHQ Enterprise Remote Command Line Interface</description>
-
+
+ <properties>
+ <rhq.cli.change-dir-on-start-default>false</rhq.cli.change-dir-on-start-default>
+ </properties>
+
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
@@ -78,7 +82,18 @@
</dependencies>
<build>
- <plugins>
+ <resources>
+ <resource>
+ <directory>src/etc</directory>
+ <filtering>true</filtering>
+ <targetPath>${project.build.outputDirectory}/../etc</targetPath>
+ </resource>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ </resources>
+
+ <plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
diff --git a/modules/enterprise/remoting/cli/src/etc/rhq-cli-env.bat b/modules/enterprise/remoting/cli/src/etc/rhq-cli-env.bat
index d5d1189..dcf1ec8 100644
--- a/modules/enterprise/remoting/cli/src/etc/rhq-cli-env.bat
+++ b/modules/enterprise/remoting/cli/src/etc/rhq-cli-env.bat
@@ -37,7 +37,7 @@ rem CLI's defaults. If you only want to add options
rem to the CLI's defaults, then you will want to
rem use RHQ_CLI_ADDITIONAL_JAVA_OPTS instead.
rem
-rem set RHQ_CLI_JAVA_OPTS=-Xms64m -Xmx128m -Djava.net.preferIPv4Stack=true
+rem set RHQ_CLI_JAVA_OPTS=-Xms64m -Xmx128m -Djava.net.preferIPv4Stack=true -Drhq.scripting.modules.root-dir="%RHQ_CLI_MODULES_DIR%"
rem RHQ_CLI_JAVA_ENDORSED_DIRS - Java VM command line option to set the
rem endorsed dirs for the CLI's VM. If this
@@ -74,3 +74,33 @@ rem line options and the ones specified here will
rem be passed to the CLI.
rem
rem set RHQ_CLI_CMDLINE_OPTS=
+
+rem RHQ_CLI_CHANGE_DIR_ON_START - By setting this variable to true (or any
+rem other value than "false") you can make RHQ
+rem change the directory to $RHQ_CLI_HOME when
+rem starting the CLI. When this variable is set
+rem to false, the current working directory is
+rem NOT changed when starting the CLI.
+rem
+rem If not set, this variable is understood
+rem to be: ${rhq.cli.change-dir-on-start-default}
+rem set RHQ_CLI_CHANGE_DIR_ON_START=true
+
+rem RHQ_CLI_MODULES_DIR - The default location from which to load CommonJS
+rem modules available through the "modules:/" scheme
+rem is $RHQ_CLI_HOME/samples/modules.
+rem Setting this variable to another value, causes
+rem the modules to be loaded from another location.
+rem
+rem Notice that this can be a relative path, too.
+rem For example, setting:
+rem RHQ_CLI_MODULES_DIR=./modules
+rem would cause the CLI to load modules from the
+rem "modules" subdirectory of whichever current
+rem working directory it is started from.
+rem (See RHQ_CLI_JAVA_OPTS and
+rem RHQ_CLI_CHANGE_DIR_ON_START variables above for
+rem further details of this approach).
+rem
+rem set RHQ_CLI_MODULE_DIR=Z:\company-wide\rhq\cli\modules
+
diff --git a/modules/enterprise/remoting/cli/src/etc/rhq-cli-env.sh b/modules/enterprise/remoting/cli/src/etc/rhq-cli-env.sh
index 2c0affa..112ec66 100755
--- a/modules/enterprise/remoting/cli/src/etc/rhq-cli-env.sh
+++ b/modules/enterprise/remoting/cli/src/etc/rhq-cli-env.sh
@@ -41,7 +41,7 @@
# to the CLI's defaults, then you will want to
# use RHQ_CLI_ADDITIONAL_JAVA_OPTS instead.
#
-#RHQ_CLI_JAVA_OPTS="-Xms64m -Xmx128m -Djava.net.preferIPv4Stack=true"
+#RHQ_CLI_JAVA_OPTS="-Xms64m -Xmx128m -Djava.net.preferIPv4Stack=true -Drhq.scripting.modules.root-dir=${RHQ_CLI_MODULES_DIR}"
# RHQ_CLI_JAVA_ENDORSED_DIRS - Java VM command line option to set the
# endorsed dirs for the CLI's VM. If this
@@ -78,3 +78,33 @@
# be passed to the CLI.
#
#RHQ_CLI_CMDLINE_OPTS=""
+
+# RHQ_CLI_CHANGE_DIR_ON_START - By setting this variable to true (or any
+# other value than "false") you can make RHQ
+# change the directory to $RHQ_CLI_HOME when
+# starting the CLI. When this variable is set
+# to false, the current working directory is
+# NOT changed when starting the CLI.
+#
+# If not set, this variable is understood
+# to be: ${rhq.cli.change-dir-on-start-default}
+#RHQ_CLI_CHANGE_DIR_ON_START=true
+
+# RHQ_CLI_MODULES_DIR - The default location from which to load CommonJS
+# modules available through the "modules:/" scheme
+# is $RHQ_CLI_HOME/samples/modules.
+# Setting this variable to another value, causes
+# the modules to be loaded from another location.
+#
+# Notice that this can be a relative path, too.
+# For example, setting:
+# RHQ_CLI_MODULES_DIR=./modules
+# would cause the CLI to load modules from the
+# "modules" subdirectory of whichever current
+# working directory it is started from.
+# (See RHQ_CLI_JAVA_OPTS and
+# RHQ_CLI_CHANGE_DIR_ON_START variables above for
+# further details of this approach).
+#
+#RHQ_CLI_MODULE_DIR=/opt/company-wide/rhq/cli/modules
+
diff --git a/modules/enterprise/remoting/cli/src/etc/rhq-cli.bat b/modules/enterprise/remoting/cli/src/etc/rhq-cli.bat
index 8c96ed7..13dd762 100644
--- a/modules/enterprise/remoting/cli/src/etc/rhq-cli.bat
+++ b/modules/enterprise/remoting/cli/src/etc/rhq-cli.bat
@@ -20,13 +20,6 @@ if "%RHQ_CLI_DEBUG%" == "false" (
set RHQ_CLI_DEBUG=
)
-rem ----------------------------------------------------------------------
-rem Change directory so the current directory is the CLI home.
-rem Here we assume this script is a child directory of the CLI home
-rem We also assume our custom environment script is located in the same
-rem place as this script.
-rem ----------------------------------------------------------------------
-
set RHQ_CLI_BIN_DIR_PATH=%~dp0
if exist "%RHQ_CLI_BIN_DIR_PATH%\rhq-cli-env.bat" (
@@ -36,11 +29,38 @@ if exist "%RHQ_CLI_BIN_DIR_PATH%\rhq-cli-env.bat" (
if defined RHQ_CLI_DEBUG echo No environment script found at: %RHQ_CLI_BIN_DIR_PATH%\rhq-cli-env.bat
)
-rem if debug variable is set, it is assumed to be on, unless its value is false
+rem this variable is set during the build and defines the desired default behavior for directory changing
+rem we do want to change the dir in RHQ, but possibly don't want to do that in JBoss ON for backwards compatibility
+rem reasons.
+set RHQ_CLI_CHANGE_DIR_ON_START_DEFAULT=${rhq.cli.change-dir-on-start-default}
+
+if not defined RHQ_CLI_CHANGE_DIR_ON_START (
+ set RHQ_CLI_CHANGE_DIR_ON_START=%RHQ_CLI_CHANGE_DIR_ON_START_DEFAULT%
+)
+
+rem RHQ_CLI_CHANGE_DIR_ON_START behaves the same as RHQ_CLI_DEBUG - if set, it is assumed on, unless equal to false
+if "%RHQ_CLI_CHANGE_DIR_ON_START%" == "false" (
+ set RHQ_CLI_CHANGE_DIR_ON_START=
+)
+
+rem if debug variable is set, it is assumed to be on, unless its value is false (do this again after we've loaded
+rem the env script)
if "%RHQ_CLI_DEBUG%" == "false" (
set RHQ_CLI_DEBUG=
)
+rem ----------------------------------------------------------------------
+rem Change directory so the current directory is the CLI home.
+rem Here we assume this script is a child directory of the CLI home
+rem We also assume our custom environment script is located in the same
+rem place as this script.
+rem ----------------------------------------------------------------------
+
+rem since RHQ 4.10.0 we don't change the directory to the RHQ_CLI_HOME by default
+if not defined RHQ_CLI_CHANGE_DIR_ON_START (
+ pushd .
+)
+
if not defined RHQ_CLI_HOME (
cd "%RHQ_CLI_BIN_DIR_PATH%\.."
) else (
@@ -52,9 +72,22 @@ if not defined RHQ_CLI_HOME (
set RHQ_CLI_HOME=%CD%
+rem since RHQ 4.10.0 we don't change the directory to the RHQ_CLI_HOME by default
+if not defined RHQ_CLI_CHANGE_DIR_ON_START (
+ popd
+)
+
if defined RHQ_CLI_DEBUG echo RHQ_CLI_HOME: %RHQ_CLI_HOME%
rem ----------------------------------------------------------------------
+rem Prepare the modules:/ script source provider to by default load our
+rem sample modules.
+rem ----------------------------------------------------------------------
+if not defined RHQ_CLI_MODULES_DIR (
+ set RHQ_CLI_MODULES_DIR="%RHQ_CLI_HOME%\samples\modules"
+)
+
+rem ----------------------------------------------------------------------
rem Find the Java executable and verify we have a VM available
rem Note that RHQ_CLI_JAVA_* props are still handled for back compat
rem ----------------------------------------------------------------------
@@ -105,7 +138,7 @@ rem Prepare the VM command line options to be passed in
rem ----------------------------------------------------------------------
if not defined RHQ_CLI_JAVA_OPTS (
- set RHQ_CLI_JAVA_OPTS=-Xms64m -Xmx128m -Djava.net.preferIPv4Stack=true
+ set RHQ_CLI_JAVA_OPTS=-Xms64m -Xmx128m -Djava.net.preferIPv4Stack=true -Drhq.scripting.modules.root-dir="%RHQ_CLI_MODULES_DIR%"
)
if defined RHQ_CLI_DEBUG echo RHQ_CLI_JAVA_OPTS: %RHQ_CLI_JAVA_OPTS%
diff --git a/modules/enterprise/remoting/cli/src/etc/rhq-cli.sh b/modules/enterprise/remoting/cli/src/etc/rhq-cli.sh
index 9fce451..8399b50 100644
--- a/modules/enterprise/remoting/cli/src/etc/rhq-cli.sh
+++ b/modules/enterprise/remoting/cli/src/etc/rhq-cli.sh
@@ -49,20 +49,51 @@ else
debug_msg "No environment script found at: ${RHQ_CLI_BIN_DIR_PATH}/rhq-cli-env.sh"
fi
-if [ -z "$RHQ_CLI_HOME" ]; then
- cd "${RHQ_CLI_BIN_DIR_PATH}/.."
-else
- cd "${RHQ_CLI_HOME}" || {
- echo "Cannot go to the RHQ_CLI_HOME directory: ${RHQ_CLI_HOME}"
- exit 1
- }
+# this variable is set during the build and defines the desired default behavior for directory changing
+# we do want to change the dir in RHQ, but possibly don't want to do that in JBoss ON for backwards compatibility
+# reasons.
+RHQ_CLI_CHANGE_DIR_ON_START_DEFAULT=${rhq.cli.change-dir-on-start-default}
+if [ -z "$RHQ_CLI_CHANGE_DIR_ON_START" ]; then
+ RHQ_CLI_CHANGE_DIR_ON_START="$RHQ_CLI_CHANGE_DIR_ON_START_DEFAULT"
fi
-RHQ_CLI_HOME=`pwd`
+# Only change the directory on start when told so. This is new in RHQ 4.10.0.
+# Previous versions always changed directory.
+if [ -n "$RHQ_CLI_CHANGE_DIR_ON_START" -a "$RHQ_CLI_CHANGE_DIR_ON_START" != "false" ]; then
+ if [ -z "$RHQ_CLI_HOME" ]; then
+ cd "${RHQ_CLI_BIN_DIR_PATH}/.."
+ else
+ cd "${RHQ_CLI_HOME}" || {
+ echo "Cannot go to the RHQ_CLI_HOME directory: ${RHQ_CLI_HOME}"
+ exit 1
+ }
+ fi
+ RHQ_CLI_HOME=`pwd`
+else
+ if [ -z "$RHQ_CLI_HOME" ]; then
+ RHQ_CLI_HOME="${RHQ_CLI_BIN_DIR_PATH}/.."
+ fi
+
+ #get an absolute path
+ RHQ_CLI_HOME=`readlink -f "$RHQ_CLI_HOME"`
+
+ if [ ! -d "$RHQ_CLI_HOME" ]; then
+ echo "RHQ_CLI_HOME detected or defined as [${RHQ_CLI_HOME}] doesn't seem to exist or is not a directory"
+ exit 1
+ fi
+fi
debug_msg "RHQ_CLI_HOME: $RHQ_CLI_HOME"
# ----------------------------------------------------------------------
+# Prepare the modules:/ script source provider to by default load our
+# sample modules.
+# ----------------------------------------------------------------------
+if [ -z "$RHQ_CLI_MODULES_DIR" ]; then
+ RHQ_CLI_MODULES_DIR="${RHQ_CLI_HOME}/samples/modules"
+fi
+
+# ----------------------------------------------------------------------
# If we are on a Mac and JAVA_HOME is not set, then set it to /usr
# as this is the default location.
# ----------------------------------------------------------------------
@@ -113,8 +144,6 @@ for _JAR in $_JAR_FILES ; do
fi
debug_msg "CLASSPATH entry: $_JAR"
done
-_JAR="${RHQ_CLI_HOME}/jbossws-native-dist/deploy/lib/jbossws-client.jar"
-CLASSPATH="${CLASSPATH}:${_JAR}"
debug_msg "CLASSPATH entry: $_JAR"
# ----------------------------------------------------------------------
@@ -122,7 +151,7 @@ debug_msg "CLASSPATH entry: $_JAR"
# ----------------------------------------------------------------------
if [ -z "$RHQ_CLI_JAVA_OPTS" ]; then
- RHQ_CLI_JAVA_OPTS="-Xms64m -Xmx128m -Djava.net.preferIPv4Stack=true"
+ RHQ_CLI_JAVA_OPTS="-Xms64m -Xmx128m -Djava.net.preferIPv4Stack=true -Drhq.scripting.modules.root-dir=${RHQ_CLI_MODULES_DIR}"
fi
debug_msg "RHQ_CLI_JAVA_OPTS: $RHQ_CLI_JAVA_OPTS"
diff --git a/modules/enterprise/remoting/cli/src/main/scripts/rhq-client.build.xml b/modules/enterprise/remoting/cli/src/main/scripts/rhq-client.build.xml
index 1836e9f..a752037 100644
--- a/modules/enterprise/remoting/cli/src/main/scripts/rhq-client.build.xml
+++ b/modules/enterprise/remoting/cli/src/main/scripts/rhq-client.build.xml
@@ -26,7 +26,7 @@
<target name="prepare-bin-dir">
<echo>*** Populating bin scripts...</echo>
<copy verbose="true" toDir="${bin.home}">
- <fileset dir="${basedir}/src/etc/" includes="rhq-cli*.*" />
+ <fileset dir="${basedir}/target/etc/" includes="rhq-cli*.*" />
</copy>
<chmod dir="${bin.home}" perm="ug+rx" includes="*.sh" />
</target>
commit a2d1d54d12433edf375134a1aa2c36581edda636
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Thu Dec 12 13:43:56 2013 +0100
Removing old WS client files from CLI codebase
diff --git a/modules/enterprise/remoting/cli/src/etc/Remoting_Setup.txt b/modules/enterprise/remoting/cli/src/etc/Remoting_Setup.txt
deleted file mode 100644
index 10bf3dc..0000000
--- a/modules/enterprise/remoting/cli/src/etc/Remoting_Setup.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-# Steps to build and run Remoting CLI:
-
-i) Checkout RHQ
-
-ii) Enable [rhq_source]/modules/enterprise/client/src/main/java as a java source directory for your ide. For eclipse users, 'use as source folder'
-
-iii) Build RHQ from [rhq_source] and enable the Webservice endpoints by passing in the following additional parameter at build time:
- -Drhq.server.enable.ws
-
-iv) Run rhq as normal and after startup, verify that your webservices are deployed at http://[server]:7080/jbossws/services
-
-v) Until we figure out how to correctly fit this client side portion into the maven build, or even if, the following will need to be done in your IDE/Dev environment to get the client side JAXB generated types to run the following steps successfully. Jay is tasked with Maven-izing it.
- a) Open up a shell and navigate to [rhq_source]/modules/enterprise/client/src/ and run generate-jaxb-client-types.sh/bat script to generate all JAXB types to ./output directory.
- b) Add ./output directory to the top of your classpath setup in your IDE.
- c) Add the XStream 1.2.2 library from your maven repository to the classpath for your project as well.
- d) Download JLine 0.9.94 library and add it to the classpath for your project as well.
-
-vi) Run the test suite (currently incomplete and we'll be enhancing it as we move forward) by:
- a)Log into the RHQ GUI client and create a new WS test user, u:ws-test p:ws-test and the "Super User" Role.
- b)You should be able to startup XMLClientMainTest.java from you IDE and run it as a junit test.
-
-
-Notes:
--i) Take extra care that the classes that you are using for the exposed SLSBs are coming out of the 'org.rhq.enterprise.server.ws' package only. Any components that are using types NOT from these client side JAXB elements is using server side types which we do NOT want to do. We need to continue to operate as a pure JAXB client so that we most closely mimic the operating environment for all WS* clients.
-
-ii) Sometimes it is helpful when debugging the webservice interface to see what the client side or server side type actually looks like as XML. XStream, while inefficient for serializing arbitrary java object trees, is much less picky about serializing these object trees so you can get a quick picture of a given object. JAXB typically will not serialize unless you do some extra coding.
-
-
-iii) After jaxb type generation may need to:
-
- A)
-Navigate to org.rhq.enterprise.server.ws.ContentManagerRemote.getPackageTypes and change
-
-throws ResourceTypeNotFoundException_Exception
- to
-throws ResourceTypeNotFoundException
-
- B) Navigate to and change
-public class ResourceTypeNotFoundException {
- to
-public class ResourceTypeNotFoundException extends Throwable {
-
- C) Delete the ResourceTypeNotFoundException_Exception class.
diff --git a/modules/enterprise/remoting/cli/src/etc/build.xml b/modules/enterprise/remoting/cli/src/etc/build.xml
deleted file mode 100644
index 6aa91c1..0000000
--- a/modules/enterprise/remoting/cli/src/etc/build.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<project name="RHQ Remoting" basedir="." default="jar">
-
- <!--location that JAXB remote ws types are compiled to -->
- <property name="rhq-jaxb-types-location"
- location="${basedir}/output"/>
-
- <!--location that RHQ client classes are compiled to -->
- <property name="rhq-remote-classes"
- location="${basedir}/bin"/>
-
- <!--location for JLine dependency -->
- <property name="jline-jar"
- location="C:/installers/Jline/jline-0.9.94/jline-0.9.94.jar"/>
-
- <!-- -->
- <property name="repo" location="C:/Documents and Settings/Simeon/.m2/repository"/>
-
- <!--location for Gnu-Getopt dependency -->
- <property name="gnu-jar"
- location="${repo}/gnu-getopt/getopt/1.0.13/getopt-1.0.13.jar"/>
-
- <!--location for Gnu-Getopt dependency -->
- <property name="i18-jar"
- location="${repo}/i18nlog/i18nlog/1.0.10/i18nlog-1.0.10.jar"/>
-
- <property name="runLocation" value="${basedir}/run"/>
-
- <path id="project.class.path">
- <pathelement location="${runLocation}/getopt-1.0.13.jar"/>
- <pathelement location="${runLocation}/remoting.jar"/>
- <pathelement location="${runLocation}/jline-0.9.94.jar"/>
- <pathelement location="${runLocation}/i18nlog-1.0.10.jar"/>
-<!-- <pathelement path="${java.class.path}/"/>
- <pathelement path="${additional.path}"/> -->
- </path>
-
-
- <!--This target bundles up the remoting elements as an
- executable jar
- -->
- <target name="jar" description="Make executable jar">
- <delete file="${runLocation}/remoting.jar"/>
- <jar destfile="${runLocation}/remoting.jar"
- basedir="${rhq-remote-classes}"
- includes="org/rhq/**"
- excludes="**/WsFindGroupsCommand.class"
- />
-
- <!-- Copy all necessary jars to that location too -->
- <copy tofile="${runLocation}/jline-0.9.94.jar" file="${jline-jar}"/>
- <copy tofile="${runLocation}/getopt-1.0.13.jar" file="${gnu-jar}"/>
- <copy tofile="${runLocation}/i18nlog-1.0.10.jar" file="${i18-jar}"/>
- <copy tofile="${runLocation}/toRun.txt" file="${basedir}/toRun.txt"/>
-<!-- <copy todir="${runLocation}">
- <fileset dir="src_dir" excludes="**/*.java"/>
- </copy> -->
-
- </target>
-
- <target name="zip" depends="jar">
- <delete file="${runLocation}/bundle.zip"/>
- <zip destfile="${runLocation}/bundle.zip"
- basedir="${runLocation}"
- />
- </target>
-
- <target name="run">
- <java classname="org.rhq.enterprise.client.ClientMain">
- <!-- <arg value="-h"/> -->
- <classpath refid="project.class.path">
- <!-- <pathelement refid="project.class.path"/>
- <pathelement path="${java.class.path}"/> -->
-
- </classpath>
- </java>
-
-
- </target>
-
-</project>
diff --git a/modules/enterprise/remoting/cli/src/etc/generate-jaxb-client-types.bat b/modules/enterprise/remoting/cli/src/etc/generate-jaxb-client-types.bat
deleted file mode 100644
index 68e8706..0000000
--- a/modules/enterprise/remoting/cli/src/etc/generate-jaxb-client-types.bat
+++ /dev/null
@@ -1,16 +0,0 @@
-rem This script should consume all the wsdls and compile the JAXB types all
-rem into one directory.
-
-call ../../../../dev-container/jbossas/bin/wsconsume.bat -k http://127.0.0.1:7080/rhq-rhq-server/RoleManagerBean?wsdl -p org.rhq.enterprise.server.ws
-
-call ../../../../dev-container/jbossas/bin/wsconsume.bat -k http://127.0.0.1:7080/rhq-rhq-server/ContentManagerBean?wsdl -p org.rhq.enterprise.server.ws
-
-call ../../../../dev-container/jbossas/bin/wsconsume.bat -k http://127.0.0.1:7080/rhq-rhq-server/SubjectManagerBean?wsdl -p org.rhq.enterprise.server.ws
-
-call ../../../../dev-container/jbossas/bin/wsconsume.bat -k http://127.0.0.1:7080/rhq-rhq-server/OperationManagerBean?wsdl -p org.rhq.enterprise.server.ws
-
-call ../../../../dev-container/jbossas/bin/wsconsume.bat -k http://127.0.0.1:7080/rhq-rhq-server/RepoManagerBean?wsdl -p org.rhq.enterprise.server.ws
-
-call ../../../../dev-container/jbossas/bin/wsconsume.bat -k http://127.0.0.1:7080/rhq-rhq-server/ConfigurationManagerBean?wsdl -p org.rhq.enterprise.server.ws
-
-call ../../../../dev-container/jbossas/bin/wsconsume.bat -k http://127.0.0.1:7080/rhq-rhq-server/ResourceManagerBean?wsdl -p org.rhq.enterprise.server.ws
\ No newline at end of file
diff --git a/modules/enterprise/remoting/cli/src/etc/generate-jaxb-client-types.sh b/modules/enterprise/remoting/cli/src/etc/generate-jaxb-client-types.sh
deleted file mode 100644
index f83293b..0000000
--- a/modules/enterprise/remoting/cli/src/etc/generate-jaxb-client-types.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-# This script should consume all the wsdls and compile the JAXB types all
-# into one directory.
-
-../../../../dev-container/jbossas/bin/wsconsume.sh -k http://localhost:7080/rhq-rhq-server/RoleManagerBean?wsdl -p org.rhq.enterprise.server.ws
-
-../../../../dev-container/jbossas/bin/wsconsume.sh -k http://localhost:7080/rhq-rhq-server/ContentManagerBean?wsdl -p org.rhq.enterprise.server.ws
-
-../../../../dev-container/jbossas/bin/wsconsume.sh -k http://localhost:7080/rhq-rhq-server/SubjectManagerBean?wsdl -p org.rhq.enterprise.server.ws
-
-../../../../dev-container/jbossas/bin/wsconsume.sh -k http://localhost:7080/rhq-rhq-server/OperationManagerBean?wsdl -p org.rhq.enterprise.server.ws
-
-../../../../dev-container/jbossas/bin/wsconsume.sh -k http://localhost:7080/rhq-rhq-server/RepoManagerBean?wsdl -p org.rhq.enterprise.server.ws
-
-../../../../dev-container/jbossas/bin/wsconsume.sh -k http://localhost:7080/rhq-rhq-server/ConfigurationManagerBean?wsdl -p org.rhq.enterprise.server.ws
-
-../../../../dev-container/jbossas/bin/wsconsume.sh -k http://localhost:7080/rhq-rhq-server/ResourceManagerBean?wsdl -p org.rhq.enterprise.server.ws
\ No newline at end of file
diff --git a/modules/enterprise/remoting/cli/src/etc/toRun.txt b/modules/enterprise/remoting/cli/src/etc/toRun.txt
deleted file mode 100644
index a86a75b..0000000
--- a/modules/enterprise/remoting/cli/src/etc/toRun.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-java -cp getopt-1.0.13.jar:remoting.jar:jline-0.9.94.jar:i18nlog-1.0.9.jar org.rhq.enterprise.client.ClientMain
-
-java -cp getopt-1.0.13.jar;remoting.jar;jline-0.9.94.jar;i18nlog-1.0.9.jar org.rhq.enterprise.client.ClientMain
\ No newline at end of file
10 years, 5 months
[rhq] Branch 'refs/tags/RHQ_4_9_0_JON320GA' - modules/enterprise
by Simeon Pinder
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit 734bd56667d7619fd69810eecde4957866f3e939
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.
(cherry picked from commit 60d6b811fd4e2d56f2f591dbc77d4d592fdfab5b)
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");
10 years, 5 months
[rhq] Branch 'rc/jon3.2.0.GA' - modules/enterprise
by Simeon Pinder
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit 734bd56667d7619fd69810eecde4957866f3e939
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.
(cherry picked from commit 60d6b811fd4e2d56f2f591dbc77d4d592fdfab5b)
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");
10 years, 5 months
[rhq] Branch 'release/jon3.2.x' - modules/enterprise
by Jiri Kremser
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit 734da85cf753c74045ea91c27713ceccefe1a005
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.
(cherry picked from commit 60d6b811fd4e2d56f2f591dbc77d4d592fdfab5b)
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");
10 years, 5 months
[rhq] modules/enterprise
by Jiri Kremser
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/resource/ResourceManagerBean.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit 96ca727641fe3809665d9ad8acad7c006f6cea2d
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");
10 years, 5 months
[rhq] modules/enterprise
by John Sanda
modules/enterprise/remoting/cli/src/main/samples/modules/rhq.storage.sizing.js | 117 +++++++++-
1 file changed, 114 insertions(+), 3 deletions(-)
New commits:
commit ed941d7573d2d3c5ae63a11c53ecaa2d990ca65a
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
10 years, 5 months