use of com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplate in project kylo by Teradata.
the class RegisteredTemplateService method saveTemplate.
/**
* This needs to be wrapped in a MetadataAccess transaction
*
* @param registeredTemplate the template to save
* @return the saved template
*/
private RegisteredTemplate saveTemplate(RegisteredTemplate registeredTemplate) {
// ensure that the incoming template name doesnt already exist.
// if so remove and replace with this one
RegisteredTemplate template = findRegisteredTemplate(RegisteredTemplateRequest.requestByTemplateName(registeredTemplate.getTemplateName()));
if (registeredTemplate.getId() == null && template != null) {
registeredTemplate.setId(template.getId());
}
if (template != null && !template.getId().equalsIgnoreCase(registeredTemplate.getId())) {
// Warning cant save.. duplicate Name
log.error("Unable to save template {}. There is already a template with this name registered in the system", registeredTemplate.getTemplateName());
return null;
} else {
if (StringUtils.isNotBlank(registeredTemplate.getId())) {
checkTemplatePermission(registeredTemplate.getId(), TemplateAccessControl.EDIT_TEMPLATE);
}
log.info("About to save Registered Template {} ({}), nifi template Id of {} ", registeredTemplate.getTemplateName(), registeredTemplate.getId(), registeredTemplate.getNifiTemplateId());
ensureRegisteredTemplateInputProcessors(registeredTemplate);
FeedManagerTemplate domain = templateModelTransform.REGISTERED_TEMPLATE_TO_DOMAIN.apply(registeredTemplate);
ensureNifiTemplateId(domain);
if (domain != null) {
log.info("Domain Object is {} ({}), nifi template Id of {}", domain.getName(), domain.getId(), domain.getNifiTemplateId());
}
domain = templateProvider.update(domain);
// query it back to display to the ui
domain = templateProvider.findById(domain.getId());
RegisteredTemplate updatedTemplate = templateModelTransform.DOMAIN_TO_REGISTERED_TEMPLATE.apply(domain);
updatedTemplate.setUpdated(true);
registeredTemplateCache.invalidateProcessors(updatedTemplate.getId());
niFiTemplateCache.updateSelectedProperties(registeredTemplate);
return updatedTemplate;
}
}
use of com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplate in project kylo by Teradata.
the class RegisteredTemplateService method syncNiFiTemplateId.
/**
* Ensure that the NiFi template Ids are correct and match our metadata for the Template Name
*
* @param template a registered template
* @return the updated template with the {@link RegisteredTemplate#nifiTemplateId} correctly matching NiFi
*/
public RegisteredTemplate syncNiFiTemplateId(RegisteredTemplate template) {
String oldId = template.getNifiTemplateId();
if (oldId == null) {
oldId = "";
}
String nifiTemplateId = nifiTemplateIdForTemplateName(template.getTemplateName());
if (nifiTemplateId != null && !oldId.equalsIgnoreCase(nifiTemplateId)) {
template.setNifiTemplateId(nifiTemplateId);
return metadataAccess.commit(() -> {
RegisteredTemplate t = findRegisteredTemplateById(template.getId());
t.setNifiTemplateId(nifiTemplateId);
return saveTemplate(t);
}, MetadataAccess.ADMIN);
}
return template;
}
use of com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplate in project kylo by Teradata.
the class TemplateModelTransform method DOMAIN_TO_REGISTERED_TEMPLATE.
public final Function<FeedManagerTemplate, RegisteredTemplate> DOMAIN_TO_REGISTERED_TEMPLATE(boolean includeFeedNames, boolean includeEncryptedProperties) {
return new Function<FeedManagerTemplate, RegisteredTemplate>() {
@Override
public RegisteredTemplate apply(FeedManagerTemplate domain) {
String json = domain.getJson();
RegisteredTemplate template = deserialize(json, includeEncryptedProperties);
template.setId(domain.getId().toString());
template.setState(domain.getState().name());
template.setNifiTemplateId(domain.getNifiTemplateId());
template.setAllowPreconditions(domain.isAllowPreconditions());
List<Feed> feeds = domain.getFeeds();
template.setFeedsCount(feeds == null ? 0 : feeds.size());
template.setStream(domain.isStream());
if (includeFeedNames && feeds != null) {
template.setFeedNames(feeds.stream().map(feedManagerFeed -> FeedNameUtil.fullName(feedManagerFeed.getCategory().getSystemName(), feedManagerFeed.getName())).collect(Collectors.toSet()));
}
if (domain.getCreatedTime() != null) {
template.setCreateDate(domain.getCreatedTime().toDate());
}
if (domain.getModifiedTime() != null) {
template.setUpdateDate(domain.getModifiedTime().toDate());
}
template.setOrder(domain.getOrder());
template.setTemplateTableOption(domain.getTemplateTableOption());
securityTransform.applyAccessControl(domain, template);
return template;
}
};
}
use of com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplate in project kylo by Teradata.
the class ImportTemplateArchive method registerTemplate.
/**
* Register the template with the metadata and save it
*
* @param importTemplate the template data to import
* @param importOptions user options about what/how it should be imported
* @return the registered template that was saved
*/
private RegisteredTemplate registerTemplate(ImportTemplate importTemplate, ImportTemplateOptions importOptions) {
RegisteredTemplate template = importTemplate.getTemplateToImport();
ImportComponentOption registeredTemplateOption = importOptions.findImportComponentOption(ImportComponent.TEMPLATE_DATA);
if (registeredTemplateOption.isValidForImport()) {
UploadProgressMessage statusMessage = uploadProgressService.addUploadStatus(importOptions.getUploadKey(), "Registering template " + template.getTemplateName() + " with Kylo metadata.");
try {
importTemplate.setNifiTemplateId(template.getNifiTemplateId());
// register it in the system
metadataService.registerTemplate(template);
// get the new template
template = registeredTemplateService.findRegisteredTemplate(new RegisteredTemplateRequest.Builder().templateId(template.getId()).templateName(template.getTemplateName()).build());
importTemplate.setTemplateId(template.getId());
statusMessage.update("Registered template with Kylo metadata.", true);
} catch (Exception e) {
importTemplate.setSuccess(false);
Throwable root = ExceptionUtils.getRootCause(e);
String msg = root != null ? root.getMessage() : e.getMessage();
importTemplate.getTemplateResults().addError(NifiError.SEVERITY.WARN, "Error registering the template " + template.getTemplateName() + " in the Kylo metadata. " + msg, "");
statusMessage.update("Error registering template with Kylo metadata. " + msg, false);
}
}
return template;
}
use of com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplate in project kylo by Teradata.
the class ImportTemplateArchive method importFeedTemplate.
@Nullable
private RegisteredTemplate importFeedTemplate(RegisteredTemplate existingTemplate) {
RegisteredTemplate template = null;
niFiTemplateImport = importIntoNiFi(this.importTemplate, this.importTemplateOptions);
ImportComponentOption registeredTemplateImport = this.importTemplateOptions.findImportComponentOption(ImportComponent.TEMPLATE_DATA);
if (existingTemplate != null) {
importTemplate.setTemplateId(existingTemplate.getId());
}
if (registeredTemplateImport.isShouldImport() && registeredTemplateImport.isValidForImport()) {
UploadProgressMessage statusMessage = uploadProgressService.addUploadStatus(importTemplateOptions.getUploadKey(), "Importing feed template");
this.newTemplateInstance = create(niFiTemplateImport, statusMessage);
if (newTemplateInstance.isSuccess()) {
importTemplate.setSuccess(true);
RegisteredTemplate savedTemplate = registerTemplate(importTemplate, importTemplateOptions);
if (savedTemplate != null) {
template = savedTemplate;
}
} else {
importTemplate.setSuccess(false);
}
statusMessage.complete(importTemplate.isSuccess());
} else {
importTemplate.setSuccess(true);
}
return template;
}
Aggregations