use of com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplate in project kylo by Teradata.
the class InMemoryFeedManagerTemplateService method saveRegisteredTemplate.
protected RegisteredTemplate saveRegisteredTemplate(RegisteredTemplate registeredTemplate) {
// ensure that the incoming template name doesnt already exist.
// if so remove and replace with this one
RegisteredTemplate template = getRegisteredTemplateByName(registeredTemplate.getTemplateName());
if (template != null && !template.getId().equalsIgnoreCase(registeredTemplate.getId())) {
// remove the old one with the same name
registeredTemplates.remove(template.getId());
// update those feeds that were pointing to this old one, to this new one
List<FeedMetadata> feedsToUpdate = feedProvider.getFeedsWithTemplate(registeredTemplate.getId());
if (feedsToUpdate != null && !feedsToUpdate.isEmpty()) {
for (FeedMetadata feedMetadata : feedsToUpdate) {
feedMetadata.setTemplateId(template.getId());
}
// save the feeds
FileObjectPersistence.getInstance().writeFeedsToFile(feedProvider.getFeeds());
}
}
registeredTemplates.put(registeredTemplate.getId(), registeredTemplate);
if (registeredTemplates.containsKey(registeredTemplate.getNifiTemplateId())) {
registeredTemplates.remove(registeredTemplate.getNifiTemplateId());
}
FileObjectPersistence.getInstance().writeTemplatesToFile(registeredTemplates.values());
return registeredTemplate;
}
use of com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplate in project kylo by Teradata.
the class RegisteredTemplateService method findRegisteredTemplate.
/**
* Gets a Registered Template or returns null if not found by various means passed in via the request object
*
* @param registeredTemplateRequest a request to get a registered template
* @return the RegisteredTemplate or null if not found
*/
public RegisteredTemplate findRegisteredTemplate(RegisteredTemplateRequest registeredTemplateRequest) {
String templateId = registeredTemplateRequest.getTemplateId();
String templateName = registeredTemplateRequest.getTemplateName();
// if we are looking for a given template as a request from a Feed, we need to query and access it via a service account.
// otherwise we will access it as the user
Principal[] principals = null;
if (registeredTemplateRequest.isFeedEdit()) {
principals = new Principal[1];
principals[0] = MetadataAccess.SERVICE;
} else {
principals = new Principal[0];
}
// The default transformation type will not include sensitive property values.
// if requested as a template or feed edit, it will include the encrypted sensitive property values
TEMPLATE_TRANSFORMATION_TYPE transformationType = TEMPLATE_TRANSFORMATION_TYPE.WITH_FEED_NAMES;
if (registeredTemplateRequest.isTemplateEdit() || registeredTemplateRequest.isFeedEdit() || registeredTemplateRequest.isIncludeSensitiveProperties()) {
transformationType = TEMPLATE_TRANSFORMATION_TYPE.WITH_SENSITIVE_DATA;
}
RegisteredTemplate registeredTemplate = findRegisteredTemplateById(templateId, transformationType, principals);
// if it is null check to see if the template exists in nifi and is already registered
if (registeredTemplate == null) {
// log.info("Attempt to get Template with id {}, returned null. This id must be one registed in Nifi... attempt to query Nifi for this template ", templateId);
registeredTemplate = findRegisteredTemplateByNiFiIdentifier(templateId, transformationType, principals);
}
if (registeredTemplate == null) {
// attempt to look by name
registeredTemplate = findRegisteredTemplateByName(templateName, transformationType, principals);
}
if (registeredTemplate != null) {
if (registeredTemplateRequest.isIncludeAllProperties()) {
registeredTemplate = mergeRegisteredTemplateProperties(registeredTemplate, registeredTemplateRequest);
registeredTemplate.initializeProcessors();
ensureRegisteredTemplateInputProcessors(registeredTemplate);
}
if (NifiPropertyUtil.containsPropertiesForProcessorMatchingType(registeredTemplate.getProperties(), NifiFeedConstants.TRIGGER_FEED_PROCESSOR_CLASS)) {
registeredTemplate.setAllowPreconditions(true);
} else {
registeredTemplate.setAllowPreconditions(false);
}
}
return registeredTemplate;
}
use of com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplate in project kylo by Teradata.
the class RegisteredTemplateService method saveRegisteredTemplate.
private RegisteredTemplate saveRegisteredTemplate(final RegisteredTemplate registeredTemplate, boolean reorder) {
List<String> templateOrder = registeredTemplate.getTemplateOrder();
registeredTemplate.setUpdated(false);
RegisteredTemplate savedTemplate = metadataAccess.commit(() -> {
this.accessController.checkPermission(AccessController.SERVICES, FeedServicesAccessControl.EDIT_TEMPLATES);
return saveTemplate(registeredTemplate);
});
// order it
if (reorder) {
if (StringUtils.isBlank(registeredTemplate.getId())) {
templateOrder = templateOrder.stream().map(template -> {
if ("NEW".equals(template)) {
return savedTemplate.getId();
} else {
return template;
}
}).collect(Collectors.toList());
}
orderTemplates(templateOrder, Sets.newHashSet(savedTemplate.getId()));
}
return savedTemplate;
}
use of com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplate in project kylo by Teradata.
the class RegisteredTemplateService method mergeRegisteredTemplateProperties.
/**
* Merge all saved properties on the RegisteredTemplate along with the properties in the NiFi template
* The resulting object will have the {@link RegisteredTemplate#properties} updated so they are in sync with NiFi.
*
* @return a RegisteredTemplate that has the properties updated with those in NiFi
*/
public RegisteredTemplate mergeRegisteredTemplateProperties(RegisteredTemplate registeredTemplate, RegisteredTemplateRequest registeredTemplateRequest) {
if (registeredTemplate != null) {
log.info("Merging properties for template {} ({})", registeredTemplate.getTemplateName(), registeredTemplate.getId());
List<NifiProperty> properties = null;
int matchCount = 0;
// get the nifi template associated with this one that is registered
TemplateDTO templateDTO = registeredTemplate.getNifiTemplate();
if (templateDTO == null) {
templateDTO = ensureNifiTemplate(registeredTemplate);
}
if (templateDTO != null) {
registeredTemplate.setNifiTemplate(templateDTO);
properties = niFiTemplateCache.getTemplateProperties(templateDTO, registeredTemplateRequest.isIncludePropertyDescriptors(), registeredTemplate);
// first attempt to match the properties by the processorid and processor name
// NifiPropertyUtil
// .matchAndSetPropertyByIdKey(properties, registeredTemplate.getProperties(), NifiPropertyUtil.PROPERTY_MATCH_AND_UPDATE_MODE.UPDATE_ALL_PROPERTIES);
}
/* if (properties != null) {
//match the properties to the processors by the processor name
NifiPropertyUtil.matchAndSetPropertyByProcessorName(properties, registeredTemplate.getProperties(),
NifiPropertyUtil.PROPERTY_MATCH_AND_UPDATE_MODE.UPDATE_ALL_PROPERTIES);
}
*/
if (templateDTO != null && !templateDTO.getId().equalsIgnoreCase(registeredTemplate.getNifiTemplateId())) {
syncNiFiTemplateId(registeredTemplate);
}
if (properties == null) {
properties = new ArrayList<>();
}
// merge with the registered properties
RegisteredTemplate copy = new RegisteredTemplate(registeredTemplate);
copy.setProperties(properties);
copy.setNifiTemplate(registeredTemplate.getNifiTemplate());
registeredTemplate = copy;
} else {
log.info("Unable to merge Registered Template. It is null");
}
return registeredTemplate;
}
use of com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplate in project kylo by Teradata.
the class RegisteredTemplateService method nifiTemplateToRegisteredTemplate.
/**
* this will return a RegisteredTemplate object for a given NiFi template Id.
* This is to be used for new templates that are going to be registered with Kylo.
* Callers of this method should ensure that a template of this id is not already registered
*
* @param nifiTemplateId the nifi template identifier
* @return a RegisteredTemplate object of null if not found in NiFi
*/
private RegisteredTemplate nifiTemplateToRegisteredTemplate(String nifiTemplateId) {
RegisteredTemplate registeredTemplate = null;
List<NifiProperty> properties = new ArrayList<>();
TemplateDTO nifiTemplate = nifiRestClient.getTemplateById(nifiTemplateId);
if (nifiTemplate != null) {
registeredTemplate = new RegisteredTemplate();
registeredTemplate.setNifiTemplateId(nifiTemplateId);
properties = niFiTemplateCache.getTemplateProperties(nifiTemplate, true, null);
// TODO not sure if this is needed
List<NiFiRemoteProcessGroup> remoteProcessGroups = niFiTemplateCache.getRemoteProcessGroups(nifiTemplate);
registeredTemplate.setRemoteProcessGroups(remoteProcessGroups);
registeredTemplate.setNifiTemplate(nifiTemplate);
registeredTemplate.setTemplateName(nifiTemplate.getName());
registeredTemplate.setProperties(properties);
}
return registeredTemplate;
}
Aggregations