We are operating with version 1.24.0 of NiFi and Registry.

We have been struggling with how to get a Baseline Flow for a Product to be 1) 
Deployable to a Brand new Instance of NiFi/Registry environment and more so to 
2) updated in that environment.

We have somewhat tackled the deployment, but we have no idea whether it is 
sustainable because we can't figure out how to update all our existing 
environments - DEV, QA, UAT, PROD, etc....

We created a Baseline Flow Template and stored that in Azure DevOps Git.
We then wrote scripts that we take that Template and "deploy" it into a 
NiFi/Registry environment - we start with a local Docker Desktop environment, 
but these scripts could be used for any "blank slate" environment that has a 
NiFi and Registry installed.  This all works fine - we use a set of Context 
Parameters that all contain the specific things for each Environment, like 
server names, IDs, Passwords, etc... Thus, we establish the Baseline Flow in 
NiFi and start Version Control on it which puts the Flow in Registry.

But we don't know what to do when we want to update this Template or Flow.

We have tried several things to figure out how to modify the flow and then save 
these changes in our local instances of NiFi and Registry, which is the place 
where Development happens, - using both the "Download flow definition" from 
NiFi and the "Export version" from Registry.  But neither option allows us to 
load these "Flows" into the Registry of another environment and update the 
existing Baseline Flows there with the use of Version Control.  We always get 
errors about there being flowfiles in queues.  Message like this:
Failed to perform update flow request due to 
StandardProcessGroup[identifier=d80b3ed3-8e45-3cf4-d1e9-da6b28c97392,name=Baseline
 Processing Group] cannot be updated to the proposed flow because the proposed 
flow does not contain a match for 
Connection[ID=7ad36423-e0ef-3287-d087-87633b60ab1e, Source 
ID=7f446e33-2bfc-3e52-8736-910297920464, Dest 
ID=aaa13731-1598-3ae2-249b-2e96c0af1212] and the connection currently has data 
in the queue.

I have watch a video about how a Flow can be connected to a Git repository that 
is set up on the Registry machine, but I'm not sure how that would enable 
changes made locally to be applied to other environments.

Is there some guidance or documentation about how to do updates to various 
instances/environments based on a single source of a Flow stored and maintained 
in Git?

Is it always the case that if you update the Flow with Version Control that all 
queues have to be empty and all of the running processors are turned off after 
the update?  Does this mean that the pattern for a Baseline Flow must have 
"entry" processes outside of it that will all flowfiles to queue up outside of 
it so that updates to the Flow can happen after the queues in the Flow have 
been emptied?

If there is a better place to ask this question, what is it?  I couldn't figure 
out how to get access to the Slack group.

Thanks,
David


[A black and blue text  Description automatically generated]
David Steiner
Technical Architect
RevHub
Cell: (513) 594-1737

Reply via email to