modules/core/client-api/src/main/java/org/rhq/core/clientapi/server/drift/DriftServerService.java | 2 modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftClient.java | 5 + modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftDetectionSummary.java | 10 +++ modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftDetector.java | 30 ++++++++- modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java | 10 +++ modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftClientTestStub.java | 11 +++ modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java | 19 ++--- modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftManagerTest.java | 5 + modules/enterprise/server/jar/pom.xml | 13 ++++ modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java | 32 +++++----- modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerLocal.java | 3 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftServerServiceImpl.java | 31 +++++++++ modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerBean.java | 1 modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/drift/DriftChangeSetSummary.java | 9 ++ 14 files changed, 152 insertions(+), 29 deletions(-)
New commits: commit efcd91eb5e853e3aaf21d45bf92a966bb460c34d Author: John Sanda jsanda@redhat.com Date: Mon Nov 7 14:25:31 2011 -0500
[BZ 7517474] Incorporate missing base directory into compliance
The definition of compliance is expanded to include definitions that have a non-existent base directory. If the base directory is later created, then the definition will go back into compliance.
diff --git a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/server/drift/DriftServerService.java b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/server/drift/DriftServerService.java index ce5ca70..a6df831 100644 --- a/modules/core/client-api/src/main/java/org/rhq/core/clientapi/server/drift/DriftServerService.java +++ b/modules/core/client-api/src/main/java/org/rhq/core/clientapi/server/drift/DriftServerService.java @@ -25,6 +25,7 @@ import java.util.Map; import java.util.Set;
import org.rhq.core.communications.command.annotation.Asynchronous; +import org.rhq.core.domain.drift.DriftComplianceStatus; import org.rhq.core.domain.drift.DriftDefinition; import org.rhq.core.domain.drift.DriftSnapshot;
@@ -126,4 +127,5 @@ public interface DriftServerService {
DriftSnapshot getSnapshot(int driftDefinitionId, int startVersion, int endVersion);
+ void updateCompliance(int resourceId, String drfitDefName, DriftComplianceStatus complianceStatus); } diff --git a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftClient.java b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftClient.java index 36f473d..1649819 100644 --- a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftClient.java +++ b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftClient.java @@ -7,6 +7,9 @@ import org.rhq.core.domain.drift.DriftDefinition; /** * This is a client interface to the server that drift-related tasks call to interact with * the server. + * <br/><br/> + * The primary reason classes use DriftClient instead of DriftManager directly is to + * facilitate testing with stubs or mocks. */ public interface DriftClient {
@@ -27,4 +30,6 @@ public interface DriftClient {
File getAbsoluteBaseDirectory(int resourceId, DriftDefinition driftDefinition);
+ void reportMissingBaseDir(int resourceId, DriftDefinition driftDefinition); + } diff --git a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftDetectionSummary.java b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftDetectionSummary.java index 664eec3..811f11e 100644 --- a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftDetectionSummary.java +++ b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftDetectionSummary.java @@ -37,6 +37,8 @@ public class DriftDetectionSummary {
private boolean repeat;
+ private boolean baseDirExists = true; + private int version;
public DriftDetectionSchedule getSchedule() { @@ -95,4 +97,12 @@ public class DriftDetectionSummary { this.version = version; }
+ public boolean isBaseDirExists() { + return baseDirExists; + } + + public void setBaseDirExists(boolean exists) { + baseDirExists = exists; + } + } diff --git a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftDetector.java b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftDetector.java index 95f0090..79b40af 100644 --- a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftDetector.java +++ b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftDetector.java @@ -117,7 +117,9 @@ public class DriftDetector implements Runnable { generateSnapshot(detectionSummary); }
- if (detectionSummary.isRepeat()) { + if (!detectionSummary.isBaseDirExists()) { + driftClient.reportMissingBaseDir(schedule.getResourceId(), schedule.getDriftDefinition()); + } else if (detectionSummary.isRepeat()) { driftClient.repeatChangeSet(schedule.getResourceId(), schedule.getDriftDefinition().getName(), detectionSummary.getVersion()); } else if (changesNeedToBeReported(detectionSummary)) { @@ -268,7 +270,8 @@ public class DriftDetector implements Runnable { // the current snapshot to match the pinned snapshot. Note though // that we increment the snapshot version in order to let the server // know about the state change. - if (schedule.getDriftDefinition().isPinned() && newVersion > 1) { + if (schedule.getDriftDefinition().isPinned() && newVersion > 1 && !isPreviousChangeSetEmpty( + schedule.getResourceId(), schedule.getDriftDefinition())) { currentSnapshot.delete(); File newSnapshot = updateCurrentSnapshot(schedule, snapshotEntries, newVersion);
@@ -278,6 +281,9 @@ public class DriftDetector implements Runnable { } else { if (schedule.getDriftDefinition().isPinned() && newVersion > 1 && isSameAsPreviousChangeSet(deltaEntries, currentSnapshot)) { + // if we are still out of compliance just report, we report a + // repeat change set to indicate no changes but also still out + // of compliance. summary.setVersion(newVersion - 1); summary.setRepeat(true); return; @@ -290,6 +296,23 @@ public class DriftDetector implements Runnable { } }
+ private boolean isPreviousChangeSetEmpty(int resourceId, DriftDefinition definition) throws IOException { + File changeSet = changeSetMgr.findChangeSet(resourceId, definition.getName(), DRIFT); + if (!changeSet.exists()) { + return true; + } + ChangeSetReader reader = changeSetMgr.getChangeSetReader(changeSet); + boolean isEmpty = true; + + for (FileEntry entry : reader) { + isEmpty = false; + break; + } + reader.close(); + + return isEmpty; + } + private void updateDeltaSnapshot(DriftDetectionSummary summary, DriftDetectionSchedule schedule, List<FileEntry> deltaEntries, int newVersion, File oldSnapshot, File newSnapshot) throws IOException { @@ -380,6 +403,8 @@ public class DriftDetector implements Runnable { "exist. You may want review the drift definition and verify that the value of the base " + "directory is in fact correct."); } + summary.setBaseDirExists(false); + return; }
log.debug("Generating coverage change set for " + schedule); @@ -389,7 +414,6 @@ public class DriftDetector implements Runnable { final ChangeSetWriter writer = changeSetMgr.getChangeSetWriter(snapshot, createHeaders(schedule, COVERAGE, 0));
if (basedir.isDirectory()) { - forEachFile(basedir, new FilterFileVisitor(basedir, driftDef.getIncludes(), driftDef.getExcludes(), new FileVisitor() { @Override diff --git a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java index 7c4accf..be1d1a2 100644 --- a/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java +++ b/modules/core/plugin-container/src/main/java/org/rhq/core/pc/drift/DriftManager.java @@ -24,6 +24,7 @@ import static org.rhq.common.drift.FileEntry.changedFileEntry; import static org.rhq.common.drift.FileEntry.removedFileEntry; import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE; import static org.rhq.core.domain.drift.DriftChangeSetCategory.DRIFT; +import static org.rhq.core.domain.drift.DriftComplianceStatus.OUT_OF_COMPLIANCE_NO_BASEDIR;
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; @@ -552,6 +553,15 @@ public class DriftManager extends AgentService implements DriftAgentService, Dri }
@Override + public void reportMissingBaseDir(int resourceId, DriftDefinition driftDefinition) { + if (log.isDebugEnabled()) { + log.debug("Reporting to server missing base directory for " + toString(resourceId, driftDefinition)); + } + DriftServerService driftServer = pluginContainerConfiguration.getServerServices().getDriftServerService(); + driftServer.updateCompliance(resourceId, driftDefinition.getName(), OUT_OF_COMPLIANCE_NO_BASEDIR); + } + + @Override public void pinSnapshot(final int resourceId, final String defName, final DriftSnapshot snapshot) { // When we pin a snapshot for an existing drift definition, we reset. We delete the // detection schedule and create a new schedule. We reset because the pinned diff --git a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftClientTestStub.java b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftClientTestStub.java index a29f560..209ba61 100644 --- a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftClientTestStub.java +++ b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftClientTestStub.java @@ -12,6 +12,8 @@ class DriftClientTestStub implements DriftClient {
private int sendChangeSetInvocationCount;
+ private int reportMissingBaseDirInvocationCount; + @Override public void sendChangeSetToServer(DriftDetectionSummary detectionSummary) { ++sendChangeSetInvocationCount; @@ -37,6 +39,15 @@ class DriftClientTestStub implements DriftClient { return basedir; }
+ @Override + public void reportMissingBaseDir(int resourceId, DriftDefinition driftDefinition) { + ++reportMissingBaseDirInvocationCount; + } + + public int getReportMissingBaseDirInvocationCount() { + return reportMissingBaseDirInvocationCount; + } + public void setBaseDir(File basedir) { this.basedir = basedir; } diff --git a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java index c5cefdd..4a2b333 100644 --- a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java +++ b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftDetectorTest.java @@ -228,7 +228,7 @@ public class DriftDetectorTest extends DriftTest { }
@Test - public void reportEmptyChangeSetWhenBaseDirDoesNotExist() throws Exception { + public void reportMissingBaseDirWhenNoInitialSnapshotExists() throws Exception { final File basedir = new File(resourceDir, "conf"); DriftDefinition def = driftDefinition("basedir-does-not-exist", basedir.getAbsolutePath());
@@ -237,18 +237,15 @@ public class DriftDetectorTest extends DriftTest { scheduleQueue.addSchedule(new DriftDetectionSchedule(resourceId(), def)); detector.run();
- assertEquals(driftClient.getSendChangeSetInvocationCount(), 1, "DriftClient should be invoked to send " + - "initial change set to server even when the base directory does not exist."); + assertEquals(driftClient.getReportMissingBaseDirInvocationCount(), 1, "A missing base directory should be " + + "reported to the server if no initial snapshot has already been generated."); + assertEquals(driftClient.getSendChangeSetInvocationCount(), 0, "No initial change set should be sent to " + + "the server if the base directory does not exist.");
- // verify that the initial change set was generated + // verify that the initial change set was not generated File snapshot = changeSet(def.getName(), COVERAGE); - List<FileEntry> fileEntries = emptyList(); - - Headers headers = createHeaders(def, COVERAGE); - headers.setBasedir(basedir.getAbsolutePath()); - assertHeaderEquals(snapshot, headers); - assertFileEntriesMatch("There should be no file entries when the base directory does not exist", fileEntries, - snapshot); + assertFalse(snapshot.exists(), "An initial snapshot should not be written to disk if the base directory " + + "does not exist."); }
@SuppressWarnings("unchecked") diff --git a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftManagerTest.java b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftManagerTest.java index be3a52c..518e8e4 100644 --- a/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftManagerTest.java +++ b/modules/core/plugin-container/src/test/java/org/rhq/core/pc/drift/DriftManagerTest.java @@ -43,6 +43,7 @@ import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test;
import org.rhq.core.clientapi.server.drift.DriftServerService; +import org.rhq.core.domain.drift.DriftComplianceStatus; import org.rhq.core.domain.drift.DriftDefinition; import org.rhq.core.domain.drift.DriftSnapshot; import org.rhq.core.domain.resource.Resource; @@ -409,6 +410,10 @@ public class DriftManagerTest extends DriftTest { public DriftSnapshot getSnapshot(int driftDefinitionId, int startVersion, int endVersion) { return null; } + + @Override + public void updateCompliance(int resourceId, String drfitDefName, DriftComplianceStatus complianceStatus) { + } }
/** diff --git a/modules/enterprise/server/jar/pom.xml b/modules/enterprise/server/jar/pom.xml index 7206726..f292a86 100644 --- a/modules/enterprise/server/jar/pom.xml +++ b/modules/enterprise/server/jar/pom.xml @@ -536,6 +536,19 @@ </plugin>
<plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>test-jar</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> <artifactId>maven-antrun-plugin</artifactId> <executions>
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 bb67fa8..b917e14 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 @@ -22,8 +22,8 @@ import static java.util.Arrays.asList; import static javax.ejb.TransactionAttributeType.NOT_SUPPORTED; import static javax.ejb.TransactionAttributeType.REQUIRES_NEW; import static org.rhq.core.domain.drift.DriftChangeSetCategory.COVERAGE; -import static org.rhq.core.domain.drift.DriftComplianceStatus.OUT_OF_COMPLIANCE_DRIFT; import static org.rhq.core.domain.drift.DriftComplianceStatus.IN_COMPLIANCE; +import static org.rhq.core.domain.drift.DriftComplianceStatus.OUT_OF_COMPLIANCE_DRIFT;
import java.io.File; import java.io.InputStream; @@ -536,28 +536,32 @@ public class DriftManagerBean implements DriftManagerLocal, DriftManagerRemote { log.warn("Could not find drift definition for [resourceId: " + resourceId + ", driftDefinitionName: " + summary.getDriftDefinitionName() + "]. Will not be able check compliance for thiis drift definition"); } else { - updateCompliance(definitions.get(0), summary); + updateCompliance(subject, definitions.get(0), summary); }
return summary; }
- private void updateCompliance(DriftDefinition definition, DriftChangeSetSummary changeSetSummary) { - if (!definition.isPinned()) { - return; - } - + private void updateCompliance(Subject subject, DriftDefinition definition, DriftChangeSetSummary changeSetSummary) { boolean updateNeeded = false; - if (changeSetSummary.getDriftPathnames().isEmpty()) { + + if (changeSetSummary.isInitialChangeSet()) { updateNeeded = definition.getComplianceStatus() != IN_COMPLIANCE; definition.setComplianceStatus(IN_COMPLIANCE); - } else { - updateNeeded = definition.getComplianceStatus() == IN_COMPLIANCE; - definition.setComplianceStatus(OUT_OF_COMPLIANCE_DRIFT); + } + + if (definition.isPinned()) { + if (changeSetSummary.getDriftPathnames().isEmpty()) { + updateNeeded = definition.getComplianceStatus() != IN_COMPLIANCE; + definition.setComplianceStatus(IN_COMPLIANCE); + } else { + updateNeeded = definition.getComplianceStatus() == IN_COMPLIANCE; + definition.setComplianceStatus(OUT_OF_COMPLIANCE_DRIFT); + } }
if (updateNeeded) { - updateDriftDefinition(definition); + updateDriftDefinition(subject, definition); } }
@@ -596,7 +600,7 @@ public class DriftManagerBean implements DriftManagerLocal, DriftManagerRemote { public void pinSnapshot(Subject subject, int driftDefId, int snapshotVersion) { DriftDefinition driftDef = driftManager.getDriftDefinition(subject, driftDefId); driftDef.setPinned(true); - driftManager.updateDriftDefinition(driftDef); + driftManager.updateDriftDefinition(subject, driftDef);
DriftSnapshotRequest snapshotRequest = new DriftSnapshotRequest(driftDefId, snapshotVersion); DriftSnapshot snapshot = getSnapshot(subject, snapshotRequest); @@ -725,7 +729,7 @@ public class DriftManagerBean implements DriftManagerLocal, DriftManagerRemote { }
@Override - public void updateDriftDefinition(DriftDefinition driftDefinition) { + public void updateDriftDefinition(Subject subject, DriftDefinition driftDefinition) { entityManager.merge(driftDefinition); }
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerLocal.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerLocal.java index f600d43..ac707cc 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerLocal.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerLocal.java @@ -30,6 +30,7 @@ import org.rhq.core.domain.criteria.DriftCriteria; import org.rhq.core.domain.criteria.DriftDefinitionCriteria; import org.rhq.core.domain.drift.Drift; import org.rhq.core.domain.drift.DriftChangeSet; +import org.rhq.core.domain.drift.DriftComplianceStatus; import org.rhq.core.domain.drift.DriftComposite; import org.rhq.core.domain.drift.DriftDefinition; import org.rhq.core.domain.drift.DriftDefinitionComposite; @@ -136,7 +137,7 @@ public interface DriftManagerLocal extends DriftManagerRemote {
void saveChangeSetFiles(Subject subject, File changeSetFilesZip) throws Exception;
- void updateDriftDefinition(DriftDefinition driftDefinition); + void updateDriftDefinition(Subject subject, DriftDefinition driftDefinition);
/** * Update the provided driftDef (identified by name) on the specified EntityContext. If it exists it will be replaced. If not it will diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftServerServiceImpl.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftServerServiceImpl.java index 616c949..dec9a6f 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftServerServiceImpl.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftServerServiceImpl.java @@ -29,15 +29,23 @@ import java.util.List; import java.util.Map; import java.util.Set;
+import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + import org.rhq.core.clientapi.server.drift.DriftServerService; import org.rhq.core.domain.auth.Subject; import org.rhq.core.domain.criteria.DriftDefinitionCriteria; +import org.rhq.core.domain.drift.DriftComplianceStatus; import org.rhq.core.domain.drift.DriftDefinition; import org.rhq.core.domain.drift.DriftSnapshot; import org.rhq.core.domain.drift.DriftSnapshotRequest; import org.rhq.core.domain.util.PageList; +import org.rhq.enterprise.server.auth.SubjectManagerLocal;
public class DriftServerServiceImpl implements DriftServerService { + + private Log log = LogFactory.getLog(DriftServerServiceImpl.class); + @Override public void sendChangesetZip(int resourceId, long zipSize, InputStream zipStream) { try { @@ -103,4 +111,27 @@ public class DriftServerServiceImpl implements DriftServerService { return getDriftManager().getSnapshot(overlord, new DriftSnapshotRequest(driftDefinitionId, endVersion, startVersion, null, false, true)); } + + @Override + public void updateCompliance(int resourceId, String drfitDefName, DriftComplianceStatus complianceStatus) { + DriftDefinitionCriteria criteria = new DriftDefinitionCriteria(); + criteria.addFilterResourceIds(resourceId); + criteria.addFilterName(drfitDefName); + + DriftManagerLocal driftMgr = getDriftManager(); + SubjectManagerLocal subjectMgr = getSubjectManager(); + Subject overlord = subjectMgr.getOverlord(); + + PageList<DriftDefinition> definitions = driftMgr.findDriftDefinitionsByCriteria(overlord, criteria); + + if (definitions.isEmpty()) { + log.warn("Cannot update compliance for [resourceId: " + resourceId + ", driftDefinitionName: " + + drfitDefName + "]. Could not find drift definition."); + return; + } + + DriftDefinition definition = definitions.get(0); + definition.setComplianceStatus(complianceStatus); + driftMgr.updateDriftDefinition(overlord, definition); + } } 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 882d22e..dce9398 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 @@ -369,6 +369,7 @@ public class JPADriftServerBean implements JPADriftServerLocal { } } } else { + summary.setInitialChangeSet(true); JPADriftSet driftSet = new JPADriftSet(); for (FileEntry entry : reader) { JPADriftFile newDriftFile = getDriftFile(entry.getNewSHA(), emptyDriftFiles); diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/drift/DriftChangeSetSummary.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/drift/DriftChangeSetSummary.java index 7ac2365..4868980 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/drift/DriftChangeSetSummary.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/drift/DriftChangeSetSummary.java @@ -42,6 +42,7 @@ public class DriftChangeSetSummary { private String driftDefinitionName; private DriftHandlingMode driftHandlingMode; private List<String> driftPathnames; + private boolean isInitialChangeSet;
/** * Because this summary object is used within the alert subsystem, this toString is used to display @@ -117,4 +118,12 @@ public class DriftChangeSetSummary { this.driftHandlingMode = driftHandlingMode; }
+ public boolean isInitialChangeSet() { + return isInitialChangeSet; + } + + public void setInitialChangeSet(boolean isInitialChangeSet) { + this.isInitialChangeSet = isInitialChangeSet; + } + }
rhq-commits@lists.fedorahosted.org