use of com.thinkbiganalytics.feedmgr.rest.model.FeedSummary in project kylo by Teradata.
the class FeedModelTransform method domainToFeedMetadata.
/**
* Transforms the specified Metadata feed to a Feed Manager feed.
*
* @param domain the Metadata feed
* @param userFieldMap cache map from category to user-defined fields, or {@code null}
* @return the Feed Manager feed
*/
@Nonnull
private FeedMetadata domainToFeedMetadata(@Nonnull final Feed domain, @Nullable final Map<Category, Set<UserFieldDescriptor>> userFieldMap) {
FeedMetadata feed = deserializeFeedMetadata(domain, false);
feed.setId(domain.getId().toString());
feed.setFeedId(domain.getId().toString());
feed.setFeedName(domain.getDisplayName());
feed.setSystemFeedName(domain.getName());
feed.setDescription(domain.getDescription());
feed.setAllowIndexing(domain.isAllowIndexing());
feed.setHistoryReindexingStatus(domain.getCurrentHistoryReindexingStatus().getHistoryReindexingState().toString());
feed.setOwner(domain.getOwner() != null ? new User(domain.getOwner().getName()) : null);
if (domain.getCreatedTime() != null) {
feed.setCreateDate(domain.getCreatedTime().toDate());
}
if (domain.getModifiedTime() != null) {
feed.setUpdateDate(domain.getModifiedTime().toDate());
}
FeedManagerTemplate template = domain.getTemplate();
if (template != null) {
RegisteredTemplate registeredTemplate = templateModelTransform.DOMAIN_TO_REGISTERED_TEMPLATE.apply(template);
feed.setRegisteredTemplate(registeredTemplate);
feed.setTemplateId(registeredTemplate.getId());
feed.setTemplateName(registeredTemplate.getTemplateName());
}
Category category = domain.getCategory();
if (category != null) {
feed.setCategory(categoryModelTransform.domainToFeedCategorySimple(category));
}
feed.setState(domain.getState() != null ? domain.getState().name() : null);
feed.setVersionName(domain.getVersionName() != null ? domain.getVersionName() : null);
// Set user-defined properties
final Set<UserFieldDescriptor> userFields;
if (userFieldMap == null) {
userFields = getUserFields(category);
} else if (userFieldMap.containsKey(category)) {
userFields = userFieldMap.get(category);
} else {
userFields = getUserFields(category);
userFieldMap.put(category, userFields);
}
@SuppressWarnings("unchecked") final Set<UserProperty> userProperties = UserPropertyTransform.toUserProperties(domain.getUserProperties(), userFields);
feed.setUserProperties(userProperties);
// Convert JCR securitygroup to DTO
List<com.thinkbiganalytics.feedmgr.rest.model.HadoopSecurityGroup> restSecurityGroups = new ArrayList<>();
if (domain.getSecurityGroups() != null && domain.getSecurityGroups().size() > 0) {
for (Object group : domain.getSecurityGroups()) {
HadoopSecurityGroup hadoopSecurityGroup = (HadoopSecurityGroup) group;
com.thinkbiganalytics.feedmgr.rest.model.HadoopSecurityGroup restSecurityGroup = new com.thinkbiganalytics.feedmgr.rest.model.HadoopSecurityGroup();
restSecurityGroup.setDescription(hadoopSecurityGroup.getDescription());
restSecurityGroup.setId(hadoopSecurityGroup.getGroupId());
restSecurityGroup.setName(hadoopSecurityGroup.getName());
restSecurityGroups.add(restSecurityGroup);
}
}
feed.setSecurityGroups(restSecurityGroups);
feed.setTags(domain.getTags().stream().map(name -> new DefaultTag(name)).collect(Collectors.toList()));
if (domain.getUsedByFeeds() != null) {
final List<FeedSummary> usedByFeeds = domain.getUsedByFeeds().stream().map(this::domainToFeedSummary).collect(Collectors.toList());
feed.setUsedByFeeds(usedByFeeds);
}
// add in access control items
securityTransform.applyAccessControl(domain, feed);
return feed;
}
use of com.thinkbiganalytics.feedmgr.rest.model.FeedSummary in project kylo by Teradata.
the class FeedRestController method startFeed.
@POST
@Path("/start/{feedId}")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation("Starts a feed.")
@ApiResponses({ @ApiResponse(code = 200, message = "The feed was started.", response = FeedSummary.class), @ApiResponse(code = 500, message = "The feed could not be started.", response = RestResponseStatus.class) })
public Response startFeed(@PathParam("feedId") String feedId) {
try {
FeedSummary feed = getMetadataService().startFeed(feedId);
RestResponseStatus.ResponseStatusBuilder builder = new RestResponseStatus.ResponseStatusBuilder();
RestResponseStatus status = null;
if (feed != null) {
status = builder.message("Feed " + feed.getCategoryAndFeedDisplayName() + " started successfully").buildSuccess();
} else {
status = builder.message("Error starting feed for id " + feedId).buildError();
}
return Response.ok(status).build();
} catch (Exception e) {
log.error("Exception starting the feed ", e);
throw new InternalServerErrorException("Unexpected exception starting the feed " + feedId + " " + e.getMessage());
}
}
use of com.thinkbiganalytics.feedmgr.rest.model.FeedSummary in project kylo by Teradata.
the class FeedManagerMetadataService method enableFeed.
public FeedSummary enableFeed(String feedId) {
return metadataAccess.commit(() -> {
this.accessController.checkPermission(AccessController.SERVICES, FeedServicesAccessControl.EDIT_FEEDS);
FeedMetadata feedMetadata = feedProvider.getFeedById(feedId);
if (feedMetadata == null) {
// feed will not be found when user is allowed to export feeds but has no entity access to feed with feed id
throw new NotFoundException("Feed not found for id " + feedId);
}
if (!feedMetadata.getState().equals(Feed.State.ENABLED.name())) {
FeedSummary feedSummary = feedProvider.enableFeed(feedId);
boolean updatedNifi = updateNifiFeedRunningStatus(feedSummary, Feed.State.ENABLED);
if (!updatedNifi) {
// rollback
throw new RuntimeException("Unable to enable Feed " + feedId);
}
return feedSummary;
}
return new FeedSummary(feedMetadata);
});
}
use of com.thinkbiganalytics.feedmgr.rest.model.FeedSummary in project kylo by Teradata.
the class FeedManagerMetadataService method startFeed.
@Override
@SuppressWarnings("deprecation")
public FeedSummary startFeed(String feedId) {
FeedMetadata feedMetadata = this.metadataAccess.read(() -> {
this.accessController.checkPermission(AccessController.SERVICES, FeedServicesAccessControl.ADMIN_FEEDS);
Feed.ID domainId = domainFeedProvider.resolveId(feedId);
Feed domainFeed = domainFeedProvider.findById(domainId);
if (domainFeed != null) {
this.accessController.checkPermission(domainFeed, FeedAccessControl.START);
return feedModelTransform.domainToFeedMetadata(domainFeed);
} else {
throw new FeedNotFoundException(domainId);
}
});
Optional<ProcessorDTO> feedInputProcessor = nifiClient.processGroups().findByName("root", feedMetadata.getSystemCategoryName(), false, false).flatMap(categoryGroup -> nifiClient.processGroups().findByName(categoryGroup.getId(), feedMetadata.getSystemFeedName(), false, true)).map(feedGroup -> {
List<ProcessorDTO> inputProcessors = this.nifiRestClient.getInputProcessors(feedGroup.getId());
ProcessorDTO inputProcessor = NifiProcessUtil.findFirstProcessorsByTypeAndName(inputProcessors, feedMetadata.getInputProcessorType(), feedMetadata.getInputProcessorName());
if (inputProcessor != null) {
this.nifiClient.processors().wakeUp(inputProcessor);
}
return inputProcessor;
});
if (!feedInputProcessor.isPresent()) {
log.error("Unable to start the feed {}. Could not find the input processor to start.", feedMetadata.getCategoryAndFeedName());
throw new RuntimeException("Unable to start Feed " + feedMetadata.getCategoryAndFeedName() + ". Could not find the input processor to start the feed");
}
return new FeedSummary(feedMetadata);
}
use of com.thinkbiganalytics.feedmgr.rest.model.FeedSummary in project kylo by Teradata.
the class DefaultFeedManagerFeedService method applyFeedSelectOptions.
@Override
public /**
* Applies new LableValue array to the FieldProperty.selectableValues {label = Category.Display Feed Name, value=category.system_feed_name}
*/
void applyFeedSelectOptions(List<FieldRuleProperty> properties) {
if (properties != null && !properties.isEmpty()) {
List<FeedSummary> feedSummaries = getFeedSummaryData();
List<LabelValue> feedSelection = new ArrayList<>();
for (FeedSummary feedSummary : feedSummaries) {
boolean isDisabled = feedSummary.getState() == Feed.State.DISABLED.name();
boolean canEditDetails = accessController.isEntityAccessControlled() ? feedSummary.hasAction(FeedAccessControl.EDIT_DETAILS.getSystemName()) : accessController.hasPermission(AccessController.SERVICES, FeedServicesAccessControl.EDIT_FEEDS);
Map<String, Object> labelValueProperties = new HashMap<>();
labelValueProperties.put("feed:disabled", isDisabled);
labelValueProperties.put("feed:editDetails", canEditDetails);
feedSelection.add(new LabelValue(feedSummary.getCategoryAndFeedDisplayName() + (isDisabled ? " (DISABLED) " : ""), feedSummary.getCategoryAndFeedSystemName(), isDisabled ? "This feed is currently disabled" : "", labelValueProperties));
}
feedSelection.sort(Comparator.comparing(LabelValue::getLabel, String.CASE_INSENSITIVE_ORDER));
for (FieldRuleProperty property : properties) {
property.setSelectableValues(feedSelection);
if (property.getValues() == null) {
// reset the intial values to be an empty arraylist
property.setValues(new ArrayList<>());
}
}
}
}
Aggregations