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