MINIFICPP-2644 Add proxy controller service support for AWS and Azure processors#2045
MINIFICPP-2644 Add proxy controller service support for AWS and Azure processors#2045lordgamez wants to merge 12 commits intoapache:mainfrom
Conversation
93b6f3b to
a1a832e
Compare
|
The clang tidy errors are already fixed in #2040 |
There was a problem hiding this comment.
Pull Request Overview
This PR adds proxy controller service support for AWS and Azure processors, allowing centralized proxy configuration management through a new ProxyConfigurationService controller service instead of requiring individual proxy properties on each processor.
- Introduces a new
ProxyConfigurationServicecontroller service for centralized proxy configuration management - Updates AWS and Azure processors to support using the proxy configuration service as an alternative to individual proxy properties
- Adds comprehensive test coverage for the new proxy configuration service functionality
Reviewed Changes
Copilot reviewed 36 out of 36 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| minifi-api/include/minifi-cpp/controllers/ProxyConfigurationServiceInterface.h | Interface definition for proxy configuration service |
| libminifi/include/controllers/ProxyConfigurationService.h | Implementation header for proxy configuration service |
| libminifi/src/controllers/ProxyConfigurationService.cpp | Core implementation of proxy configuration service |
| libminifi/test/unit/ProxyConfigurationServiceTests.cpp | Unit tests for proxy configuration service |
| extensions/azure/processors/* | Azure processor base classes updated to support proxy service |
| extensions/azure/storage/* | Azure storage clients updated to handle proxy configuration |
| extensions/azure/tests/* | Test files updated to include proxy service test cases |
| extensions/aws/processors/AwsProcessor.* | AWS processor updated to support proxy configuration service |
| extensions/aws/tests/* | AWS test files updated to test both proxy service and direct properties |
| docker/test/integration/* | Integration test support for proxy configuration service |
| PROCESSORS.md | Documentation updated to reflect new proxy configuration service property |
| CONTROLLERS.md | Documentation for the new ProxyConfigurationService controller |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
|
The issues listed in the clang tidy checks are fixed in the following PR: #2040 |
a1a832e to
cd31ed2
Compare
12e4262 to
ee61c70
Compare
b361c6f to
ee61c70
Compare
530067c to
fa7ded8
Compare
| std::string file_system_name; | ||
| std::string directory_name; | ||
| std::optional<uint64_t> number_of_retries; | ||
| std::optional<minifi::controllers::ProxyConfiguration> proxy_configuration; |
There was a problem hiding this comment.
Instead of an optional member, it could default to type==DIRECT, which means no proxy. That would make one more impossible state unrepresentable, which is considered a best practice nowadays.
There was a problem hiding this comment.
I'm not sure I'm convinced about this. What do you mean by "one more impossible state unrepresentable"? It seem a bit unintuitive to me. When the user adds a proxy controller service their intention is to use a proxy, if they do not want to use a proxy they should not add a service at all. What would be the benefit of adding a proxy service and configure it to not to use a proxy?
There was a problem hiding this comment.
We can remove the optional member now
f70ac21 to
99207e1
Compare
fd4984e to
bbefc33
Compare
bbefc33 to
8890e9f
Compare
| std::optional<uint16_t> proxy_port; | ||
| std::optional<std::string> proxy_user; | ||
| std::optional<std::string> proxy_password; |
There was a problem hiding this comment.
I'd make proxy_port a raw uint16_t, it's always going to be set anyway, or we can use 0 as a default value if need be. Also let's move the username + password into a separate struct with not optional string fields, and have an optional here.
| std::string file_system_name; | ||
| std::string directory_name; | ||
| std::optional<uint64_t> number_of_retries; | ||
| std::optional<minifi::controllers::ProxyConfiguration> proxy_configuration; |
There was a problem hiding this comment.
We can remove the optional member now
| plan_->setProperty(proxy_configuration_service, "Proxy Server Port", "1234"); | ||
| plan_->setProperty(proxy_configuration_service, "Proxy User Name", "username"); | ||
| plan_->setProperty(proxy_configuration_service, "Proxy User Password", "password"); | ||
| plan_->setProperty(proxy_configuration_service, "Proxy Type", "HTTPS"); |
There was a problem hiding this comment.
HTTPS is no longer supported, we should change it to HTTP
| std::unique_ptr<Azure::Storage::Files::DataLake::DataLakeFileSystemClient> AzureDataLakeStorageClient::createClient( | ||
| const AzureStorageCredentials& credentials, const std::string& file_system_name, std::optional<uint64_t> number_of_retries) { | ||
| std::unique_ptr<Azure::Storage::Files::DataLake::DataLakeFileSystemClient> AzureDataLakeStorageClient::createClient(const AzureStorageCredentials& credentials, | ||
| const std::string& file_system_name, std::optional<uint64_t> number_of_retries, const std::optional<minifi::controllers::ProxyConfiguration>& proxy_configuration) { |
There was a problem hiding this comment.
An optional non-owning reference can be more simply represented as a pointer
| const std::string& file_system_name, std::optional<uint64_t> number_of_retries, const std::optional<minifi::controllers::ProxyConfiguration>& proxy_configuration) { | |
| const std::string& file_system_name, std::optional<uint64_t> number_of_retries, minifi::controllers::ProxyConfiguration* const proxy_configuration) { |
https://issues.apache.org/jira/browse/MINIFICPP-2644
Thank you for submitting a contribution to Apache NiFi - MiNiFi C++.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:
Is there a JIRA ticket associated with this PR? Is it referenced
in the commit message?
Does your PR title start with MINIFICPP-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.
Has your PR been rebased against the latest commit within the target branch (typically main)?
Is your initial contribution a single, squashed commit?
For code changes:
For documentation related changes:
Note:
Please ensure that once the PR is submitted, you check GitHub Actions CI results for build issues and submit an update to your PR as soon as possible.