modules/enterprise/server/container/src/main/scripts/rhq-container.build.xml
| 12 ++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
| 51 --------
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftUtil.java
| 59 ++++++++++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerBean.java
| 20 ++-
4 files changed, 87 insertions(+), 55 deletions(-)
New commits:
commit abab0d45276feec10db95c4202b2f0ba4f61acb0
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Nov 28 12:03:06 2011 -0500
[BZ 757758] make property name/values consistent with other server properties
diff --git a/modules/enterprise/server/container/src/main/scripts/rhq-container.build.xml
b/modules/enterprise/server/container/src/main/scripts/rhq-container.build.xml
index cbd4157..24fde89 100644
--- a/modules/enterprise/server/container/src/main/scripts/rhq-container.build.xml
+++ b/modules/enterprise/server/container/src/main/scripts/rhq-container.build.xml
@@ -22,7 +22,7 @@
<property name="rhq.sync.endpoint-address" value="false"/>
- <property name="default.rhq.server.drift.binary.content"
value="0"/>
+ <property name="default.rhq.server.drift.binary.content"
value="false"/>
<target name="set-predeploy-prop">
<condition property="predeploy" value="true">
@@ -48,6 +48,7 @@
<property name="rhq.server.quartz.driverDelegateClass"
value="${rhq.dev.quartz.driverDelegateClass}" />
<property name="rhq.server.quartz.selectWithLockSQL"
value="${rhq.dev.quartz.selectWithLockSQL}" />
<property name="rhq.server.quartz.lockHandlerClass"
value="${rhq.dev.quartz.lockHandlerClass}" />
+ <property name="rhq.server.drift.store-binary-content"
value="${default.rhq.server.drift.binary.content}"/>
</target>
<target name="set-default-server-props" unless="predeploy">
@@ -65,6 +66,7 @@
<property name="rhq.server.quartz.driverDelegateClass"
value="${default.rhq.server.quartz.driverDelegateClass}" />
<property name="rhq.server.quartz.selectWithLockSQL"
value="${default.rhq.server.quartz.selectWithLockSQL}" />
<property name="rhq.server.quartz.lockHandlerClass"
value="${default.rhq.server.quartz.lockHandlerClass}" />
+ <property name="rhq.server.drift.store-binary-content"
value="${default.rhq.server.drift.binary.content}"/>
</target>
<target name="initialize" depends="set-predeploy-prop,
set-dev-server-props, set-default-server-props">
@@ -604,12 +606,13 @@
rhq.server.plugin-scan-period-ms=${rhq.server.plugin-scan-period-ms}
# you have to deal with IP address changes.
rhq.sync.endpoint-address=false
-# Enabling this property has two effects. First, it will cause the server to
-# request that agents send binary content for files being monitored for drift.
-# Secondly, the server will persist that binary content. The property is
-# enabled when it is to set a value of 1. Any other value will cause this
-# feature to be disabled.
-# default.rhq.server.drift.binary.content=0
+# When this is enabled, the server will request that agents send content for
+# for binary files that are being monitored for drift. The content for those
+# files will then be persisted on the server. By default, the server does not
+# persist content for well known binary file types like .ear, .war, .zip, .so,
+# etc. The server does however persist content for text files or any other
+# files that are not known binary types.
+# rhq.server.drift.store-binary-content=${rhq.server.drift.store-binary-content}
# Auto-Install Pre-Configuration Settings
# If you wish to circumvent the installer webapp and auto-install the server
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerBean.java
index ddcdace..6633c22 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerBean.java
@@ -306,6 +306,7 @@ public class JPADriftServerBean implements JPADriftServerLocal {
throws Exception {
final Resource resource = getResource(resourceId);
final DriftChangeSetSummary summary = new DriftChangeSetSummary();
+ final boolean storeBinaryContent = isBinaryContentStorageEnabled();
try {
ZipUtil.walkZipFile(changeSetZip, new ChangeSetFileVisitor() {
@@ -346,8 +347,7 @@ public class JPADriftServerBean implements JPADriftServerLocal {
if (version > 0) {
for (FileEntry entry : reader) {
- boolean addToList =
- isBinaryContentStorageEnabled() ||
!DriftUtil.isBinaryFile(entry.getFile());
+ boolean addToList = storeBinaryContent ||
!DriftUtil.isBinaryFile(entry.getFile());
JPADriftFile oldDriftFile =
getDriftFile(entry.getOldSHA(), emptyDriftFiles, addToList);
JPADriftFile newDriftFile =
getDriftFile(entry.getNewSHA(), emptyDriftFiles, addToList);
@@ -375,8 +375,7 @@ public class JPADriftServerBean implements JPADriftServerLocal {
summary.setInitialChangeSet(true);
JPADriftSet driftSet = new JPADriftSet();
for (FileEntry entry : reader) {
- boolean addToList =
- isBinaryContentStorageEnabled() ||
!DriftUtil.isBinaryFile(entry.getFile());
+ boolean addToList = storeBinaryContent ||
!DriftUtil.isBinaryFile(entry.getFile());
JPADriftFile newDriftFile =
getDriftFile(entry.getNewSHA(), emptyDriftFiles, addToList);
String path = FileUtil.useForwardSlash(entry.getFile());
// A Drift always has a changeSet. Note that in this code
section the changeset is
@@ -435,8 +434,8 @@ public class JPADriftServerBean implements JPADriftServerLocal {
}
private boolean isBinaryContentStorageEnabled() {
- String binaryContent =
System.getProperty("default.rhq.server.drift.binary.content", "0");
- return binaryContent.equals("1");
+ String binaryContent =
System.getProperty("rhq.server.drift.store-binary-content", "false");
+ return binaryContent.equals("true");
}
private JPADriftFile getDriftFile(String sha256, List<JPADriftFile>
emptyDriftFiles, boolean addToList) {
commit 516425f11a2c706f0a7a564bcdb107f3f3d3a467
Author: John Sanda <jsanda(a)redhat.com>
Date: Mon Nov 28 11:08:19 2011 -0500
[BZ 757758] Adding logic to filter out binary content
By default, the server will not store content for binary files that are
being monitored for drift. It can be enabled by setting the system
property default.rhq.server.drift.binary.content to a value of 1. The
property can be set in rhq-server.properties.
diff --git a/modules/enterprise/server/container/src/main/scripts/rhq-container.build.xml
b/modules/enterprise/server/container/src/main/scripts/rhq-container.build.xml
index d5f3e51..cbd4157 100644
--- a/modules/enterprise/server/container/src/main/scripts/rhq-container.build.xml
+++ b/modules/enterprise/server/container/src/main/scripts/rhq-container.build.xml
@@ -22,6 +22,8 @@
<property name="rhq.sync.endpoint-address" value="false"/>
+ <property name="default.rhq.server.drift.binary.content"
value="0"/>
+
<target name="set-predeploy-prop">
<condition property="predeploy" value="true">
<or>
@@ -602,6 +604,13 @@ rhq.server.plugin-scan-period-ms=${rhq.server.plugin-scan-period-ms}
# you have to deal with IP address changes.
rhq.sync.endpoint-address=false
+# Enabling this property has two effects. First, it will cause the server to
+# request that agents send binary content for files being monitored for drift.
+# Secondly, the server will persist that binary content. The property is
+# enabled when it is to set a value of 1. Any other value will cause this
+# feature to be disabled.
+# default.rhq.server.drift.binary.content=0
+
# Auto-Install Pre-Configuration Settings
# If you wish to circumvent the installer webapp and auto-install the server
# immediately upon first startup, make sure all of the settings above are
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
index 7c1d3e1..6af05d9 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
@@ -119,48 +119,6 @@ import org.rhq.enterprise.server.util.LookupUtil;
@Stateless
public class DriftManagerBean implements DriftManagerLocal, DriftManagerRemote {
- private static Set<String> binaryFileTypes = new HashSet<String>();
-
- static {
- binaryFileTypes.add("jar");
- binaryFileTypes.add("war");
- binaryFileTypes.add("ear");
- binaryFileTypes.add("sar"); // jboss service
- binaryFileTypes.add("har"); // hibernate archive
- binaryFileTypes.add("rar"); // resource adapter
- binaryFileTypes.add("wsr"); // jboss web service archive
- binaryFileTypes.add("zip");
- binaryFileTypes.add("tar");
- binaryFileTypes.add("bz2");
- binaryFileTypes.add("gz");
- binaryFileTypes.add("rpm");
- binaryFileTypes.add("so");
- binaryFileTypes.add("dll");
- binaryFileTypes.add("exe");
- binaryFileTypes.add("jpg");
- binaryFileTypes.add("png");
- binaryFileTypes.add("jpeg");
- binaryFileTypes.add("gif");
- binaryFileTypes.add("pdf");
- binaryFileTypes.add("swf");
- binaryFileTypes.add("bpm");
- binaryFileTypes.add("tiff");
- binaryFileTypes.add("svg");
- binaryFileTypes.add("doc");
- binaryFileTypes.add("mp3");
- binaryFileTypes.add("wav");
- binaryFileTypes.add("m4a");
- binaryFileTypes.add("mov");
- binaryFileTypes.add("mpeg");
- binaryFileTypes.add("avi");
- binaryFileTypes.add("mp4");
- binaryFileTypes.add("wmv");
- binaryFileTypes.add("deb");
- binaryFileTypes.add("sit");
- binaryFileTypes.add("iso");
- binaryFileTypes.add("dmg");
- }
-
// TODO Should security checks be handled here instead of delegating to the drift
plugin?
// Currently any security checks that need to be performed are delegated to the
plugin.
// This is fine *so far* since the only plugin is the default which is our existing
SLSB
@@ -869,14 +827,7 @@ public class DriftManagerBean implements DriftManagerLocal,
DriftManagerRemote {
@Override
public boolean isBinaryFile(Subject subject, Drift<?, ?> drift) {
- String path = drift.getPath();
- int index = path.lastIndexOf('.');
-
- if (index == -1 || index == path.length() - 1) {
- return false;
- }
-
- return binaryFileTypes.contains(path.substring(index + 1, path.length()));
+ return DriftUtil.isBinaryFile(drift);
}
@Override
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftUtil.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftUtil.java
index 16cb479..34a3c69 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftUtil.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftUtil.java
@@ -21,9 +21,12 @@ package org.rhq.enterprise.server.drift;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.HashSet;
+import java.util.Set;
import org.apache.commons.logging.LogFactory;
+import org.rhq.core.domain.drift.Drift;
import org.rhq.enterprise.communications.ServiceContainer;
import org.rhq.enterprise.communications.command.client.ClientCommandSender;
import
org.rhq.enterprise.communications.command.client.ClientCommandSenderConfiguration;
@@ -36,6 +39,62 @@ import
org.rhq.enterprise.server.core.comm.ServerCommunicationsServiceUtil;
*/
public class DriftUtil {
+ private static Set<String> binaryFileTypes = new HashSet<String>();
+
+ static {
+ binaryFileTypes.add("jar");
+ binaryFileTypes.add("war");
+ binaryFileTypes.add("ear");
+ binaryFileTypes.add("sar"); // jboss service
+ binaryFileTypes.add("har"); // hibernate archive
+ binaryFileTypes.add("rar"); // resource adapter
+ binaryFileTypes.add("wsr"); // jboss web service archive
+ binaryFileTypes.add("zip");
+ binaryFileTypes.add("tar");
+ binaryFileTypes.add("bz2");
+ binaryFileTypes.add("gz");
+ binaryFileTypes.add("rpm");
+ binaryFileTypes.add("so");
+ binaryFileTypes.add("dll");
+ binaryFileTypes.add("exe");
+ binaryFileTypes.add("jpg");
+ binaryFileTypes.add("png");
+ binaryFileTypes.add("jpeg");
+ binaryFileTypes.add("gif");
+ binaryFileTypes.add("pdf");
+ binaryFileTypes.add("swf");
+ binaryFileTypes.add("bpm");
+ binaryFileTypes.add("tiff");
+ binaryFileTypes.add("svg");
+ binaryFileTypes.add("doc");
+ binaryFileTypes.add("mp3");
+ binaryFileTypes.add("wav");
+ binaryFileTypes.add("m4a");
+ binaryFileTypes.add("mov");
+ binaryFileTypes.add("mpeg");
+ binaryFileTypes.add("avi");
+ binaryFileTypes.add("mp4");
+ binaryFileTypes.add("wmv");
+ binaryFileTypes.add("deb");
+ binaryFileTypes.add("sit");
+ binaryFileTypes.add("iso");
+ binaryFileTypes.add("dmg");
+ }
+
+ static boolean isBinaryFile(Drift<?, ?> drift) {
+ return isBinaryFile(drift.getPath());
+ }
+
+ static boolean isBinaryFile(String path) {
+ int index = path.lastIndexOf('.');
+
+ if (index == -1 || index == path.length() - 1) {
+ return false;
+ }
+
+ return binaryFileTypes.contains(path.substring(index + 1, path.length()));
+ }
+
static InputStream remoteStream(InputStream stream) {
RemoteInputStream remoteStream = (RemoteInputStream) stream;
ServiceContainer serviceContainer =
ServerCommunicationsServiceUtil.getService().getServiceContainer();
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerBean.java
index 142e959..ddcdace 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerBean.java
@@ -346,8 +346,10 @@ public class JPADriftServerBean implements JPADriftServerLocal {
if (version > 0) {
for (FileEntry entry : reader) {
- JPADriftFile oldDriftFile =
getDriftFile(entry.getOldSHA(), emptyDriftFiles);
- JPADriftFile newDriftFile =
getDriftFile(entry.getNewSHA(), emptyDriftFiles);
+ boolean addToList =
+ isBinaryContentStorageEnabled() ||
!DriftUtil.isBinaryFile(entry.getFile());
+ JPADriftFile oldDriftFile =
getDriftFile(entry.getOldSHA(), emptyDriftFiles, addToList);
+ JPADriftFile newDriftFile =
getDriftFile(entry.getNewSHA(), emptyDriftFiles, addToList);
// TODO Figure out an efficient way to save coverage
change sets.
// The initial/coverage change set could contain hundreds
or even thousands
@@ -373,7 +375,9 @@ public class JPADriftServerBean implements JPADriftServerLocal {
summary.setInitialChangeSet(true);
JPADriftSet driftSet = new JPADriftSet();
for (FileEntry entry : reader) {
- JPADriftFile newDriftFile =
getDriftFile(entry.getNewSHA(), emptyDriftFiles);
+ boolean addToList =
+ isBinaryContentStorageEnabled() ||
!DriftUtil.isBinaryFile(entry.getFile());
+ JPADriftFile newDriftFile =
getDriftFile(entry.getNewSHA(), emptyDriftFiles, addToList);
String path = FileUtil.useForwardSlash(entry.getFile());
// A Drift always has a changeSet. Note that in this code
section the changeset is
// always going to be set to a DriftDefinition's
changeSet. But that is not always the
@@ -430,7 +434,12 @@ public class JPADriftServerBean implements JPADriftServerLocal {
}
}
- private JPADriftFile getDriftFile(String sha256, List<JPADriftFile>
emptyDriftFiles) {
+ private boolean isBinaryContentStorageEnabled() {
+ String binaryContent =
System.getProperty("default.rhq.server.drift.binary.content", "0");
+ return binaryContent.equals("1");
+ }
+
+ private JPADriftFile getDriftFile(String sha256, List<JPADriftFile>
emptyDriftFiles, boolean addToList) {
JPADriftFile result = null;
if (null == sha256 || "0".equals(sha256)) {
@@ -441,7 +450,9 @@ public class JPADriftServerBean implements JPADriftServerLocal {
// if the JPADriftFile is not yet in the db, then it needs to be fetched from the
agent
if (null == result) {
result = persistDriftFile(new JPADriftFile(sha256));
- emptyDriftFiles.add(result);
+ if (addToList) {
+ emptyDriftFiles.add(result);
+ }
}
return result;