You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by ad...@apache.org on 2022/11/27 14:02:01 UTC
[ozone] branch master updated: HDDS-7449. Avoid overwriting bucket encryption properties when quota/replication config are set on an existing bucket (#3992)
This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 4145cf5a08 HDDS-7449. Avoid overwriting bucket encryption properties when quota/replication config are set on an existing bucket (#3992)
4145cf5a08 is described below
commit 4145cf5a0863255fd7cb774c6c2a704b2575779b
Author: SaketaChalamchala <sa...@gmail.com>
AuthorDate: Sun Nov 27 06:01:55 2022 -0800
HDDS-7449. Avoid overwriting bucket encryption properties when quota/replication config are set on an existing bucket (#3992)
---
.../request/bucket/OMBucketSetPropertyRequest.java | 1 +
.../bucket/TestOMBucketSetPropertyRequest.java | 95 +++++++++++++++++++++-
2 files changed, 95 insertions(+), 1 deletion(-)
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java
index 6dd4e43a3e..f3fd3fc71e 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/bucket/OMBucketSetPropertyRequest.java
@@ -153,6 +153,7 @@ public class OMBucketSetPropertyRequest extends OMClientRequest {
.setBucketName(dbBucketInfo.getBucketName())
.setObjectID(dbBucketInfo.getObjectID())
.setBucketLayout(dbBucketInfo.getBucketLayout())
+ .setBucketEncryptionKey(dbBucketInfo.getEncryptionKeyInfo())
.setUpdateID(transactionLogIndex);
bucketInfoBuilder.addAllMetadata(KeyValueUtil
.getFromProtobuf(bucketArgs.getMetadataList()));
diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestOMBucketSetPropertyRequest.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestOMBucketSetPropertyRequest.java
index 0ff25d5f31..95d05c4ace 100644
--- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestOMBucketSetPropertyRequest.java
+++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestOMBucketSetPropertyRequest.java
@@ -23,16 +23,18 @@ import java.util.UUID;
import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
import org.apache.hadoop.hdds.client.ECReplicationConfig;
+import org.apache.hadoop.ozone.om.helpers.BucketEncryptionKeyInfo;
import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
import org.apache.hadoop.ozone.om.helpers.OmBucketArgs;
-import org.slf4j.LoggerFactory;
import org.apache.hadoop.ozone.om.helpers.BucketLayout;
import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
import org.apache.hadoop.ozone.om.request.OMRequestTestUtils;
import org.apache.ozone.test.GenericTestUtils;
+
import org.junit.Assert;
import org.junit.Test;
+import org.slf4j.LoggerFactory;
import org.apache.hadoop.ozone.om.response.OMClientResponse;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
@@ -52,6 +54,8 @@ import static org.apache.hadoop.ozone.OzoneConsts.GB;
*/
public class TestOMBucketSetPropertyRequest extends TestBucketRequest {
+ private static final String TEST_KEY = "key1";
+
@Test
public void testPreExecute() throws Exception {
String volumeName = UUID.randomUUID().toString();
@@ -287,6 +291,95 @@ public class TestOMBucketSetPropertyRequest extends TestBucketRequest {
dbBucketInfo.getDefaultReplicationConfig().getType());
}
+ @Test
+ public void testSettingRepConfigWithEncryption() throws Exception {
+ String volumeName = UUID.randomUUID().toString();
+ String bucketName = UUID.randomUUID().toString();
+
+ OmBucketInfo.Builder bucketInfo = new OmBucketInfo.Builder()
+ .setVolumeName(volumeName)
+ .setBucketName(bucketName)
+ .setBucketEncryptionKey(new BucketEncryptionKeyInfo.Builder()
+ .setKeyName(TEST_KEY).build());
+
+ OMRequestTestUtils.addVolumeToDB(
+ volumeName, omMetadataManager);
+ OMRequestTestUtils.addBucketToDB(
+ omMetadataManager, bucketInfo);
+
+ BucketArgs bucketArgs = OmBucketArgs.newBuilder()
+ .setDefaultReplicationConfig(new DefaultReplicationConfig(
+ EC, new ECReplicationConfig(3, 2)))
+ .setBucketName(bucketName)
+ .setVolumeName(volumeName)
+ .setIsVersionEnabled(true)
+ .build()
+ .getProtobuf();
+
+ OMRequest omRequest = OMRequest.newBuilder().setSetBucketPropertyRequest(
+ SetBucketPropertyRequest.newBuilder().setBucketArgs(bucketArgs))
+ .setCmdType(OzoneManagerProtocolProtos.Type.SetBucketProperty)
+ .setClientId(UUID.randomUUID().toString()).build();
+
+ OMBucketSetPropertyRequest omBucketSetPropertyRequest =
+ new OMBucketSetPropertyRequest(omRequest);
+
+ OMClientResponse omClientResponse = omBucketSetPropertyRequest
+ .validateAndUpdateCache(ozoneManager, 1,
+ ozoneManagerDoubleBufferHelper);
+
+ Assert.assertEquals(true, omClientResponse.getOMResponse().getSuccess());
+
+ String bucketKey = omMetadataManager.getBucketKey(volumeName, bucketName);
+ OmBucketInfo dbBucketInfo =
+ omMetadataManager.getBucketTable().get(bucketKey);
+
+ Assert.assertEquals(TEST_KEY,
+ dbBucketInfo.getEncryptionKeyInfo().getKeyName());
+ Assert.assertEquals(EC,
+ dbBucketInfo.getDefaultReplicationConfig().getType());
+ }
+
+ @Test
+ public void testSettingQuotaWithEncryption() throws Exception {
+ String volumeName = UUID.randomUUID().toString();
+ String bucketName = UUID.randomUUID().toString();
+
+ OmBucketInfo.Builder bucketInfo = new OmBucketInfo.Builder()
+ .setVolumeName(volumeName)
+ .setBucketName(bucketName)
+ .setBucketEncryptionKey(new BucketEncryptionKeyInfo.Builder()
+ .setKeyName(TEST_KEY).build());
+
+ OMRequestTestUtils.addVolumeToDB(
+ volumeName, omMetadataManager);
+ OMRequestTestUtils.addBucketToDB(
+ omMetadataManager, bucketInfo);
+
+ OMRequest omRequest = createSetBucketPropertyRequest(volumeName,
+ bucketName, true, 20 * GB);
+
+ OMBucketSetPropertyRequest omBucketSetPropertyRequest =
+ new OMBucketSetPropertyRequest(omRequest);
+
+ OMClientResponse omClientResponse = omBucketSetPropertyRequest
+ .validateAndUpdateCache(ozoneManager, 1,
+ ozoneManagerDoubleBufferHelper);
+
+ Assert.assertEquals(true, omClientResponse.getOMResponse().getSuccess());
+
+ String bucketKey = omMetadataManager.getBucketKey(volumeName, bucketName);
+ OmBucketInfo dbBucketInfo =
+ omMetadataManager.getBucketTable().get(bucketKey);
+
+ Assert.assertEquals(TEST_KEY,
+ dbBucketInfo.getEncryptionKeyInfo().getKeyName());
+ Assert.assertEquals(20 * GB,
+ dbBucketInfo.getQuotaInBytes());
+ Assert.assertEquals(1000L,
+ dbBucketInfo.getQuotaInNamespace());
+ }
+
@Test
public void testValidateAndUpdateCacheWithQuotaSpaceUsed() throws Exception {
String volumeName = UUID.randomUUID().toString();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org