Search in sources :

Example 11 with RegisteredTemplate

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;
    }
}
Also used : RegisteredTemplate(com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplate) FeedManagerTemplate(com.thinkbiganalytics.metadata.api.template.FeedManagerTemplate)

Example 12 with RegisteredTemplate

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;
}
Also used : RegisteredTemplate(com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplate)

Example 13 with RegisteredTemplate

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;
        }
    };
}
Also used : Function(com.google.common.base.Function) RegisteredTemplate(com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplate) FeedManagerTemplate(com.thinkbiganalytics.metadata.api.template.FeedManagerTemplate) Feed(com.thinkbiganalytics.metadata.api.feed.Feed)

Example 14 with RegisteredTemplate

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;
}
Also used : UploadProgressMessage(com.thinkbiganalytics.feedmgr.rest.model.UploadProgressMessage) ImportComponentOption(com.thinkbiganalytics.feedmgr.rest.model.ImportComponentOption) RegisteredTemplate(com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplate) RegisteredTemplateRequest(com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplateRequest)

Example 15 with RegisteredTemplate

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;
}
Also used : UploadProgressMessage(com.thinkbiganalytics.feedmgr.rest.model.UploadProgressMessage) ImportComponentOption(com.thinkbiganalytics.feedmgr.rest.model.ImportComponentOption) RegisteredTemplate(com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplate) Nullable(javax.annotation.Nullable)

Aggregations

RegisteredTemplate (com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplate)38 FeedManagerTemplate (com.thinkbiganalytics.metadata.api.template.FeedManagerTemplate)14 NifiProperty (com.thinkbiganalytics.nifi.rest.model.NifiProperty)12 ArrayList (java.util.ArrayList)12 FeedMetadata (com.thinkbiganalytics.feedmgr.rest.model.FeedMetadata)10 HashSet (java.util.HashSet)10 RegisteredTemplateRequest (com.thinkbiganalytics.feedmgr.rest.model.RegisteredTemplateRequest)9 List (java.util.List)9 Collectors (java.util.stream.Collectors)9 Inject (javax.inject.Inject)9 TemplateDTO (org.apache.nifi.web.api.dto.TemplateDTO)9 LegacyNifiRestClient (com.thinkbiganalytics.nifi.rest.client.LegacyNifiRestClient)8 AccessController (com.thinkbiganalytics.security.AccessController)8 StringUtils (org.apache.commons.lang3.StringUtils)8 ReusableTemplateConnectionInfo (com.thinkbiganalytics.feedmgr.rest.model.ReusableTemplateConnectionInfo)7 FeedServicesAccessControl (com.thinkbiganalytics.feedmgr.security.FeedServicesAccessControl)7 MetadataAccess (com.thinkbiganalytics.metadata.api.MetadataAccess)7 Collections (java.util.Collections)7 Map (java.util.Map)7 Set (java.util.Set)7