You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by sz...@apache.org on 2022/03/08 15:15:18 UTC

[nifi-minifi-cpp] branch main updated (38d1fbd -> af3d5ab)

This is an automated email from the ASF dual-hosted git repository.

szaszm pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git.


    from 38d1fbd  MINIFICPP-1767 Remove snap support from repository
     new e1cfc44  MINIFICPP-1762 Add the attributes from the AttributeProviderService to the flow file
     new af3d5ab  MINIFICPP-1764 Add the license header to all .py and .feature files

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../integration/MiNiFi_integration_test_driver.py  | 16 ++++++++
 docker/test/integration/environment.py             | 16 ++++++++
 .../test/integration/features/kubernetes.feature   | 15 +++++++
 docker/test/integration/features/mqtt.feature      | 15 +++++++
 docker/test/integration/features/opcua.feature     | 15 +++++++
 docker/test/integration/features/python.feature    | 15 +++++++
 .../test/integration/features/replace_text.feature | 15 +++++++
 docker/test/integration/features/routetext.feature | 15 +++++++
 docker/test/integration/features/s2s.feature       | 15 +++++++
 docker/test/integration/features/s3.feature        | 15 +++++++
 docker/test/integration/features/script.feature    | 15 +++++++
 docker/test/integration/features/splunk.feature    | 15 +++++++
 docker/test/integration/features/sql.feature       | 15 +++++++
 .../integration/minifi/controllers/ODBCService.py  | 16 ++++++++
 .../minifi/controllers/SSLContextService.py        | 16 ++++++++
 .../minifi/core/AzureStorageServerContainer.py     | 16 ++++++++
 docker/test/integration/minifi/core/Cluster.py     | 16 ++++++++
 docker/test/integration/minifi/core/Connectable.py | 16 ++++++++
 .../integration/minifi/core/ControllerService.py   | 16 ++++++++
 .../minifi/core/DockerTestDirectoryBindings.py     | 16 ++++++++
 .../integration/minifi/core/FileSystemObserver.py  | 16 ++++++++
 .../test/integration/minifi/core/FlowContainer.py  | 16 ++++++++
 docker/test/integration/minifi/core/Funnel.py      | 16 ++++++++
 .../integration/minifi/core/HttpProxyContainer.py  | 16 ++++++++
 docker/test/integration/minifi/core/InputPort.py   | 16 ++++++++
 .../minifi/core/KafkaBrokerContainer.py            | 16 ++++++++
 .../integration/minifi/core/MqttBrokerContainer.py | 16 ++++++++
 .../test/integration/minifi/core/NifiContainer.py  | 16 ++++++++
 .../minifi/core/OPCUAServerContainer.py            | 16 ++++++++
 .../integration/minifi/core/OutputEventHandler.py  | 16 ++++++++
 .../minifi/core/PostgreSQLServerContainer.py       | 16 ++++++++
 docker/test/integration/minifi/core/Processor.py   | 16 ++++++++
 .../integration/minifi/core/RemoteProcessGroup.py  | 16 ++++++++
 .../integration/minifi/core/S3ServerContainer.py   | 16 ++++++++
 .../test/integration/minifi/core/SSL_cert_utils.py | 16 ++++++++
 .../integration/minifi/core/SplunkContainer.py     | 16 ++++++++
 .../integration/minifi/core/ZookeeperContainer.py  | 16 ++++++++
 docker/test/integration/minifi/core/utils.py       | 16 ++++++++
 .../Minifi_flow_yaml_serializer.py                 | 16 ++++++++
 .../flow_serialization/Nifi_flow_xml_serializer.py | 16 ++++++++
 .../minifi/processors/AddPythonAttribute.py        | 16 ++++++++
 .../minifi/processors/AttributesToJSON.py          | 16 ++++++++
 .../processors/AzureBlobStorageProcessorBase.py    | 16 ++++++++
 .../integration/minifi/processors/ConsumeKafka.py  | 16 ++++++++
 .../integration/minifi/processors/ConsumeMQTT.py   | 16 ++++++++
 .../minifi/processors/DefragmentText.py            | 16 ++++++++
 .../minifi/processors/DeleteAzureBlobStorage.py    | 16 ++++++++
 .../minifi/processors/DeleteS3Object.py            | 16 ++++++++
 .../minifi/processors/ExecutePythonProcessor.py    | 16 ++++++++
 .../integration/minifi/processors/ExecuteSQL.py    | 16 ++++++++
 .../integration/minifi/processors/ExecuteScript.py | 16 ++++++++
 .../minifi/processors/FetchAzureBlobStorage.py     | 16 ++++++++
 .../minifi/processors/FetchOPCProcessor.py         | 16 ++++++++
 .../integration/minifi/processors/FetchS3Object.py | 16 ++++++++
 .../minifi/processors/GenerateFlowFile.py          | 16 ++++++++
 .../test/integration/minifi/processors/GetFile.py  | 16 ++++++++
 .../integration/minifi/processors/HashContent.py   | 16 ++++++++
 .../integration/minifi/processors/InvokeHTTP.py    | 16 ++++++++
 .../test/integration/minifi/processors/ListS3.py   | 16 ++++++++
 .../integration/minifi/processors/ListenHTTP.py    | 16 ++++++++
 .../integration/minifi/processors/LogAttribute.py  | 16 ++++++++
 .../integration/minifi/processors/PublishKafka.py  | 16 ++++++++
 .../integration/minifi/processors/PublishMQTT.py   | 16 ++++++++
 .../minifi/processors/PutAzureBlobStorage.py       | 16 ++++++++
 .../test/integration/minifi/processors/PutFile.py  | 16 ++++++++
 .../minifi/processors/PutOPCProcessor.py           | 16 ++++++++
 .../integration/minifi/processors/PutS3Object.py   | 16 ++++++++
 .../test/integration/minifi/processors/PutSQL.py   | 16 ++++++++
 .../integration/minifi/processors/PutSplunkHTTP.py | 16 ++++++++
 .../minifi/processors/QueryDatabaseTable.py        | 16 ++++++++
 .../minifi/processors/QuerySplunkIndexingStatus.py | 16 ++++++++
 .../integration/minifi/processors/ReplaceText.py   | 16 ++++++++
 .../minifi/processors/RouteOnAttribute.py          | 16 ++++++++
 .../integration/minifi/processors/RouteText.py     | 16 ++++++++
 .../test/integration/minifi/processors/TailFile.py | 16 ++++++++
 .../minifi/processors/UpdateAttribute.py           | 16 ++++++++
 .../minifi/validators/EmptyFilesOutPutValidator.py | 16 ++++++++
 .../minifi/validators/FileOutputValidator.py       | 16 ++++++++
 .../minifi/validators/MultiFileOutputValidator.py  | 16 ++++++++
 .../NoContentCheckFileNumberValidator.py           | 16 ++++++++
 .../minifi/validators/NoFileOutPutValidator.py     | 16 ++++++++
 .../minifi/validators/NumFileRangeValidator.py     | 16 ++++++++
 .../minifi/validators/OutputValidator.py           | 16 ++++++++
 .../minifi/validators/SegfaultValidator.py         | 16 ++++++++
 .../minifi/validators/SingleFileOutputValidator.py | 16 ++++++++
 .../validators/SingleJSONFileOutputValidator.py    | 16 ++++++++
 .../validators/SingleOrMultiFileOutputValidator.py | 16 ++++++++
 .../resources/python/add_attribute_to_flowfile.py  | 16 ++++++++
 .../integration/resources/python/sleep_forever.py  | 16 ++++++++
 .../KubernetesControllerService.h                  |  2 +
 .../test_python_scripts/stateful_processor.py      |  3 --
 .../standard-processors/processors/TailFile.cpp    | 46 +++++++++++++---------
 .../standard-processors/processors/TailFile.h      |  4 +-
 .../tests/unit/TailFileTests.cpp                   | 16 ++++++++
 .../include/controllers/AttributeProviderService.h |  1 +
 python/minifi/__init__.py                          |  2 +
 thirdparty/google-styleguide/cpplint.py            | 16 ++++++++
 thirdparty/google-styleguide/run_linter.py         | 16 ++++++++
 98 files changed, 1496 insertions(+), 23 deletions(-)

[nifi-minifi-cpp] 01/02: MINIFICPP-1762 Add the attributes from the AttributeProviderService to the flow file

Posted by sz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

szaszm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git

commit e1cfc444b407198c76807e8002467eab0e78cdcb
Author: Ferenc Gerlits <fg...@gmail.com>
AuthorDate: Tue Mar 1 11:21:51 2022 +0100

    MINIFICPP-1762 Add the attributes from the AttributeProviderService to the flow file
    
    Closes #1274
    Signed-off-by: Marton Szasz <sz...@apache.org>
---
 .../test/integration/features/kubernetes.feature   | 15 +++++++
 .../KubernetesControllerService.h                  |  2 +
 .../standard-processors/processors/TailFile.cpp    | 46 +++++++++++++---------
 .../standard-processors/processors/TailFile.h      |  4 +-
 .../tests/unit/TailFileTests.cpp                   | 16 ++++++++
 .../include/controllers/AttributeProviderService.h |  1 +
 6 files changed, 64 insertions(+), 20 deletions(-)

diff --git a/docker/test/integration/features/kubernetes.feature b/docker/test/integration/features/kubernetes.feature
index af7ac29..5d14b19 100644
--- a/docker/test/integration/features/kubernetes.feature
+++ b/docker/test/integration/features/kubernetes.feature
@@ -56,3 +56,18 @@ Feature: TailFile can collect logs from Kubernetes pods
     And the "success" relationship of the TailFile processor is connected to the PutFile
     When the MiNiFi instance starts up
     Then one flowfile with the contents "Hello again, World!" is placed in the monitored directory in less than 30 seconds
+
+  Scenario: Pod name etc are added as flow file attributes
+    Given a TailFile processor in a Kubernetes cluster
+    And the "tail-mode" property of the TailFile processor is set to "Multiple file"
+    And the "tail-base-directory" property of the TailFile processor is set to "/var/log/pods/${namespace}_${pod}_${uid}/${container}"
+    And the "File to Tail" property of the TailFile processor is set to ".*\.log"
+    And the "Lookup frequency" property of the TailFile processor is set to "1s"
+    And the TailFile processor has an Attribute Provider Service which is a Kubernetes Controller Service with the "Pod Name Filter" property set to ".*one"
+    And a LogAttribute processor in the Kubernetes cluster
+    And the "success" relationship of the TailFile processor is connected to the LogAttribute
+    When the MiNiFi instance starts up
+    Then the Minifi logs contain the following message: "key:kubernetes.namespace value:default" in less than 30 seconds
+    And the Minifi logs contain the following message: "key:kubernetes.pod value:hello-world-one" in less than 1 second
+    And the Minifi logs contain the following message: "key:kubernetes.uid value:" in less than 1 second
+    And the Minifi logs contain the following message: "key:kubernetes.container value:echo-one" in less than 1 second
diff --git a/extensions/kubernetes/controllerservice/KubernetesControllerService.h b/extensions/kubernetes/controllerservice/KubernetesControllerService.h
index b088e3b..e923749 100644
--- a/extensions/kubernetes/controllerservice/KubernetesControllerService.h
+++ b/extensions/kubernetes/controllerservice/KubernetesControllerService.h
@@ -18,6 +18,7 @@
 
 #include <memory>
 #include <string>
+#include <string_view>
 #include <vector>
 
 #include "controllers/AttributeProviderService.h"
@@ -38,6 +39,7 @@ class KubernetesControllerService : public AttributeProviderService {
   void initialize() final;
   void onEnable() override;
   std::optional<std::vector<AttributeMap>> getAttributes() override;
+  std::string_view name() const override { return "kubernetes"; }
 
  private:
   class APIClient;
diff --git a/extensions/standard-processors/processors/TailFile.cpp b/extensions/standard-processors/processors/TailFile.cpp
index eac0d07..098e794 100644
--- a/extensions/standard-processors/processors/TailFile.cpp
+++ b/extensions/standard-processors/processors/TailFile.cpp
@@ -833,9 +833,20 @@ void TailFile::updateFlowFileAttributes(const std::string &full_file_name, const
   flow_file->setAttribute(core::SpecialFlowAttribute::PATH, state.path_);
   flow_file->addAttribute(core::SpecialFlowAttribute::ABSOLUTE_PATH, full_file_name);
   flow_file->setAttribute(core::SpecialFlowAttribute::FILENAME, logName);
+
   flow_file->setAttribute(textfragmentutils::BASE_NAME_ATTRIBUTE, baseName);
   flow_file->setAttribute(textfragmentutils::POST_NAME_ATTRIBUTE, extension);
   flow_file->setAttribute(textfragmentutils::OFFSET_ATTRIBUTE, std::to_string(state.position_));
+
+  if (extra_attributes_.contains(state.path_)) {
+    std::string prefix;
+    if (attribute_provider_service_) {
+      prefix = std::string(attribute_provider_service_->name()) + ".";
+    }
+    for (const auto& [key, value] : extra_attributes_.at(state.path_)) {
+      flow_file->setAttribute(prefix + key, value);
+    }
+  }
 }
 
 void TailFile::updateStateAttributes(TailState &state, uint64_t size, uint64_t checksum) const {
@@ -878,33 +889,30 @@ void TailFile::checkForNewFiles(core::ProcessContext& context) {
     return true;
   };
 
-  if (attribute_provider_service_) {
-    for (const auto& base_dir : getBaseDirectories(context)) {
-      utils::file::list_dir(base_dir, add_new_files_callback, logger_, recursive_lookup_);
-    }
-  } else {
+  if (!attribute_provider_service_) {
     utils::file::list_dir(base_dir_, add_new_files_callback, logger_, recursive_lookup_);
+    return;
   }
-}
-
-std::vector<std::string> TailFile::getBaseDirectories(core::ProcessContext& context) const {
-  gsl_Expects(attribute_provider_service_);
 
   const auto attribute_maps = attribute_provider_service_->getAttributes();
   if (!attribute_maps) {
     logger_->log_error("Could not get attributes from the Attribute Provider Service");
-    return {};
+    return;
   }
 
-  return attribute_maps.value() |
-      ranges::views::transform([&context](const auto& attribute_map) {
-        auto flow_file = std::make_shared<FlowFileRecord>();
-        for (const auto& [key, value] : attribute_map) {
-          flow_file->setAttribute(key, value);
-        }
-        return context.getProperty(BaseDirectory, flow_file).value();
-      }) |
-      ranges::to<std::vector<std::string>>();
+  for (const auto& attribute_map : *attribute_maps) {
+    std::string base_dir = baseDirectoryFromAttributes(attribute_map, context);
+    extra_attributes_[base_dir] = attribute_map;
+    utils::file::list_dir(base_dir, add_new_files_callback, logger_, recursive_lookup_);
+  }
+}
+
+std::string TailFile::baseDirectoryFromAttributes(const controllers::AttributeProviderService::AttributeMap& attribute_map, core::ProcessContext& context) const {
+  auto flow_file = std::make_shared<FlowFileRecord>();
+  for (const auto& [key, value] : attribute_map) {
+    flow_file->setAttribute(key, value);
+  }
+  return context.getProperty(BaseDirectory, flow_file).value();
 }
 
 std::chrono::milliseconds TailFile::getLookupFrequency() const {
diff --git a/extensions/standard-processors/processors/TailFile.h b/extensions/standard-processors/processors/TailFile.h
index 9d8ef36..10bb94b 100644
--- a/extensions/standard-processors/processors/TailFile.h
+++ b/extensions/standard-processors/processors/TailFile.h
@@ -24,6 +24,7 @@
 #include <memory>
 #include <utility>
 #include <string>
+#include <unordered_map>
 #include <vector>
 #include <set>
 
@@ -166,7 +167,7 @@ class TailFile : public core::Processor {
   void doMultifileLookup(core::ProcessContext& context);
   void checkForRemovedFiles();
   void checkForNewFiles(core::ProcessContext& context);
-  std::vector<std::string> getBaseDirectories(core::ProcessContext& context) const;
+  std::string baseDirectoryFromAttributes(const controllers::AttributeProviderService::AttributeMap& attribute_map, core::ProcessContext& context) const;
   void updateFlowFileAttributes(const std::string &full_file_name, const TailState &state, const std::string &fileName,
                                 const std::string &baseName, const std::string &extension,
                                 std::shared_ptr<core::FlowFile> &flow_file) const;
@@ -190,6 +191,7 @@ class TailFile : public core::Processor {
   InitialStartPositions initial_start_position_;
   bool first_trigger_{true};
   controllers::AttributeProviderService* attribute_provider_service_ = nullptr;
+  std::unordered_map<std::string, controllers::AttributeProviderService::AttributeMap> extra_attributes_;
   std::shared_ptr<core::logging::Logger> logger_ = core::logging::LoggerFactory<TailFile>::getLogger();
 };
 
diff --git a/extensions/standard-processors/tests/unit/TailFileTests.cpp b/extensions/standard-processors/tests/unit/TailFileTests.cpp
index a24d4d3..089d812 100644
--- a/extensions/standard-processors/tests/unit/TailFileTests.cpp
+++ b/extensions/standard-processors/tests/unit/TailFileTests.cpp
@@ -1777,6 +1777,7 @@ class TestAttributeProviderService : public minifi::controllers::AttributeProvid
     return std::vector<AttributeMap>{AttributeMap{{"color", "red"}, {"fruit", "apple"}, {"uid", "001"}, {"animal", "dog"}},
                                      AttributeMap{{"color", "yellow"}, {"fruit", "banana"}, {"uid", "004"}, {"animal", "dolphin"}}};
   }
+  std::string_view name() const override { return "test"; }
 };
 REGISTER_RESOURCE(TestAttributeProviderService, "An attribute provider service which provides a constant set of records.");
 
@@ -1814,5 +1815,20 @@ TEST_CASE("TailFile can use an AttributeProviderService", "[AttributeProviderSer
   CHECK(LogTestController::getInstance().contains("key:absolute.path value:" + (temp_directory / "my_red_apple_001" / "dog" / "1.log").string()));
   CHECK(LogTestController::getInstance().contains("key:absolute.path value:" + (temp_directory / "my_yellow_banana_004" / "dolphin" / "0.log").string()));
 
+  CHECK(LogTestController::getInstance().contains("key:test.color value:red"));
+  CHECK(LogTestController::getInstance().contains("key:test.color value:yellow"));
+  CHECK(LogTestController::getInstance().contains("key:test.fruit value:apple"));
+  CHECK(LogTestController::getInstance().contains("key:test.fruit value:banana"));
+  CHECK(LogTestController::getInstance().contains("key:test.uid value:001"));
+  CHECK(LogTestController::getInstance().contains("key:test.uid value:004"));
+  CHECK(LogTestController::getInstance().contains("key:test.animal value:dog"));
+  CHECK(LogTestController::getInstance().contains("key:test.animal value:dolphin"));
+
+  CHECK_FALSE(LogTestController::getInstance().contains("key:test.fruit value:strawberry"));
+  CHECK_FALSE(LogTestController::getInstance().contains("key:test.uid value:002"));
+  CHECK_FALSE(LogTestController::getInstance().contains("key:test.uid value:003"));
+  CHECK_FALSE(LogTestController::getInstance().contains("key:test.animal value:elephant"));
+  CHECK_FALSE(LogTestController::getInstance().contains("key:test.animal value:horse"));
+
   LogTestController::getInstance().reset();
 }
diff --git a/libminifi/include/controllers/AttributeProviderService.h b/libminifi/include/controllers/AttributeProviderService.h
index 0c127e4..3aee6a5 100644
--- a/libminifi/include/controllers/AttributeProviderService.h
+++ b/libminifi/include/controllers/AttributeProviderService.h
@@ -35,6 +35,7 @@ class AttributeProviderService : public core::controller::ControllerService {
 
   using AttributeMap = std::unordered_map<std::string, std::string>;
   virtual std::optional<std::vector<AttributeMap>> getAttributes() = 0;
+  virtual std::string_view name() const = 0;
 };
 
 }  // namespace org::apache::nifi::minifi::controllers

[nifi-minifi-cpp] 02/02: MINIFICPP-1764 Add the license header to all .py and .feature files

Posted by sz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

szaszm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git

commit af3d5ab0484d593853a4b87157985d08cc2d930c
Author: Ferenc Gerlits <fg...@gmail.com>
AuthorDate: Wed Mar 2 17:04:08 2022 +0100

    MINIFICPP-1764 Add the license header to all .py and .feature files
    
    ... except for empty __init__.py files
    
    Closes #1272
    Signed-off-by: Marton Szasz <sz...@apache.org>
---
 .../test/integration/MiNiFi_integration_test_driver.py   | 16 ++++++++++++++++
 docker/test/integration/environment.py                   | 16 ++++++++++++++++
 docker/test/integration/features/mqtt.feature            | 15 +++++++++++++++
 docker/test/integration/features/opcua.feature           | 15 +++++++++++++++
 docker/test/integration/features/python.feature          | 15 +++++++++++++++
 docker/test/integration/features/replace_text.feature    | 15 +++++++++++++++
 docker/test/integration/features/routetext.feature       | 15 +++++++++++++++
 docker/test/integration/features/s2s.feature             | 15 +++++++++++++++
 docker/test/integration/features/s3.feature              | 15 +++++++++++++++
 docker/test/integration/features/script.feature          | 15 +++++++++++++++
 docker/test/integration/features/splunk.feature          | 15 +++++++++++++++
 docker/test/integration/features/sql.feature             | 15 +++++++++++++++
 .../test/integration/minifi/controllers/ODBCService.py   | 16 ++++++++++++++++
 .../integration/minifi/controllers/SSLContextService.py  | 16 ++++++++++++++++
 .../minifi/core/AzureStorageServerContainer.py           | 16 ++++++++++++++++
 docker/test/integration/minifi/core/Cluster.py           | 16 ++++++++++++++++
 docker/test/integration/minifi/core/Connectable.py       | 16 ++++++++++++++++
 docker/test/integration/minifi/core/ControllerService.py | 16 ++++++++++++++++
 .../minifi/core/DockerTestDirectoryBindings.py           | 16 ++++++++++++++++
 .../test/integration/minifi/core/FileSystemObserver.py   | 16 ++++++++++++++++
 docker/test/integration/minifi/core/FlowContainer.py     | 16 ++++++++++++++++
 docker/test/integration/minifi/core/Funnel.py            | 16 ++++++++++++++++
 .../test/integration/minifi/core/HttpProxyContainer.py   | 16 ++++++++++++++++
 docker/test/integration/minifi/core/InputPort.py         | 16 ++++++++++++++++
 .../test/integration/minifi/core/KafkaBrokerContainer.py | 16 ++++++++++++++++
 .../test/integration/minifi/core/MqttBrokerContainer.py  | 16 ++++++++++++++++
 docker/test/integration/minifi/core/NifiContainer.py     | 16 ++++++++++++++++
 .../test/integration/minifi/core/OPCUAServerContainer.py | 16 ++++++++++++++++
 .../test/integration/minifi/core/OutputEventHandler.py   | 16 ++++++++++++++++
 .../integration/minifi/core/PostgreSQLServerContainer.py | 16 ++++++++++++++++
 docker/test/integration/minifi/core/Processor.py         | 16 ++++++++++++++++
 .../test/integration/minifi/core/RemoteProcessGroup.py   | 16 ++++++++++++++++
 docker/test/integration/minifi/core/S3ServerContainer.py | 16 ++++++++++++++++
 docker/test/integration/minifi/core/SSL_cert_utils.py    | 16 ++++++++++++++++
 docker/test/integration/minifi/core/SplunkContainer.py   | 16 ++++++++++++++++
 .../test/integration/minifi/core/ZookeeperContainer.py   | 16 ++++++++++++++++
 docker/test/integration/minifi/core/utils.py             | 16 ++++++++++++++++
 .../flow_serialization/Minifi_flow_yaml_serializer.py    | 16 ++++++++++++++++
 .../flow_serialization/Nifi_flow_xml_serializer.py       | 16 ++++++++++++++++
 .../integration/minifi/processors/AddPythonAttribute.py  | 16 ++++++++++++++++
 .../integration/minifi/processors/AttributesToJSON.py    | 16 ++++++++++++++++
 .../minifi/processors/AzureBlobStorageProcessorBase.py   | 16 ++++++++++++++++
 .../test/integration/minifi/processors/ConsumeKafka.py   | 16 ++++++++++++++++
 docker/test/integration/minifi/processors/ConsumeMQTT.py | 16 ++++++++++++++++
 .../test/integration/minifi/processors/DefragmentText.py | 16 ++++++++++++++++
 .../minifi/processors/DeleteAzureBlobStorage.py          | 16 ++++++++++++++++
 .../test/integration/minifi/processors/DeleteS3Object.py | 16 ++++++++++++++++
 .../minifi/processors/ExecutePythonProcessor.py          | 16 ++++++++++++++++
 docker/test/integration/minifi/processors/ExecuteSQL.py  | 16 ++++++++++++++++
 .../test/integration/minifi/processors/ExecuteScript.py  | 16 ++++++++++++++++
 .../minifi/processors/FetchAzureBlobStorage.py           | 16 ++++++++++++++++
 .../integration/minifi/processors/FetchOPCProcessor.py   | 16 ++++++++++++++++
 .../test/integration/minifi/processors/FetchS3Object.py  | 16 ++++++++++++++++
 .../integration/minifi/processors/GenerateFlowFile.py    | 16 ++++++++++++++++
 docker/test/integration/minifi/processors/GetFile.py     | 16 ++++++++++++++++
 docker/test/integration/minifi/processors/HashContent.py | 16 ++++++++++++++++
 docker/test/integration/minifi/processors/InvokeHTTP.py  | 16 ++++++++++++++++
 docker/test/integration/minifi/processors/ListS3.py      | 16 ++++++++++++++++
 docker/test/integration/minifi/processors/ListenHTTP.py  | 16 ++++++++++++++++
 .../test/integration/minifi/processors/LogAttribute.py   | 16 ++++++++++++++++
 .../test/integration/minifi/processors/PublishKafka.py   | 16 ++++++++++++++++
 docker/test/integration/minifi/processors/PublishMQTT.py | 16 ++++++++++++++++
 .../integration/minifi/processors/PutAzureBlobStorage.py | 16 ++++++++++++++++
 docker/test/integration/minifi/processors/PutFile.py     | 16 ++++++++++++++++
 .../integration/minifi/processors/PutOPCProcessor.py     | 16 ++++++++++++++++
 docker/test/integration/minifi/processors/PutS3Object.py | 16 ++++++++++++++++
 docker/test/integration/minifi/processors/PutSQL.py      | 16 ++++++++++++++++
 .../test/integration/minifi/processors/PutSplunkHTTP.py  | 16 ++++++++++++++++
 .../integration/minifi/processors/QueryDatabaseTable.py  | 16 ++++++++++++++++
 .../minifi/processors/QuerySplunkIndexingStatus.py       | 16 ++++++++++++++++
 docker/test/integration/minifi/processors/ReplaceText.py | 16 ++++++++++++++++
 .../integration/minifi/processors/RouteOnAttribute.py    | 16 ++++++++++++++++
 docker/test/integration/minifi/processors/RouteText.py   | 16 ++++++++++++++++
 docker/test/integration/minifi/processors/TailFile.py    | 16 ++++++++++++++++
 .../integration/minifi/processors/UpdateAttribute.py     | 16 ++++++++++++++++
 .../minifi/validators/EmptyFilesOutPutValidator.py       | 16 ++++++++++++++++
 .../integration/minifi/validators/FileOutputValidator.py | 16 ++++++++++++++++
 .../minifi/validators/MultiFileOutputValidator.py        | 16 ++++++++++++++++
 .../validators/NoContentCheckFileNumberValidator.py      | 16 ++++++++++++++++
 .../minifi/validators/NoFileOutPutValidator.py           | 16 ++++++++++++++++
 .../minifi/validators/NumFileRangeValidator.py           | 16 ++++++++++++++++
 .../integration/minifi/validators/OutputValidator.py     | 16 ++++++++++++++++
 .../integration/minifi/validators/SegfaultValidator.py   | 16 ++++++++++++++++
 .../minifi/validators/SingleFileOutputValidator.py       | 16 ++++++++++++++++
 .../minifi/validators/SingleJSONFileOutputValidator.py   | 16 ++++++++++++++++
 .../validators/SingleOrMultiFileOutputValidator.py       | 16 ++++++++++++++++
 .../resources/python/add_attribute_to_flowfile.py        | 16 ++++++++++++++++
 .../test/integration/resources/python/sleep_forever.py   | 16 ++++++++++++++++
 .../tests/test_python_scripts/stateful_processor.py      |  3 ---
 python/minifi/__init__.py                                |  2 ++
 thirdparty/google-styleguide/cpplint.py                  | 16 ++++++++++++++++
 thirdparty/google-styleguide/run_linter.py               | 16 ++++++++++++++++
 92 files changed, 1432 insertions(+), 3 deletions(-)

diff --git a/docker/test/integration/MiNiFi_integration_test_driver.py b/docker/test/integration/MiNiFi_integration_test_driver.py
index ad16639..0f2d4b0 100644
--- a/docker/test/integration/MiNiFi_integration_test_driver.py
+++ b/docker/test/integration/MiNiFi_integration_test_driver.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 import time
 import uuid
diff --git a/docker/test/integration/environment.py b/docker/test/integration/environment.py
index d777c8a..a53b86a 100644
--- a/docker/test/integration/environment.py
+++ b/docker/test/integration/environment.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 import datetime
 import sys
diff --git a/docker/test/integration/features/mqtt.feature b/docker/test/integration/features/mqtt.feature
index a606565..784e7ac 100644
--- a/docker/test/integration/features/mqtt.feature
+++ b/docker/test/integration/features/mqtt.feature
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 Feature: Sending data to MQTT streaming platform using PublishMQTT
   In order to send and receive data via MQTT
   As a user of MiNiFi
diff --git a/docker/test/integration/features/opcua.feature b/docker/test/integration/features/opcua.feature
index 8e44aee..37f65bc 100644
--- a/docker/test/integration/features/opcua.feature
+++ b/docker/test/integration/features/opcua.feature
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 Feature: Putting and fetching data to OPC UA server
   In order to send and fetch data from an OPC UA server
   As a user of MiNiFi
diff --git a/docker/test/integration/features/python.feature b/docker/test/integration/features/python.feature
index bd05dfb..2877853 100644
--- a/docker/test/integration/features/python.feature
+++ b/docker/test/integration/features/python.feature
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 Feature: MiNiFi can use python processors in its flows
   Background:
     Given the content of "/tmp/output" is monitored
diff --git a/docker/test/integration/features/replace_text.feature b/docker/test/integration/features/replace_text.feature
index e7f316b..d5e25e7 100644
--- a/docker/test/integration/features/replace_text.feature
+++ b/docker/test/integration/features/replace_text.feature
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 Feature: Changing flowfile contents using the ReplaceText processor
   Background:
     Given the content of "/tmp/output" is monitored
diff --git a/docker/test/integration/features/routetext.feature b/docker/test/integration/features/routetext.feature
index 1b82384..9543e48 100644
--- a/docker/test/integration/features/routetext.feature
+++ b/docker/test/integration/features/routetext.feature
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 Feature: Processing log files line-by-line using RouteText
   Background:
     Given the content of "/tmp/output" is monitored
diff --git a/docker/test/integration/features/s2s.feature b/docker/test/integration/features/s2s.feature
index cec4406..a836a50 100644
--- a/docker/test/integration/features/s2s.feature
+++ b/docker/test/integration/features/s2s.feature
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 Feature: Sending data from MiNiFi-C++ to NiFi using S2S protocol
   In order to transfer data inbetween NiFi and MiNiFi flows
   As a user of MiNiFi
diff --git a/docker/test/integration/features/s3.feature b/docker/test/integration/features/s3.feature
index cf7868a..7f7ee9b 100644
--- a/docker/test/integration/features/s3.feature
+++ b/docker/test/integration/features/s3.feature
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 Feature: Sending data from MiNiFi-C++ to an AWS server
   In order to transfer data to interact with AWS servers
   As a user of MiNiFi
diff --git a/docker/test/integration/features/script.feature b/docker/test/integration/features/script.feature
index 752a142..4a31b3c 100644
--- a/docker/test/integration/features/script.feature
+++ b/docker/test/integration/features/script.feature
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 Feature: MiNiFi can execute Lua and Python scripts
   Background:
     Given the content of "/tmp/output" is monitored
diff --git a/docker/test/integration/features/splunk.feature b/docker/test/integration/features/splunk.feature
index 87aac0a..71750d9 100644
--- a/docker/test/integration/features/splunk.feature
+++ b/docker/test/integration/features/splunk.feature
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 Feature: Sending data to Splunk HEC using PutSplunkHTTP
 
   Background:
diff --git a/docker/test/integration/features/sql.feature b/docker/test/integration/features/sql.feature
index 39978dc..768ed4d 100644
--- a/docker/test/integration/features/sql.feature
+++ b/docker/test/integration/features/sql.feature
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
 Feature: Executing SQL operations from MiNiFi-C++
   As a user of MiNiFi
   I need to have ExecuteSQL, QueryDatabaseTable and PutSQL processors
diff --git a/docker/test/integration/minifi/controllers/ODBCService.py b/docker/test/integration/minifi/controllers/ODBCService.py
index b7db78d..96fa1d8 100644
--- a/docker/test/integration/minifi/controllers/ODBCService.py
+++ b/docker/test/integration/minifi/controllers/ODBCService.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.ControllerService import ControllerService
 
 
diff --git a/docker/test/integration/minifi/controllers/SSLContextService.py b/docker/test/integration/minifi/controllers/SSLContextService.py
index 27f9b32..01ff7b5 100644
--- a/docker/test/integration/minifi/controllers/SSLContextService.py
+++ b/docker/test/integration/minifi/controllers/SSLContextService.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.ControllerService import ControllerService
 
 
diff --git a/docker/test/integration/minifi/core/AzureStorageServerContainer.py b/docker/test/integration/minifi/core/AzureStorageServerContainer.py
index af4aa85..d36300b 100644
--- a/docker/test/integration/minifi/core/AzureStorageServerContainer.py
+++ b/docker/test/integration/minifi/core/AzureStorageServerContainer.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 from .Container import Container
 
diff --git a/docker/test/integration/minifi/core/Cluster.py b/docker/test/integration/minifi/core/Cluster.py
index db69ec9..d13a2f2 100644
--- a/docker/test/integration/minifi/core/Cluster.py
+++ b/docker/test/integration/minifi/core/Cluster.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 class Cluster(object):
     """
     Base Cluster class. This is intended to be a generic interface
diff --git a/docker/test/integration/minifi/core/Connectable.py b/docker/test/integration/minifi/core/Connectable.py
index 3bebc81..ff45c01 100644
--- a/docker/test/integration/minifi/core/Connectable.py
+++ b/docker/test/integration/minifi/core/Connectable.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import uuid
 
 
diff --git a/docker/test/integration/minifi/core/ControllerService.py b/docker/test/integration/minifi/core/ControllerService.py
index f46b500..4ba530b 100644
--- a/docker/test/integration/minifi/core/ControllerService.py
+++ b/docker/test/integration/minifi/core/ControllerService.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import uuid
 import logging
 
diff --git a/docker/test/integration/minifi/core/DockerTestDirectoryBindings.py b/docker/test/integration/minifi/core/DockerTestDirectoryBindings.py
index 0b3f1ec..91a13bb 100644
--- a/docker/test/integration/minifi/core/DockerTestDirectoryBindings.py
+++ b/docker/test/integration/minifi/core/DockerTestDirectoryBindings.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 import os
 import shutil
diff --git a/docker/test/integration/minifi/core/FileSystemObserver.py b/docker/test/integration/minifi/core/FileSystemObserver.py
index a55d5e2..629bd6e 100644
--- a/docker/test/integration/minifi/core/FileSystemObserver.py
+++ b/docker/test/integration/minifi/core/FileSystemObserver.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 import time
 from threading import Event
diff --git a/docker/test/integration/minifi/core/FlowContainer.py b/docker/test/integration/minifi/core/FlowContainer.py
index d8eaffa..748991c 100644
--- a/docker/test/integration/minifi/core/FlowContainer.py
+++ b/docker/test/integration/minifi/core/FlowContainer.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from .Container import Container
 
 
diff --git a/docker/test/integration/minifi/core/Funnel.py b/docker/test/integration/minifi/core/Funnel.py
index 9589d2d..f58fdeb 100644
--- a/docker/test/integration/minifi/core/Funnel.py
+++ b/docker/test/integration/minifi/core/Funnel.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from .Connectable import Connectable
 
 
diff --git a/docker/test/integration/minifi/core/HttpProxyContainer.py b/docker/test/integration/minifi/core/HttpProxyContainer.py
index 79e5872..17ebed5 100644
--- a/docker/test/integration/minifi/core/HttpProxyContainer.py
+++ b/docker/test/integration/minifi/core/HttpProxyContainer.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 from .Container import Container
 
diff --git a/docker/test/integration/minifi/core/InputPort.py b/docker/test/integration/minifi/core/InputPort.py
index cb6b5f1..817f579 100644
--- a/docker/test/integration/minifi/core/InputPort.py
+++ b/docker/test/integration/minifi/core/InputPort.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from .Connectable import Connectable
 
 
diff --git a/docker/test/integration/minifi/core/KafkaBrokerContainer.py b/docker/test/integration/minifi/core/KafkaBrokerContainer.py
index fcc6647..4c0859c 100644
--- a/docker/test/integration/minifi/core/KafkaBrokerContainer.py
+++ b/docker/test/integration/minifi/core/KafkaBrokerContainer.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 from .Container import Container
 
diff --git a/docker/test/integration/minifi/core/MqttBrokerContainer.py b/docker/test/integration/minifi/core/MqttBrokerContainer.py
index 7900e27..3cc618a 100644
--- a/docker/test/integration/minifi/core/MqttBrokerContainer.py
+++ b/docker/test/integration/minifi/core/MqttBrokerContainer.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 from .Container import Container
 
diff --git a/docker/test/integration/minifi/core/NifiContainer.py b/docker/test/integration/minifi/core/NifiContainer.py
index 42bdf48..df72227 100644
--- a/docker/test/integration/minifi/core/NifiContainer.py
+++ b/docker/test/integration/minifi/core/NifiContainer.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 
 from .FlowContainer import FlowContainer
diff --git a/docker/test/integration/minifi/core/OPCUAServerContainer.py b/docker/test/integration/minifi/core/OPCUAServerContainer.py
index 969395c..77e4e59 100644
--- a/docker/test/integration/minifi/core/OPCUAServerContainer.py
+++ b/docker/test/integration/minifi/core/OPCUAServerContainer.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 from .Container import Container
 
diff --git a/docker/test/integration/minifi/core/OutputEventHandler.py b/docker/test/integration/minifi/core/OutputEventHandler.py
index 7268d1f..735295f 100644
--- a/docker/test/integration/minifi/core/OutputEventHandler.py
+++ b/docker/test/integration/minifi/core/OutputEventHandler.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 import threading
 import os
diff --git a/docker/test/integration/minifi/core/PostgreSQLServerContainer.py b/docker/test/integration/minifi/core/PostgreSQLServerContainer.py
index 90c3700..664095f 100644
--- a/docker/test/integration/minifi/core/PostgreSQLServerContainer.py
+++ b/docker/test/integration/minifi/core/PostgreSQLServerContainer.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from .Container import Container
 
 
diff --git a/docker/test/integration/minifi/core/Processor.py b/docker/test/integration/minifi/core/Processor.py
index 161926b..4f004f9 100644
--- a/docker/test/integration/minifi/core/Processor.py
+++ b/docker/test/integration/minifi/core/Processor.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from .Connectable import Connectable
 
 
diff --git a/docker/test/integration/minifi/core/RemoteProcessGroup.py b/docker/test/integration/minifi/core/RemoteProcessGroup.py
index c4cafc1..c57b2d1 100644
--- a/docker/test/integration/minifi/core/RemoteProcessGroup.py
+++ b/docker/test/integration/minifi/core/RemoteProcessGroup.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import uuid
 
 
diff --git a/docker/test/integration/minifi/core/S3ServerContainer.py b/docker/test/integration/minifi/core/S3ServerContainer.py
index 565be4d..0f93c6b 100644
--- a/docker/test/integration/minifi/core/S3ServerContainer.py
+++ b/docker/test/integration/minifi/core/S3ServerContainer.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 from .Container import Container
 
diff --git a/docker/test/integration/minifi/core/SSL_cert_utils.py b/docker/test/integration/minifi/core/SSL_cert_utils.py
index 04bbcce..59e0498 100644
--- a/docker/test/integration/minifi/core/SSL_cert_utils.py
+++ b/docker/test/integration/minifi/core/SSL_cert_utils.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import time
 import logging
 import random
diff --git a/docker/test/integration/minifi/core/SplunkContainer.py b/docker/test/integration/minifi/core/SplunkContainer.py
index fc1c806..ea18da4 100644
--- a/docker/test/integration/minifi/core/SplunkContainer.py
+++ b/docker/test/integration/minifi/core/SplunkContainer.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 from .Container import Container
 
diff --git a/docker/test/integration/minifi/core/ZookeeperContainer.py b/docker/test/integration/minifi/core/ZookeeperContainer.py
index 107339e..be61282 100644
--- a/docker/test/integration/minifi/core/ZookeeperContainer.py
+++ b/docker/test/integration/minifi/core/ZookeeperContainer.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 from .Container import Container
 
diff --git a/docker/test/integration/minifi/core/utils.py b/docker/test/integration/minifi/core/utils.py
index fe19278..f559a2b 100644
--- a/docker/test/integration/minifi/core/utils.py
+++ b/docker/test/integration/minifi/core/utils.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import time
 import functools
 import os
diff --git a/docker/test/integration/minifi/flow_serialization/Minifi_flow_yaml_serializer.py b/docker/test/integration/minifi/flow_serialization/Minifi_flow_yaml_serializer.py
index 430bb48..d0606bc 100644
--- a/docker/test/integration/minifi/flow_serialization/Minifi_flow_yaml_serializer.py
+++ b/docker/test/integration/minifi/flow_serialization/Minifi_flow_yaml_serializer.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import uuid
 import yaml
 
diff --git a/docker/test/integration/minifi/flow_serialization/Nifi_flow_xml_serializer.py b/docker/test/integration/minifi/flow_serialization/Nifi_flow_xml_serializer.py
index 391e3fa..22af976 100644
--- a/docker/test/integration/minifi/flow_serialization/Nifi_flow_xml_serializer.py
+++ b/docker/test/integration/minifi/flow_serialization/Nifi_flow_xml_serializer.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import uuid
 
 import xml.etree.cElementTree as elementTree
diff --git a/docker/test/integration/minifi/processors/AddPythonAttribute.py b/docker/test/integration/minifi/processors/AddPythonAttribute.py
index 59d7ac0..77f8834 100644
--- a/docker/test/integration/minifi/processors/AddPythonAttribute.py
+++ b/docker/test/integration/minifi/processors/AddPythonAttribute.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/AttributesToJSON.py b/docker/test/integration/minifi/processors/AttributesToJSON.py
index 9bf7747..a98fbf7 100644
--- a/docker/test/integration/minifi/processors/AttributesToJSON.py
+++ b/docker/test/integration/minifi/processors/AttributesToJSON.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/AzureBlobStorageProcessorBase.py b/docker/test/integration/minifi/processors/AzureBlobStorageProcessorBase.py
index 31f36cd..0701ac7 100644
--- a/docker/test/integration/minifi/processors/AzureBlobStorageProcessorBase.py
+++ b/docker/test/integration/minifi/processors/AzureBlobStorageProcessorBase.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/ConsumeKafka.py b/docker/test/integration/minifi/processors/ConsumeKafka.py
index 35fabd9..2393646 100644
--- a/docker/test/integration/minifi/processors/ConsumeKafka.py
+++ b/docker/test/integration/minifi/processors/ConsumeKafka.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/ConsumeMQTT.py b/docker/test/integration/minifi/processors/ConsumeMQTT.py
index 8c5721f..6b2c444 100644
--- a/docker/test/integration/minifi/processors/ConsumeMQTT.py
+++ b/docker/test/integration/minifi/processors/ConsumeMQTT.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/DefragmentText.py b/docker/test/integration/minifi/processors/DefragmentText.py
index 29ea2e5..d1f272f 100644
--- a/docker/test/integration/minifi/processors/DefragmentText.py
+++ b/docker/test/integration/minifi/processors/DefragmentText.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/DeleteAzureBlobStorage.py b/docker/test/integration/minifi/processors/DeleteAzureBlobStorage.py
index ac5b0a8..ca44ad8 100644
--- a/docker/test/integration/minifi/processors/DeleteAzureBlobStorage.py
+++ b/docker/test/integration/minifi/processors/DeleteAzureBlobStorage.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from .AzureBlobStorageProcessorBase import AzureBlobStorageProcessorBase
 
 
diff --git a/docker/test/integration/minifi/processors/DeleteS3Object.py b/docker/test/integration/minifi/processors/DeleteS3Object.py
index edfe8fc..501df28 100644
--- a/docker/test/integration/minifi/processors/DeleteS3Object.py
+++ b/docker/test/integration/minifi/processors/DeleteS3Object.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/ExecutePythonProcessor.py b/docker/test/integration/minifi/processors/ExecutePythonProcessor.py
index 9e3aab2..5590535 100644
--- a/docker/test/integration/minifi/processors/ExecutePythonProcessor.py
+++ b/docker/test/integration/minifi/processors/ExecutePythonProcessor.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/ExecuteSQL.py b/docker/test/integration/minifi/processors/ExecuteSQL.py
index 9b05bb9..95457fd 100644
--- a/docker/test/integration/minifi/processors/ExecuteSQL.py
+++ b/docker/test/integration/minifi/processors/ExecuteSQL.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/ExecuteScript.py b/docker/test/integration/minifi/processors/ExecuteScript.py
index 3ff3bc7..02c09ba 100644
--- a/docker/test/integration/minifi/processors/ExecuteScript.py
+++ b/docker/test/integration/minifi/processors/ExecuteScript.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/FetchAzureBlobStorage.py b/docker/test/integration/minifi/processors/FetchAzureBlobStorage.py
index 3e7ed6d..c6adc4b 100644
--- a/docker/test/integration/minifi/processors/FetchAzureBlobStorage.py
+++ b/docker/test/integration/minifi/processors/FetchAzureBlobStorage.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from .AzureBlobStorageProcessorBase import AzureBlobStorageProcessorBase
 
 
diff --git a/docker/test/integration/minifi/processors/FetchOPCProcessor.py b/docker/test/integration/minifi/processors/FetchOPCProcessor.py
index cfa9b76..c16422a 100644
--- a/docker/test/integration/minifi/processors/FetchOPCProcessor.py
+++ b/docker/test/integration/minifi/processors/FetchOPCProcessor.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/FetchS3Object.py b/docker/test/integration/minifi/processors/FetchS3Object.py
index c3fe96f..28509e4 100644
--- a/docker/test/integration/minifi/processors/FetchS3Object.py
+++ b/docker/test/integration/minifi/processors/FetchS3Object.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/GenerateFlowFile.py b/docker/test/integration/minifi/processors/GenerateFlowFile.py
index e9ebc5f..95e9f33 100644
--- a/docker/test/integration/minifi/processors/GenerateFlowFile.py
+++ b/docker/test/integration/minifi/processors/GenerateFlowFile.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/GetFile.py b/docker/test/integration/minifi/processors/GetFile.py
index de7b182..083103f 100644
--- a/docker/test/integration/minifi/processors/GetFile.py
+++ b/docker/test/integration/minifi/processors/GetFile.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/HashContent.py b/docker/test/integration/minifi/processors/HashContent.py
index 6b5d3b0..512a825 100644
--- a/docker/test/integration/minifi/processors/HashContent.py
+++ b/docker/test/integration/minifi/processors/HashContent.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/InvokeHTTP.py b/docker/test/integration/minifi/processors/InvokeHTTP.py
index 43355e9..74b06bf 100644
--- a/docker/test/integration/minifi/processors/InvokeHTTP.py
+++ b/docker/test/integration/minifi/processors/InvokeHTTP.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/ListS3.py b/docker/test/integration/minifi/processors/ListS3.py
index d658294..72b9c34 100644
--- a/docker/test/integration/minifi/processors/ListS3.py
+++ b/docker/test/integration/minifi/processors/ListS3.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/ListenHTTP.py b/docker/test/integration/minifi/processors/ListenHTTP.py
index c4efb9b..d2da48b 100644
--- a/docker/test/integration/minifi/processors/ListenHTTP.py
+++ b/docker/test/integration/minifi/processors/ListenHTTP.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/LogAttribute.py b/docker/test/integration/minifi/processors/LogAttribute.py
index 3f824d7..eb33597 100644
--- a/docker/test/integration/minifi/processors/LogAttribute.py
+++ b/docker/test/integration/minifi/processors/LogAttribute.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/PublishKafka.py b/docker/test/integration/minifi/processors/PublishKafka.py
index 4cc1ce6..08c5dbe 100644
--- a/docker/test/integration/minifi/processors/PublishKafka.py
+++ b/docker/test/integration/minifi/processors/PublishKafka.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/PublishMQTT.py b/docker/test/integration/minifi/processors/PublishMQTT.py
index 4f84fa8..d4840fe 100644
--- a/docker/test/integration/minifi/processors/PublishMQTT.py
+++ b/docker/test/integration/minifi/processors/PublishMQTT.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/PutAzureBlobStorage.py b/docker/test/integration/minifi/processors/PutAzureBlobStorage.py
index a058dd1..b819774 100644
--- a/docker/test/integration/minifi/processors/PutAzureBlobStorage.py
+++ b/docker/test/integration/minifi/processors/PutAzureBlobStorage.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from .AzureBlobStorageProcessorBase import AzureBlobStorageProcessorBase
 
 
diff --git a/docker/test/integration/minifi/processors/PutFile.py b/docker/test/integration/minifi/processors/PutFile.py
index 9428b7b..a990562 100644
--- a/docker/test/integration/minifi/processors/PutFile.py
+++ b/docker/test/integration/minifi/processors/PutFile.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/PutOPCProcessor.py b/docker/test/integration/minifi/processors/PutOPCProcessor.py
index 47950e7..24e12bb 100644
--- a/docker/test/integration/minifi/processors/PutOPCProcessor.py
+++ b/docker/test/integration/minifi/processors/PutOPCProcessor.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/PutS3Object.py b/docker/test/integration/minifi/processors/PutS3Object.py
index f78dcbb..755825f 100644
--- a/docker/test/integration/minifi/processors/PutS3Object.py
+++ b/docker/test/integration/minifi/processors/PutS3Object.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/PutSQL.py b/docker/test/integration/minifi/processors/PutSQL.py
index b086f6e..e5a2ce5 100644
--- a/docker/test/integration/minifi/processors/PutSQL.py
+++ b/docker/test/integration/minifi/processors/PutSQL.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/PutSplunkHTTP.py b/docker/test/integration/minifi/processors/PutSplunkHTTP.py
index 8565cf5..51d5662 100644
--- a/docker/test/integration/minifi/processors/PutSplunkHTTP.py
+++ b/docker/test/integration/minifi/processors/PutSplunkHTTP.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/QueryDatabaseTable.py b/docker/test/integration/minifi/processors/QueryDatabaseTable.py
index 9312b60..10b1d8d 100644
--- a/docker/test/integration/minifi/processors/QueryDatabaseTable.py
+++ b/docker/test/integration/minifi/processors/QueryDatabaseTable.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/QuerySplunkIndexingStatus.py b/docker/test/integration/minifi/processors/QuerySplunkIndexingStatus.py
index 5400d26..305a2ac 100644
--- a/docker/test/integration/minifi/processors/QuerySplunkIndexingStatus.py
+++ b/docker/test/integration/minifi/processors/QuerySplunkIndexingStatus.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/ReplaceText.py b/docker/test/integration/minifi/processors/ReplaceText.py
index 4612f33..d5b85ca 100644
--- a/docker/test/integration/minifi/processors/ReplaceText.py
+++ b/docker/test/integration/minifi/processors/ReplaceText.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/RouteOnAttribute.py b/docker/test/integration/minifi/processors/RouteOnAttribute.py
index c7a9158..5a1b076 100644
--- a/docker/test/integration/minifi/processors/RouteOnAttribute.py
+++ b/docker/test/integration/minifi/processors/RouteOnAttribute.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/RouteText.py b/docker/test/integration/minifi/processors/RouteText.py
index 164fa97..4909097 100644
--- a/docker/test/integration/minifi/processors/RouteText.py
+++ b/docker/test/integration/minifi/processors/RouteText.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/TailFile.py b/docker/test/integration/minifi/processors/TailFile.py
index ab30ad7..699a2a9 100644
--- a/docker/test/integration/minifi/processors/TailFile.py
+++ b/docker/test/integration/minifi/processors/TailFile.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/processors/UpdateAttribute.py b/docker/test/integration/minifi/processors/UpdateAttribute.py
index b40fc93..37b6408 100644
--- a/docker/test/integration/minifi/processors/UpdateAttribute.py
+++ b/docker/test/integration/minifi/processors/UpdateAttribute.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from ..core.Processor import Processor
 
 
diff --git a/docker/test/integration/minifi/validators/EmptyFilesOutPutValidator.py b/docker/test/integration/minifi/validators/EmptyFilesOutPutValidator.py
index 521a7e9..d34abfb 100644
--- a/docker/test/integration/minifi/validators/EmptyFilesOutPutValidator.py
+++ b/docker/test/integration/minifi/validators/EmptyFilesOutPutValidator.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 import os
 
diff --git a/docker/test/integration/minifi/validators/FileOutputValidator.py b/docker/test/integration/minifi/validators/FileOutputValidator.py
index d81e270..390a520 100644
--- a/docker/test/integration/minifi/validators/FileOutputValidator.py
+++ b/docker/test/integration/minifi/validators/FileOutputValidator.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 import os
 
diff --git a/docker/test/integration/minifi/validators/MultiFileOutputValidator.py b/docker/test/integration/minifi/validators/MultiFileOutputValidator.py
index 9d56da2..76547b0 100644
--- a/docker/test/integration/minifi/validators/MultiFileOutputValidator.py
+++ b/docker/test/integration/minifi/validators/MultiFileOutputValidator.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 import os
 
diff --git a/docker/test/integration/minifi/validators/NoContentCheckFileNumberValidator.py b/docker/test/integration/minifi/validators/NoContentCheckFileNumberValidator.py
index f91336a..5d2f964 100644
--- a/docker/test/integration/minifi/validators/NoContentCheckFileNumberValidator.py
+++ b/docker/test/integration/minifi/validators/NoContentCheckFileNumberValidator.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 import os
 
diff --git a/docker/test/integration/minifi/validators/NoFileOutPutValidator.py b/docker/test/integration/minifi/validators/NoFileOutPutValidator.py
index f4f06f7..dc4fd4f 100644
--- a/docker/test/integration/minifi/validators/NoFileOutPutValidator.py
+++ b/docker/test/integration/minifi/validators/NoFileOutPutValidator.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 import os
 
diff --git a/docker/test/integration/minifi/validators/NumFileRangeValidator.py b/docker/test/integration/minifi/validators/NumFileRangeValidator.py
index 686011b..8a7c6a6 100644
--- a/docker/test/integration/minifi/validators/NumFileRangeValidator.py
+++ b/docker/test/integration/minifi/validators/NumFileRangeValidator.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 import os
 
diff --git a/docker/test/integration/minifi/validators/OutputValidator.py b/docker/test/integration/minifi/validators/OutputValidator.py
index 9fdb4b4..8f47aae 100644
--- a/docker/test/integration/minifi/validators/OutputValidator.py
+++ b/docker/test/integration/minifi/validators/OutputValidator.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 class OutputValidator(object):
     """
     Base output validator class. Validators must implement
diff --git a/docker/test/integration/minifi/validators/SegfaultValidator.py b/docker/test/integration/minifi/validators/SegfaultValidator.py
index 3dae0f7..9fbe762 100644
--- a/docker/test/integration/minifi/validators/SegfaultValidator.py
+++ b/docker/test/integration/minifi/validators/SegfaultValidator.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 from .OutputValidator import OutputValidator
 
 
diff --git a/docker/test/integration/minifi/validators/SingleFileOutputValidator.py b/docker/test/integration/minifi/validators/SingleFileOutputValidator.py
index b8669bd..d0ebf26 100644
--- a/docker/test/integration/minifi/validators/SingleFileOutputValidator.py
+++ b/docker/test/integration/minifi/validators/SingleFileOutputValidator.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 import os
 
diff --git a/docker/test/integration/minifi/validators/SingleJSONFileOutputValidator.py b/docker/test/integration/minifi/validators/SingleJSONFileOutputValidator.py
index 86b70a2..a843775 100644
--- a/docker/test/integration/minifi/validators/SingleJSONFileOutputValidator.py
+++ b/docker/test/integration/minifi/validators/SingleJSONFileOutputValidator.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 import os
 import json
diff --git a/docker/test/integration/minifi/validators/SingleOrMultiFileOutputValidator.py b/docker/test/integration/minifi/validators/SingleOrMultiFileOutputValidator.py
index 3c09066..4d8a285 100644
--- a/docker/test/integration/minifi/validators/SingleOrMultiFileOutputValidator.py
+++ b/docker/test/integration/minifi/validators/SingleOrMultiFileOutputValidator.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import logging
 import os
 
diff --git a/docker/test/integration/resources/python/add_attribute_to_flowfile.py b/docker/test/integration/resources/python/add_attribute_to_flowfile.py
index 0ab4724..c7944de 100644
--- a/docker/test/integration/resources/python/add_attribute_to_flowfile.py
+++ b/docker/test/integration/resources/python/add_attribute_to_flowfile.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 def describe(processor):
     processor.setDescription("Adds an attribute to your flow files")
 
diff --git a/docker/test/integration/resources/python/sleep_forever.py b/docker/test/integration/resources/python/sleep_forever.py
index 3e8952c..047f38d 100644
--- a/docker/test/integration/resources/python/sleep_forever.py
+++ b/docker/test/integration/resources/python/sleep_forever.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import time
 
 
diff --git a/extensions/script/tests/test_python_scripts/stateful_processor.py b/extensions/script/tests/test_python_scripts/stateful_processor.py
index 2cfa072..12aaecc 100644
--- a/extensions/script/tests/test_python_scripts/stateful_processor.py
+++ b/extensions/script/tests/test_python_scripts/stateful_processor.py
@@ -1,5 +1,3 @@
-#
-#
 #  Licensed to the Apache Software Foundation (ASF) under one or more
 #  contributor license agreements.  See the NOTICE file distributed with
 #  this work for additional information regarding copyright ownership.
@@ -14,7 +12,6 @@
 #  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.
-#
 
 
 def describe(processor):
diff --git a/python/minifi/__init__.py b/python/minifi/__init__.py
index baeed7e..8d66e54 100644
--- a/python/minifi/__init__.py
+++ b/python/minifi/__init__.py
@@ -13,6 +13,8 @@
 # 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.
+
+
 from ctypes import cdll
 import ctypes
 from abc import abstractmethod
diff --git a/thirdparty/google-styleguide/cpplint.py b/thirdparty/google-styleguide/cpplint.py
index 26373f1..ac6eb0d 100644
--- a/thirdparty/google-styleguide/cpplint.py
+++ b/thirdparty/google-styleguide/cpplint.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 #!/usr/bin/env python
 #
 # Copyright (c) 2009 Google Inc. All rights reserved.
diff --git a/thirdparty/google-styleguide/run_linter.py b/thirdparty/google-styleguide/run_linter.py
index 10d30cd..ecbccee 100644
--- a/thirdparty/google-styleguide/run_linter.py
+++ b/thirdparty/google-styleguide/run_linter.py
@@ -1,3 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+
 import argparse
 import multiprocessing
 import os