private void common(CommonServicesContext services, ChangesContext changes, JunitResource resource) { if (!alwaysUpdate) { return; } List<JunitResource> junitResources = services.getResourceService().resourceFindAll(services.getResourceService().createResourceQuery(JunitResource.class)); if (junitResources.size() < 3) { for (int i = 0; i < 5; ++i) { changes.resourceAdd(new JunitResource(SecureRandomTools.randomHexString(10))); } } else { JunitResource update = junitResources.get(0); JunitResource refresh = junitResources.get(1); JunitResource delete = junitResources.get(2); update.setDate(new Date()); changes.resourceUpdate(update); changes.resourceRefresh(refresh); changes.resourceDelete(delete); } }
@Test public void testChanges_reduntantLinksAndTags() { ChangesContext changes = new ChangesContext(getCommonServicesContext().getResourceService()); JunitResource r1 = new JunitResource("reduntant_1"); JunitResource r2 = new JunitResource("reduntant_2"); changes.resourceAdd(r1); changes.resourceAdd(r2); changes.linkAdd(r1, "link1", r2); changes.linkAdd(r1, "link1", r2); changes.linkAdd(r1, "link2", r2); changes.tagAdd(r1, "tag1"); changes.tagAdd(r1, "tag1"); changes.tagAdd(r1, "tag2"); getInternalServicesContext().getInternalChangeService().changesExecute(changes); // Check IPResourceService resourceService = getCommonServicesContext().getResourceService(); r1 = resourceService.resourceFindByPk(r1).get(); r2 = resourceService.resourceFindByPk(r2).get(); Assert.assertEquals(Arrays.asList("link1", "link2"), resourceService.linkFindAllByFromResource(r1).stream().map(it -> it.getA()).sorted().collect(Collectors.toList())); Assert.assertEquals(Arrays.asList("tag1", "tag2"), resourceService.tagFindAllByResource(r1).stream().sorted().collect(Collectors.toList())); }
@Test public void testChanges_reduntantLinksAndTags() { ChangesContext changes = new ChangesContext(); JunitResource r1 = new JunitResource("reduntant_1"); JunitResource r2 = new JunitResource("reduntant_2"); changes.getResourcesToAdd().add(r1); changes.getResourcesToAdd().add(r2); changes.getLinksToAdd().add(new Tuple3<>(r1, "link1", r2)); changes.getLinksToAdd().add(new Tuple3<>(r1, "link1", r2)); changes.getLinksToAdd().add(new Tuple3<>(r1, "link2", r2)); changes.getTagsToAdd().add(new Tuple2<>(r1, "tag1")); changes.getTagsToAdd().add(new Tuple2<>(r1, "tag1")); changes.getTagsToAdd().add(new Tuple2<>(r1, "tag2")); getInternalServicesContext().getInternalChangeService().changesExecute(changes); // Check IPResourceService resourceService = getCommonServicesContext().getResourceService(); r1 = resourceService.resourceFindByPk(r1).get(); r2 = resourceService.resourceFindByPk(r2).get(); Assert.assertEquals(Arrays.asList("link1", "link2"), resourceService.linkFindAllByFromResource(r1).stream().map(it -> it.getA()).sorted().collect(Collectors.toList())); Assert.assertEquals(Arrays.asList("tag1", "tag2"), resourceService.tagFindAllByResource(r1).stream().sorted().collect(Collectors.toList())); }
public static void createFakeData(CommonServicesContext commonCtx, InternalServicesContext internalCtx) { // JunitResource ChangesContext changes = new ChangesContext(commonCtx.getResourceService()); JunitResource junitResource = new JunitResource("www.example.com", JunitResourceEnum.A, 1); changes.resourceAdd(junitResource); changes.tagAdd(junitResource, "tag1"); changes.tagAdd(junitResource, "asite"); junitResource = new JunitResource("www.example.com", JunitResourceEnum.A, 2); changes.resourceAdd(junitResource); changes.tagAdd(junitResource, "asite"); changes.resourceAdd(new JunitResource("example.com", JunitResourceEnum.B, 3)); changes.resourceAdd(new JunitResource("t1_aaa", JunitResourceEnum.A, DateTools.parseFull("2000-01-01 00:00:00"), 1, 1L, 1.0, 1.0f, true, "one", "two")); changes.resourceAdd(new JunitResource("t2_aaa", JunitResourceEnum.C, DateTools.parseFull("2000-06-01 00:00:00"), 5, 8L, 1.5, 7.3f, false, "one", "three")); changes.resourceAdd(new JunitResource("zz", JunitResourceEnum.B, DateTools.parseFull("2000-04-01 00:00:00"), 80, 4L, 77.6, 3.1f, true)); internalCtx.getInternalChangeService().changesExecute(changes); }
protected void removeManagedLinkAndDeleteIfNotManagedByAnyoneElse(IPResourceService resourceService, ChangesContext changes, IPResource managedResource, IPResource... removeLinksFrom) { List<? extends IPResource> fromResources = resourceService.linkFindAllByLinkTypeAndToResource(LinkTypeConstants.MANAGES, managedResource); logger.debug("Resource {} is managed by {} other resources", managedResource, fromResources.size()); // Remove the managed links int removedLinks = 0; List<Long> removeLinksFromIds = Arrays.asList(removeLinksFrom).stream().map(IPResource::getInternalId).collect(Collectors.toList()); for (IPResource fromResource : fromResources) { if (removeLinksFromIds.contains(fromResource.getInternalId())) { ++removedLinks; changes.linkDelete(fromResource, LinkTypeConstants.MANAGES, managedResource); } } logger.debug("Resource {} is now managed by {} other resources", managedResource, fromResources.size() - removedLinks); // All managed links removed and not manually edited-> Delete the resource if (fromResources.size() - removedLinks == 0 && managedResource.getResourceEditorName() == null) { changes.resourceDelete(managedResource.getInternalId()); } }
public static void createFakeData(InternalServicesContext ctx) { // JunitResource ChangesContext changes = new ChangesContext(); JunitResource junitResource = new JunitResource("www.example.com", JunitResourceEnum.A, 1); changes.getResourcesToAdd().add(junitResource); changes.getTagsToAdd().addAll(Arrays.asList( // new Tuple2<>(junitResource, "tag1"), // new Tuple2<>(junitResource, "asite"))); junitResource = new JunitResource("www.example.com", JunitResourceEnum.A, 2); changes.getResourcesToAdd().add(junitResource); changes.getTagsToAdd().addAll(Arrays.asList( // new Tuple2<>(junitResource, "asite"))); changes.getResourcesToAdd().add(new JunitResource("example.com", JunitResourceEnum.B, 3)); changes.getResourcesToAdd().add(new JunitResource("t1_aaa", JunitResourceEnum.A, DateTools.parseFull("2000-01-01 00:00:00"), 1, 1L, 1.0, 1.0f, true, "one", "two")); changes.getResourcesToAdd().add(new JunitResource("t2_aaa", JunitResourceEnum.C, DateTools.parseFull("2000-06-01 00:00:00"), 5, 8L, 1.5, 7.3f, false, "one", "three")); changes.getResourcesToAdd().add(new JunitResource("zz", JunitResourceEnum.B, DateTools.parseFull("2000-04-01 00:00:00"), 80, 4L, 77.6, 3.1f, true)); ctx.getInternalChangeService().changesExecute(changes); }
ChangesContext changes = new ChangesContext(getCommonServicesContext().getResourceService()); Machine machine = new Machine("m1.node.example.com", "199.141.1.101"); changes.resourceAdd(machine); getInternalServicesContext().getInternalChangeService().changesExecute(changes); changes.resourceUpdate(machine.getInternalId(), machine); getInternalServicesContext().getInternalChangeService().changesExecute(changes); changes.resourceUpdate(machine.getInternalId(), machine); getInternalServicesContext().getInternalChangeService().changesExecute(changes); changes.resourceUpdate(machine.getInternalId(), machine); getInternalServicesContext().getInternalChangeService().changesExecute(changes); changes.resourceUpdate(machine.getInternalId(), machine); try { getInternalServicesContext().getInternalChangeService().changesExecute(changes); changes.resourceDelete(machine.getInternalId()); getInternalServicesContext().getInternalChangeService().changesExecute(changes);
} else { rootUnixUser = new SystemUnixUser(0L, "root"); changes.resourceAdd(rootUnixUser); Application existingApplication = existingApplicationOptional.get(); if (updateResourceIfDifferent(backupApplication, existingApplication)) { changes.resourceUpdate(existingApplication, backupApplication); changes.resourceAdd(backupApplication); changes.linkAdd(backupApplication, LinkTypeConstants.RUN_AS, rootUnixUser); changes.linkAdd(backupApplication, LinkTypeConstants.INSTALLED_ON, machine); if (existingApplicationOptional.isPresent()) { logger.info("[{}] Deleting existing Backup script", machineName); changes.resourceDelete(existingApplicationOptional.get());
public void resourceUpdate(IPResource resource) { resourceUpdate(resource.getInternalId(), resource); }
List<JunitResource> resources; Set<String> tags; ChangesContext changes = new ChangesContext(getCommonServicesContext().getResourceService()); InternalChangeService internalChangeService = getInternalServicesContext().getInternalChangeService(); IPResourceService resourceService = getCommonServicesContext().getResourceService(); changes.resourceDelete(entry.getInternalId()); changes.resourceAdd(resource); changes.tagAdd(resource, "tag1"); changes.tagAdd(resource, "asite"); changes.resourceAdd(resource); changes.tagAdd(resource, "asite"); internalChangeService.changesExecute(changes); changes.tagAdd(resource, "changed"); changes.resourceUpdate(resource.getInternalId(), new JunitResource("example2.com", JunitResourceEnum.A, 2)); internalChangeService.changesExecute(changes); changes.tagDelete(resource, "tag1"); internalChangeService.changesExecute(changes); changes.resourceAdd(new JunitResource("example2.com", JunitResourceEnum.A, 2)); internalChangeService.changesExecute(changes); Assert.fail("Didn't get an exception"); changes.resourceUpdate(resource.getInternalId(), new JunitResource("example2.com", JunitResourceEnum.A, 5)); internalChangeService.changesExecute(changes);
protected IPResource retrieveAndUpdateOrCreateResource(IPResourceService resourceService, ChangesContext changes, IPResource resource) { // Search in current changes Optional<IPResource> foundOptional = changes.getResourcesToAdd().stream() // .filter(it -> resourceService.resourceEqualsPk(resource, it)) // .findAny(); if (foundOptional.isPresent()) { updateResourceIfDifferent(resource, foundOptional.get()); return foundOptional.get(); } foundOptional = changes.getResourcesToUpdate().stream() // .filter(it -> resourceService.resourceEqualsPk(resource, it.getB())) // .map(it -> it.getB()) // .findAny(); if (foundOptional.isPresent()) { updateResourceIfDifferent(resource, foundOptional.get()); return foundOptional.get(); } // Search in repository foundOptional = resourceService.resourceFindByPk(resource); if (foundOptional.isPresent()) { IPResource foundResource = foundOptional.get(); if (updateResourceIfDifferent(resource, foundResource)) { changes.resourceUpdate(foundResource, foundResource); } return foundResource; } // Create new changes.resourceAdd(resource); return resource; }
changes.getResourcesToUpdate().size(), changes.getResourcesToDelete().size(), changes.getResourcesToAdd().size(), changes.getResourcesToRefresh().size(), // changes.getLinksToDelete().size(), changes.getLinksToAdd().size(), // changes.getTagsToDelete().size(), changes.getTagsToAdd().size() // ); for (Long id : changes.getResourcesToDelete()) { Tuple3<IPResource, String, IPResource> link : changes.getLinksToDelete()) { logger.debug("[APPLY] Delete link {}", link); Optional<IPResource> fromResource = ipResourceService.resourceFindByPk(link.getA()); for (Tuple2<IPResource, String> tag : changes.getTagsToDelete()) { logger.debug("[APPLY] Delete tag {}", tag); Optional<IPResource> resource = ipResourceService.resourceFindByPk(tag.getA()); for (IPResource resource : changes.getResourcesToAdd()) { logger.debug("[APPLY] Add resource {}", resource); for (Tuple3<IPResource, String, IPResource> link : changes.getLinksToAdd()) { logger.debug("[APPLY] Add link {}", link); Optional<IPResource> fromResource = ipResourceService.resourceFindByPk(link.getA()); for (Tuple2<IPResource, String> tag : changes.getTagsToAdd()) { logger.debug("[APPLY] Add tag {}", tag); Optional<IPResource> resource = ipResourceService.resourceFindByPk(tag.getA()); for (Tuple2<Long, IPResource> update : changes.getResourcesToUpdate()) { for (Long id : changes.getResourcesToRefresh()) {
ChangesContext changesContext = new ChangesContext(getCommonServicesContext().getResourceService()); resourceEditor.fillResource(getCommonServicesContext(), changesContext, formValues, resource); changesContext.resourceAdd(resource); } else { changesContext.resourceUpdate(internalId, resource);
} else { logger.debug("Adding link to Resource {}", toResource); changesContext.linkAdd(fromResource, linkType, toResource); changesContext.linkDelete(fromResource, linkType, resourceToToRemove);
changes.resourceUpdate(context.getResource()); changes.linkAdd(resource, LinkTypeConstants.MANAGES, desiredManagedResource); if (desiredManagedResource.getInternalId() != null) { desiredManagedResourceIds.add(desiredManagedResource.getInternalId()); changes.linkDelete(desiredManagedResource, linkType, previous); }); changes.linkAdd(desiredManagedResource, linkType, desired); }); changes.linkDelete(previous, linkType, desiredManagedResource); }); changes.linkAdd(desired, linkType, desiredManagedResource); });
List<JunitResource> resources; Set<String> tags; ChangesContext changes = new ChangesContext(); InternalChangeService internalChangeService = getInternalServicesContext().getInternalChangeService(); IPResourceService resourceService = getCommonServicesContext().getResourceService(); changes.getResourcesToDelete().add(entry.getInternalId()); changes.getResourcesToAdd().add(resource); changes.getTagsToAdd().addAll(Arrays.asList( // new Tuple2<>(resource, "tag1"), // new Tuple2<>(resource, "asite"))); changes.getResourcesToAdd().add(resource); changes.getTagsToAdd().add(new Tuple2<>(resource, "asite")); internalChangeService.changesExecute(changes); changes.getTagsToAdd().add(new Tuple2<>(resource, "changed")); changes.getResourcesToUpdate().add(new Tuple2<>(resource.getInternalId(), new JunitResource("example2.com", JunitResourceEnum.A, 2))); internalChangeService.changesExecute(changes); changes.getTagsToDelete().add(new Tuple2<>(resource, "tag1")); internalChangeService.changesExecute(changes); changes.getResourcesToAdd().add(new JunitResource("example2.com", JunitResourceEnum.A, 2)); internalChangeService.changesExecute(changes); Assert.fail("Didn't get an exception"); changes.getResourcesToUpdate().add(new Tuple2<>(resource.getInternalId(), new JunitResource("example2.com", JunitResourceEnum.A, 5)));
@SuppressWarnings({ "unchecked" }) protected <T extends IPResource> T retrieveOrCreateResource(IPResourceService resourceService, ChangesContext changes, T resource, Class<T> resourceClass) { // Search in current changes Optional<T> foundOptional = changes.getResourcesToAdd().stream() // .filter(it -> resourceService.resourceEqualsPk(resource, it)) // .map(it -> (T) it) // .findAny(); if (foundOptional.isPresent()) { return foundOptional.get(); } foundOptional = changes.getResourcesToUpdate().stream() // .filter(it -> resourceService.resourceEqualsPk(resource, it.getB())) // .map(it -> (T) it.getB()) // .findAny(); if (foundOptional.isPresent()) { return foundOptional.get(); } // Search in repository foundOptional = resourceService.resourceFindByPk(resource); if (foundOptional.isPresent()) { return foundOptional.get(); } // Create new changes.resourceAdd(resource); return resource; }
changes.resourceUpdate(websiteCertificate); }); changes.resourceDelete(new DnsEntry(dnsWaitDomain, DnsEntryType.A, "127.0.0.1")); WebsiteCertificate previousCert = websiteCertificateByDomain.get(commonName); changes.resourceUpdate(previousCert, newCert); List<DnsEntry> dnsEntries = resourceService.linkFindAllByFromResourceAndLinkTypeAndToResourceClass(websiteCertificate, LinkTypeConstants.MANAGES, DnsEntry.class); for (DnsEntry dnsEntry : dnsEntries) { changes.resourceDelete(dnsEntry);
Optional<DnsEntry> existingDnsEntry = resourceService.resourceFindByPk(dnsEntry); if (!existingDnsEntry.isPresent()) { changes.resourceAdd(dnsEntry); changes.linkAdd(certificate, LinkTypeConstants.MANAGES, dnsEntry); changes.tagAdd(dnsEntry, tagName); changes.resourceAdd(dnsEntry); changes.linkAdd(config, LinkTypeConstants.MANAGES, dnsEntry); changes.tagAdd(dnsEntry, tagName);
@Test public void testChanges_refresh() { // Create resource JunitResource junitResource = new JunitResource("testChanges_refresh"); ChangesContext changes = new ChangesContext(getCommonServicesContext().getResourceService()); changes.resourceAdd(junitResource); getInternalServicesContext().getInternalChangeService().changesExecute(changes); // Reset TestingControllerMockUpdateHander testingControllerMockUpdateHander = TestingControllerPluginDefinitionProvider.getInstance().getTestingControllerMockUpdateHander(); testingControllerMockUpdateHander.clear(); Assert.assertEquals(0, testingControllerMockUpdateHander.getChecked().size()); // Refresh resource changes.resourceRefresh(junitResource); getInternalServicesContext().getInternalChangeService().changesExecute(changes); // Assert Assert.assertEquals(1, testingControllerMockUpdateHander.getChecked().size()); }