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
- Added event publishing for extension bundles
- Add an adapter for serializing ExtensionBundleType enum
- Remove capitalize class from droplet grid item
- Add ability for clients to optionally specify the SHA-256 when uploading a bundle

This closes #148.

Signed-off-by: Kevin Doran <kdoran@apache.org>
124 files changed
tree: 2883c0c543018c7ffcd5d47b2375bc52d456dae2
  1. nifi-registry-assembly/
  2. nifi-registry-core/
  3. nifi-registry-extensions/
  4. .gitignore
  5. .travis-output-filters
  6. .travis.yml
  7. build-and-run.sh
  8. LICENSE
  9. NOTICE
  10. pom.xml
  11. README.md
  12. stop.sh
README.md

Apache NiFi Registry Build Status

Registry—a subproject of Apache NiFi—is a complementary application that provides a central location for storage and management of shared resources across one or more instances of NiFi and/or MiNiFi.

Table of Contents

Getting Started

Requirements

  • Java 1.8 (above 1.8.0_45)
  • Maven 3.1.0, or newer
  • Recent git client
  1. Clone the repo

     git clone https://git-wip-us.apache.org/repos/asf/nifi-registry.git
     git checkout master
    
  2. Build the project

     cd nifi-registry
     mvn clean install
    

    If you wish to enable style and license checks, specify the contrib-check profile:

     mvn clean install -Pcontrib-check
    

    If you wish to run integration tests and contrib-check, specify both profiles:

     mvn clean install -Pcontrib-check,integration-tests
    
  3. Start the application

     cd nifi-registry-assembly/target/nifi-registry-<VERSION>-bin/nifi-registry-<VERSION>/
     ./bin/nifi-registry.sh start
    

    Note that the application web server can take a while to load before it is accessible.

  4. Accessing the application web UI

    With the default settings, the application UI will be available at http://localhost:18080/nifi-registry

  5. Accessing the application REST API

    If you wish to test against the application REST API, you can access the REST API directly. With the default settings, the base URL of the REST API will be at http://localhost:18080/nifi-registry-api. A UI for testing the REST API will be available at http://localhost:18080/nifi-registry-api/swagger/ui.html

  6. Accessing the application logs

    Logs will be available in logs/nifi-registry-app.log

License

Except as otherwise noted this software is licensed under the Apache License, Version 2.0

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.