use of com.thinkbiganalytics.nifi.rest.model.NifiProcessorSchedule in project kylo by Teradata.
the class NifiRestTest method testCreateFeed1.
// @Test
public void testCreateFeed1() {
TemplateDTO templateDTO = restClient.getTemplateByName("New Data Ingest");
String inputType = "org.apache.nifi.processors.standard.GetFile";
NifiProcessorSchedule schedule = new NifiProcessorSchedule();
schedule.setSchedulingStrategy("TIMER_DRIVEN");
schedule.setSchedulingPeriod("10 sec");
String inputPortName = "From Data Ingest Feed";
String feedOutputPortName = "To Data Ingest";
FeedMetadata feedMetadata = new FeedMetadata();
feedMetadata.setCategory(new FeedCategory());
feedMetadata.getCategory().setSystemName("online");
feedMetadata.setSystemFeedName("Scotts Feed");
CreateFeedBuilder.newFeed(restClient, nifiFlowCache, feedMetadata, templateDTO.getId(), new PropertyExpressionResolver(), propertyDescriptorTransform, createFeedBuilderCache, templateConnectionUtil).inputProcessorType(inputType).feedSchedule(schedule).addInputOutputPort(new InputOutputPort(inputPortName, feedOutputPortName)).build();
}
use of com.thinkbiganalytics.nifi.rest.model.NifiProcessorSchedule in project kylo by Teradata.
the class CreateFeedBuilder method updateFeedSchedule.
private void updateFeedSchedule(NifiProcessGroup newProcessGroup, ProcessorDTO input) {
if (feedSchedule != null && input != null) {
String strategy = feedSchedule.getSchedulingStrategy();
String schedule = feedSchedule.getSchedulingPeriod();
// if the input is of type TriggerFeed then make the schedule for that processor Timer Driven in the flow
if (inputProcessorType.equalsIgnoreCase(NifiFeedConstants.TRIGGER_FEED_PROCESSOR_CLASS)) {
strategy = NifiFeedConstants.SCHEDULE_STRATEGIES.TIMER_DRIVEN.name();
schedule = NifiFeedConstants.DEFAULT_TIGGER_FEED_PROCESSOR_SCHEDULE;
}
NifiProcessorSchedule scheduleCopy = new NifiProcessorSchedule(feedSchedule);
scheduleCopy.setProcessorId(input.getId());
scheduleCopy.setSchedulingPeriod(schedule);
scheduleCopy.setSchedulingStrategy(strategy);
try {
restClient.getNiFiRestClient().processors().schedule(scheduleCopy);
} catch (Exception e) {
String errorMsg = "Unable set Scheduling Information for feed " + input.getName() + " on " + input.getType() + ". Please check to make sure you set the Timer or Cron Expression correctly";
newProcessGroup.addError(input.getParentGroupId(), input.getId(), NifiError.SEVERITY.WARN, errorMsg, "Schedule");
newProcessGroup.setSuccess(false);
}
}
}
use of com.thinkbiganalytics.nifi.rest.model.NifiProcessorSchedule in project kylo by Teradata.
the class NifiRestTest method testLoad.
// @Test
public void testLoad() {
// setup constants for the test
String templateName = "Data Ingest";
int num = 10;
String processGroupName = "LoadTest";
String feedPrefix = "LT_";
String inputType = "org.apache.nifi.processors.standard.GetFile";
List<NifiProperty> templateProperties = new ArrayList<>();
String schedulePeriod = "10 sec";
String GET_FILE_PROCESSOR_NAME = "Poll filesystem";
String UPDATE_PARAMETERS_PROCESSOR_NAME = "Update flow parameters";
String INPUT_DIRECTORY_PROPERTY = "Input Directory";
String SOURCE_PROPERTY = "source";
String ENTITY_PROPERTY = "entity";
try {
TemplateDTO template = restClient.getTemplateByName(templateName);
List<NifiProperty> propertyList = restClient.getPropertiesForTemplate(template.getId(), true);
NifiProperty inputDirectory = NifiPropertyUtil.getProperty(GET_FILE_PROCESSOR_NAME, INPUT_DIRECTORY_PROPERTY, propertyList);
NifiProperty entity = NifiPropertyUtil.getProperty(UPDATE_PARAMETERS_PROCESSOR_NAME, SOURCE_PROPERTY, propertyList);
NifiProperty source = NifiPropertyUtil.getProperty(UPDATE_PARAMETERS_PROCESSOR_NAME, ENTITY_PROPERTY, propertyList);
templateProperties.add(inputDirectory);
templateProperties.add(entity);
templateProperties.add(source);
NifiProcessorSchedule schedule = new NifiProcessorSchedule();
schedule.setSchedulingStrategy("TIMER_DRIVEN");
schedule.setSchedulingPeriod(schedulePeriod);
for (int i = 0; i < num; i++) {
String feedName = feedPrefix + i;
List<NifiProperty> instanceProperties = NifiPropertyUtil.copyProperties(templateProperties);
// update the properties
NifiPropertyUtil.getProperty(GET_FILE_PROCESSOR_NAME, INPUT_DIRECTORY_PROPERTY, instanceProperties).setValue("/tmp/" + feedName);
NifiPropertyUtil.getProperty(UPDATE_PARAMETERS_PROCESSOR_NAME, SOURCE_PROPERTY, instanceProperties).setValue(processGroupName);
NifiPropertyUtil.getProperty(UPDATE_PARAMETERS_PROCESSOR_NAME, ENTITY_PROPERTY, instanceProperties).setValue(feedName);
FeedMetadata feedMetadata = new FeedMetadata();
feedMetadata.setCategory(new FeedCategory());
feedMetadata.getCategory().setSystemName(processGroupName);
feedMetadata.setSystemFeedName("feedPrefix + i");
CreateFeedBuilder.newFeed(restClient, nifiFlowCache, feedMetadata, template.getId(), new PropertyExpressionResolver(), propertyDescriptorTransform, createFeedBuilderCache, templateConnectionUtil).inputProcessorType(inputType).feedSchedule(schedule).properties(instanceProperties).build();
}
} catch (Exception e) {
e.printStackTrace();
}
}
use of com.thinkbiganalytics.nifi.rest.model.NifiProcessorSchedule in project kylo by Teradata.
the class NifiRestTest method testCreateFeed.
// @Test
public void testCreateFeed() throws Exception {
TemplateDTO templateDTO = restClient.getTemplateByName("New Data Ingest");
String inputType = "org.apache.nifi.processors.standard.GetFile";
NifiProcessorSchedule schedule = new NifiProcessorSchedule();
schedule.setSchedulingStrategy("TIMER_DRIVEN");
schedule.setSchedulingPeriod("10 sec");
String inputPortName = "From Data Ingest Feed";
String feedOutputPortName = "To Data Ingest";
FeedMetadata feedMetadata = new FeedMetadata();
feedMetadata.setCategory(new FeedCategory());
feedMetadata.getCategory().setSystemName("online");
feedMetadata.setSystemFeedName("Scotts Feed");
CreateFeedBuilder.newFeed(restClient, nifiFlowCache, feedMetadata, templateDTO.getId(), new PropertyExpressionResolver(), propertyDescriptorTransform, createFeedBuilderCache, templateConnectionUtil).inputProcessorType(inputType).feedSchedule(schedule).addInputOutputPort(new InputOutputPort(inputPortName, feedOutputPortName)).build();
}
Aggregations