GitHub user bbende opened a pull request:

    https://github.com/apache/nifi-registry/pull/148

    NIFIREG-211 Initial work for adding extenion bundles to NiFi Registry

    This PR includes the foundational work for adding extension bundles as a 
new type of versioned item. With this PR it is possible to upload NARs via the 
REST API with them being stored in the local filesystem persistence provider, 
and then interact with them through various REST APIs.
    
    In the current state of this PR, registry does not have a way to know 
anything about the actual extensions contained in a bundle. This will need to 
come from a component descriptor provided within the NAR which will then be 
parsed and extracted on registry side.
    
    We can leave NIFIREG-211 open after merging this so that we can continue to 
work against it and build out the additional functionality.
    
    A NAR can be uploaded by making a multi-part form POST to the end-point:
    
    _buckets/{bucketId}/extensions/bundles/{bundleType}_
    
    An example using curl would be:
    
    `curl -v -F file=@./nifi-example-processors-nar-1.0.0.nar 
http://localhost:18080/nifi-registry-api/buckets/65d6d70d-ecb7-478f-bbc4-1e378e52827c/extensions/bundles/nifi-nar`
    
    From there you can interact with the REST API from the swagger docs.
    
    I've also started a branch of NiFi with CLI commands related to extension 
bundles:
    https://github.com/bbende/nifi/tree/extensions
    
    If you run a full build of this PR first with mvn clean install, and then a 
build of the NiFi branch, you can launch the CLI in 
nifi-toolkit/nifi-toolkit-assembly/target/nifi-toolkit-1.9.0-SNAPSHOT-bin/nifi-toolkit-1.9.0-SNAPSHOT/bin/cli.sh
 and run the "upload-nars" command:
    
    `registry upload-nars -b 024dba45-95c2-4a54-b79d-0abe1bb1122a -ebd 
/path/to/nifi-releases/nifi-1.8.0/lib -u http://localhost:18080 -verbose`
    
    This should upload all of the NARs from the 1.8.0 release to your local 
registry.
    
    Here is the commit history for all the changes made in this PR:
    
    - Setting up DB tables and entities for extensions
    - Updated MetadataService and DatabaseMetadataService with new methods for 
extension entities
    - Added ON DELETE CASCADE to existing tables and simplified delete logic 
for buckets and flows
    - Created data model for extension bundles and mapping to/from DB entities
    - Created ExtensionBundleExtractor with an implemenetation for NARs
    - Setup LinkService and LinkBuilder for extension bundles
    - Setup pluggable persistence provider for extension bundles and 
implemented a local file-system provider.
    - Refactored LinkService and add links for all extension related items
    - Changed extension service to write out bundles to a temp directory before 
extracting and passing to persistence provider
    - Implemented multi-part form upload for extensions bundles
    - Upgraded to spring-boot 2.1.0
    - Added SHA-256 checksums for bundle versions
    - Initial client methods for uploading and retrieving bundles
    - Configuring NiFi Registry Jersey client to use chunked entity processing 
so we don't load the entire bundle content into memory during an upload

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/bbende/nifi-registry extensions

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/nifi-registry/pull/148.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #148
    
----
commit 7744072b5f059fe5240746e968493eddefa719a6
Author: Bryan Bende <bbende@...>
Date:   2018-11-20T15:57:08Z

    NIFIREG-211 Initial work for adding extenion bundles to NiFi Registry
    - Setting up DB tables and entities for extensions
    - Updated MetadataService and DatabaseMetadataService with new methods for 
extension entities
    - Added ON DELETE CASCADE to existing tables and simplified delete logic 
for buckets and flows
    - Created data model for extension bundles and mapping to/from DB entities
    - Created ExtensionBundleExtractor with an implemenetation for NARs
    - Setup LinkService and LinkBuilder for extension bundles
    - Setup pluggable persistence provider for extension bundles and 
implemented a local file-system provider.
    - Refactored LinkService and add links for all extension related items
    - Changed extension service to write out bundles to a temp directory before 
extracting and passing to persistence provider
    - Implemented multi-part form upload for extensions bundles
    - Upgraded to spring-boot 2.1.0
    - Added SHA-256 checksums for bundle versions
    - Initial client methods for uploading and retrieving bundles
    - Configuring NiFi Registry Jersey client to use chunked entity processing 
so we don't load the entire bundle content into memory during an upload

----


---

Reply via email to