Examples of JPADriftChangeSet


Examples of org.rhq.core.domain.drift.JPADriftChangeSet

        // template from a snapshot of an existing resource-level drift definition.
        // We are going to take a bit of a short cut though by directly creating
        // and persisting the pinned change set.

        // first create the change set
        final JPADriftChangeSet changeSet0 = new JPADriftChangeSet(null, 0, COVERAGE, null);
        changeSet0.setDriftHandlingMode(DriftConfigurationDefinition.DriftHandlingMode.normal);

        final JPADriftFile driftFile1 = new JPADriftFile(NAME_PREFIX + "a1b2c3");
        final JPADriftFile driftFile2 = new JPADriftFile(NAME_PREFIX + "1a2b3c");

        JPADrift drift1 = new JPADrift(changeSet0, "drift.1", FILE_ADDED, null, driftFile1);
        JPADrift drift2 = new JPADrift(changeSet0, "drift.2", FILE_ADDED, null, driftFile2);

        final JPADriftSet driftSet = new JPADriftSet();
        driftSet.addDrift(drift1);
        driftSet.addDrift(drift2);

        // create the template
        final DriftDefinition templateDef = new DriftDefinition(new Configuration());
        templateDef.setName(NAME_PREFIX + "createUnpinnedDefinition");
        templateDef.setEnabled(true);
        templateDef.setDriftHandlingMode(normal);
        templateDef.setInterval(2400L);
        templateDef.setBasedir(new DriftDefinition.BaseDirectory(fileSystem, "/foo/bar/test"));
        templateDef.setPinned(true);

        final DriftDefinitionTemplate template = templateMgr.createTemplate(getOverlord(), resourceType.getId(), true,
            templateDef);

        executeInTransaction(false, new TransactionCallback() {
            @Override
            public void execute() throws Exception {
                EntityManager em = getEntityManager();

                em.persist(driftFile1);
                em.persist(driftFile2);
                em.persist(changeSet0);
                em.persist(driftSet);
                changeSet0.setInitialDriftSet(driftSet);
                em.merge(changeSet0);

                // setting the change set id on the template is the last and the
                // most important step in making the template pinned
                template.setChangeSetId(changeSet0.getId());
                em.merge(template);
            }
        });

        // Create and persist a resource-level definition.
        final DriftDefinition definition = template.createDefinition();
        definition.setTemplate(template);

        final AtomicBoolean agentInvoked = new AtomicBoolean(false);

        agentServiceContainer.driftService = new TestDefService() {
            @Override
            public void updateDriftDetection(int resourceId, DriftDefinition driftDef, DriftSnapshot snapshot) {
                try {
                    HibernateDetachUtility.nullOutUninitializedFields(driftDef,
                        HibernateDetachUtility.SerializationType.SERIALIZATION);
                    HibernateDetachUtility.nullOutUninitializedFields(snapshot,
                        HibernateDetachUtility.SerializationType.SERIALIZATION);
                    agentInvoked.set(true);
                    assertNotNull("Expected snapshot drift instances collection to be non-null",
                        snapshot.getDriftInstances());
                    assertEquals("Expected snapshot to contain two drift entries", 2, snapshot.getDriftInstances()
                        .size());
                } catch (Exception e) {
                    String msg = "Do not pass attached entites to agent since those entities are outside of "
                        + "Hibernate's control. The persistence context should be flushed and cleared to ensure that "
                        + "only detached objects are sent to the agent";
                    throw new RuntimeException(msg, e);
                }
            }
        };

        driftMgr.updateDriftDefinition(getOverlord(), EntityContext.forResource(resource.getId()), definition);

        DriftDefinition newDef = loadDefinition(definition.getName());

        // verify that the definition is marked as pinned
        assertTrue("The drift definition should be marked as pinned", newDef.isPinned());

        // verify that the initial change set is generated for the definition
        JPADriftChangeSetCriteria criteria = new JPADriftChangeSetCriteria();
        criteria.addFilterDriftDefinitionId(definition.getId());
        criteria.addFilterCategory(COVERAGE);
        criteria.fetchDrifts(true);

        PageList<? extends DriftChangeSet<?>> changeSets = driftMgr.findDriftChangeSetsByCriteria(getOverlord(),
            criteria);
        assertEquals("Expected to find one change set", 1, changeSets.size());

        JPADriftChangeSet expectedChangeSet = new JPADriftChangeSet(resource, 1, COVERAGE, null);
        List<? extends Drift> expectedDrifts = asList(new JPADrift(expectedChangeSet, drift1.getPath(), FILE_ADDED,
            null, driftFile1), new JPADrift(expectedChangeSet, drift2.getPath(), FILE_ADDED, null, driftFile2));

        DriftChangeSet<?> actualChangeSet = changeSets.get(0);
        List<? extends Drift> actualDrifts = new ArrayList(actualChangeSet.getDrifts());
View Full Code Here

Examples of org.rhq.core.domain.drift.JPADriftChangeSet

        jpaCriteria.fetchChangeSet(true);
        PageList<JPADrift> drifts = findDriftsByCriteria(subject, jpaCriteria);
        PageList<DriftComposite> result = new PageList<DriftComposite>();
        for (JPADrift drift : drifts) {
            JPADriftChangeSet changeSet = drift.getChangeSet();
            DriftDefinition driftDef = changeSet.getDriftDefinition();
            result.add(new DriftComposite(drift, changeSet.getResource(), driftDef.getName()));
        }

        return result;
    }
View Full Code Here

Examples of org.rhq.core.domain.drift.JPADriftChangeSet

        return result;
    }

    @Override
    public String persistChangeSet(Subject subject, DriftChangeSet<?> changeSet) {
        JPADriftChangeSet jpaChangeSet;

        if (isTemplateChangeSet(changeSet)) {
            jpaChangeSet = new JPADriftChangeSet(null, changeSet.getVersion(), changeSet.getCategory(), null);
            jpaChangeSet.setDriftHandlingMode(changeSet.getDriftHandlingMode());
        } else {
            Resource resource = getResource(changeSet.getResourceId());
            DriftDefinition driftDef = null;

            for (DriftDefinition def : resource.getDriftDefinitions()) {
                if (def.getId() == changeSet.getDriftDefinitionId()) {
                    driftDef = def;
                    break;
                }
            }

            jpaChangeSet = new JPADriftChangeSet(resource, changeSet.getVersion(), changeSet.getCategory(), driftDef);
        }

        JPADriftSet driftSet = new JPADriftSet();

        for (Drift<?, ?> drift : changeSet.getDrifts()) {
            JPADrift jpaDrift = new JPADrift(jpaChangeSet, drift.getPath(), drift.getCategory(), toJPADriftFile(drift
                .getOldDriftFile()), toJPADriftFile(drift.getNewDriftFile()));

            driftSet.addDrift(jpaDrift);
        }
        entityManager.persist(jpaChangeSet);

        entityManager.persist(driftSet);

        jpaChangeSet.setInitialDriftSet(driftSet);

        return jpaChangeSet.getId();
    }
View Full Code Here

Examples of org.rhq.core.domain.drift.JPADriftChangeSet

    @Override
    public String copyChangeSet(Subject subject, String changeSetId, int driftDefId, int resourceId) {
        Resource resource = entityManager.find(Resource.class, resourceId);
        DriftDefinition driftDef = entityManager.find(DriftDefinition.class, driftDefId);
        JPADriftChangeSet srcChangeSet = entityManager.find(JPADriftChangeSet.class, Integer.parseInt(changeSetId));
        JPADriftChangeSet destChangeSet = new JPADriftChangeSet(resource, 0, COVERAGE, driftDef);
        destChangeSet.setDriftHandlingMode(DriftConfigurationDefinition.DriftHandlingMode.normal);
        destChangeSet.setInitialDriftSet(srcChangeSet.getInitialDriftSet());

        entityManager.persist(destChangeSet);

        return destChangeSet.getId();
    }
View Full Code Here

Examples of org.rhq.core.domain.drift.JPADriftChangeSet

            ZipUtil.walkZipFile(changeSetZip, new ChangeSetFileVisitor() {

                @Override
                public boolean visit(ZipEntry zipEntry, ZipInputStream stream) throws Exception {

                    JPADriftChangeSet driftChangeSet;

                    ChangeSetReader reader = new ChangeSetReaderImpl(new BufferedReader(new InputStreamReader(stream)),
                        false);

                    // store the new change set info (not the actual blob)
                    DriftDefinition driftDef = findDriftDefinition(resource, reader.getHeaders());
                    if (driftDef == null) {
                        LOG.error("Unable to locate DriftDefinition for Resource [" + resource
                                + "]. Change set cannot be saved.");
                        return false;
                    }
                    // TODO: Commenting out the following line for now. We want to set the
                    // version to the value specified in the headers, but we may want to also
                    // validate it against the latest version we have in the database so that
                    // we can make sure that the agent is in sync with the server.
                    //
                    //int version = getChangeSetVersion(resource, config);
                    int version = reader.getHeaders().getVersion();

                    DriftChangeSetCategory category = reader.getHeaders().getType();
                    driftChangeSet = new JPADriftChangeSet(resource, version, category, driftDef);
                    entityManager.persist(driftChangeSet);

                    summary.setCategory(category);
                    summary.setResourceId(resourceId);
                    summary.setDriftDefinitionName(reader.getHeaders().getDriftDefinitionName());
                    summary.setDriftHandlingMode(driftDef.getDriftHandlingMode());
                    summary.setCreatedTime(driftChangeSet.getCtime());

                    if (version > 0) {
                        for (FileEntry entry : reader) {
                            boolean addToList = storeBinaryContent || !DriftUtil.isBinaryFile(entry.getFile());
                            JPADriftFile oldDriftFile = getDriftFile(entry.getOldSHA(), driftFilesToRequest, addToList);
                            JPADriftFile newDriftFile = getDriftFile(entry.getNewSHA(), driftFilesToRequest, addToList);

                            // TODO Figure out an efficient way to save coverage change sets.
                            // The initial/coverage change set could contain hundreds or even thousands
                            // of entries. We probably want to consider doing some kind of batch insert
                            //
                            // jsanda

                            // use a path with only forward slashing to ensure consistent paths across reports
                            String path = FileUtil.useForwardSlash(entry.getFile());
                            JPADrift drift = new JPADrift(driftChangeSet, path, entry.getType(), oldDriftFile,
                                newDriftFile);
                            entityManager.persist(drift);

                            // we are taking advantage of the fact that we know the summary is only used by the server
                            // if the change set is a DRIFT report. If its a coverage report, it is not used (we do
                            // not alert on coverage reports) - so don't waste memory by collecting all the paths
                            // when we know they aren't going to be used anyway.
                            if (category == DriftChangeSetCategory.DRIFT) {
                                summary.addDriftPathname(path);
                            }
                        }
                    } else {
                        summary.setInitialChangeSet(true);
                        JPADriftSet driftSet = new JPADriftSet();
                        for (FileEntry entry : reader) {
                            boolean addToList = storeBinaryContent || !DriftUtil.isBinaryFile(entry.getFile());
                            JPADriftFile newDriftFile = getDriftFile(entry.getNewSHA(), driftFilesToRequest, 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
                            // case, it could also be set to a DriftDefinitionTemplate's changeSet.
                            driftSet.addDrift(new JPADrift(driftChangeSet, path, entry.getType(), null, newDriftFile));
                        }
                        entityManager.persist(driftSet);
                        driftChangeSet.setInitialDriftSet(driftSet);
                        entityManager.merge(driftChangeSet);
                    }

                    headers[0] = reader.getHeaders();
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.