Search in sources :

Example 21 with VersionControlInformation

use of org.apache.nifi.registry.flow.VersionControlInformation in project nifi by apache.

the class ControllerSearchServiceTest method testSearchInThirdLevelParentNotAuthorizedWithVersionControlInTheGroup.

@Test
public void testSearchInThirdLevelParentNotAuthorizedWithVersionControlInTheGroup() {
    // root level PG
    final ProcessGroup rootProcessGroup = setupMockedProcessGroup("root", null, true, variableRegistry, null);
    // first level PGs
    final ProcessGroup firstLevelAProcessGroup = setupMockedProcessGroup("firstLevelA", rootProcessGroup, true, variableRegistry, null);
    final ProcessGroup firstLevelBProcessGroup = setupMockedProcessGroup("firstLevelB", rootProcessGroup, true, variableRegistry, null);
    // second level PGs
    final ProcessGroup secondLevelAProcessGroup = setupMockedProcessGroup("secondLevelA", firstLevelAProcessGroup, true, variableRegistry, null);
    final ProcessGroup secondLevelBProcessGroup = setupMockedProcessGroup("secondLevelB", firstLevelBProcessGroup, true, variableRegistry, null);
    // third level PGs - not authorized
    final VersionControlInformation versionControlInformation = setupVC();
    final ProcessGroup thirdLevelAProcessGroup = setupMockedProcessGroup("thirdLevelA", secondLevelAProcessGroup, false, variableRegistry, versionControlInformation);
    final ProcessGroup thirdLevelBProcessGroup = setupMockedProcessGroup("thirdLevelB", secondLevelAProcessGroup, false, variableRegistry, null);
    // link PGs together
    Mockito.doReturn(new HashSet<ProcessGroup>() {

        {
            add(firstLevelAProcessGroup);
            add(firstLevelBProcessGroup);
        }
    }).when(rootProcessGroup).getProcessGroups();
    Mockito.doReturn(new HashSet<ProcessGroup>() {

        {
            add(secondLevelAProcessGroup);
        }
    }).when(firstLevelAProcessGroup).getProcessGroups();
    Mockito.doReturn(new HashSet<ProcessGroup>() {

        {
            add(secondLevelBProcessGroup);
        }
    }).when(firstLevelBProcessGroup).getProcessGroups();
    Mockito.doReturn(new HashSet<ProcessGroup>() {

        {
            add(thirdLevelAProcessGroup);
            add(thirdLevelBProcessGroup);
        }
    }).when(secondLevelAProcessGroup).getProcessGroups();
    // setup processor
    setupMockedProcessor("foobar", thirdLevelAProcessGroup, true, variableRegistry);
    // perform search
    service.search(searchResultsDTO, "foo", rootProcessGroup);
    assertTrue(searchResultsDTO.getProcessorResults().size() == 1);
    assertTrue(searchResultsDTO.getProcessorResults().get(0).getId().equals("foobarId"));
    assertTrue(searchResultsDTO.getProcessorResults().get(0).getParentGroup().getId().equals("thirdLevelAId"));
    assertTrue(searchResultsDTO.getProcessorResults().get(0).getParentGroup().getName() == null);
    assertTrue(searchResultsDTO.getProcessorResults().get(0).getVersionedGroup() != null);
    assertTrue(searchResultsDTO.getProcessorResults().get(0).getVersionedGroup().getId().equals("thirdLevelAId"));
    assertTrue(searchResultsDTO.getProcessorResults().get(0).getVersionedGroup().getName() == null);
}
Also used : VersionControlInformation(org.apache.nifi.registry.flow.VersionControlInformation) StandardVersionControlInformation(org.apache.nifi.registry.flow.StandardVersionControlInformation) ProcessGroup(org.apache.nifi.groups.ProcessGroup) Test(org.junit.Test)

Example 22 with VersionControlInformation

use of org.apache.nifi.registry.flow.VersionControlInformation in project nifi by apache.

the class StandardProcessGroupDAO method verifyDeleteFlowRegistry.

@Override
public void verifyDeleteFlowRegistry(String registryId) {
    final ProcessGroup rootGroup = flowController.getRootGroup();
    final VersionControlInformation versionControlInformation = rootGroup.getVersionControlInformation();
    if (versionControlInformation != null && versionControlInformation.getRegistryIdentifier().equals(registryId)) {
        throw new IllegalStateException("The Registry cannot be removed because a Process Group currently under version control is tracking to it.");
    }
    final Set<VersionControlInformation> trackedVersionControlInformation = rootGroup.findAllProcessGroups().stream().map(group -> group.getVersionControlInformation()).filter(Objects::nonNull).filter(vci -> vci.getRegistryIdentifier().equals(registryId)).collect(Collectors.toSet());
    if (!trackedVersionControlInformation.isEmpty()) {
        throw new IllegalStateException("The Registry cannot be removed because a Process Group currently under version control is tracking to it.");
    }
}
Also used : ProcessorNode(org.apache.nifi.controller.ProcessorNode) ProcessGroup(org.apache.nifi.groups.ProcessGroup) VariableEntity(org.apache.nifi.web.api.entity.VariableEntity) ControllerServiceNode(org.apache.nifi.controller.service.ControllerServiceNode) Port(org.apache.nifi.connectable.Port) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) FlowRegistry(org.apache.nifi.registry.flow.FlowRegistry) Future(java.util.concurrent.Future) ProcessGroupDTO(org.apache.nifi.web.api.dto.ProcessGroupDTO) NiFiUser(org.apache.nifi.authorization.user.NiFiUser) VersionedProcessGroup(org.apache.nifi.registry.flow.VersionedProcessGroup) VersionControlInformationDTO(org.apache.nifi.web.api.dto.VersionControlInformationDTO) Map(java.util.Map) ResourceNotFoundException(org.apache.nifi.web.ResourceNotFoundException) VariableRegistryDTO(org.apache.nifi.web.api.dto.VariableRegistryDTO) Connectable(org.apache.nifi.connectable.Connectable) RemoteGroupPort(org.apache.nifi.remote.RemoteGroupPort) Collection(java.util.Collection) Set(java.util.Set) VersionedFlowSnapshot(org.apache.nifi.registry.flow.VersionedFlowSnapshot) NiFiRegistryFlowMapper(org.apache.nifi.registry.flow.mapping.NiFiRegistryFlowMapper) Collectors(java.util.stream.Collectors) FlowController(org.apache.nifi.controller.FlowController) Objects(java.util.Objects) List(java.util.List) Position(org.apache.nifi.connectable.Position) ScheduledState(org.apache.nifi.controller.ScheduledState) VersionControlInformation(org.apache.nifi.registry.flow.VersionControlInformation) RemoteProcessGroup(org.apache.nifi.groups.RemoteProcessGroup) ControllerServiceState(org.apache.nifi.controller.service.ControllerServiceState) ProcessGroupDAO(org.apache.nifi.web.dao.ProcessGroupDAO) StandardVersionControlInformation(org.apache.nifi.registry.flow.StandardVersionControlInformation) Collections(java.util.Collections) VersionControlInformation(org.apache.nifi.registry.flow.VersionControlInformation) StandardVersionControlInformation(org.apache.nifi.registry.flow.StandardVersionControlInformation) ProcessGroup(org.apache.nifi.groups.ProcessGroup) VersionedProcessGroup(org.apache.nifi.registry.flow.VersionedProcessGroup) RemoteProcessGroup(org.apache.nifi.groups.RemoteProcessGroup) Objects(java.util.Objects)

Aggregations

VersionControlInformation (org.apache.nifi.registry.flow.VersionControlInformation)22 ProcessGroup (org.apache.nifi.groups.ProcessGroup)14 VersionedProcessGroup (org.apache.nifi.registry.flow.VersionedProcessGroup)12 StandardVersionControlInformation (org.apache.nifi.registry.flow.StandardVersionControlInformation)10 Port (org.apache.nifi.connectable.Port)8 RemoteGroupPort (org.apache.nifi.remote.RemoteGroupPort)8 RemoteProcessGroup (org.apache.nifi.groups.RemoteProcessGroup)7 VersionControlInformationDTO (org.apache.nifi.web.api.dto.VersionControlInformationDTO)6 ArrayList (java.util.ArrayList)5 Connectable (org.apache.nifi.connectable.Connectable)5 Connection (org.apache.nifi.connectable.Connection)5 Funnel (org.apache.nifi.connectable.Funnel)5 LocalPort (org.apache.nifi.connectable.LocalPort)5 ControllerServiceNode (org.apache.nifi.controller.service.ControllerServiceNode)5 FlowRegistry (org.apache.nifi.registry.flow.FlowRegistry)5 VersionedFlowState (org.apache.nifi.registry.flow.VersionedFlowState)5 IOException (java.io.IOException)4 LinkedHashSet (java.util.LinkedHashSet)4 Position (org.apache.nifi.connectable.Position)4 Label (org.apache.nifi.controller.label.Label)4