Search in sources :

Example 1 with LegacyNifiRestClient

use of com.thinkbiganalytics.nifi.rest.client.LegacyNifiRestClient in project kylo by Teradata.

the class TemplateCreationHelperTest method updateControllerServiceReferencesWithRecursive.

/**
 * Verify recursively enabling controller services when updating processor properties.
 */
@Test
public void updateControllerServiceReferencesWithRecursive() {
    final List<ControllerServiceDTO> updatedControllerServices = new ArrayList<>();
    final List<NifiProperty> updatedProperties = new ArrayList<>();
    // Mock NiFi client
    final NiFiControllerServicesRestClient controllerServicesRestClient = Mockito.mock(NiFiControllerServicesRestClient.class);
    Mockito.when(controllerServicesRestClient.update(Mockito.any())).thenAnswer(answer -> {
        final ControllerServiceDTO controllerService = answer.getArgumentAt(0, ControllerServiceDTO.class);
        updatedControllerServices.add(controllerService);
        return controllerService;
    });
    final NiFiRestClient restClient = Mockito.mock(NiFiRestClient.class);
    Mockito.when(restClient.controllerServices()).thenReturn(controllerServicesRestClient);
    // Mock Legacy NiFi client
    final LegacyNifiRestClient legacyRestClient = Mockito.mock(LegacyNifiRestClient.class);
    Mockito.when(legacyRestClient.enableControllerServiceAndSetProperties(Mockito.any(), Mockito.any())).thenReturn(new ControllerServiceDTO());
    Mockito.when(legacyRestClient.getNiFiRestClient()).thenReturn(restClient);
    Mockito.when(legacyRestClient.getPropertyDescriptorTransform()).thenReturn(new MockNiFiPropertyDescriptorTransform());
    Mockito.doAnswer(invocation -> {
        updatedProperties.add(invocation.getArgumentAt(2, NifiProperty.class));
        return null;
    }).when(legacyRestClient).updateProcessorProperty(Mockito.isNull(String.class), Mockito.eq("P1"), Mockito.any());
    final ControllerServiceDTO service1 = new ControllerServiceDTO();
    service1.setDescriptors(Collections.singletonMap("service", newPropertyDescriptor("service", "com.example.Service2", "S2")));
    service1.setId("S1");
    service1.setName("Service1");
    service1.setProperties(newHashMap("service", "invalid"));
    service1.setState("DISABLED");
    final ControllerServiceDTO service2 = new ControllerServiceDTO();
    service2.setId("S2");
    service2.setName("Service2");
    service2.setProperties(new HashMap<>());
    service2.setState("ENABLED");
    Mockito.when(legacyRestClient.getControllerServices()).thenReturn(ImmutableSet.of(service1, service2));
    // Mock processors
    final ProcessorConfigDTO config = new ProcessorConfigDTO();
    config.setDescriptors(Collections.singletonMap("service", newPropertyDescriptor("service", "com.example.Service1", "S1")));
    config.setProperties(Collections.singletonMap("service", "invalid"));
    final ProcessorDTO processor = new ProcessorDTO();
    processor.setId("P1");
    processor.setName("Processor1");
    processor.setConfig(config);
    // Update processors
    final TemplateCreationHelper helper = new TemplateCreationHelper(legacyRestClient);
    helper.snapshotControllerServiceReferences();
    helper.identifyNewlyCreatedControllerServiceReferences();
    helper.updateControllerServiceReferences(Collections.singletonList(processor));
    // Verify updated properties
    Assert.assertEquals("Property 'Service' not set on controller service 'Server1'.", 1, updatedControllerServices.size());
    Assert.assertEquals("S2", updatedControllerServices.get(0).getProperties().get("service"));
    Assert.assertEquals("Property 'Service' not set on processor 'Processor1'.", 1, updatedProperties.size());
    Assert.assertEquals("S1", updatedProperties.get(0).getValue());
}
Also used : ControllerServiceDTO(org.apache.nifi.web.api.dto.ControllerServiceDTO) ArrayList(java.util.ArrayList) LegacyNifiRestClient(com.thinkbiganalytics.nifi.rest.client.LegacyNifiRestClient) NiFiControllerServicesRestClient(com.thinkbiganalytics.nifi.rest.client.NiFiControllerServicesRestClient) ProcessorConfigDTO(org.apache.nifi.web.api.dto.ProcessorConfigDTO) NiFiRestClient(com.thinkbiganalytics.nifi.rest.client.NiFiRestClient) ProcessorDTO(org.apache.nifi.web.api.dto.ProcessorDTO) NifiProperty(com.thinkbiganalytics.nifi.rest.model.NifiProperty) Test(org.junit.Test)

Example 2 with LegacyNifiRestClient

use of com.thinkbiganalytics.nifi.rest.client.LegacyNifiRestClient in project kylo by Teradata.

the class TemplateCreationHelperTest method updateControllerServiceReferencesWithEnabled.

/**
 * Verify preferring enabled controller services over disabled controller services when updating processor properties.
 */
@Test
public void updateControllerServiceReferencesWithEnabled() {
    final AtomicReference<NifiProperty> updateProperty = new AtomicReference<>();
    // Mock NiFi client
    final LegacyNifiRestClient restClient = Mockito.mock(LegacyNifiRestClient.class);
    Mockito.when(restClient.getPropertyDescriptorTransform()).thenReturn(new MockNiFiPropertyDescriptorTransform());
    Mockito.doAnswer(invocation -> {
        updateProperty.set(invocation.getArgumentAt(2, NifiProperty.class));
        return null;
    }).when(restClient).updateProcessorProperty(Mockito.isNull(String.class), Mockito.eq("P1"), Mockito.any());
    final ControllerServiceDTO service1 = new ControllerServiceDTO();
    service1.setId("S1");
    service1.setName("Service1");
    service1.setProperties(Collections.emptyMap());
    service1.setState("DISABLED");
    final ControllerServiceDTO service2 = new ControllerServiceDTO();
    service2.setId("S2");
    service2.setName("Service2");
    service2.setProperties(Collections.emptyMap());
    service2.setState("ENABLED");
    Mockito.when(restClient.getControllerServices()).thenReturn(ImmutableSet.of(service1, service2));
    // Mock processors
    final ProcessorConfigDTO config = new ProcessorConfigDTO();
    config.setDescriptors(Collections.singletonMap("service", newPropertyDescriptor("service", "com.example.Service", "S1", "S2")));
    config.setProperties(Collections.singletonMap("service", "invalid"));
    final ProcessorDTO processor = new ProcessorDTO();
    processor.setId("P1");
    processor.setName("Processor1");
    processor.setConfig(config);
    // Update processors
    final TemplateCreationHelper helper = new TemplateCreationHelper(restClient);
    helper.snapshotControllerServiceReferences();
    helper.identifyNewlyCreatedControllerServiceReferences();
    helper.updateControllerServiceReferences(Collections.singletonList(processor));
    // Verify new processor properties
    Assert.assertNotNull("Property 'Service' not set on processor 'Processor1'.", updateProperty.get());
    Assert.assertEquals("S2", updateProperty.get().getValue());
}
Also used : ProcessorConfigDTO(org.apache.nifi.web.api.dto.ProcessorConfigDTO) ControllerServiceDTO(org.apache.nifi.web.api.dto.ControllerServiceDTO) ProcessorDTO(org.apache.nifi.web.api.dto.ProcessorDTO) NifiProperty(com.thinkbiganalytics.nifi.rest.model.NifiProperty) LegacyNifiRestClient(com.thinkbiganalytics.nifi.rest.client.LegacyNifiRestClient) AtomicReference(java.util.concurrent.atomic.AtomicReference) Test(org.junit.Test)

Example 3 with LegacyNifiRestClient

use of com.thinkbiganalytics.nifi.rest.client.LegacyNifiRestClient in project kylo by Teradata.

the class NifiRestTest method setupRestClient.

@Before
public void setupRestClient() {
    restClient = new LegacyNifiRestClient();
    NifiRestClientConfig clientConfig = new NifiRestClientConfig();
    // clientConfig.setHost("localhost");
    clientConfig.setHost("34.208.236.190");
    clientConfig.setPort(8079);
    NiFiRestClient c = new NiFiRestClientV1(clientConfig);
    restClient.setClient(c);
    nifiFlowCache = new NifiFlowCacheImpl();
    propertyDescriptorTransform = new NiFiPropertyDescriptorTransformV1();
    createFeedBuilderCache = new NiFiObjectCache();
    createFeedBuilderCache.setRestClient(restClient);
    templateConnectionUtil = new TemplateConnectionUtil();
    templateConnectionUtil.setRestClient(restClient);
    templateConnectionUtil.setNifiFlowCache(nifiFlowCache);
    templateConnectionUtil.setNiFiObjectCache(createFeedBuilderCache);
    templateConnectionUtil.setPropertyDescriptorTransform(propertyDescriptorTransform);
}
Also used : NiFiRestClient(com.thinkbiganalytics.nifi.rest.client.NiFiRestClient) NiFiPropertyDescriptorTransformV1(com.thinkbiganalytics.nifi.v1.rest.model.NiFiPropertyDescriptorTransformV1) NifiRestClientConfig(com.thinkbiganalytics.nifi.rest.client.NifiRestClientConfig) TemplateConnectionUtil(com.thinkbiganalytics.feedmgr.nifi.TemplateConnectionUtil) LegacyNifiRestClient(com.thinkbiganalytics.nifi.rest.client.LegacyNifiRestClient) NiFiRestClientV1(com.thinkbiganalytics.nifi.v1.rest.client.NiFiRestClientV1) NifiFlowCacheImpl(com.thinkbiganalytics.feedmgr.nifi.cache.NifiFlowCacheImpl) Before(org.junit.Before)

Aggregations

LegacyNifiRestClient (com.thinkbiganalytics.nifi.rest.client.LegacyNifiRestClient)3 NiFiRestClient (com.thinkbiganalytics.nifi.rest.client.NiFiRestClient)2 NifiProperty (com.thinkbiganalytics.nifi.rest.model.NifiProperty)2 ControllerServiceDTO (org.apache.nifi.web.api.dto.ControllerServiceDTO)2 ProcessorConfigDTO (org.apache.nifi.web.api.dto.ProcessorConfigDTO)2 ProcessorDTO (org.apache.nifi.web.api.dto.ProcessorDTO)2 Test (org.junit.Test)2 TemplateConnectionUtil (com.thinkbiganalytics.feedmgr.nifi.TemplateConnectionUtil)1 NifiFlowCacheImpl (com.thinkbiganalytics.feedmgr.nifi.cache.NifiFlowCacheImpl)1 NiFiControllerServicesRestClient (com.thinkbiganalytics.nifi.rest.client.NiFiControllerServicesRestClient)1 NifiRestClientConfig (com.thinkbiganalytics.nifi.rest.client.NifiRestClientConfig)1 NiFiRestClientV1 (com.thinkbiganalytics.nifi.v1.rest.client.NiFiRestClientV1)1 NiFiPropertyDescriptorTransformV1 (com.thinkbiganalytics.nifi.v1.rest.model.NiFiPropertyDescriptorTransformV1)1 ArrayList (java.util.ArrayList)1 AtomicReference (java.util.concurrent.atomic.AtomicReference)1 Before (org.junit.Before)1