This is an automated email from the ASF dual-hosted git repository.
martinzink pushed a commit to branch MINIFICPP-2584-apache
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
The following commit(s) were added to refs/heads/MINIFICPP-2584-apache by this
push:
new 224bf8a05 remove LocationsImpl.h
224bf8a05 is described below
commit 224bf8a051eee688c290edc74088f4cc60781ef3
Author: Martin Zink <[email protected]>
AuthorDate: Tue Jul 15 21:52:36 2025 +0200
remove LocationsImpl.h
---
controller/MiNiFiController.cpp | 7 +-
.../tests/ExpressionLanguageTests.cpp | 1 -
extensions/python/PythonCreator.h | 38 ++++----
.../rocksdb-repos/DatabaseContentRepository.cpp | 16 ++--
extensions/rocksdb-repos/FlowFileRepository.cpp | 12 +--
.../controllers/RocksDbStateStorage.cpp | 9 +-
.../rocksdb-repos/tests/ContentSessionTests.cpp | 1 -
.../tests/DBContentRepositoryTests.cpp | 12 ---
extensions/rocksdb-repos/tests/EncryptionTests.cpp | 1 -
extensions/rocksdb-repos/tests/RepoTests.cpp | 14 ---
extensions/rocksdb-repos/tests/SwapTests.cpp | 1 -
extensions/sftp/tests/ListSFTPTests.cpp | 6 --
.../tests/unit/TailFileTests.cpp | 1 -
libminifi/include/properties/Configure.h | 5 -
libminifi/include/properties/LocationsImpl.h | 103 ---------------------
libminifi/src/Configure.cpp | 9 --
libminifi/src/core/extension/ExtensionManager.cpp | 13 +--
libminifi/src/utils/file/AssetManager.cpp | 11 +--
libminifi/test/integration/AlertTests.cpp | 1 -
libminifi/test/integration/C2DebugBundleTest.cpp | 1 -
.../test/integration/C2PropertiesUpdateTests.cpp | 1 -
libminifi/test/libtest/unit/TestBase.cpp | 1 -
.../test/persistence-tests/PersistenceTests.cpp | 2 -
libminifi/test/unit/DecryptorTests.cpp | 1 -
libminifi/test/unit/LogMetricsPublisherTests.cpp | 1 -
libminifi/test/unit/ProcessSessionTests.cpp | 1 -
.../include/minifi-cpp/properties/Configure.h | 3 -
.../include/minifi-cpp/properties/Locations.h | 37 --------
minifi_main/Fips.cpp | 21 +++--
minifi_main/Fips.h | 3 +-
minifi_main/MainHelper.cpp | 36 ++++++-
minifi_main/MainHelper.h | 22 ++---
minifi_main/MiNiFiMain.cpp | 26 +++---
utils/include/utils/Locations.h | 42 +++++++++
34 files changed, 158 insertions(+), 301 deletions(-)
diff --git a/controller/MiNiFiController.cpp b/controller/MiNiFiController.cpp
index 643ec6951..a14ba8e0a 100644
--- a/controller/MiNiFiController.cpp
+++ b/controller/MiNiFiController.cpp
@@ -97,11 +97,10 @@ int main(int argc, char **argv) {
}
const auto configuration = std::make_shared<minifi::ConfigureImpl>();
- configuration->setLocations(locations);
- configuration->loadConfigureFile(locations->getPropertiesPath());
+ configuration->loadConfigureFile(locations->properties_path_);
- const auto log_properties =
std::make_shared<minifi::core::logging::LoggerProperties>(locations->getLogsDirs());
- log_properties->loadConfigureFile(locations->getLogPropertiesPath(),
"nifi.log.");
+ const auto log_properties =
std::make_shared<minifi::core::logging::LoggerProperties>(locations->logs_dir_);
+ log_properties->loadConfigureFile(locations->log_properties_path_,
"nifi.log.");
minifi::core::logging::LoggerConfiguration::getConfiguration().initialize(log_properties);
diff --git a/extensions/expression-language/tests/ExpressionLanguageTests.cpp
b/extensions/expression-language/tests/ExpressionLanguageTests.cpp
index 007f23134..d2a915a84 100644
--- a/extensions/expression-language/tests/ExpressionLanguageTests.cpp
+++ b/extensions/expression-language/tests/ExpressionLanguageTests.cpp
@@ -193,7 +193,6 @@ TEST_CASE("GetFile PutFile dynamic attribute",
"[expressionLanguageTestGetFilePu
LogTestController::getInstance().setTrace<minifi::processors::UpdateAttribute>();
auto conf = std::make_shared<minifi::ConfigureImpl>();
-
conf->setLocations(minifi::LocationsImpl::createFromMinifiHome(testController.createTempDirectory()));
conf->set("nifi.my.own.property", "custom_value");
diff --git a/extensions/python/PythonCreator.h
b/extensions/python/PythonCreator.h
index a6a38e7ea..b10d767f0 100644
--- a/extensions/python/PythonCreator.h
+++ b/extensions/python/PythonCreator.h
@@ -18,26 +18,28 @@
#pragma once
-#include <vector>
#include <algorithm>
-#include <string>
-#include <memory>
#include <filesystem>
-#include "core/Core.h"
-#include "core/logging/LoggerFactory.h"
-#include "core/Resource.h"
+#include <memory>
+#include <string>
+#include <vector>
+
#include "ExecutePythonProcessor.h"
#include "PythonConfigState.h"
+#include "PythonDependencyInstaller.h"
#include "PythonObjectFactory.h"
+#include "core/Core.h"
+#include "core/Resource.h"
+#include "core/logging/LoggerFactory.h"
#include "minifi-cpp/agent/agent_version.h"
#include "minifi-cpp/agent/build_description.h"
-#include "utils/file/FileUtils.h"
-#include "utils/StringUtils.h"
#include "range/v3/algorithm.hpp"
-#include "utils/file/FilePattern.h"
#include "range/v3/view/filter.hpp"
-#include "PythonDependencyInstaller.h"
-#include "utils/file/PathUtils.h"
+#include "utils/Environment.h"
+#include "utils/Locations.h"
+#include "utils/StringUtils.h"
+#include "utils/file/FilePattern.h"
+#include "utils/file/FileUtils.h"
namespace org::apache::nifi::minifi::extensions::python {
@@ -162,19 +164,13 @@ class PythonCreator : public
minifi::core::CoreComponentImpl {
}
std::filesystem::path getPythonLibPath(const std::shared_ptr<Configure>&
configuration) {
- constexpr std::string_view DEFAULT_EXTENSION_PATH = "../extensions/*";
const std::string pattern = [&] {
- if (const auto opt_pattern =
configuration->get(minifi::Configuration::nifi_extension_path)) {
+ if (const auto opt_pattern =
configuration->get(Configuration::nifi_extension_path)) {
return *opt_pattern;
};
-
- if (const auto locations = configuration->getLocations()) {
- logger_->log_warn("No extension path is provided in properties, using
default : '{}'", locations->getDefaultExtensionsPattern());
- return std::string(locations->getDefaultExtensionsPattern());
- };
-
- logger_->log_error("No extension path is provided in properties and
locations is empty, using hard-coded default: '{}'", DEFAULT_EXTENSION_PATH);
- return std::string(DEFAULT_EXTENSION_PATH);
+ const auto default_extension_path = utils::getDefaultExtensionsPattern();
+ logger_->log_warn("No extension path is provided in properties, using
default: '{}'", default_extension_path);
+ return default_extension_path;
}();
const auto candidates =
utils::file::match(utils::file::FilePattern(pattern, [&] (std::string_view
subpattern, std::string_view error_msg) {
logger_->log_error("Error in subpattern '{}': {}", subpattern,
error_msg);
diff --git a/extensions/rocksdb-repos/DatabaseContentRepository.cpp
b/extensions/rocksdb-repos/DatabaseContentRepository.cpp
index 5829601ab..6bfa6cefa 100644
--- a/extensions/rocksdb-repos/DatabaseContentRepository.cpp
+++ b/extensions/rocksdb-repos/DatabaseContentRepository.cpp
@@ -17,26 +17,26 @@
#include "DatabaseContentRepository.h"
+#include <cinttypes>
#include <memory>
#include <string>
#include <utility>
#include <vector>
-#include <cinttypes>
-#include "encryption/RocksDbEncryptionProvider.h"
-#include "RocksDbStream.h"
-#include "utils/gsl.h"
#include "Exception.h"
-#include "database/RocksDbUtils.h"
-#include "database/StringAppender.h"
+#include "RocksDbStream.h"
#include "core/Resource.h"
#include "core/TypedValues.h"
+#include "database/RocksDbUtils.h"
+#include "database/StringAppender.h"
+#include "encryption/RocksDbEncryptionProvider.h"
+#include "utils/Locations.h"
+#include "utils/gsl.h"
namespace org::apache::nifi::minifi::core::repository {
bool DatabaseContentRepository::initialize(const
std::shared_ptr<minifi::Configure> &configuration) {
- const auto locations = configuration->getLocations();
- const auto working_dir = locations ? locations->getWorkingDir() :
std::filesystem::current_path(); // TODO(mzink)
+ const auto working_dir = utils::getMinifiDir();
std::string value;
if
(configuration->get(Configure::nifi_dbcontent_repository_directory_default,
value) && !value.empty()) {
diff --git a/extensions/rocksdb-repos/FlowFileRepository.cpp
b/extensions/rocksdb-repos/FlowFileRepository.cpp
index 346a512d6..a37bc2751 100644
--- a/extensions/rocksdb-repos/FlowFileRepository.cpp
+++ b/extensions/rocksdb-repos/FlowFileRepository.cpp
@@ -24,13 +24,14 @@
#include <utility>
#include <vector>
+#include "FlowFileRecord.h"
+#include "core/Resource.h"
+#include "core/TypedValues.h"
#include "rocksdb/options.h"
#include "rocksdb/slice.h"
-#include "utils/gsl.h"
-#include "core/Resource.h"
+#include "utils/Locations.h"
#include "utils/OptionalUtils.h"
-#include "core/TypedValues.h"
-#include "FlowFileRecord.h"
+#include "utils/gsl.h"
using namespace std::literals::chrono_literals;
@@ -210,8 +211,7 @@ bool FlowFileRepository::initialize(const
std::shared_ptr<Configure> &configure)
setCompactionPeriod(configure);
- const auto locations = configure->getLocations();
- const auto working_dir = locations ? locations->getWorkingDir() :
std::filesystem::current_path(); // TODO(mzink)
+ const auto working_dir = utils::getMinifiDir();
const auto encrypted_env =
createEncryptingEnv(utils::crypto::EncryptionManager{working_dir},
DbEncryptionOptions{directory_, ENCRYPTION_KEY_NAME});
logger_->log_info("Using {} FlowFileRepository", encrypted_env ? "encrypted"
: "plaintext");
diff --git a/extensions/rocksdb-repos/controllers/RocksDbStateStorage.cpp
b/extensions/rocksdb-repos/controllers/RocksDbStateStorage.cpp
index 58496ef50..26956e480 100644
--- a/extensions/rocksdb-repos/controllers/RocksDbStateStorage.cpp
+++ b/extensions/rocksdb-repos/controllers/RocksDbStateStorage.cpp
@@ -15,14 +15,16 @@
* limitations under the License.
*/
+#include "RocksDbStateStorage.h"
+
#include <cinttypes>
#include <fstream>
#include <utility>
-#include "RocksDbStateStorage.h"
#include "../encryption/RocksDbEncryptionProvider.h"
-#include "utils/StringUtils.h"
#include "core/Resource.h"
+#include "utils/Locations.h"
+#include "utils/StringUtils.h"
namespace org::apache::nifi::minifi::controllers {
@@ -61,8 +63,7 @@ void RocksDbStateStorage::onEnable() {
db_.reset();
- const auto locations = configuration_->getLocations();
- const auto working_dir = locations ? locations->getWorkingDir() :
std::filesystem::current_path(); // TODO(mzink)
+ const auto working_dir = utils::getMinifiDir();
auto encrypted_env =
createEncryptingEnv(utils::crypto::EncryptionManager{working_dir},
core::repository::DbEncryptionOptions{directory_, ENCRYPTION_KEY_NAME});
if (!encrypted_env) {
diff --git a/extensions/rocksdb-repos/tests/ContentSessionTests.cpp
b/extensions/rocksdb-repos/tests/ContentSessionTests.cpp
index 03922bbc6..1c33b14e8 100644
--- a/extensions/rocksdb-repos/tests/ContentSessionTests.cpp
+++ b/extensions/rocksdb-repos/tests/ContentSessionTests.cpp
@@ -37,7 +37,6 @@ class ContentSessionController : public TestController {
: contentRepository(std::make_shared<ContentRepositoryClass>()) {
auto contentRepoPath = createTempDirectory();
auto config = std::make_shared<minifi::ConfigureImpl>();
-
config->setLocations(minifi::LocationsImpl::createFromMinifiHome(contentRepoPath));
config->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
contentRepoPath.string());
contentRepository->initialize(config);
}
diff --git a/extensions/rocksdb-repos/tests/DBContentRepositoryTests.cpp
b/extensions/rocksdb-repos/tests/DBContentRepositoryTests.cpp
index 3a6b657be..7fc19ca4d 100644
--- a/extensions/rocksdb-repos/tests/DBContentRepositoryTests.cpp
+++ b/extensions/rocksdb-repos/tests/DBContentRepositoryTests.cpp
@@ -44,7 +44,6 @@ TEST_CASE("Write Claim", "[TestDBCR1]") {
auto content_repo = std::make_shared<TestDatabaseContentRepository>();
auto configuration =
std::make_shared<org::apache::nifi::minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
configuration->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
dir.string());
REQUIRE(content_repo->initialize(configuration));
@@ -67,7 +66,6 @@ TEST_CASE("Write Claim", "[TestDBCR1]") {
content_repo = std::make_shared<TestDatabaseContentRepository>();
configuration = std::make_shared<org::apache::nifi::minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
configuration->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
dir.string());
REQUIRE(content_repo->initialize(configuration));
@@ -92,7 +90,6 @@ TEST_CASE("Delete Claim", "[TestDBCR2]") {
auto content_repo = std::make_shared<TestDatabaseContentRepository>();
auto configuration =
std::make_shared<org::apache::nifi::minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
configuration->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
dir.string());
REQUIRE(content_repo->initialize(configuration));
@@ -112,7 +109,6 @@ TEST_CASE("Delete Claim", "[TestDBCR2]") {
content_repo = std::make_shared<TestDatabaseContentRepository>();
configuration = std::make_shared<org::apache::nifi::minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
configuration->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
dir.string());
std::string readstr;
@@ -151,7 +147,6 @@ TEST_CASE("Append Claim", "[TestDBCR1]") {
auto content_repo = std::make_shared<TestDatabaseContentRepository>();
auto configuration =
std::make_shared<org::apache::nifi::minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
configuration->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
dir.string());
REQUIRE(content_repo->initialize(configuration));
@@ -193,7 +188,6 @@ TEST_CASE("Test Empty Claim", "[TestDBCR3]") {
auto content_repo = std::make_shared<TestDatabaseContentRepository>();
auto configuration =
std::make_shared<org::apache::nifi::minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
configuration->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
dir.string());
REQUIRE(content_repo->initialize(configuration));
@@ -212,7 +206,6 @@ TEST_CASE("Test Empty Claim", "[TestDBCR3]") {
content_repo = std::make_shared<TestDatabaseContentRepository>();
configuration = std::make_shared<org::apache::nifi::minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
configuration->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
dir.string());
REQUIRE(content_repo->initialize(configuration));
@@ -230,7 +223,6 @@ TEST_CASE("Delete NonExistent Claim", "[TestDBCR4]") {
auto content_repo = std::make_shared<TestDatabaseContentRepository>();
auto configuration =
std::make_shared<org::apache::nifi::minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
configuration->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
dir.string());
REQUIRE(content_repo->initialize(configuration));
@@ -250,7 +242,6 @@ TEST_CASE("Delete NonExistent Claim", "[TestDBCR4]") {
content_repo = std::make_shared<TestDatabaseContentRepository>();
configuration = std::make_shared<org::apache::nifi::minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
configuration->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
dir.string());
REQUIRE(content_repo->initialize(configuration));
@@ -272,7 +263,6 @@ TEST_CASE("Delete Remove Count Claim", "[TestDBCR5]") {
auto content_repo = std::make_shared<TestDatabaseContentRepository>();
auto configuration =
std::make_shared<org::apache::nifi::minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
configuration->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
dir.string());
REQUIRE(content_repo->initialize(configuration));
@@ -292,7 +282,6 @@ TEST_CASE("Delete Remove Count Claim", "[TestDBCR5]") {
content_repo = std::make_shared<TestDatabaseContentRepository>();
configuration = std::make_shared<org::apache::nifi::minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
configuration->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
dir.string());
REQUIRE(content_repo->initialize(configuration));
@@ -345,7 +334,6 @@ TEST_CASE("DBContentRepository can clear orphan entries") {
TestController testController;
auto dir = testController.createTempDirectory();
auto configuration =
std::make_shared<org::apache::nifi::minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
configuration->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
dir.string());
{
auto content_repo =
std::make_shared<core::repository::DatabaseContentRepository>();
diff --git a/extensions/rocksdb-repos/tests/EncryptionTests.cpp
b/extensions/rocksdb-repos/tests/EncryptionTests.cpp
index 7bb21b60d..754d12bd4 100644
--- a/extensions/rocksdb-repos/tests/EncryptionTests.cpp
+++ b/extensions/rocksdb-repos/tests/EncryptionTests.cpp
@@ -35,7 +35,6 @@ class FFRepoFixture : public TestController {
home_ = createTempDirectory();
repo_dir_ = home_ / "flowfile_repo";
config_ = std::make_shared<minifi::ConfigureImpl>();
- config_->setLocations(minifi::LocationsImpl::createFromMinifiHome(home_));
container_ = std::make_unique<minifi::ConnectionImpl>(nullptr, nullptr,
"container");
content_repo_ =
std::make_shared<core::repository::VolatileContentRepository>();
content_repo_->initialize(config_);
diff --git a/extensions/rocksdb-repos/tests/RepoTests.cpp
b/extensions/rocksdb-repos/tests/RepoTests.cpp
index 1d6d5c931..0523ff7d0 100644
--- a/extensions/rocksdb-repos/tests/RepoTests.cpp
+++ b/extensions/rocksdb-repos/tests/RepoTests.cpp
@@ -76,7 +76,6 @@ TEST_CASE("Test Repo Empty Value Attribute", "[TestFFR1]") {
const auto repository =
std::make_shared<core::repository::FlowFileRepository>("ff", dir.string(), 0ms,
0, 1ms);
const auto configuration = std::make_shared<minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
repository->initialize(configuration);
std::shared_ptr<core::ContentRepository> content_repo =
std::make_shared<core::repository::VolatileContentRepository>();
@@ -98,7 +97,6 @@ TEST_CASE("Test Repo Empty Key Attribute ", "[TestFFR2]") {
const auto repository =
std::make_shared<core::repository::FlowFileRepository>("ff", dir.string(), 0ms,
0, 1ms);
const auto configuration = std::make_shared<minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
repository->initialize(configuration);
std::shared_ptr<core::ContentRepository> content_repo =
std::make_shared<core::repository::VolatileContentRepository>();
const auto file = std::make_shared<minifi::FlowFileRecordImpl>();
@@ -121,7 +119,6 @@ TEST_CASE("Test Repo Key Attribute Verify ", "[TestFFR3]") {
const auto repository =
std::make_shared<core::repository::FlowFileRepository>("ff", dir.string(), 0ms,
0, 1ms);
const auto configuration = std::make_shared<minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
repository->initialize(configuration);
std::shared_ptr<core::ContentRepository> content_repo =
std::make_shared<core::repository::VolatileContentRepository>();
@@ -178,7 +175,6 @@ TEST_CASE("Test Delete Content ", "[TestFFR4]") {
std::shared_ptr<core::ContentRepository> content_repo =
std::make_shared<core::repository::FileSystemRepository>();
const auto configuration = std::make_shared<minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
repository->initialize(configuration);
repository->loadComponent(content_repo);
@@ -229,7 +225,6 @@ TEST_CASE("Test Validate Checkpoint ", "[TestFFR5]") {
std::shared_ptr<core::ContentRepository> content_repo =
std::make_shared<core::repository::FileSystemRepository>();
const auto configuration = std::make_shared<minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
repository->initialize(configuration);
repository->loadComponent(content_repo);
@@ -281,7 +276,6 @@ TEST_CASE("Test FlowFile Restore", "[TestFFR6]") {
auto dir = testController.createTempDirectory();
auto config = std::make_shared<minifi::ConfigureImpl>();
- config->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
config->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
(dir / "content_repository").string());
config->set(minifi::Configure::nifi_flowfile_repository_directory_default,
(dir / "flowfile_repository").string());
@@ -382,7 +376,6 @@ TEST_CASE("Flush deleted flowfiles before shutdown",
"[TestFFR7]") {
const auto dir = testController.createTempDirectory();
const auto config = std::make_shared<minifi::ConfigureImpl>();
- config->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
config->set(minifi::Configure::nifi_flowfile_repository_directory_default,
(dir / "flowfile_repository").string());
const auto content_repo =
std::make_shared<core::repository::VolatileContentRepository>();
@@ -460,7 +453,6 @@ TEST_CASE("FlowFileRepository triggers content repo orphan
clear") {
auto content_dir = testController.createTempDirectory();
auto config = std::make_shared<minifi::ConfigureImpl>();
- config->setLocations(minifi::LocationsImpl::createFromMinifiHome(home_dir));
config->set(minifi::Configure::nifi_flowfile_repository_directory_default,
ff_dir.string());
config->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
content_dir.string());
@@ -495,7 +487,6 @@ TEST_CASE("FlowFileRepository synchronously pushes existing
flow files") {
const auto content_dir = testController.createTempDirectory();
const auto config = std::make_shared<minifi::ConfigureImpl>();
- config->setLocations(minifi::LocationsImpl::createFromMinifiHome(home_dir));
config->set(minifi::Configure::nifi_flowfile_repository_directory_default,
ff_dir.string());
config->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
content_dir.string());
@@ -577,7 +568,6 @@ TEST_CASE("Test getting flow file repository size
properties", "[TestGettingRepo
expected_max_repo_size = 7;
}
auto configuration = std::make_shared<minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
repository->initialize(configuration);
auto flow_file = std::make_shared<minifi::FlowFileRecordImpl>();
@@ -626,7 +616,6 @@ TEST_CASE("Test getting noop repository size properties",
"[TestGettingRepositor
const auto repository = minifi::core::createRepository("NoOpRepository",
"ff");
const auto configuration = std::make_shared<minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
repository->initialize(configuration);
const auto flow_file = std::make_shared<minifi::FlowFileRecordImpl>();
@@ -654,7 +643,6 @@ TEST_CASE("Test getting content repository size
properties", "[TestGettingReposi
const auto content_repo_dir = testController.createTempDirectory();
const auto configuration = std::make_shared<minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
configuration->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
content_repo_dir.string());
std::string content = "content";
configuration->set(minifi::Configure::nifi_volatile_repository_options_content_max_bytes,
std::to_string(content.size()));
@@ -747,7 +735,6 @@ TEST_CASE("Flow file repositories can be stopped",
"[TestRepoIsRunning]") {
}
const auto configuration = std::make_shared<minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
repository->initialize(configuration);
REQUIRE(!repository->isRunning());
@@ -810,7 +797,6 @@ TEST_CASE("FlowFileRepository can filter out too small
contents") {
const auto content_dir = testController.createTempDirectory();
auto config = std::make_shared<minifi::ConfigureImpl>();
-
config->setLocations(minifi::LocationsImpl::createFromMinifiHome(minifi_home));
config->set(minifi::Configure::nifi_flowfile_repository_directory_default,
ff_dir.string());
config->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
content_dir.string());
diff --git a/extensions/rocksdb-repos/tests/SwapTests.cpp
b/extensions/rocksdb-repos/tests/SwapTests.cpp
index 71eda4d6b..7043351ed 100644
--- a/extensions/rocksdb-repos/tests/SwapTests.cpp
+++ b/extensions/rocksdb-repos/tests/SwapTests.cpp
@@ -84,7 +84,6 @@ TEST_CASE("Connection will on-demand swap flow files") {
auto dir = testController.createTempDirectory();
auto config = std::make_shared<minifi::ConfigureImpl>();
- config->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
config->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
(dir / "content_repository").string());
config->set(minifi::Configure::nifi_flowfile_repository_directory_default,
(dir / "flowfile_repository").string());
diff --git a/extensions/sftp/tests/ListSFTPTests.cpp
b/extensions/sftp/tests/ListSFTPTests.cpp
index 01f65fc29..3d8072c00 100644
--- a/extensions/sftp/tests/ListSFTPTests.cpp
+++ b/extensions/sftp/tests/ListSFTPTests.cpp
@@ -74,9 +74,6 @@ class ListSFTPTestsFixture {
sftp_server = std::make_unique<SFTPTestServer>(working_directory);
REQUIRE(true == sftp_server->start());
- if (configuration) {
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(working_directory));
- }
// Build MiNiFi processing graph
createPlan(nullptr, configuration);
}
@@ -95,9 +92,6 @@ class ListSFTPTestsFixture {
list_sftp = nullptr;
plan.reset();
- if (configuration) {
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(working_directory));
- }
plan = testController.createPlan(configuration, state_dir);
if (list_sftp_uuid == nullptr) {
list_sftp = plan->addProcessor(
diff --git a/extensions/standard-processors/tests/unit/TailFileTests.cpp
b/extensions/standard-processors/tests/unit/TailFileTests.cpp
index 9cc7e9b19..0d8cdfadb 100644
--- a/extensions/standard-processors/tests/unit/TailFileTests.cpp
+++ b/extensions/standard-processors/tests/unit/TailFileTests.cpp
@@ -1056,7 +1056,6 @@ TEST_CASE("TailFile finds and finishes the renamed file
and continues with the n
// use persistent state storage that defaults to rocksDB, not volatile
const auto configuration = std::make_shared<minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(log_dir));
{
auto test_plan = testController.createPlan(configuration, state_dir);
auto tail_file = test_plan->addProcessor("TailFile", tail_file_uuid,
"Tail", {success_relationship});
diff --git a/libminifi/include/properties/Configure.h
b/libminifi/include/properties/Configure.h
index 249fc53b2..cf8df66b2 100644
--- a/libminifi/include/properties/Configure.h
+++ b/libminifi/include/properties/Configure.h
@@ -21,7 +21,6 @@
#include <string>
#include <utility>
-#include "LocationsImpl.h"
#include "core/logging/LoggerProperties.h"
#include "minifi-cpp/core/AgentIdentificationProvider.h"
#include "minifi-cpp/properties/Configure.h"
@@ -54,9 +53,6 @@ class ConfigureImpl : public ConfigurationImpl, public
virtual core::AgentIdenti
void set(const std::string& key, const std::string& value,
PropertyChangeLifetime lifetime) override;
bool commitChanges() override;
- [[nodiscard]] std::shared_ptr<const Locations> getLocations() const override;
- void setLocations(std::shared_ptr<const Locations> locations) override;
-
private:
// WARNING! a test utility
void setLoggerProperties(std::shared_ptr<core::logging::LoggerProperties>
new_properties) {
@@ -69,7 +65,6 @@ class ConfigureImpl : public ConfigurationImpl, public
virtual core::AgentIdenti
mutable std::mutex fallback_identifier_mutex_;
std::string fallback_identifier_;
std::atomic_bool logger_properties_changed_{false};
- std::shared_ptr<const Locations> locations_;
std::shared_ptr<core::logging::LoggerProperties> logger_properties_;
};
diff --git a/libminifi/include/properties/LocationsImpl.h
b/libminifi/include/properties/LocationsImpl.h
deleted file mode 100644
index 5f602e11f..000000000
--- a/libminifi/include/properties/LocationsImpl.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
-* 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.
- */
-#pragma once
-
-#include "minifi-cpp/properties/Locations.h"
-#include "Defaults.h"
-#include "fmt/format.h"
-
-namespace org::apache::nifi::minifi {
-class LocationsImpl final : public Locations {
- struct M {
- std::filesystem::path working_dir_;
- std::filesystem::path lock_path_;
- std::filesystem::path log_properties_path_;
- std::filesystem::path uid_properties_path_;
- std::filesystem::path properties_path_;
- std::filesystem::path logs_dir_;
- std::filesystem::path fips_bin_path_;
- std::filesystem::path fips_conf_path_;
- std::string extensions_pattern_;
- } m;
-
- explicit LocationsImpl(M m) : m(std::move(m)) {}
-
- public:
- static std::shared_ptr<LocationsImpl> createFromMinifiHome(const
std::filesystem::path& minifi_home) {
- return std::shared_ptr<LocationsImpl>(new LocationsImpl(M{
- .working_dir_ = minifi_home,
- .lock_path_ = minifi_home / "LOCK",
- .log_properties_path_ = minifi_home / DEFAULT_LOG_PROPERTIES_FILE,
- .uid_properties_path_ = minifi_home / DEFAULT_UID_PROPERTIES_FILE,
- .properties_path_ = minifi_home / DEFAULT_NIFI_PROPERTIES_FILE,
- .logs_dir_ = minifi_home / "logs",
- .fips_bin_path_ = minifi_home / "fips",
- .fips_conf_path_ = minifi_home / "fips",
- .extensions_pattern_ = "../extensions/*"
- }));
- }
-
- static std::shared_ptr<LocationsImpl> createForFHS() {
- return std::shared_ptr<LocationsImpl>(new LocationsImpl(M{
- .working_dir_ = "/var/lib/nifi-minifi-cpp",
- .lock_path_ = "/var/lib/nifi-minifi-cpp/LOCK",
- .log_properties_path_ = "/etc/nifi-minifi-cpp/minifi-log.properties",
- .uid_properties_path_ = "/etc/nifi-minifi-cpp/minifi-uid.properties",
- .properties_path_ = "/etc/nifi-minifi-cpp/minifi.properties",
- .logs_dir_ = "/var/log/nifi-minifi-cpp",
- .fips_bin_path_ = "/usr/lib64/nifi-minifi-cpp/fips",
- .fips_conf_path_ = "/etc/nifi-minifi-cpp/fips",
- .extensions_pattern_ = "/usr/lib64/nifi-minifi-cpp/extensions/*"
- }));
- }
-
- [[nodiscard]] const std::filesystem::path& getWorkingDir() const override {
return m.working_dir_; }
- [[nodiscard]] const std::filesystem::path& getLockPath() const override {
return m.lock_path_; }
- [[nodiscard]] const std::filesystem::path& getLogPropertiesPath() const
override { return m.log_properties_path_; }
- [[nodiscard]] const std::filesystem::path& getUidPropertiesPath() const
override { return m.uid_properties_path_; }
- [[nodiscard]] const std::filesystem::path& getPropertiesPath() const
override { return m.properties_path_; }
- [[nodiscard]] const std::filesystem::path& getFipsBinPath() const override {
return m.fips_bin_path_; }
- [[nodiscard]] const std::filesystem::path& getFipsConfPath() const override
{ return m.fips_conf_path_; }
- [[nodiscard]] const std::filesystem::path& getLogsDirs() const override {
return m.logs_dir_; }
- [[nodiscard]] std::string_view getDefaultExtensionsPattern() const override
{ return m.extensions_pattern_; }
-
- [[nodiscard]] std::string toString() const override {
- return fmt::format(
- R"(
-Locations {{
- working dir: "{}",
- lock path: "{}",
- log properties path: "{}",
- uid properties path: "{}",
- properties path: "{}",
- fips bin path: "{}",
- fips conf path: "{}",
- logs dir: "{}",
- extensions pattern: "{}"
-}})",
- getWorkingDir().string(),
- getLockPath().string(),
- getLogPropertiesPath().string(),
- getUidPropertiesPath().string(),
- getPropertiesPath().string(),
- getFipsBinPath().string(),
- getFipsConfPath().string(),
- getLogsDirs().string(),
- getDefaultExtensionsPattern());
- }
-};
-} // namespace org::apache::nifi::minifi
diff --git a/libminifi/src/Configure.cpp b/libminifi/src/Configure.cpp
index 922a59e22..3e895735e 100644
--- a/libminifi/src/Configure.cpp
+++ b/libminifi/src/Configure.cpp
@@ -135,15 +135,6 @@ bool ConfigureImpl::commitChanges() {
return success;
}
-std::shared_ptr<const Locations> ConfigureImpl::getLocations() const {
- return locations_;
-}
-
-void ConfigureImpl::setLocations(std::shared_ptr<const Locations> locations) {
- locations_ = std::move(locations);
-}
-
-
gsl::not_null<std::shared_ptr<Configure>> Configure::create() {
return
gsl::make_not_null<std::shared_ptr<Configure>>(std::make_shared<ConfigureImpl>());
}
diff --git a/libminifi/src/core/extension/ExtensionManager.cpp
b/libminifi/src/core/extension/ExtensionManager.cpp
index 05e2f73ab..d214ac383 100644
--- a/libminifi/src/core/extension/ExtensionManager.cpp
+++ b/libminifi/src/core/extension/ExtensionManager.cpp
@@ -26,6 +26,7 @@
#include "agent/agent_version.h"
#include "core/extension/Utils.h"
#include "properties/Configuration.h"
+#include "utils/Locations.h"
namespace org::apache::nifi::minifi::core::extension {
@@ -49,8 +50,6 @@ ExtensionManager& ExtensionManager::get() {
return ExtensionManagerImpl::get();
}
-constexpr std::string_view DEFAULT_EXTENSION_PATH = "../extensions/*";
-
bool ExtensionManagerImpl::initialize(const std::shared_ptr<Configure>&
config) {
static bool initialized = ([&] {
logger_->log_trace("Initializing extensions");
@@ -69,13 +68,9 @@ bool ExtensionManagerImpl::initialize(const
std::shared_ptr<Configure>& config)
return *opt_pattern;
};
- if (const auto locations = config->getLocations()) {
- logger_->log_warn("No extension path is provided in properties, using
default : '{}'", locations->getDefaultExtensionsPattern());
- return std::string(locations->getDefaultExtensionsPattern());
- };
-
- logger_->log_error("No extension path is provided in properties and
locations is empty, using hard-coded default: '{}'", DEFAULT_EXTENSION_PATH);
- return std::string(DEFAULT_EXTENSION_PATH);
+ const auto default_extension_path = utils::getDefaultExtensionsPattern();
+ logger_->log_warn("No extension path is provided in properties, using
default: '{}'", default_extension_path);
+ return default_extension_path;
}();
auto candidates = utils::file::match(utils::file::FilePattern(pattern, [&]
(std::string_view subpattern, std::string_view error_msg) {
diff --git a/libminifi/src/utils/file/AssetManager.cpp
b/libminifi/src/utils/file/AssetManager.cpp
index 039078135..024362508 100644
--- a/libminifi/src/utils/file/AssetManager.cpp
+++ b/libminifi/src/utils/file/AssetManager.cpp
@@ -16,11 +16,13 @@
*/
#include "utils/file/AssetManager.h"
-#include "utils/file/FileUtils.h"
+
+#include "core/logging/LoggerFactory.h"
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
-#include "core/logging/LoggerFactory.h"
#include "utils/Hash.h"
+#include "utils/Locations.h"
+#include "utils/file/FileUtils.h"
#undef GetObject // windows.h #defines GetObject = GetObjectA or GetObjectW,
which conflicts with rapidjson
@@ -30,10 +32,7 @@ std::filesystem::path getRootFromConfigure(const Configure&
configuration) {
if (auto nifi_asset_directory =
configuration.get(Configure::nifi_asset_directory)) {
return *nifi_asset_directory;
}
- if (const auto locations = configuration.getLocations()) {
- return locations->getWorkingDir() / "asset";
- }
- return std::filesystem::path("") / "asset";
+ return utils::getMinifiDir() / "asset";
}
AssetManager::AssetManager(const Configure& configuration)
diff --git a/libminifi/test/integration/AlertTests.cpp
b/libminifi/test/integration/AlertTests.cpp
index 8530053b4..b972d4b8a 100644
--- a/libminifi/test/integration/AlertTests.cpp
+++ b/libminifi/test/integration/AlertTests.cpp
@@ -80,7 +80,6 @@ TEST_CASE("Alert system forwards logs") {
AlertHandler handler(agent_id);
harness.setUrl("http://localhost:0/api/alerts", &handler);
harness.getConfiguration()->set(minifi::Configuration::nifi_c2_agent_identifier,
agent_id);
-
harness.getConfiguration()->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir.getPath()));
auto log_props = std::make_shared<logging::LoggerProperties>(dir.getPath() /
"logs");
log_props->set("appender.alert1", "alert");
diff --git a/libminifi/test/integration/C2DebugBundleTest.cpp
b/libminifi/test/integration/C2DebugBundleTest.cpp
index ab742d6d0..3e9f1a606 100644
--- a/libminifi/test/integration/C2DebugBundleTest.cpp
+++ b/libminifi/test/integration/C2DebugBundleTest.cpp
@@ -189,7 +189,6 @@ TEST_CASE("C2DebugBundleTest", "[c2test]") {
return true;
});
-
harness.getConfiguration()->setLocations(minifi::LocationsImpl::createFromMinifiHome(home_dir.string()));
harness.getConfiguration()->loadConfigureFile(home_dir /
"conf/minifi.properties");
harness.setUrl("http://localhost:0/heartbeat", &heartbeat_handler);
harness.setUrl("http://localhost:0/acknowledge", &ack_handler);
diff --git a/libminifi/test/integration/C2PropertiesUpdateTests.cpp
b/libminifi/test/integration/C2PropertiesUpdateTests.cpp
index 6e7076f57..7600c8428 100644
--- a/libminifi/test/integration/C2PropertiesUpdateTests.cpp
+++ b/libminifi/test/integration/C2PropertiesUpdateTests.cpp
@@ -212,7 +212,6 @@ TEST_CASE("C2PropertiesUpdateTests", "[c2test]") {
}
});
-
harness.getConfiguration()->setLocations(minifi::LocationsImpl::createFromMinifiHome(home_dir.string()));
harness.getConfiguration()->loadConfigureFile(home_dir /
"conf/minifi.properties");
ConfigTestAccessor::call_setLoggerProperties(harness.getConfiguration(),
logger_properties);
diff --git a/libminifi/test/libtest/unit/TestBase.cpp
b/libminifi/test/libtest/unit/TestBase.cpp
index 15527c79e..9d494fa96 100644
--- a/libminifi/test/libtest/unit/TestBase.cpp
+++ b/libminifi/test/libtest/unit/TestBase.cpp
@@ -717,7 +717,6 @@ TestController::TestController()
std::shared_ptr<TestPlan> TestController::createPlan(PlanConfig config) {
if (!config.configuration) {
config.configuration = minifi::Configure::create();
-
config.configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(createTempDirectory()));
config.configuration->set(minifi::Configure::nifi_state_storage_local_class_name,
"VolatileMapStateStorage");
config.configuration->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
createTempDirectory().string());
}
diff --git a/libminifi/test/persistence-tests/PersistenceTests.cpp
b/libminifi/test/persistence-tests/PersistenceTests.cpp
index c96f888ca..7e986dba5 100644
--- a/libminifi/test/persistence-tests/PersistenceTests.cpp
+++ b/libminifi/test/persistence-tests/PersistenceTests.cpp
@@ -172,7 +172,6 @@ TEST_CASE("Processors Can Store FlowFiles", "[TestP1]") {
auto dir = testController.createTempDirectory();
auto config = std::make_shared<minifi::ConfigureImpl>();
- config->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
config->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
(dir / "content_repository").string());
config->set(minifi::Configure::nifi_flowfile_repository_directory_default,
(dir / "flowfile_repository").string());
@@ -286,7 +285,6 @@ TEST_CASE("Persisted flowFiles are updated on
modification", "[TestP1]") {
auto dir = testController.createTempDirectory();
auto config = std::make_shared<minifi::ConfigureImpl>();
- config->setLocations(minifi::LocationsImpl::createFromMinifiHome(dir));
config->set(minifi::Configure::nifi_dbcontent_repository_directory_default,
(dir / "content_repository").string());
config->set(minifi::Configure::nifi_flowfile_repository_directory_default,
(dir / "flowfile_repository").string());
config->set(minifi::Configure::nifi_dbcontent_repository_purge_period, "0
s");
diff --git a/libminifi/test/unit/DecryptorTests.cpp
b/libminifi/test/unit/DecryptorTests.cpp
index dc1531e28..1c4c44217 100644
--- a/libminifi/test/unit/DecryptorTests.cpp
+++ b/libminifi/test/unit/DecryptorTests.cpp
@@ -90,7 +90,6 @@ TEST_CASE("Decryptor can decrypt a configuration file",
"[decryptSensitiveProper
minifi::ConfigureImpl configuration{decryptor};
std::filesystem::path resources_dir{TEST_RESOURCES};
-
configuration.setLocations(minifi::LocationsImpl::createFromMinifiHome(resources_dir));
configuration.loadConfigureFile(resources_dir /
"encrypted.minifi.properties");
REQUIRE_FALSE(configuration.getConfiguredKeys().empty());
diff --git a/libminifi/test/unit/LogMetricsPublisherTests.cpp
b/libminifi/test/unit/LogMetricsPublisherTests.cpp
index 557595ac8..252300b75 100644
--- a/libminifi/test/unit/LogMetricsPublisherTests.cpp
+++ b/libminifi/test/unit/LogMetricsPublisherTests.cpp
@@ -39,7 +39,6 @@ class LogPublisherTestFixture {
response_node_loader_(std::make_shared<state::response::ResponseNodeLoaderImpl>(configuration_,
std::vector<std::shared_ptr<core::RepositoryMetricsSource>>{provenance_repo_,
flow_file_repo_}, nullptr)),
publisher_("LogMetricsPublisher") {
-
configuration_->setLocations(minifi::LocationsImpl::createFromMinifiHome(temp_directory_.getPath()));
provenance_repo_->initialize(configuration_);
flow_file_repo_->initialize(configuration_);
}
diff --git a/libminifi/test/unit/ProcessSessionTests.cpp
b/libminifi/test/unit/ProcessSessionTests.cpp
index 212630677..8585f6456 100644
--- a/libminifi/test/unit/ProcessSessionTests.cpp
+++ b/libminifi/test/unit/ProcessSessionTests.cpp
@@ -146,7 +146,6 @@ class TestVolatileFlowFileRepository : public
core::repository::VolatileFlowFile
TEST_CASE("ProcessSession::commit avoids dangling ResourceClaims when using
VolatileFlowFileRepository", "[incrementbefore]") {
TempDirectory tmp_dir;
auto configuration = std::make_shared<minifi::ConfigureImpl>();
-
configuration->setLocations(minifi::LocationsImpl::createFromMinifiHome(tmp_dir.getPath()));
configuration->set(minifi::Configure::nifi_volatile_repository_options_flowfile_max_count,
"2");
auto ff_repo = std::make_shared<TestVolatileFlowFileRepository>("flowfile");
Fixture fixture({
diff --git a/minifi-api/include/minifi-cpp/properties/Configure.h
b/minifi-api/include/minifi-cpp/properties/Configure.h
index 945bab143..ac05b42db 100644
--- a/minifi-api/include/minifi-cpp/properties/Configure.h
+++ b/minifi-api/include/minifi-cpp/properties/Configure.h
@@ -22,7 +22,6 @@
#include <utility>
#include "Configuration.h"
-#include "Locations.h"
#include "minifi-cpp/core/AgentIdentificationProvider.h"
#include "utils/gsl.h"
@@ -45,8 +44,6 @@ class Configure : public virtual Configuration, public
virtual core::AgentIdenti
using Configuration::set;
void set(const std::string& key, const std::string& value,
PropertyChangeLifetime lifetime) override = 0;
bool commitChanges() override = 0;
- [[nodiscard]] virtual std::shared_ptr<const Locations> getLocations() const
= 0;
- virtual void setLocations(std::shared_ptr<const Locations>) = 0;
static gsl::not_null<std::shared_ptr<Configure>> create();
};
diff --git a/minifi-api/include/minifi-cpp/properties/Locations.h
b/minifi-api/include/minifi-cpp/properties/Locations.h
deleted file mode 100644
index 3643d36cb..000000000
--- a/minifi-api/include/minifi-cpp/properties/Locations.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
-* 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.
- */
-#pragma once
-
-#include <filesystem>
-
-namespace org::apache::nifi::minifi {
-class Locations {
-public:
- virtual ~Locations() = default;
- [[nodiscard]] virtual const std::filesystem::path& getWorkingDir() const = 0;
- [[nodiscard]] virtual const std::filesystem::path& getLockPath() const = 0;
- [[nodiscard]] virtual const std::filesystem::path& getLogPropertiesPath()
const = 0;
- [[nodiscard]] virtual const std::filesystem::path& getUidPropertiesPath()
const = 0;
- [[nodiscard]] virtual const std::filesystem::path& getPropertiesPath() const
= 0;
- [[nodiscard]] virtual const std::filesystem::path& getFipsBinPath() const =
0;
- [[nodiscard]] virtual const std::filesystem::path& getFipsConfPath() const =
0;
- [[nodiscard]] virtual const std::filesystem::path& getLogsDirs() const = 0;
- [[nodiscard]] virtual std::string_view getDefaultExtensionsPattern() const =
0;
-
- [[nodiscard]] virtual std::string toString() const = 0;
-};
-} // namespace org::apache::nifi::minifi
diff --git a/minifi_main/Fips.cpp b/minifi_main/Fips.cpp
index 084754a56..cb81d32d1 100644
--- a/minifi_main/Fips.cpp
+++ b/minifi_main/Fips.cpp
@@ -16,15 +16,18 @@
*/
#include "Fips.h"
-#include <fstream>
+#include <openssl/err.h>
+#include <openssl/evp.h>
+#include <openssl/provider.h>
+
#include <algorithm>
+#include <fstream>
#include <string>
-#include <openssl/provider.h>
-#include <openssl/evp.h>
-#include <openssl/err.h>
+
+#include "MainHelper.h"
#include "utils/Environment.h"
-#include "utils/StringUtils.h"
#include "utils/OptionalUtils.h"
+#include "utils/StringUtils.h"
namespace org::apache::nifi::minifi::fips {
@@ -73,8 +76,8 @@ bool substituteFipsDirVariable(const std::filesystem::path&
file_path, const std
}
bool generateFipsModuleConfig(const Locations& locations, const
std::shared_ptr<core::logging::Logger>& logger) {
- const auto& fips_bin_path = locations.getFipsBinPath();
- const auto& fips_conf_path = locations.getFipsConfPath();
+ const auto& fips_bin_path = locations.fips_bin_path_;
+ const auto& fips_conf_path = locations.fips_conf_path_;
std::filesystem::path output_file(fips_conf_path / "fipsmodule.cnf");
logger->log_info("fipsmodule.cnf was not found, trying to run fipsinstall
command to generate the file");
@@ -93,8 +96,8 @@ bool generateFipsModuleConfig(const Locations& locations,
const std::shared_ptr<
} // namespace
void initializeFipsMode(const std::shared_ptr<minifi::Configure>& configure,
const Locations& locations, const std::shared_ptr<core::logging::Logger>&
logger) {
- const auto& fips_bin_path = locations.getFipsBinPath();
- const auto& fips_conf_path = locations.getFipsConfPath();
+ const auto& fips_bin_path = locations.fips_bin_path_;
+ const auto& fips_conf_path = locations.fips_conf_path_;
if (!(configure->get(minifi::Configure::nifi_openssl_fips_support_enable) |
utils::andThen(utils::string::toBool)).value_or(false)) {
logger->log_info("FIPS mode is disabled. FIPS configs and modules will NOT
be loaded.");
return;
diff --git a/minifi_main/Fips.h b/minifi_main/Fips.h
index e4a560c81..084ea85d4 100644
--- a/minifi_main/Fips.h
+++ b/minifi_main/Fips.h
@@ -18,9 +18,10 @@
#include <filesystem>
#include <memory>
+
+#include "MainHelper.h"
#include "core/logging/Logger.h"
#include "minifi-cpp/properties/Configure.h"
-#include "minifi-cpp/properties/Locations.h"
namespace org::apache::nifi::minifi::fips {
diff --git a/minifi_main/MainHelper.cpp b/minifi_main/MainHelper.cpp
index 1b0d4d07b..552ebdafb 100644
--- a/minifi_main/MainHelper.cpp
+++ b/minifi_main/MainHelper.cpp
@@ -112,18 +112,44 @@ std::filesystem::path determineMinifiHome(const
std::shared_ptr<logging::Logger>
return minifi_home;
}
-std::shared_ptr<minifi::Locations> determineLocations(const
std::shared_ptr<logging::Logger>& logger) {
+Locations getFromMinifiHome(const std::filesystem::path& minifi_home) {
+ return {
+ .working_dir_ = minifi_home,
+ .lock_path_ = minifi_home / "LOCK",
+ .log_properties_path_ = minifi_home / DEFAULT_LOG_PROPERTIES_FILE,
+ .uid_properties_path_ = minifi_home / DEFAULT_UID_PROPERTIES_FILE,
+ .properties_path_ = minifi_home / DEFAULT_NIFI_PROPERTIES_FILE,
+ .logs_dir_ = minifi_home / "logs",
+ .fips_bin_path_ = minifi_home / "fips",
+ .fips_conf_path_ = minifi_home / "fips",
+ };
+}
+
+Locations getFromFHS() {
+ return {
+ .working_dir_ = "/var/lib/nifi-minifi-cpp",
+ .lock_path_ = "/var/lib/nifi-minifi-cpp/LOCK",
+ .log_properties_path_ = "/etc/nifi-minifi-cpp/minifi-log.properties",
+ .uid_properties_path_ = "/etc/nifi-minifi-cpp/minifi-uid.properties",
+ .properties_path_ = "/etc/nifi-minifi-cpp/minifi.properties",
+ .logs_dir_ = "/var/log/nifi-minifi-cpp",
+ .fips_bin_path_ = "/usr/lib64/nifi-minifi-cpp/fips",
+ .fips_conf_path_ = "/etc/nifi-minifi-cpp/fips"
+ };
+}
+
+std::optional<Locations> determineLocations(const
std::shared_ptr<logging::Logger>& logger) {
if (const auto minifi_home_env =
utils::Environment::getEnvironmentVariable(MINIFI_HOME_ENV_KEY)) {
if (minifi_home_env == "FHS") {
- return minifi::LocationsImpl::createForFHS();
+ return getFromFHS();
}
}
if (const auto executable_path = utils::file::get_executable_path();
executable_path.parent_path() == "/usr/bin") {
- return minifi::LocationsImpl::createForFHS();
+ return getFromFHS();
}
const auto minifi_home = determineMinifiHome(logger);
if (minifi_home.empty()) {
- return nullptr;
+ return std::nullopt;
}
- return minifi::LocationsImpl::createFromMinifiHome(minifi_home);
+ return getFromMinifiHome(minifi_home);
}
diff --git a/minifi_main/MainHelper.h b/minifi_main/MainHelper.h
index c584eae11..457a58ea4 100644
--- a/minifi_main/MainHelper.h
+++ b/minifi_main/MainHelper.h
@@ -52,25 +52,25 @@ extern "C" {
#endif
#endif
-/**
- * Validates a MINIFI_HOME value.
- * @param home_path
- * @return true if home_path represents a valid MINIFI_HOME
- */
-bool validHome(const std::string &home_path);
+struct Locations {
+ std::filesystem::path working_dir_;
+ std::filesystem::path lock_path_;
+ std::filesystem::path log_properties_path_;
+ std::filesystem::path uid_properties_path_;
+ std::filesystem::path properties_path_;
+ std::filesystem::path logs_dir_;
+ std::filesystem::path fips_bin_path_;
+ std::filesystem::path fips_conf_path_;
+};
/**
* Configures the logger to log everything to syslog/Windows Event Log, and
for the minimum log level to INFO
*/
void setSyslogLogger();
-/**
- * Determines the full path of MINIFI_HOME
- * @return MINIFI_HOME on success, empty string on failure
- */
std::filesystem::path determineMinifiHome(const
std::shared_ptr<org::apache::nifi::minifi::core::logging::Logger>& logger);
-std::shared_ptr<org::apache::nifi::minifi::Locations> determineLocations(const
std::shared_ptr<org::apache::nifi::minifi::core::logging::Logger>& logger);
+std::optional<Locations> determineLocations(const
std::shared_ptr<org::apache::nifi::minifi::core::logging::Logger>& logger);
#endif /* MAIN_MAINHELPER_H_ */
diff --git a/minifi_main/MiNiFiMain.cpp b/minifi_main/MiNiFiMain.cpp
index 9d19527cb..6c0ef97b0 100644
--- a/minifi_main/MiNiFiMain.cpp
+++ b/minifi_main/MiNiFiMain.cpp
@@ -65,7 +65,6 @@
#include "core/state/MetricsPublisherStore.h"
#include "core/state/nodes/ResponseNodeLoader.h"
#include "properties/Decryptor.h"
-#include "properties/LocationsImpl.h"
#include "utils/Environment.h"
#include "utils/FileMutex.h"
#include "utils/file/AssetManager.h"
@@ -273,19 +272,19 @@ int main(int argc, char **argv) {
return -1;
}
- utils::FileMutex minifi_home_mtx(locations->getLockPath());
+ utils::FileMutex minifi_home_mtx(locations->lock_path_);
std::unique_lock minifi_home_lock(minifi_home_mtx, std::defer_lock);
try {
minifi_home_lock.lock();
} catch (const std::exception& ex) {
- logger->log_error("Could not acquire LOCK '{}', maybe another minifi
instance is running: {}", locations->getLockPath(), ex.what());
+ logger->log_error("Could not acquire LOCK '{}', maybe another minifi
instance is running: {}", locations->lock_path_, ex.what());
std::exit(1);
}
// chdir to MINIFI_HOME
std::error_code current_path_error;
- std::filesystem::current_path(locations->getWorkingDir(),
current_path_error);
+ std::filesystem::current_path(locations->working_dir_, current_path_error);
if (current_path_error) {
- logger->log_error("Failed to change working directory to {}",
locations->getWorkingDir());
+ logger->log_error("Failed to change working directory to {}",
locations->working_dir_);
return -1;
}
@@ -310,19 +309,19 @@ int main(int argc, char **argv) {
std::string nifi_configuration_class_name = "adaptiveconfiguration";
std::string content_repo_class = "filesystemrepository";
- auto log_properties =
std::make_shared<core::logging::LoggerProperties>(locations->getLogsDirs());
- log_properties->loadConfigureFile(locations->getLogPropertiesPath(),
"nifi.log.");
+ auto log_properties =
std::make_shared<core::logging::LoggerProperties>(locations->log_properties_path_);
+ log_properties->loadConfigureFile(locations->log_properties_path_,
"nifi.log.");
logger_configuration.initialize(log_properties);
std::shared_ptr<minifi::Properties> uid_properties =
std::make_shared<minifi::PropertiesImpl>("UID properties");
- uid_properties->loadConfigureFile(locations->getUidPropertiesPath());
+ uid_properties->loadConfigureFile(locations->uid_properties_path_);
utils::IdGenerator::getIdGenerator()->initialize(uid_properties);
// Make a record of minifi home in the configured log file.
- logger->log_info("MiNiFi Locations={}", locations->toString());
+ //logger->log_info("MiNiFi Locations={}", locations->toString());
TODO(mzink)
- auto decryptor = minifi::Decryptor::create(locations->getWorkingDir());
+ auto decryptor = minifi::Decryptor::create(locations->working_dir_);
if (decryptor) {
logger->log_info("Found encryption key, will decrypt sensitive
properties in the configuration");
} else {
@@ -330,8 +329,7 @@ int main(int argc, char **argv) {
}
const std::shared_ptr<minifi::Configure> configure =
std::make_shared<minifi::ConfigureImpl>(std::move(decryptor),
std::move(log_properties));
- configure->setLocations(locations);
- configure->loadConfigureFile(locations->getPropertiesPath());
+ configure->loadConfigureFile(locations->properties_path_);
overridePropertiesFromCommandLine(argument_parser, configure);
minifi::fips::initializeFipsMode(configure, *locations, logger);
@@ -391,7 +389,7 @@ int main(int argc, char **argv) {
auto filesystem = std::make_shared<utils::file::FileSystem>(
should_encrypt_flow_config,
- utils::crypto::EncryptionProvider::create(locations->getWorkingDir()));
+ utils::crypto::EncryptionProvider::create(locations->working_dir_));
auto asset_manager =
std::make_unique<utils::file::AssetManager>(*configure);
auto bulletin_store = std::make_unique<core::BulletinStore>(*configure);
@@ -403,7 +401,7 @@ int main(int argc, char **argv) {
.configuration = configure,
.path =
configure->get(minifi::Configure::nifi_flow_configuration_file),
.filesystem = filesystem,
- .sensitive_values_encryptor =
utils::crypto::EncryptionProvider::createSensitivePropertiesEncryptor(locations->getWorkingDir()),
+ .sensitive_values_encryptor =
utils::crypto::EncryptionProvider::createSensitivePropertiesEncryptor(locations->working_dir_),
.asset_manager = asset_manager.get(),
.bulletin_store = bulletin_store.get()
}, nifi_configuration_class_name);
diff --git a/utils/include/utils/Locations.h b/utils/include/utils/Locations.h
new file mode 100644
index 000000000..0f54e5d76
--- /dev/null
+++ b/utils/include/utils/Locations.h
@@ -0,0 +1,42 @@
+/**
+* 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.
+ */
+#pragma once
+
+#include <filesystem>
+
+#include "Environment.h"
+#include "file/FileUtils.h"
+
+constexpr std::string_view MINIFI_HOME_ENV_KEY = "MINIFI_HOME";
+
+namespace org::apache::nifi::minifi::utils {
+inline std::string getDefaultExtensionsPattern() {
+ constexpr std::string_view DEFAULT_EXTENSION_PATH = "../extensions/*";
+ constexpr std::string_view DEFAULT_EXTENSION_PATH_RPM =
"/usr/lib64/nifi-minifi-cpp/extensions/*";
+ if (Environment::getEnvironmentVariable(MINIFI_HOME_ENV_KEY.data()) == "FHS"
|| file::get_executable_path().parent_path() == "/usr/bin") {
+ return std::string(DEFAULT_EXTENSION_PATH_RPM);
+ }
+ return std::string(DEFAULT_EXTENSION_PATH);
+}
+
+inline std::filesystem::path getMinifiDir() {
+ if (Environment::getEnvironmentVariable(MINIFI_HOME_ENV_KEY.data()) == "FHS"
|| file::get_executable_path().parent_path() == "/usr/bin") {
+ return "/var/lib/nifi-minifi-cpp";
+ }
+ return
Environment::getEnvironmentVariable(MINIFI_HOME_ENV_KEY.data()).value_or("");
+}
+} // org::apache::nifi::minifi::utils
\ No newline at end of file