Do you have any controller services in process groups above the “controller
container”?

I can’t remember if it is based on only the immediate parent, or the entire
hierarchy.

On Sat, May 23, 2020 at 8:00 PM Andrew Grande <apere...@gmail.com> wrote:

> Maybe something is going on with specific types or hierarchies. I've
> noticed DefaultSslContext didn't get assigned, even though it was the only
> one available. Does autowiring logic apply to this one?
>
> Andrew
>
> On Sat, May 23, 2020, 3:54 PM Eric Secules <esecu...@gmail.com> wrote:
>
>> Hi Bryan,
>>
>> I have noticed this behaviour sometimes, but not all the time I am
>> running the latest registry and NiFi versions. I haven't found a conclusive
>> pattern but I have a hunch that it has to do with having versioned process
>> groups within versioned process groups. My deployment strategy is this:
>>
>>    - Have an outer process group which only contains controller
>>    services, called the "Controller Container"
>>       - For now I just have one controller service per type of
>>       controller service.
>>       - When deploying, download all production flows inside the
>>    Controller Container.
>>    - I noticed that some of the controller services find their match,
>>    but others don't leaving me with roughly 70 invalid processors out of 800.
>>
>> If you could point me in the right direction of the code which is
>> supposed to do the matching I might be able to debug better.
>>
>> Thanks,
>> Eric
>>
>> On Sat, May 23, 2020 at 3:27 PM Bryan Bende <bbe...@gmail.com> wrote:
>>
>>> If you use registry >= 0.5.0 And nifi >= 1.10.0, then it will auto
>>> select external controller services with the same name as long as there is
>>> only one of the same type with same name (name is not unique).
>>>
>>> On Sat, May 23, 2020 at 3:34 PM Andy LoPresto <alopre...@apache.org>
>>> wrote:
>>>
>>>> My position is that we don’t claim completely automated deployment as a
>>>> feature, so manually setting the controller service IDs is not exposed.
>>>> Technically, they are defined in the flow.xml.gz and could be modified by
>>>> an administrator to be static after generation. This would require frequent
>>>> manual manipulation of the flow.xml.gz in various environments and frequent
>>>> restarts of the NiFi service. I do not recommend this.
>>>>
>>>>
>>>> Andy LoPresto
>>>> alopre...@apache.org
>>>> *alopresto.apa...@gmail.com <alopresto.apa...@gmail.com>*
>>>> He/Him
>>>> PGP Fingerprint: 70EC B3E5 98A6 5A3F D3C4  BACE 3C6E F65B 2F7D EF69
>>>>
>>>> On May 23, 2020, at 11:05 AM, Andrew Grande <apere...@gmail.com> wrote:
>>>>
>>>> Aren't those IDs generated? How can one enforce it?
>>>>
>>>> Andrew
>>>>
>>>> On Sat, May 23, 2020, 10:53 AM Andy LoPresto <alopre...@apache.org>
>>>> wrote:
>>>>
>>>>> If you want the process to be completely automated, you would have to
>>>>> enforce the controller service IDs to be identical across environments.
>>>>> Otherwise deployment would need a manual intervention to reference the
>>>>> specific controller service in the proper component.
>>>>>
>>>>> Andy LoPresto
>>>>> alopre...@apache.org
>>>>> *alopresto.apa...@gmail.com <alopresto.apa...@gmail.com>*
>>>>> He/Him
>>>>> PGP Fingerprint: 70EC B3E5 98A6 5A3F D3C4  BACE 3C6E F65B 2F7D EF69
>>>>>
>>>>> On May 22, 2020, at 3:57 PM, Eric Secules <esecu...@gmail.com> wrote:
>>>>>
>>>>> Hi Andy,
>>>>>
>>>>> Given that you have a flow which operates on two different S3 accounts
>>>>> for example, how would you do deployment automation? Do you mandate that
>>>>> the controller service with the same ID must exist in both a development
>>>>> and production environment rather than try to connect a processor to a
>>>>> matching controller service?
>>>>>
>>>>> -Eric
>>>>>
>>>>> On Fri, May 22, 2020 at 3:44 PM Andy LoPresto <alopre...@apache.org>
>>>>> wrote:
>>>>>
>>>>>> Eric,
>>>>>>
>>>>>> I can’t answer all these questions but I would definitely have
>>>>>> hesitations around building an expectation that there is only one 
>>>>>> instance
>>>>>> of any given controller service type in an entire canvas. I can think of
>>>>>> numerous flows (this may not affect your particular flows, but the 
>>>>>> concepts
>>>>>> still apply) which require multiple instances of the same controller
>>>>>> service type to be available:
>>>>>>
>>>>>> * A flow which invokes a mutually-authenticated TLS HTTP API,
>>>>>> consumes data, transforms it, and posts it to another mTLS API
>>>>>> * A flow which retrieves objects from one S3 bucket and puts them
>>>>>> into an S3 bucket in a different AWS account
>>>>>> * A flow which connects to one database and retrieves data,
>>>>>> transforms it, and persists it to another database
>>>>>>
>>>>>> If there is only _one_ StandardSSLContextService,
>>>>>> AWSCredentialsProviderControllerService, or DBCPConnectionPool available 
>>>>>> in
>>>>>> the entire controller, these flows cannot exist.
>>>>>>
>>>>>> I am not saying the retrieval of new flow versions and the matching
>>>>>> of referenced controller services cannot be improved, but I would
>>>>>> definitely advise caution before going too far down this path without
>>>>>> considering all possible side effects and potential constraints on future
>>>>>> flow development.
>>>>>>
>>>>>>
>>>>>> Andy LoPresto
>>>>>> alopre...@apache.org
>>>>>> *alopresto.apa...@gmail.com <alopresto.apa...@gmail.com>*
>>>>>> He/Him
>>>>>> PGP Fingerprint: 70EC B3E5 98A6 5A3F D3C4  BACE 3C6E F65B 2F7D EF69
>>>>>>
>>>>>> On May 22, 2020, at 3:01 PM, Eric Secules <esecu...@gmail.com> wrote:
>>>>>>
>>>>>> Hello everyone,
>>>>>>
>>>>>> I am running into an issue with automated deployment using nipyapi
>>>>>> <https://nipyapi.readthedocs.io/en/latest/>. We would like to be
>>>>>> able to pull down flows from a registry and have them ready to go once 
>>>>>> all
>>>>>> their controller services have been turned on. But there are a few 
>>>>>> issues.
>>>>>> Sometimes the flows that we download from the registry reference 
>>>>>> controller
>>>>>> service IDs that don't exist on this machine because the flow was 
>>>>>> developed
>>>>>> in a different environment. That's easy enough to fix if there is just 
>>>>>> one
>>>>>> applicable controller service, but not when there are two or more.
>>>>>>
>>>>>> We have taken the decision to put all our controller services at the
>>>>>> top level and have one of each kind we need, rather than have multiple of
>>>>>> the same controller service attached to individual process groups.
>>>>>>
>>>>>> We are running into a problem where some processors can either
>>>>>> connect to a JSONTreeReader or a CSVReader and there's no indication in 
>>>>>> the
>>>>>> ProcessorDTO object which type it was originally connected to, just a 
>>>>>> GUID
>>>>>> of a controller service that doesn't exist in this deployment.
>>>>>>
>>>>>> Would it be possible to include the type or name of the controller
>>>>>> service in the component.config.descriptors section? Are we going about 
>>>>>> it
>>>>>> the wrong way trying to simplify down to the least number of controller
>>>>>> services?
>>>>>>
>>>>>> Thanks,
>>>>>> Eric
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>> --
>>> Sent from Gmail Mobile
>>>
>> --
Sent from Gmail Mobile

Reply via email to