use of com.thinkbiganalytics.metadata.modeshape.feed.JcrFeed in project kylo by Teradata.
the class RemoveDuplicateOpsManagerFeedsUpgradeAction method upgradeTo.
@Override
public void upgradeTo(final KyloVersion startingVersion) {
log.info("remove duplicate ops manager feeds from version: {}", startingVersion);
List<? extends OpsManagerFeed> feeds = opsManagerFeedProvider.findFeedsWithSameName();
if (feeds != null) {
final List<OpsManagerFeed> feedsToDelete = new ArrayList<>();
final Map<String, OpsManagerFeed> feedsToKeep = new HashMap<>();
feeds.stream().forEach(feed -> {
log.info("Found duplicate feed {} - {} ", feed.getId(), feed.getName());
Feed jcrFeed = feedProvider.getFeed(feed.getId());
if (jcrFeed == null) {
feedsToDelete.add(feed);
} else {
feedsToKeep.put(feed.getName(), feed);
}
});
feedsToDelete.stream().forEach(feed -> {
OpsManagerFeed feedToKeep = feedsToKeep.get(feed.getName());
if (feedToKeep != null) {
// remove it
log.info("Unable to find feed {} - {} in JCR metadata. A feed with id of {} already exists with this same name {}. Attempt to remove its data from Operations Manager", feed.getId(), feed.getName(), feedToKeep.getId(), feedToKeep.getName());
opsManagerFeedProvider.delete(feed.getId());
}
});
}
}
use of com.thinkbiganalytics.metadata.modeshape.feed.JcrFeed in project kylo by Teradata.
the class JcrFeedTemplate method addFeed.
public boolean addFeed(Feed feed) {
JcrFeed jcrFeed = (JcrFeed) feed;
Node feedNode = jcrFeed.getNode();
return JcrPropertyUtil.addToSetProperty(getNode(), FEEDS, feedNode, true);
}
use of com.thinkbiganalytics.metadata.modeshape.feed.JcrFeed in project kylo by Teradata.
the class JcrFeedServiceLevelAgreementProvider method relateFeeds.
@Override
public FeedServiceLevelAgreementRelationship relateFeeds(ServiceLevelAgreement sla, Set<Feed> feeds) {
Node slaNode = ((JcrServiceLevelAgreement) sla).getNode();
JcrFeedServiceLevelAgreementRelationship relationship = JcrUtil.getOrCreateNode(slaNode, RELATED_FEEDS_NODE, JcrFeedServiceLevelAgreementRelationship.NODE_TYPE, JcrFeedServiceLevelAgreementRelationship.class);
feeds.stream().map(feed -> feedProvider.updateFeedServiceLevelAgreement(feed.getId(), sla)).map(JcrFeed.class::cast).map(JcrFeed::getNode).forEach(node -> JcrPropertyUtil.addToSetProperty(relationship.getNode(), JcrFeedServiceLevelAgreementRelationship.FEEDS, node, true));
return relationship;
}
use of com.thinkbiganalytics.metadata.modeshape.feed.JcrFeed in project kylo by Teradata.
the class JcrFeedSlaTest method testCreateFeedSLAEntity.
@Test
public void testCreateFeedSLAEntity() {
// create 2 feeds
final int numberOfFeeds = 2;
Set<Feed.ID> feedIds = createFeeds(numberOfFeeds);
final String feedSlaTitle = "My New SLA";
final String nonFeedSlaTitle = "No Feed SLA";
ServiceLevelAgreement.ID feedSlaId = createFeedSla(feedIds, feedSlaTitle);
ServiceLevelAgreement.ID nonFeedSla = createGenericSla(nonFeedSlaTitle);
ServiceLevelAgreement.ID slaId = metadata.read(() -> {
JcrFeedServiceLevelAgreementProvider jcrFeedSlaProvider = (JcrFeedServiceLevelAgreementProvider) feedSlaProvider;
// ASSERT everything is good
// Assert query returns the correct result
List<FeedServiceLevelAgreementRelationship> rels = jcrFeedSlaProvider.findAllRelationships();
Assert.assertEquals(rels.size(), 1);
// Assert relationships are correct
JcrFeedServiceLevelAgreementRelationship relationship = (JcrFeedServiceLevelAgreementRelationship) jcrFeedSlaProvider.findRelationship(feedSlaId);
ServiceLevelAgreement feedSla = relationship.getAgreement();
Assert.assertNotNull(feedSla);
List<? extends ServiceLevelAgreement> agreements = slaProvider.getAgreements();
// assert both agreements are there
Assert.assertEquals(agreements.size(), 2);
Set<JcrFeed> feeds = relationship.getPropertyAsSet(JcrFeedServiceLevelAgreementRelationship.FEEDS, JcrFeed.class);
Assert.assertEquals(feeds.size(), numberOfFeeds);
for (JcrFeed feed : feeds) {
Assert.assertTrue(feedIds.contains(feed.getId()));
}
// find it by the SLA now
JcrFeedServiceLevelAgreementRelationship finalFeedSla = (JcrFeedServiceLevelAgreementRelationship) jcrFeedSlaProvider.findRelationship(feedSla.getId());
Assert.assertNotNull(finalFeedSla);
// query for SLA objects and assert the result is correct
List<FeedServiceLevelAgreement> feedAgreements = jcrFeedSlaProvider.findAllAgreements();
Assert.assertEquals(feedAgreements.size(), 1);
int nonFeedSlaCount = 0;
for (FeedServiceLevelAgreement agreement : feedAgreements) {
Set<? extends Feed> slaFeeds = agreement.getFeeds();
String title = agreement.getName();
if (slaFeeds != null) {
Assert.assertEquals(title, feedSlaTitle);
Assert.assertEquals(slaFeeds.size(), numberOfFeeds);
for (Feed feed : slaFeeds) {
Assert.assertTrue(feedIds.contains(feed.getId()));
}
} else {
Assert.assertEquals(title, nonFeedSlaTitle);
nonFeedSlaCount++;
}
}
Assert.assertEquals(nonFeedSlaCount, 0);
// find by Feed
for (Feed.ID feedId : feedIds) {
List<FeedServiceLevelAgreement> feedServiceLevelAgreements = jcrFeedSlaProvider.findFeedServiceLevelAgreements(feedId);
Assert.assertTrue(feedServiceLevelAgreements != null && !feedServiceLevelAgreements.isEmpty());
}
return feedSla.getId();
}, MetadataAccess.SERVICE);
// now remove the feed relationships
boolean removedFeedRelationships = metadata.commit(() -> {
ServiceLevelAgreement sla = slaProvider.getAgreement(slaId);
return feedSlaProvider.removeFeedRelationships(slaId);
}, MetadataAccess.SERVICE);
Assert.assertTrue(removedFeedRelationships);
// query for the feeds related to this SLA and verify there are none
metadata.read(() -> {
FeedServiceLevelAgreement feedServiceLevelAgreement = feedSlaProvider.findAgreement(slaId);
Assert.assertTrue(feedServiceLevelAgreement.getFeeds() == null || (feedServiceLevelAgreement.getFeeds().isEmpty()));
return null;
}, MetadataAccess.SERVICE);
}
use of com.thinkbiganalytics.metadata.modeshape.feed.JcrFeed in project kylo by Teradata.
the class FeedWeakReferenceUpgradeAction method upgradeTo.
@Override
public void upgradeTo(final KyloVersion targetVersion) {
log.info("Updating template feed references: {}", targetVersion);
this.templateProvider.findAll().stream().map(JcrFeedTemplate.class::cast).map(JcrFeedTemplate::getNode).forEach(templateNode -> {
Set<Node> feedNodes = JcrPropertyUtil.getSetProperty(templateNode, JcrFeedTemplate.FEEDS);
JcrPropertyUtil.removeAllFromCollectionProperty(templateNode, JcrFeedTemplate.FEEDS);
feedNodes.forEach(feedNode -> JcrPropertyUtil.addToSetProperty(templateNode, JcrFeedTemplate.FEEDS, feedNode, true));
});
this.feedProvider.findAll().stream().map(JcrFeed.class::cast).map(JcrFeed::getFeedDetails).filter(Optional::isPresent).map(Optional::get).map(FeedDetails::getNode).forEach(detailsNode -> {
Node templateNode = JcrPropertyUtil.getProperty(detailsNode, FeedDetails.TEMPLATE);
JcrPropertyUtil.setProperty(detailsNode, FeedDetails.TEMPLATE, null);
JcrPropertyUtil.setWeakReferenceProperty(detailsNode, FeedDetails.TEMPLATE, templateNode);
});
}
Aggregations