Re: Processor forwards/backwards compatibility

2018-11-16 Thread James Srinivasan
Mark,

Gotcha, thanks very much.

James
On Fri, 16 Nov 2018 at 19:41, Mark Payne  wrote:
>
> Hi James,
>
> The processor may or may not work with older versions of NiFi (1.x.0). But 
> should work with
> newer versions of NiFi (1.z.0). That's because there may be a feature of the 
> nifi-api that you use
> in 1.y.0 and we can guarantee that will not be removed in 1.z.0 but it did 
> not exist in 1.x.0.
>
> Thanks
> -Mark
>
>
>
> > On Nov 16, 2018, at 2:35 PM, James Srinivasan  
> > wrote:
> >
> > I've read 
> > https://cwiki.apache.org/confluence/display/NIFI/Version+Scheme+and+API+Compatibility
> > but I'm still not quite clear:
> >
> > I develop my own custom Processor against NiFi v. 1.y.0
> >
> > Should that processor work with older NiFi releases 1.x.0 (x >
> > Should that processor work with newer NiFi releases 1.z.0 (y >
> > Thanks
> >
> > James
>


Re: Processor forwards/backwards compatibility

2018-11-16 Thread Mark Payne
Hi James,

The processor may or may not work with older versions of NiFi (1.x.0). But 
should work with
newer versions of NiFi (1.z.0). That's because there may be a feature of the 
nifi-api that you use
in 1.y.0 and we can guarantee that will not be removed in 1.z.0 but it did not 
exist in 1.x.0.

Thanks
-Mark



> On Nov 16, 2018, at 2:35 PM, James Srinivasan  
> wrote:
> 
> I've read 
> https://cwiki.apache.org/confluence/display/NIFI/Version+Scheme+and+API+Compatibility
> but I'm still not quite clear:
> 
> I develop my own custom Processor against NiFi v. 1.y.0
> 
> Should that processor work with older NiFi releases 1.x.0 (x 
> Should that processor work with newer NiFi releases 1.z.0 (y 
> Thanks
> 
> James



Processor forwards/backwards compatibility

2018-11-16 Thread James Srinivasan
I've read 
https://cwiki.apache.org/confluence/display/NIFI/Version+Scheme+and+API+Compatibility
but I'm still not quite clear:

I develop my own custom Processor against NiFi v. 1.y.0

Should that processor work with older NiFi releases 1.x.0 (x

Re: [DISCUSS] Extension Registry

2018-11-16 Thread Mark Payne
Mike,

Thanks for bringing that up. It's a good point that we need to keep in mind. As 
mentioned,
the NAR Maven Plugin will be generating the info necessary and putting it into 
the NAR. One
piece of information that it will gather is any Controller Service API's that 
are provided by a given
implementation. So the registry will have this information. So the technical 
details are not concerning.
We do, however, need to ensure that we provide a good User Experience for such 
a thing. Perhaps
when you click to create a new Controller Service from a 'Configure' dialog we 
should have a way to
jump to a 'remote registry browser' type of thing and download from there...


> On Nov 13, 2018, at 2:32 PM, Michael Moser  wrote:
> 
> 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  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  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  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  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