Skip to content

Commit 6f454a1

Browse files
committed
fix
1 parent b5d8f16 commit 6f454a1

7 files changed

Lines changed: 36 additions & 28 deletions

File tree

behave_framework/src/minifi_behave/steps/checking_steps.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def verify_minifi_logs_match_regex(context, regex, duration):
119119
@step('no errors were generated on the http-proxy regarding "{url}"')
120120
def verify_no_errors_on_http_proxy(context: MinifiTestContext, url: str):
121121
http_proxy_container = next(container for container in context.containers.values() if isinstance(container, HttpProxy))
122-
assert http_proxy_container.check_http_proxy_access(url) or http_proxy_container.log_app_output()
122+
assert http_proxy_container.check_http_proxy_access(url) or log_due_to_failure(context)
123123

124124

125125
@then('in the "{container}" container no files are placed in the "{directory}" directory in {duration} of running time')

extension-framework/cpp-extension-lib/include/api/core/ProcessContext.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ class ProcessContext {
4545
[[nodiscard]] virtual bool hasNonEmptyProperty(std::string_view name) const = 0;
4646
[[nodiscard]] virtual std::map<std::string, std::string> getDynamicProperties(const FlowFile* flow_file) const = 0;
4747

48-
[[nodiscard]] virtual std::expected<utils::net::SslData, std::error_code> getSslData(std::string_view name) const = 0;
49-
[[nodiscard]] virtual std::expected<utils::ProxyData, std::error_code> getProxyData(std::string_view name) const = 0;
48+
[[nodiscard]] virtual std::expected<std::optional<utils::net::SslData>, std::error_code> getSslData(const minifi::core::PropertyReference& prop) const = 0;
49+
[[nodiscard]] virtual std::expected<std::optional<utils::ProxyData>, std::error_code> getProxyData(const minifi::core::PropertyReference& prop) const = 0;
5050
};
5151

5252
class CffiProcessContext : public ProcessContext {
@@ -60,8 +60,8 @@ class CffiProcessContext : public ProcessContext {
6060
[[nodiscard]] std::map<std::string, std::string> getDynamicProperties(const FlowFile* flow_file) const override;
6161
[[nodiscard]] bool hasNonEmptyProperty(std::string_view name) const override;
6262

63-
[[nodiscard]] std::expected<utils::net::SslData, std::error_code> getSslData(std::string_view name) const override;
64-
[[nodiscard]] std::expected<utils::ProxyData, std::error_code> getProxyData(std::string_view name) const override;
63+
[[nodiscard]] std::expected<std::optional<utils::net::SslData>, std::error_code> getSslData(const minifi::core::PropertyReference& prop) const override;
64+
[[nodiscard]] std::expected<std::optional<utils::ProxyData>, std::error_code> getProxyData(const minifi::core::PropertyReference& prop) const override;
6565

6666
private:
6767
[[nodiscard]] std::expected<std::string, std::error_code> getProperty(std::string_view name, const FlowFile* flow_file) const;

extension-framework/cpp-extension-lib/mocklib/include/MockProcessContext.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ class MockProcessContext : public api::core::ProcessContext {
3434
[[nodiscard]] std::map<std::string, std::string> getDynamicProperties(const api::core::FlowFile* flow_file) const override;
3535
[[nodiscard]] bool hasNonEmptyProperty(std::string_view name) const override;
3636

37-
[[nodiscard]] std::expected<api::utils::net::SslData, std::error_code> getSslData(std::string_view name) const override;
37+
[[nodiscard]] std::expected<std::optional<api::utils::net::SslData>, std::error_code> getSslData(const minifi::core::PropertyReference& prop) const override;
38+
[[nodiscard]] std::expected<std::optional<api::utils::ProxyData>, std::error_code> getProxyData(const minifi::core::PropertyReference& prop) const override;
3839

3940
std::map<std::string, std::string, std::less<>> properties_;
4041

extension-framework/cpp-extension-lib/mocklib/src/MockProcessContext.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,11 @@ bool MockProcessContext::hasNonEmptyProperty(const std::string_view name) const
4444
return properties_.contains(name);
4545
}
4646

47-
std::expected<api::utils::net::SslData, std::error_code> MockProcessContext::getSslData(std::string_view) const {
48-
return api::utils::net::SslData{};
47+
std::expected<std::optional<api::utils::net::SslData>, std::error_code> MockProcessContext::getSslData(const minifi::core::PropertyReference& prop) const {
48+
return std::nullopt;
49+
}
50+
51+
[[nodiscard]] std::expected<std::optional<api::utils::ProxyData>, std::error_code> MockProcessContext::getProxyData(const minifi::core::PropertyReference& prop) const {
52+
return std::nullopt;
4953
}
5054
} // namespace org::apache::nifi::minifi::mock

extension-framework/cpp-extension-lib/src/core/ProcessContext.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,13 @@ std::map<std::string, std::string> CffiProcessContext::getDynamicProperties(cons
6969
return result;
7070
}
7171

72-
std::expected<utils::net::SslData, std::error_code> CffiProcessContext::getSslData(const std::string_view name) const {
72+
std::expected<std::optional<utils::net::SslData>, std::error_code> CffiProcessContext::getSslData(const minifi::core::PropertyReference& prop) const {
73+
const auto controller_name = getProperty(prop, nullptr);
74+
if (!controller_name) { return std::nullopt; }
75+
7376
auto ssl_data = utils::net::SslData{};
7477

75-
if (const auto status = MinifiProcessContextGetSslData(impl_, utils::minifiStringView(name), [](void* data, const MinifiSslData* minifi_ssl_data) {
78+
if (const auto status = MinifiProcessContextGetSslData(impl_, utils::minifiStringView(*controller_name), [](void* data, const MinifiSslData* minifi_ssl_data) {
7679
auto* my_ssl_data = static_cast<utils::net::SslData*>(data);
7780
my_ssl_data->ca_loc = utils::toString(minifi_ssl_data->ca_certificate_file);
7881
my_ssl_data->cert_loc = utils::toString(minifi_ssl_data->certificate_file);
@@ -86,12 +89,14 @@ std::expected<utils::net::SslData, std::error_code> CffiProcessContext::getSslDa
8689
return ssl_data;
8790
}
8891

89-
std::expected<utils::ProxyData, std::error_code> CffiProcessContext::getProxyData(const std::string_view name) const {
90-
auto proxy_data = utils::ProxyData{};
92+
std::expected<std::optional<utils::ProxyData>, std::error_code> CffiProcessContext::getProxyData(const minifi::core::PropertyReference& prop) const {
93+
const auto controller_name = getProperty(prop, nullptr);
94+
if (!controller_name) { return std::nullopt; }
9195

96+
auto proxy_data = utils::ProxyData{};
9297
if (const auto status = MinifiProcessContextGetProxyData(
9398
impl_,
94-
utils::minifiStringView(name),
99+
utils::minifiStringView(*controller_name),
95100
[](void* data, const MinifiProxyData* minifi_proxy_data) {
96101
auto* proxy = static_cast<utils::ProxyData*>(data);
97102
proxy->host = utils::toString(minifi_proxy_data->hostname);

extensions/gcp/processors/GCSProcessor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ MinifiStatus GCSProcessor::onScheduleImpl(api::core::ProcessContext& context) {
4747
if (endpoint_url_)
4848
logger_->log_debug("Endpoint overwritten: {}", *endpoint_url_);
4949

50-
const auto proxy_data = context.getProxyData(ProxyConfigurationService.name);
50+
const auto proxy_data = context.getProxyData(ProxyConfigurationService) | utils::orThrow("Couldnt query ProxyConfigurationService");
5151
if (proxy_data && proxy_data->proxy_type != api::utils::ProxyType::DIRECT) {
5252
logger_->log_debug("Proxy configuration is set for GCS processor");
5353

libminifi/src/minifi-c.cpp

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,16 @@ class CControllerServiceFactory : public minifi::core::controller::ControllerSer
181181
minifi::utils::CControllerServiceClassDescription class_description_;
182182
};
183183

184+
MinifiProxyType minifiProxyType(const minifi::controllers::ProxyType& proxy_type) {
185+
switch (proxy_type) {
186+
case minifi::controllers::ProxyType::DIRECT:
187+
return MinifiProxyType::MINIFI_PROXY_TYPE_DIRECT;
188+
case minifi::controllers::ProxyType::HTTP:
189+
return MinifiProxyType::MINIFI_PROXY_TYPE_HTTP;
190+
}
191+
std::unreachable();
192+
}
193+
184194
} // namespace
185195

186196
namespace org::apache::nifi::minifi::utils {
@@ -650,29 +660,17 @@ MinifiStatus MinifiProcessContextGetProxyData(MinifiProcessContext* process_cont
650660
if (!service_shared_ptr) { return MINIFI_STATUS_VALIDATION_FAILED; }
651661
if (const auto proxy_service = dynamic_cast<minifi::controllers::ProxyConfigurationServiceInterface*>(service_shared_ptr.get())) {
652662
const std::string hostname = proxy_service->getHost();
653-
const uint16_t port = proxy_service->getPort();
654663
const auto basic_auth_data = proxy_service->getProxyCredentials();
655664
MinifiStringView username_holder = basic_auth_data ? minifiStringView(basic_auth_data->username) : MinifiStringView{};
656665
MinifiStringView password_holder = basic_auth_data ? minifiStringView(basic_auth_data->password) : MinifiStringView{};
657-
MinifiProxyType proxy_type;
658-
switch (proxy_service->getProxyType()) {
659-
case minifi::controllers::ProxyType::DIRECT: {
660-
proxy_type = MINIFI_PROXY_TYPE_DIRECT;
661-
break;
662-
}
663-
case minifi::controllers::ProxyType::HTTP: {
664-
proxy_type = MINIFI_PROXY_TYPE_HTTP;
665-
break;
666-
}
667-
}
668666

669667
MinifiProxyData proxy_data{
670668
.version = 1,
671669
.hostname = minifiStringView(hostname),
672-
.port = port,
670+
.port = proxy_service->getPort(),
673671
.username = basic_auth_data ? &username_holder : nullptr,
674672
.password = basic_auth_data ? &password_holder : nullptr,
675-
.proxy_type = proxy_type,
673+
.proxy_type = minifiProxyType(proxy_service->getProxyType()),
676674
};
677675
cb(user_ctx, &proxy_data);
678676
return MINIFI_STATUS_SUCCESS;

0 commit comments

Comments
 (0)