Andrea Cosentino created CAMEL-26336:
----------------------------------------
Summary: camel-minio: MinioProducer should apply configured
serverSideEncryption and serverSideEncryptionCustomerKey options
Key: CAMEL-26336
URL: https://issues.apache.org/jira/browse/CAMEL-26336
Project: Camel
Issue Type: Bug
Components: camel-minio
Reporter: Andrea Cosentino
Assignee: Andrea Cosentino
Fix For: 4.24.0, 4.22.3, 4.18.6
h3. Current behaviour
In {{camel-minio}}, {{MinioConfiguration}} exposes {{serverSideEncryption}} and
{{serverSideEncryptionCustomerKey}} endpoint configuration options.
In {{MinioConsumer}} and {{MinioEndpoint}}, these options are configured on
MinIO SDK request builders (e.g. {{GetObjectArgs}}, {{StatObjectArgs}}, and the
{{CopyObjectArgs}} in {{moveAfterRead}}).
However, in {{org.apache.camel.component.minio.MinioProducer}}:
* In {{doPutObject}}, {{PutObjectArgs.builder()}} does not configure
{{.sse(...)}} from {{serverSideEncryption}} or
{{serverSideEncryptionCustomerKey}}.
* In {{copyObject}}, {{CopyObjectArgs.builder()}} does not configure
{{.sse(...)}} for the destination, and {{SourceObject.builder()}} (or
{{CopySource.builder()}} on 4.18.x) does not configure {{.ssec(...)}} for the
source object.
Consequently, producer endpoints do not pass the configured server-side
encryption settings to the MinIO SDK during putObject and copyObject operations.
h3. Expected behaviour
{{MinioProducer}} should apply the configured {{serverSideEncryption}} and
{{serverSideEncryptionCustomerKey}} settings to {{PutObjectArgs.Builder}} in
{{doPutObject}} and to {{CopyObjectArgs.Builder}} / {{SourceObject.Builder}} in
{{copyObject}}, matching the configuration applied in {{MinioConsumer}}.
h3. Change
* In {{MinioProducer}}:
- In {{doPutObject}}: apply {{getConfiguration().getServerSideEncryption()}}
and {{getConfiguration().getServerSideEncryptionCustomerKey()}} to
{{putObjectRequest::sse}} via
{{MinioChecks.checkIfConfigIsNotEmptyAndSetAndConfig}}.
- In {{copyObject}}: apply
{{getConfiguration().getServerSideEncryptionCustomerKey()}} to
{{copySourceBuilder::ssec}}, and apply
{{getConfiguration().getServerSideEncryption()}} and
{{getConfiguration().getServerSideEncryptionCustomerKey()}} to
{{copyObjectRequest::sse}}.
* Add unit tests in {{camel-minio}} verifying that {{PutObjectArgs}} and
{{CopyObjectArgs}} receive the configured {{ServerSideEncryption}} objects when
the endpoint is configured with these options.
h3. Tests
* Unit test in {{components/camel-minio}} with a mock {{MinioClient}} verifying
that {{doPutObject}} sets the expected {{sse}} on {{PutObjectArgs}}.
* Unit test verifying that {{copyObject}} sets the expected {{sse}} and
{{ssec}} on {{CopyObjectArgs}} and the source object.
* Ensure all existing tests in {{camel-minio}} continue to pass.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)