I have thought about this in the past, too.  Here's a scenario where I
could never really lay down an approach I was happy with.

Consider that a NiFi user searches the NiFi registry and finds the PutMongo
processor.  Registry knows the PutMongo processor is in the
nifi-mongodb-nar, and through its Nar-Dependency-Id that it has a
dependency on a controller service interface in
nifi-mongodb-client-service-api-nar.  Great, the user can then download and
install those two nars.  How would we then suggest that the user also needs
a MongoDBClientService controller service implementation, such as that in
the nifi-mongodb-services-nar?

I'm not looking for an answer now, of course, but I just wanted to feed the
discussion.

Thanks,
-- Mike


On Tue, Nov 13, 2018 at 1:34 PM Bryan Bende <bbe...@gmail.com> wrote:

> Mark,
>
> I think there are a couple of ways that could be solved, but
> ultimately it would be up to how the users choose to setup/manage the
> registry, or registries.
>
> The NiFi Registry security model is based around permissions to
> buckets (read/write), and all versioned items belong to a bucket. So
> you could think of each bucket as a mini extension repository for
> which you can control access to specific users and groups, so there
> could be a bucket of extensions for each of the NiFi instances in your
> example. There can also be multiple registry instances registered with
> a given NiFi so extensions can be pulled from multiple registries.
>
> The extensions an instance needs is based on the flows it is running,
> the flows already have specific bundle coordinates for every component
> in the flow. You can think of it similar to Maven where you declared a
> dependency on library foo and the build goes out and gets it for you,
> in this case it is a flow that declares a dependency on a bundle.
>
> Mike,
>
> Bundles would need to be uploaded to NiFi Registry (to a specific
> bucket) as part of some TBD release process. At a minimum I was
> envisioning NiFi CLI commands that can be pointed to a file or a
> directory and upload the given bundles to registry. There could be
> other options as well, possibly through a Maven plugin to release
> directly into registry, or possibly to have a type of extension in
> NiFi Registry that actually points to an external location, i.e. all
> the NARs that end up in Maven central could somehow be imported into
> NiFi Registry, but with pointers back to the content which actually
> comes from Maven central. Lot of things to figure out here.
>
> -Bryan
> On Tue, Nov 13, 2018 at 1:16 PM Joe Witt <joe.w...@gmail.com> wrote:
> >
> > Group selection based on tag names for bundles could probably do that.
> > Meaning it could be a sorting/filtering mechanism in the NiFi/Registry
> > interface perhaps.  Will be good to consider that UX as that
> > progresses.
> >
> > As far as the different environments NiFi instances would certainly be
> > able to load only referenced Nars for versioned flows so you'll get
> > the optimal set (at runtime) automatically.  Very powerful.
> > On Tue, Nov 13, 2018 at 1:12 PM Mark Bean <mark.o.b...@gmail.com> wrote:
> > >
> > > Joe,
> > >
> > > I envision the Registry being able to provide a subset of NARs
> required for
> > > a specific NiFi instance. The user may have a relatively small set of
> NARs
> > > required for a NiFi used for basic routing/distribution, and a
> different
> > > more extensive set of NARs required for a more robust NiFi instance
> which
> > > performs various forms of processing/transformations. The grouping I am
> > > describing would be a way to select multiple NARs required for a
> specific
> > > NiFi instance.
> > >
> > > Expanding the scenario a little farther, suppose an integration/test
> > > environment defines the group. Then, the production environment can
> use the
> > > group definition to pull (or ensure it possesses) only the relevant
> NARs
> > > necessary.
> > >
> > > -Mark
> > >
> > > On Tue, Nov 13, 2018 at 1:00 PM Joe Witt <joe.w...@gmail.com> wrote:
> > >
> > > > Mark
> > > >
> > > > Can you describe your use case from the user perspective both for the
> > > > entity that would upload the items and demarcate them as a group as
> > > > well as the user that would consume those bundles?
> > > >
> > > > I ask because the point here is that nars are themselves a 'group' in
> > > > that they are a logical/contained grouping of extensions.  These can
> > > > have relationships to other nars as we know.  And flows are designed
> > > > against specific components that come from certain nars for which we
> > > > know the precise coordinates.  When importing flows that depend on
> > > > these the system will be able to automatically acquire all that it
> > > > needs.
> > > >
> > > > Thanks
> > > > On Tue, Nov 13, 2018 at 12:57 PM Mark Bean <mark.o.b...@gmail.com>
> wrote:
> > > > >
> > > > > I would like to see a "group" capability in the Registry for NAR
> bundles.
> > > > > Then, users can create their own customized grouping of relevant
> NARs.
> > > > > Managing bundles one at a time will become tedious.
> > > > >
> > > > > Thanks,
> > > > > Mark
> > > > >
> > > > > On Tue, Nov 13, 2018 at 12:48 PM Joe Witt <joe.w...@gmail.com>
> wrote:
> > > > >
> > > > > > Sivaprasanna - yes absolutely.  That is the core point I think of
> > > > > > Bryan's first bullet under the 'NiFi' section.
> > > > > > On Tue, Nov 13, 2018 at 12:47 PM Sivaprasanna <
> > > > sivaprasanna...@gmail.com>
> > > > > > wrote:
> > > > > > >
> > > > > > > One quick question. With the extension registry, my
> understanding is
> > > > that
> > > > > > > we would try to reduce the overall NiFi size by offloading
> certain
> > > > > > existing
> > > > > > > NAR bundles to the extension registry. So are we expecting the
> > > > extension
> > > > > > > registry to also come up with the ability/mechanism that lets
> an
> > > > user to
> > > > > > > download these bundles ?
> > > > > > >
> > > > > > > -
> > > > > > > Sivaprasanna
> > > > > > >
> > > > > > > On Tue, 13 Nov 2018 at 11:07 PM, Joe Witt <joe.w...@gmail.com>
> > > > wrote:
> > > > > > >
> > > > > > > > Bryan
> > > > > > > >
> > > > > > > > Very exciting to see this under way!!!  We desperately have
> to get
> > > > our
> > > > > > > > core nifi build size way down and make it far easier for
> people to
> > > > > > > > contribute new processors.  We have a long line of
> extensions that
> > > > > > > > could be really useful/valuable and this will help unlock
> that
> > > > while
> > > > > > > > improving the user experience tremendously.
> > > > > > > >
> > > > > > > > For the doc/concerns noted above we should also add/mention
> that
> > > > the
> > > > > > > > relationship between nars (dependencies between nars for
> > > > > > > > apis/controller services/parent nars/etc..) we want to have
> a way
> > > > to
> > > > > > > > manage/show that or a user experience for it.  Maybe not a
> day-1
> > > > thing
> > > > > > > > but important to call out.
> > > > > > > >
> > > > > > > > Thanks!
> > > > > > > > Joe
> > > > > > > > On Tue, Nov 13, 2018 at 12:22 PM Bryan Bende <
> bbe...@gmail.com>
> > > > wrote:
> > > > > > > > >
> > > > > > > > > All,
> > > > > > > > >
> > > > > > > > > We've needed the elusive extension registry for quite some
> time
> > > > now,
> > > > > > > > > and with NiFi Registry I think we are in a good place to
> make
> > > > some
> > > > > > > > > progress in this area.
> > > > > > > > >
> > > > > > > > > I've started looking into adding "extension bundles" to
> NiFi
> > > > Registry
> > > > > > > > > as the next type of versioned item, along side the existing
> > > > versioned
> > > > > > > > > flows, and I wanted to take a minute to outline how that
> approach
> > > > > > > > > could work before getting too far into it.
> > > > > > > > >
> > > > > > > > > Also, I'd like to focus this discussion on the design and
> > > > > > > > > functionality of the extension registry, and not on how the
> > > > community
> > > > > > > > > is going to use it. Topics like hosting a central registry,
> > > > changing
> > > > > > > > > the build process, restructuring the git repo, releasing
> NARs,
> > > > etc,
> > > > > > > > > are all important topics, but first we need an extension
> registry
> > > > > > > > > before we can do any of that :)
> > > > > > > > >
> > > > > > > > > Here is a high-level description of what needs to be
> done...
> > > > > > > > >
> > > > > > > > > NiFi Registry
> > > > > > > > >
> > > > > > > > > - Add a new type of item called an extension bundle, where
> each
> > > > > > bundle
> > > > > > > > > can contain one ore extensions or APIs
> > > > > > > > >
> > > > > > > > > - Support bundles for traditional NiFi (aka NARs) and also
> > > > bundles
> > > > > > for
> > > > > > > > > MiNiFi CPP
> > > > > > > > >
> > > > > > > > > - Ability to upload the binary artifact for a bundle and
> extract
> > > > the
> > > > > > > > > metadata about the bundle, and metadata about the
> extensions
> > > > > > contained
> > > > > > > > > in the bundle (more on this later)
> > > > > > > > >
> > > > > > > > > - Provide a pluggable storage provider for saving the
> content of
> > > > each
> > > > > > > > > extension bundle so that we can have different
> implementations
> > > > like
> > > > > > > > > local fileysystem, S3, and other object stores
> > > > > > > > >
> > > > > > > > > - Provide a REST API for listing and retrieving available
> > > > bundles,
> > > > > > > > > integrate this into the registry Java client and NiFi CLI
> > > > > > > > >
> > > > > > > > > NAR Maven Plugin
> > > > > > > > >
> > > > > > > > > - Generate a descriptor for each component in the NAR
> which will
> > > > > > > > > provide information like the description, tags, restricted
> or
> > > > not,
> > > > > > > > > etc.
> > > > > > > > >
> > > > > > > > > - These descriptors will be parsed by NiFi Registry when a
> NAR is
> > > > > > > > > being uploaded so that NiFi Registry will know about the
> > > > extensions
> > > > > > > > > contained with in the NAR
> > > > > > > > >
> > > > > > > > > NiFi
> > > > > > > > >
> > > > > > > > > - Provide some type of extension manager experience where
> users
> > > > can
> > > > > > > > > search, browse, & install bundles that are available in
> any of
> > > > the
> > > > > > > > > registry clients that have been defined
> > > > > > > > >
> > > > > > > > > - Introduce a new security policy to control which users
> are
> > > > allowed
> > > > > > > > > to access the extension manager
> > > > > > > > >
> > > > > > > > > - Installing a bundle should load the NAR and make the
> extensions
> > > > > > > > > available leveraging the recent work done to auto-load new
> NARs
> > > > > > > > >
> > > > > > > > > - Importing versioned flows from registry should provide
> an easy
> > > > way
> > > > > > > > > to install bundles that are required by the flow, but
> missing
> > > > from
> > > > > > the
> > > > > > > > > local NiFi instance
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > If anyone has any thoughts or concerns about this approach,
> > > > please
> > > > > > let
> > > > > > > > me know.
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > >
> > > > > > > > > Bryan
> > > > > > > >
> > > > > >
> > > >
>

Reply via email to