This is an automated email from the ASF dual-hosted git repository.
ivandika3 pushed a commit to branch HDDS-11233
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/HDDS-11233 by this push:
new f7a77116530 HDDS-15872. Ozone Bucket Support StoragePolicy and
allowFallbackStoragePolicy. (#11192)
f7a77116530 is described below
commit f7a77116530131834778a61094a5edfd8d85b163
Author: Devesh Kumar Singh <[email protected]>
AuthorDate: Fri Sep 11 07:10:06 2026 +0530
HDDS-15872. Ozone Bucket Support StoragePolicy and
allowFallbackStoragePolicy. (#11192)
Co-authored-by: XiChen <[email protected]>
---
.../java/org/apache/hadoop/ozone/OzoneConsts.java | 2 +
.../ozone/shell/bucket/CreateBucketHandler.java | 3 +-
.../ozone/shell/bucket/LinkBucketHandler.java | 2 -
.../shell/tenant/TenantBucketLinkHandler.java | 2 -
.../org/apache/hadoop/ozone/client/BucketArgs.java | 45 ++++++++---
.../apache/hadoop/ozone/client/OzoneBucket.java | 58 ++++++++++----
.../ozone/client/protocol/ClientProtocol.java | 10 +--
.../apache/hadoop/ozone/client/rpc/RpcClient.java | 29 ++++---
.../apache/hadoop/hdds/protocol/StorageType.java | 70 ----------------
.../hadoop/ozone/om/helpers/OmBucketArgs.java | 68 +++++++++++-----
.../hadoop/ozone/om/helpers/OmBucketInfo.java | 92 ++++++++++++++++------
.../hadoop/ozone/om/helpers/TestOmBucketInfo.java | 14 ++--
.../src/main/smoketest/basic/ozone-shell-lib.robot | 4 +-
.../hadoop/ozone/freon/OmBucketGenerator.java | 2 -
.../ozone/s3/awssdk/v2/AbstractS3SDKV2Tests.java | 3 -
.../ozone/AbstractRootedOzoneFileSystemTest.java | 4 -
.../java/org/apache/hadoop/fs/ozone/TestHSync.java | 2 -
.../hadoop/fs/ozone/TestOzoneFSInputStream.java | 2 -
.../hadoop/fs/ozone/TestOzoneFileChecksum.java | 2 -
.../java/org/apache/hadoop/ozone/DataTestUtil.java | 4 -
.../ozone/client/rpc/OzoneRpcClientTests.java | 19 +++--
.../ozone/om/TestBucketLayoutWithOlderClient.java | 4 +-
.../apache/hadoop/ozone/om/TestBucketOwner.java | 3 +-
.../hadoop/ozone/om/TestListKeysWithFSO.java | 3 -
.../ozone/om/TestObjectStoreWithLegacyFS.java | 3 -
...stOzoneManagerHAFollowerReadWithAllRunning.java | 6 +-
.../ozone/om/TestOzoneManagerHAWithAllRunning.java | 6 +-
.../hadoop/ozone/om/TestRecursiveAclWithFSO.java | 5 +-
.../src/main/proto/OmClientProtocol.proto | 13 ++-
.../request/bucket/OMBucketSetPropertyRequest.java | 22 ++++--
.../hadoop/ozone/om/TestBucketManagerImpl.java | 27 ++++---
.../apache/hadoop/ozone/om/TestKeyManagerUnit.java | 2 -
.../hadoop/ozone/om/TestOmMetadataManager.java | 2 -
...TestOzoneManagerDoubleBufferWithOMResponse.java | 4 +-
.../ozone/om/request/OMRequestTestUtils.java | 2 +-
.../request/TestOMClientRequestWithUserInfo.java | 4 +-
.../request/bucket/TestOMBucketCreateRequest.java | 16 ++--
.../bucket/TestOMBucketCreateRequestWithFSO.java | 4 +-
.../ozone/om/response/TestCleanupTableInfo.java | 2 -
.../file/TestOMDirectoryCreateResponseWithFSO.java | 2 -
.../ozone/om/response/key/OMKeyResponseTests.java | 2 -
.../s3/multipart/S3MultipartResponseTests.java | 2 -
.../ozone/recon/api/types/BucketObjectDBInfo.java | 21 +++--
.../recon/ozone-recon-web/src/types/om.types.tsx | 11 +--
.../src/v2/components/nuMetadata/nuMetadata.tsx | 6 +-
.../src/v2/components/tables/bucketsTable.tsx | 35 ++++----
.../src/v2/pages/buckets/buckets.tsx | 3 +-
.../ozone-recon-web/src/v2/types/bucket.types.ts | 16 ++--
.../ozone-recon-web/src/views/buckets/buckets.tsx | 41 +++++-----
.../src/views/diskUsage/diskUsage.tsx | 10 ++-
.../recon/api/AbstractTreeNSSummaryScenario.java | 5 --
.../ozone/recon/api/FlatNSSummaryScenario.java | 3 -
.../hadoop/ozone/recon/api/TestEndpoints.java | 10 +--
.../hadoop/ozone/client/ClientProtocolStub.java | 6 +-
.../hadoop/ozone/client/OzoneVolumeStub.java | 7 +-
55 files changed, 393 insertions(+), 352 deletions(-)
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java
index 859e133ff56..50559ca917a 100644
--- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java
+++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java
@@ -298,6 +298,8 @@ public final class OzoneConsts {
public static final String MAX_NUM_OF_BUCKETS = "maxNumOfBuckets";
public static final String HAS_SNAPSHOT = "hasSnapshot";
public static final String STORAGE_TYPE = "storageType";
+ public static final String STORAGE_POLICY = "storagePolicy";
+ public static final String ALLOW_FALLBACK_STORAGE_POLICY =
"allowFallbackStoragePolicy";
public static final String RESOURCE_TYPE = "resourceType";
public static final String IS_VERSION_ENABLED = "isVersionEnabled";
public static final String CREATION_TIME = "creationTime";
diff --git
a/hadoop-ozone/cli-shell/src/main/java/org/apache/hadoop/ozone/shell/bucket/CreateBucketHandler.java
b/hadoop-ozone/cli-shell/src/main/java/org/apache/hadoop/ozone/shell/bucket/CreateBucketHandler.java
index e74fb0b1b43..ab842f184e5 100644
---
a/hadoop-ozone/cli-shell/src/main/java/org/apache/hadoop/ozone/shell/bucket/CreateBucketHandler.java
+++
b/hadoop-ozone/cli-shell/src/main/java/org/apache/hadoop/ozone/shell/bucket/CreateBucketHandler.java
@@ -21,7 +21,6 @@
import java.io.IOException;
import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
import org.apache.hadoop.hdds.client.OzoneQuota;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.client.BucketArgs;
import org.apache.hadoop.ozone.client.OzoneBucket;
@@ -80,7 +79,7 @@ public void execute(OzoneClient client, OzoneAddress address)
}
BucketArgs.Builder bb =
- new BucketArgs.Builder().setStorageType(StorageType.DEFAULT)
+ new BucketArgs.Builder()
.setVersioning(false).setOwner(ownerName);
if (allowedBucketLayout != null) {
bb.setBucketLayout(allowedBucketLayout);
diff --git
a/hadoop-ozone/cli-shell/src/main/java/org/apache/hadoop/ozone/shell/bucket/LinkBucketHandler.java
b/hadoop-ozone/cli-shell/src/main/java/org/apache/hadoop/ozone/shell/bucket/LinkBucketHandler.java
index e95b0fc3675..5f4b5398f6e 100644
---
a/hadoop-ozone/cli-shell/src/main/java/org/apache/hadoop/ozone/shell/bucket/LinkBucketHandler.java
+++
b/hadoop-ozone/cli-shell/src/main/java/org/apache/hadoop/ozone/shell/bucket/LinkBucketHandler.java
@@ -18,7 +18,6 @@
package org.apache.hadoop.ozone.shell.bucket;
import java.io.IOException;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.ozone.client.BucketArgs;
import org.apache.hadoop.ozone.client.OzoneBucket;
import org.apache.hadoop.ozone.client.OzoneClient;
@@ -58,7 +57,6 @@ public void execute(OzoneClient client, OzoneAddress address)
throws IOException {
BucketArgs.Builder bb = new BucketArgs.Builder()
- .setStorageType(StorageType.DEFAULT)
.setVersioning(false)
.setSourceVolume(source.getVolumeName())
.setSourceBucket(source.getBucketName());
diff --git
a/hadoop-ozone/cli-shell/src/main/java/org/apache/hadoop/ozone/shell/tenant/TenantBucketLinkHandler.java
b/hadoop-ozone/cli-shell/src/main/java/org/apache/hadoop/ozone/shell/tenant/TenantBucketLinkHandler.java
index 198437018d7..c8a1a5d1836 100644
---
a/hadoop-ozone/cli-shell/src/main/java/org/apache/hadoop/ozone/shell/tenant/TenantBucketLinkHandler.java
+++
b/hadoop-ozone/cli-shell/src/main/java/org/apache/hadoop/ozone/shell/tenant/TenantBucketLinkHandler.java
@@ -18,7 +18,6 @@
package org.apache.hadoop.ozone.shell.tenant;
import java.io.IOException;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.ozone.client.BucketArgs;
import org.apache.hadoop.ozone.client.OzoneBucket;
import org.apache.hadoop.ozone.client.OzoneClient;
@@ -54,7 +53,6 @@ protected void execute(OzoneClient client, OzoneAddress
address)
throws IOException {
BucketArgs.Builder bb = new BucketArgs.Builder()
- .setStorageType(StorageType.DEFAULT)
.setVersioning(false)
.setSourceVolume(source.getVolumeName())
.setSourceBucket(source.getBucketName());
diff --git
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/BucketArgs.java
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/BucketArgs.java
index f4173963dd6..e63bf5dfa9b 100644
---
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/BucketArgs.java
+++
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/BucketArgs.java
@@ -25,7 +25,7 @@
import java.util.Map;
import net.jcip.annotations.Immutable;
import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
-import org.apache.hadoop.hdds.protocol.StorageType;
+import org.apache.hadoop.hdds.client.StoragePolicy;
import org.apache.hadoop.ozone.OzoneAcl;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.om.helpers.BucketLayout;
@@ -46,10 +46,14 @@ public final class BucketArgs {
*/
private final boolean versioning;
/**
- * Type of storage to be used for this bucket.
- * [RAM_DISK, SSD, DISK, ARCHIVE]
+ * Storage policy to be used for this bucket.
*/
- private final StorageType storageType;
+ private final StoragePolicy storagePolicy;
+ /**
+ * Whether creation is allowed to fall back to the policy's fallback tier
+ * when the primary tier is unavailable.
+ */
+ private final Boolean allowFallbackStoragePolicy;
/**
* Custom key/value metadata.
@@ -77,7 +81,8 @@ public final class BucketArgs {
private BucketArgs(Builder b) {
acls = b.acls == null ? ImmutableList.of() : ImmutableList.copyOf(b.acls);
versioning = b.versioning;
- storageType = b.storageType;
+ storagePolicy = b.storagePolicy;
+ allowFallbackStoragePolicy = b.allowFallbackStoragePolicy;
metadata = b.metadata == null ? ImmutableMap.of() :
ImmutableMap.copyOf(b.metadata);
bucketEncryptionKey = b.bucketEncryptionKey;
sourceVolume = b.sourceVolume;
@@ -98,11 +103,21 @@ public boolean getVersioning() {
}
/**
- * Returns the type of storage to be used.
- * @return StorageType
+ * Returns the storage policy to be used.
+ * @return StoragePolicy
*/
- public StorageType getStorageType() {
- return storageType;
+ public StoragePolicy getStoragePolicy() {
+ return storagePolicy;
+ }
+
+ /**
+ * Returns whether creation is allowed to fall back to the policy's
+ * fallback tier when the primary tier is unavailable. Returns {@code null}
+ * when the flag was not explicitly set by the caller.
+ * @return allowFallbackStoragePolicy
+ */
+ public Boolean getAllowFallbackStoragePolicy() {
+ return allowFallbackStoragePolicy;
}
/**
@@ -190,7 +205,8 @@ public String getOwner() {
*/
public static class Builder {
private boolean versioning;
- private StorageType storageType;
+ private StoragePolicy storagePolicy;
+ private Boolean allowFallbackStoragePolicy;
private List<OzoneAcl> acls;
private Map<String, String> metadata;
private String bucketEncryptionKey;
@@ -212,8 +228,13 @@ public BucketArgs.Builder setVersioning(boolean
versionFlag) {
return this;
}
- public BucketArgs.Builder setStorageType(StorageType storage) {
- this.storageType = storage;
+ public BucketArgs.Builder setStoragePolicy(StoragePolicy storage) {
+ this.storagePolicy = storage;
+ return this;
+ }
+
+ public BucketArgs.Builder setAllowFallbackStoragePolicy(Boolean
allowFallback) {
+ this.allowFallbackStoragePolicy = allowFallback;
return this;
}
diff --git
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java
index 9b5f663b7f0..1999c8144ca 100644
---
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java
+++
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java
@@ -42,8 +42,8 @@
import org.apache.hadoop.hdds.client.ReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicationFactor;
import org.apache.hadoop.hdds.client.ReplicationType;
+import org.apache.hadoop.hdds.client.StoragePolicy;
import org.apache.hadoop.hdds.conf.ConfigurationSource;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.scm.client.HddsClientUtils;
import org.apache.hadoop.ozone.OmUtils;
import org.apache.hadoop.ozone.OzoneAcl;
@@ -90,10 +90,15 @@ public class OzoneBucket extends WithMetadata {
private ReplicationConfig defaultReplication;
/**
- * Type of storage to be used for this bucket.
- * [RAM_DISK, SSD, DISK, ARCHIVE]
+ * Storage policy of the bucket.
*/
- private StorageType storageType;
+ private StoragePolicy storagePolicy;
+
+ /**
+ * Whether fallback to the policy's fallback storage tier is allowed when
+ * the primary tier is unavailable.
+ */
+ private Boolean allowFallbackStoragePolicy;
/**
* Bucket Version flag.
@@ -169,7 +174,8 @@ protected OzoneBucket(Builder builder) {
// Bucket level replication is not configured by default.
this.defaultReplication = builder.defaultReplicationConfig != null ?
builder.defaultReplicationConfig.getReplicationConfig() : null;
- this.storageType = builder.storageType;
+ this.storagePolicy = builder.storagePolicy;
+ this.allowFallbackStoragePolicy = builder.allowFallbackStoragePolicy;
this.versioning = builder.versioning;
if (builder.conf != null) {
this.listCacheSize = HddsClientUtils.getListCacheSize(builder.conf);
@@ -233,12 +239,24 @@ public List<OzoneAcl> getAcls() throws IOException {
}
/**
- * Returns StorageType of the Bucket.
+ * Returns the StoragePolicy of the Bucket.
*
- * @return storageType
+ * @return storagePolicy (may be {@code null} for buckets read from records
+ * that predate storage-policy support).
*/
- public StorageType getStorageType() {
- return storageType;
+ public StoragePolicy getStoragePolicy() {
+ return storagePolicy;
+ }
+
+ /**
+ * Returns whether the bucket allows creation to fall back to the storage
+ * policy's fallback tier when the primary tier is unavailable.
+ *
+ * @return allowFallbackStoragePolicy (may be {@code null} when the flag
+ * was never set).
+ */
+ public Boolean getAllowFallbackStoragePolicy() {
+ return allowFallbackStoragePolicy;
}
/**
@@ -350,13 +368,13 @@ public boolean setAcl(List<OzoneAcl> acls) throws
IOException {
}
/**
- * Sets/Changes the storage type of the bucket.
- * @param newStorageType Storage type to be set
+ * Sets/Changes the storage policy of the bucket.
+ * @param newStoragePolicy Storage policy to be set
* @throws IOException
*/
- public void setStorageType(StorageType newStorageType) throws IOException {
- proxy.setBucketStorageType(volumeName, name, newStorageType);
- storageType = newStorageType;
+ public void setStoragePolicy(StoragePolicy newStoragePolicy) throws
IOException {
+ proxy.setBucketStoragePolicy(volumeName, name, newStoragePolicy);
+ storagePolicy = newStoragePolicy;
}
/**
@@ -1387,7 +1405,8 @@ public static class Builder extends WithMetadata.Builder {
private String volumeName;
private String name;
private DefaultReplicationConfig defaultReplicationConfig;
- private StorageType storageType;
+ private StoragePolicy storagePolicy;
+ private Boolean allowFallbackStoragePolicy;
private Boolean versioning;
private long usedBytes;
private long usedNamespace;
@@ -1433,8 +1452,13 @@ public Builder setDefaultReplicationConfig(
return this;
}
- public Builder setStorageType(StorageType storageType) {
- this.storageType = storageType;
+ public Builder setStoragePolicy(StoragePolicy storagePolicy) {
+ this.storagePolicy = storagePolicy;
+ return this;
+ }
+
+ public Builder setAllowFallbackStoragePolicy(Boolean
allowFallbackStoragePolicy) {
+ this.allowFallbackStoragePolicy = allowFallbackStoragePolicy;
return this;
}
diff --git
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/protocol/ClientProtocol.java
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/protocol/ClientProtocol.java
index a8e75eed746..49d5b82cf3e 100644
---
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/protocol/ClientProtocol.java
+++
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/protocol/ClientProtocol.java
@@ -26,8 +26,8 @@
import org.apache.hadoop.hdds.client.ReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicationFactor;
import org.apache.hadoop.hdds.client.ReplicationType;
+import org.apache.hadoop.hdds.client.StoragePolicy;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.ozone.OzoneAcl;
import org.apache.hadoop.ozone.OzoneFsServerDefaults;
@@ -283,14 +283,14 @@ void setBucketVersioning(String volumeName, String
bucketName,
throws IOException;
/**
- * Sets the Storage Class of a Bucket.
+ * Sets the Storage Policy of a Bucket.
* @param volumeName Name of the Volume
* @param bucketName Name of the Bucket
- * @param storageType StorageType to be set
+ * @param storagePolicy StoragePolicy to be set
* @throws IOException
*/
- void setBucketStorageType(String volumeName, String bucketName,
- StorageType storageType)
+ void setBucketStoragePolicy(String volumeName, String bucketName,
+ StoragePolicy storagePolicy)
throws IOException;
/**
diff --git
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
index 01b7b8d9796..0218522b1d6 100644
---
a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
+++
b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
@@ -67,15 +67,16 @@
import org.apache.hadoop.fs.Syncable;
import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
import org.apache.hadoop.hdds.client.ECReplicationConfig;
+import org.apache.hadoop.hdds.client.OzoneStoragePolicy;
import org.apache.hadoop.hdds.client.RatisReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicationConfigValidator;
import org.apache.hadoop.hdds.client.ReplicationFactor;
import org.apache.hadoop.hdds.client.ReplicationType;
+import org.apache.hadoop.hdds.client.StoragePolicy;
import org.apache.hadoop.hdds.conf.ConfigurationSource;
import org.apache.hadoop.hdds.conf.StorageUnit;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.scm.ContainerClientMetrics;
import org.apache.hadoop.hdds.scm.OzoneClientConfig;
@@ -637,8 +638,9 @@ public void createBucket(
}
boolean isVersionEnabled = bucketArgs.getVersioning();
- StorageType storageType = bucketArgs.getStorageType() == null ?
- StorageType.DEFAULT : bucketArgs.getStorageType();
+ StoragePolicy storagePolicy = bucketArgs.getStoragePolicy() == null ?
+ OzoneStoragePolicy.getDefaultPolicy() : bucketArgs.getStoragePolicy();
+ Boolean allowFallbackStoragePolicy =
bucketArgs.getAllowFallbackStoragePolicy();
BucketLayout bucketLayout = bucketArgs.getBucketLayout();
BucketEncryptionKeyInfo bek = null;
if (bucketArgs.getEncryptionKey() != null) {
@@ -651,7 +653,8 @@ public void createBucket(
.setBucketName(bucketName)
.setIsVersionEnabled(isVersionEnabled)
.addAllMetadata(bucketArgs.getMetadata())
- .setStorageType(storageType)
+ .setStoragePolicy(storagePolicy)
+ .setAllowFallbackStoragePolicy(allowFallbackStoragePolicy)
.setSourceVolume(bucketArgs.getSourceVolume())
.setSourceBucket(bucketArgs.getSourceBucket())
.setQuotaInBytes(bucketArgs.getQuotaInBytes())
@@ -687,11 +690,11 @@ public void createBucket(
? "with bucket layout " + bucketLayout
: "with server-side default bucket layout";
LOG.info("Creating Bucket: {}/{}, {}, {} as owner, Versioning {}, " +
- "Storage Type set to {} and Encryption set to {}, " +
+ "Storage Policy set to {} (allowFallback={}) and Encryption set to
{}, " +
"Replication Type set to {}, Namespace Quota set to {}, " +
"Space Quota set to {} ",
volumeName, bucketName, layoutMsg, owner, isVersionEnabled,
- storageType, bek != null, replicationType,
+ storagePolicy, allowFallbackStoragePolicy, bek != null,
replicationType,
bucketArgs.getQuotaInNamespace(), bucketArgs.getQuotaInBytes());
ozoneManagerClient.createBucket(builder.build());
@@ -1220,16 +1223,16 @@ public void setBucketVersioning(
}
@Override
- public void setBucketStorageType(
- String volumeName, String bucketName, StorageType storageType)
+ public void setBucketStoragePolicy(
+ String volumeName, String bucketName, StoragePolicy storagePolicy)
throws IOException {
verifyVolumeName(volumeName);
verifyBucketName(bucketName);
- Objects.requireNonNull(storageType, "storageType == null");
+ Objects.requireNonNull(storagePolicy, "storagePolicy == null");
OmBucketArgs.Builder builder = OmBucketArgs.newBuilder();
builder.setVolumeName(volumeName)
.setBucketName(bucketName)
- .setStorageType(storageType);
+ .setStoragePolicy(storagePolicy);
ozoneManagerClient.setBucketProperty(builder.build());
}
@@ -1323,7 +1326,8 @@ public OzoneBucket getBucketDetails(
return OzoneBucket.newBuilder(conf, this)
.setVolumeName(bucketInfo.getVolumeName())
.setName(bucketInfo.getBucketName())
- .setStorageType(bucketInfo.getStorageType())
+ .setStoragePolicy(bucketInfo.getStoragePolicy())
+
.setAllowFallbackStoragePolicy(bucketInfo.getAllowFallbackStoragePolicy())
.setVersioning(bucketInfo.getIsVersionEnabled())
.setCreationTime(bucketInfo.getCreationTime())
.setModificationTime(bucketInfo.getModificationTime())
@@ -1356,7 +1360,8 @@ public List<OzoneBucket> listBuckets(String volumeName,
String bucketPrefix,
OzoneBucket.newBuilder(conf, this)
.setVolumeName(bucket.getVolumeName())
.setName(bucket.getBucketName())
- .setStorageType(bucket.getStorageType())
+ .setStoragePolicy(bucket.getStoragePolicy())
+
.setAllowFallbackStoragePolicy(bucket.getAllowFallbackStoragePolicy())
.setVersioning(bucket.getIsVersionEnabled())
.setCreationTime(bucket.getCreationTime())
.setModificationTime(bucket.getModificationTime())
diff --git
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/hdds/protocol/StorageType.java
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/hdds/protocol/StorageType.java
deleted file mode 100644
index c455302427b..00000000000
---
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/hdds/protocol/StorageType.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.hdds.protocol;
-
-import org.apache.hadoop.hdds.protocol.proto.HddsProtos.StorageTypeProto;
-
-/**
- * Ozone specific storage types.
- *
- * @deprecated Ozone buckets should not have a StorageType attribute.
- * This class is specific to `OzoneBucket` and is planned for removal in
future versions.
- * It is recommended to use `{@link org.apache.hadoop.fs.StorageType}` instead
for
- * any storage type requirements.
- */
-@Deprecated
-public enum StorageType {
- RAM_DISK,
- SSD,
- DISK,
- ARCHIVE;
-
- public static final StorageType DEFAULT = DISK;
-
- public StorageTypeProto toProto() {
- switch (this) {
- case DISK:
- return StorageTypeProto.DISK;
- case SSD:
- return StorageTypeProto.SSD;
- case ARCHIVE:
- return StorageTypeProto.ARCHIVE;
- case RAM_DISK:
- return StorageTypeProto.RAM_DISK;
- default:
- throw new IllegalStateException(
- "BUG: StorageType not found, type=" + this);
- }
- }
-
- public static StorageType valueOf(StorageTypeProto type) {
- switch (type) {
- case DISK:
- return DISK;
- case SSD:
- return SSD;
- case ARCHIVE:
- return ARCHIVE;
- case RAM_DISK:
- return RAM_DISK;
- default:
- throw new IllegalStateException(
- "BUG: StorageTypeProto not found, type=" + type);
- }
- }
-}
diff --git
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketArgs.java
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketArgs.java
index 8eed2630ead..c25173e2614 100644
---
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketArgs.java
+++
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketArgs.java
@@ -22,7 +22,8 @@
import java.util.Map;
import java.util.Objects;
import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
-import org.apache.hadoop.hdds.protocol.StorageType;
+import org.apache.hadoop.hdds.client.OzoneStoragePolicy;
+import org.apache.hadoop.hdds.client.StoragePolicy;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.audit.Auditable;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.BucketArgs;
@@ -45,10 +46,15 @@ public final class OmBucketArgs extends WithMetadata
implements Auditable {
*/
private final Boolean isVersionEnabled;
/**
- * Type of storage to be used for this bucket.
- * [RAM_DISK, SSD, DISK, ARCHIVE]
+ * Storage policy for the bucket.
*/
- private final StorageType storageType;
+ private final StoragePolicy storagePolicy;
+ /**
+ * Whether creation is allowed to fall back to the storage policy's
+ * fallback tier when the primary tier is unavailable. {@code null} when
+ * the flag was not set.
+ */
+ private final Boolean allowFallbackStoragePolicy;
/**
* Bucket encryption key info if encryption is enabled.
@@ -73,7 +79,8 @@ private OmBucketArgs(Builder b) {
this.volumeName = b.volumeName;
this.bucketName = b.bucketName;
this.isVersionEnabled = b.isVersionEnabled;
- this.storageType = b.storageType;
+ this.storagePolicy = b.storagePolicy;
+ this.allowFallbackStoragePolicy = b.allowFallbackStoragePolicy;
this.ownerName = b.ownerName;
this.defaultReplicationConfig = b.defaultReplicationConfig;
this.quotaInBytesSet = b.quotaInBytesSet;
@@ -109,11 +116,20 @@ public Boolean getIsVersionEnabled() {
}
/**
- * Returns the type of storage to be used.
- * @return StorageType
+ * Returns the storage policy for this bucket.
+ * @return StoragePolicy (may be {@code null} when not set).
+ */
+ public StoragePolicy getStoragePolicy() {
+ return storagePolicy;
+ }
+
+ /**
+ * Returns whether creation is allowed to fall back to the storage policy's
+ * fallback tier when the primary tier is unavailable.
+ * @return allowFallbackStoragePolicy (may be {@code null} when not set).
*/
- public StorageType getStorageType() {
- return storageType;
+ public Boolean getAllowFallbackStoragePolicy() {
+ return allowFallbackStoragePolicy;
}
/**
@@ -190,8 +206,12 @@ public Map<String, String> toAuditMap() {
getMetadata().get(OzoneConsts.GDPR_FLAG));
auditMap.put(OzoneConsts.IS_VERSION_ENABLED,
String.valueOf(this.isVersionEnabled));
- if (this.storageType != null) {
- auditMap.put(OzoneConsts.STORAGE_TYPE, this.storageType.name());
+ if (this.storagePolicy != null) {
+ auditMap.put(OzoneConsts.STORAGE_POLICY, this.storagePolicy.getName());
+ }
+ if (this.allowFallbackStoragePolicy != null) {
+ auditMap.put(OzoneConsts.ALLOW_FALLBACK_STORAGE_POLICY,
+ String.valueOf(this.allowFallbackStoragePolicy));
}
if (this.ownerName != null) {
auditMap.put(OzoneConsts.OWNER, this.ownerName);
@@ -227,7 +247,8 @@ public static class Builder extends WithMetadata.Builder {
private String volumeName;
private String bucketName;
private Boolean isVersionEnabled;
- private StorageType storageType;
+ private StoragePolicy storagePolicy;
+ private Boolean allowFallbackStoragePolicy;
private boolean quotaInBytesSet = false;
private long quotaInBytes;
private boolean quotaInNamespaceSet = false;
@@ -275,8 +296,13 @@ public Builder addAllMetadata(Map<String, String> map) {
return this;
}
- public Builder setStorageType(StorageType storage) {
- this.storageType = storage;
+ public Builder setStoragePolicy(StoragePolicy storage) {
+ this.storagePolicy = storage;
+ return this;
+ }
+
+ public Builder setAllowFallbackStoragePolicy(Boolean allowFallback) {
+ this.allowFallbackStoragePolicy = allowFallback;
return this;
}
@@ -339,8 +365,11 @@ public BucketArgs getProtobuf() {
if (isVersionEnabled != null) {
builder.setIsVersionEnabled(isVersionEnabled);
}
- if (storageType != null) {
- builder.setStorageType(storageType.toProto());
+ if (storagePolicy != null) {
+ builder.setStoragePolicy(OzoneStoragePolicy.toProto(storagePolicy));
+ }
+ if (allowFallbackStoragePolicy != null) {
+ builder.setAllowFallbackStoragePolicy(allowFallbackStoragePolicy);
}
if (quotaInBytesSet && (
quotaInBytes > 0 || quotaInBytes == OzoneConsts.QUOTA_RESET)) {
@@ -381,8 +410,11 @@ public static Builder builderFromProtobuf(BucketArgs
bucketArgs) {
if (bucketArgs.hasIsVersionEnabled()) {
builder.setIsVersionEnabled(bucketArgs.getIsVersionEnabled());
}
- if (bucketArgs.hasStorageType()) {
- builder.setStorageType(StorageType.valueOf(bucketArgs.getStorageType()));
+ if (bucketArgs.hasStoragePolicy()) {
+
builder.setStoragePolicy(OzoneStoragePolicy.fromProto(bucketArgs.getStoragePolicy()));
+ }
+ if (bucketArgs.hasAllowFallbackStoragePolicy()) {
+
builder.setAllowFallbackStoragePolicy(bucketArgs.getAllowFallbackStoragePolicy());
}
if (bucketArgs.hasOwnerName()) {
builder.setOwnerName(bucketArgs.getOwnerName());
diff --git
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketInfo.java
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketInfo.java
index 639dbaa9f39..df21bc6131a 100644
---
a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketInfo.java
+++
b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmBucketInfo.java
@@ -25,7 +25,9 @@
import java.util.Objects;
import java.util.stream.Collectors;
import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
-import org.apache.hadoop.hdds.protocol.StorageType;
+import org.apache.hadoop.hdds.client.OzoneStoragePolicy;
+import org.apache.hadoop.hdds.client.StoragePolicy;
+import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.utils.db.Codec;
import org.apache.hadoop.hdds.utils.db.CopyObject;
import org.apache.hadoop.hdds.utils.db.DelegatedCodec;
@@ -63,10 +65,15 @@ public final class OmBucketInfo extends WithObjectID
implements Auditable, CopyO
*/
private final boolean isVersionEnabled;
/**
- * Type of storage to be used for this bucket.
- * [RAM_DISK, SSD, DISK, ARCHIVE]
+ * Storage policy for this bucket. May be {@code null} for records read
+ * from serialized bucket rows that predate storage-policy support.
*/
- private final StorageType storageType;
+ private final StoragePolicy storagePolicy;
+ /**
+ * Whether creation is allowed to fall back to the storage policy's
+ * fallback tier when the primary tier is unavailable.
+ */
+ private final Boolean allowFallbackStoragePolicy;
/**
* Creation time of bucket.
*/
@@ -119,7 +126,8 @@ private OmBucketInfo(Builder b) {
this.bucketName = b.bucketName;
this.acls = b.acls.build();
this.isVersionEnabled = b.isVersionEnabled;
- this.storageType = b.storageType;
+ this.storagePolicy = b.storagePolicy;
+ this.allowFallbackStoragePolicy = b.allowFallbackStoragePolicy;
this.creationTime = b.creationTime;
this.modificationTime = b.modificationTime;
this.bekInfo = b.bekInfo;
@@ -174,11 +182,20 @@ public boolean getIsVersionEnabled() {
}
/**
- * Returns the type of storage to be used.
- * @return StorageType
+ * Returns the storage policy for this bucket.
+ * @return StoragePolicy (may be {@code null} for older serialized rows).
*/
- public StorageType getStorageType() {
- return storageType;
+ public StoragePolicy getStoragePolicy() {
+ return storagePolicy;
+ }
+
+ /**
+ * Returns whether creation is allowed to fall back to the storage policy's
+ * fallback tier when the primary tier is unavailable.
+ * @return allowFallbackStoragePolicy (may be {@code null} when not set).
+ */
+ public Boolean getAllowFallbackStoragePolicy() {
+ return allowFallbackStoragePolicy;
}
/**
@@ -338,8 +355,11 @@ public Map<String, String> toAuditMap() {
(this.acls != null) ? this.acls.toString() : null);
auditMap.put(OzoneConsts.IS_VERSION_ENABLED,
String.valueOf(this.isVersionEnabled));
- auditMap.put(OzoneConsts.STORAGE_TYPE,
- (this.storageType != null) ? this.storageType.name() : null);
+ auditMap.put(OzoneConsts.STORAGE_POLICY,
+ (this.storagePolicy != null) ? this.storagePolicy.getName() : null);
+ auditMap.put(OzoneConsts.ALLOW_FALLBACK_STORAGE_POLICY,
+ (this.allowFallbackStoragePolicy != null)
+ ? String.valueOf(this.allowFallbackStoragePolicy) : null);
auditMap.put(OzoneConsts.CREATION_TIME, String.valueOf(this.creationTime));
auditMap.put(OzoneConsts.BUCKET_ENCRYPTION_KEY,
(bekInfo != null) ? bekInfo.getKeyName() : null);
@@ -377,7 +397,8 @@ public Builder toBuilder() {
return new Builder(this)
.setVolumeName(volumeName)
.setBucketName(bucketName)
- .setStorageType(storageType)
+ .setStoragePolicy(storagePolicy)
+ .setAllowFallbackStoragePolicy(allowFallbackStoragePolicy)
.setIsVersionEnabled(isVersionEnabled)
.setCreationTime(creationTime)
.setModificationTime(modificationTime)
@@ -406,7 +427,8 @@ public Builder toBuilder() {
*/
public OmBucketInfo withOperationalPropertiesFrom(OmBucketInfo source) {
return toBuilder()
- .setStorageType(source.getStorageType())
+ .setStoragePolicy(source.getStoragePolicy())
+ .setAllowFallbackStoragePolicy(source.getAllowFallbackStoragePolicy())
.setIsVersionEnabled(source.getIsVersionEnabled())
.setBucketEncryptionKey(source.getEncryptionKeyInfo())
.setUsedBytes(source.getUsedBytes())
@@ -430,7 +452,8 @@ public static class Builder extends
WithObjectID.Builder<OmBucketInfo> {
private String bucketName;
private final AclListBuilder acls;
private boolean isVersionEnabled;
- private StorageType storageType = StorageType.DISK;
+ private StoragePolicy storagePolicy;
+ private Boolean allowFallbackStoragePolicy;
private long creationTime;
private long modificationTime;
private BucketEncryptionKeyInfo bekInfo;
@@ -491,8 +514,13 @@ public Builder setIsVersionEnabled(boolean versionFlag) {
return this;
}
- public Builder setStorageType(StorageType storage) {
- this.storageType = storage;
+ public Builder setStoragePolicy(StoragePolicy storage) {
+ this.storagePolicy = storage;
+ return this;
+ }
+
+ public Builder setAllowFallbackStoragePolicy(Boolean allowFallback) {
+ this.allowFallbackStoragePolicy = allowFallback;
return this;
}
@@ -607,8 +635,9 @@ protected void validate() {
Objects.requireNonNull(volumeName, "volumeName == null");
Objects.requireNonNull(bucketName, "bucketName == null");
Objects.requireNonNull(acls, "acls == null");
- Objects.requireNonNull(storageType, "storageType == null");
Objects.requireNonNull(tags, "tags == null");
+ // storagePolicy may be null for records read from older serialized
+ // bucket rows written before storage-policy support existed.
}
@Override
@@ -626,7 +655,12 @@ public BucketInfo getProtobuf() {
.setBucketName(bucketName)
.addAllAcls(OzoneAclUtil.toProtobuf(acls))
.setIsVersionEnabled(isVersionEnabled)
- .setStorageType(storageType.toProto())
+ // Emit legacy `storageType = DISK` so pre-storage-policy peers whose
+ // BucketInfo proto still has `required storageType = 5` can
deserialize
+ // messages produced by this OM. The field is deprecated on our side;
+ // storage policy lives in `storagePolicy` (field 24). Do not read this
+ // field back into OmBucketInfo.
+ .setStorageType(HddsProtos.StorageTypeProto.DISK)
.setCreationTime(creationTime)
.setModificationTime(modificationTime)
.setObjectID(getObjectID())
@@ -657,6 +691,12 @@ public BucketInfo getProtobuf() {
if (owner != null) {
bib.setOwner(owner);
}
+ if (storagePolicy != null) {
+ bib.setStoragePolicy(OzoneStoragePolicy.toProto(storagePolicy));
+ }
+ if (allowFallbackStoragePolicy != null) {
+ bib.setAllowFallbackStoragePolicy(allowFallbackStoragePolicy);
+ }
return bib.build();
}
@@ -683,7 +723,6 @@ public static Builder builderFromProtobuf(BucketInfo
bucketInfo,
.setAcls(bucketInfo.getAclsList().stream().map(
OzoneAcl::fromProtobuf).collect(Collectors.toList()))
.setIsVersionEnabled(bucketInfo.getIsVersionEnabled())
- .setStorageType(StorageType.valueOf(bucketInfo.getStorageType()))
.setCreationTime(bucketInfo.getCreationTime())
.setUsedBytes(bucketInfo.getUsedBytes())
.setModificationTime(bucketInfo.getModificationTime())
@@ -729,6 +768,12 @@ public static Builder builderFromProtobuf(BucketInfo
bucketInfo,
if (bucketInfo.hasOwner()) {
obib.setOwner(bucketInfo.getOwner());
}
+ if (bucketInfo.hasStoragePolicy()) {
+
obib.setStoragePolicy(OzoneStoragePolicy.fromProto(bucketInfo.getStoragePolicy()));
+ }
+ if (bucketInfo.hasAllowFallbackStoragePolicy()) {
+
obib.setAllowFallbackStoragePolicy(bucketInfo.getAllowFallbackStoragePolicy());
+ }
return obib;
}
@@ -762,7 +807,8 @@ public String getObjectInfo() {
"volume='" + volumeName + "'" +
", bucket='" + bucketName + "'" +
", isVersionEnabled='" + isVersionEnabled + "'" +
- ", storageType='" + storageType + "'" +
+ ", storagePolicy='" + storagePolicy + "'" +
+ ", allowFallbackStoragePolicy='" + allowFallbackStoragePolicy + "'" +
", creationTime='" + creationTime + "'" +
", usedBytes='" + usedBytes + "'" +
", usedNamespace='" + usedNamespace + "'" +
@@ -789,7 +835,8 @@ public boolean equals(Object o) {
bucketName.equals(that.bucketName) &&
Objects.equals(acls, that.acls) &&
Objects.equals(isVersionEnabled, that.isVersionEnabled) &&
- storageType == that.storageType &&
+ Objects.equals(storagePolicy, that.storagePolicy) &&
+ Objects.equals(allowFallbackStoragePolicy,
that.allowFallbackStoragePolicy) &&
getObjectID() == that.getObjectID() &&
getUpdateID() == that.getUpdateID() &&
usedBytes == that.usedBytes &&
@@ -817,7 +864,8 @@ public String toString() {
", bucketName='" + bucketName + "'" +
", acls=" + acls +
", isVersionEnabled=" + isVersionEnabled +
- ", storageType=" + storageType +
+ ", storagePolicy=" + storagePolicy +
+ ", allowFallbackStoragePolicy=" + allowFallbackStoragePolicy +
", creationTime=" + creationTime +
", bekInfo=" + bekInfo +
", sourceVolume='" + sourceVolume + "'" +
diff --git
a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/helpers/TestOmBucketInfo.java
b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/helpers/TestOmBucketInfo.java
index 3cd3d53508d..9ed80cb8093 100644
---
a/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/helpers/TestOmBucketInfo.java
+++
b/hadoop-ozone/common/src/test/java/org/apache/hadoop/ozone/om/helpers/TestOmBucketInfo.java
@@ -26,9 +26,9 @@
import java.util.Collections;
import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
import org.apache.hadoop.hdds.client.ECReplicationConfig;
+import org.apache.hadoop.hdds.client.OzoneStoragePolicy;
import org.apache.hadoop.hdds.client.ReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicationType;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.ozone.OzoneAcl;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
import org.apache.hadoop.ozone.security.acl.IAccessAuthorizer;
@@ -47,7 +47,7 @@ public void protobufConversion() {
.setVolumeName("vol1")
.setCreationTime(1L)
.setIsVersionEnabled(false)
- .setStorageType(StorageType.ARCHIVE)
+ .setStoragePolicy(OzoneStoragePolicy.COLD)
.build();
assertEquals(bucket,
@@ -74,7 +74,7 @@ public void testClone() {
.setVolumeName("vol1")
.setCreationTime(Time.now())
.setIsVersionEnabled(false)
- .setStorageType(StorageType.ARCHIVE)
+ .setStoragePolicy(OzoneStoragePolicy.COLD)
.setAcls(Collections.singletonList(OzoneAcl.of(
IAccessAuthorizer.ACLIdentityType.USER,
"defaultUser",
@@ -104,7 +104,7 @@ public void
testWithOperationalPropertiesFromPreservesLinkIdentity() {
.setVolumeName("vol1")
.setBucketName("source")
.setBucketLayout(BucketLayout.OBJECT_STORE)
- .setStorageType(StorageType.SSD)
+ .setStoragePolicy(OzoneStoragePolicy.HOT)
.setIsVersionEnabled(true)
.setQuotaInBytes(1000)
.setQuotaInNamespace(10)
@@ -135,7 +135,7 @@ public void
testWithOperationalPropertiesFromPreservesLinkIdentity() {
assertEquals(456L, resolvedLink.getModificationTime());
assertEquals(BucketLayout.OBJECT_STORE, resolvedLink.getBucketLayout());
- assertEquals(StorageType.SSD, resolvedLink.getStorageType());
+ assertEquals(OzoneStoragePolicy.HOT, resolvedLink.getStoragePolicy());
assertTrue(resolvedLink.getIsVersionEnabled());
assertEquals(1000, resolvedLink.getQuotaInBytes());
assertEquals(10, resolvedLink.getQuotaInNamespace());
@@ -173,7 +173,7 @@ public void getProtobufMessageEC() {
OmBucketInfo omBucketInfo =
OmBucketInfo.newBuilder().setBucketName("bucket").setVolumeName("vol1")
.setCreationTime(Time.now()).setIsVersionEnabled(false)
- .setStorageType(StorageType.ARCHIVE).setAcls(Collections
+ .setStoragePolicy(OzoneStoragePolicy.COLD).setAcls(Collections
.singletonList(OzoneAcl.of(
IAccessAuthorizer.ACLIdentityType.USER,
"defaultUser", OzoneAcl.AclScope.ACCESS,
IAccessAuthorizer.ACLType.WRITE_ACL
@@ -192,7 +192,7 @@ public void getProtobufMessageEC() {
.setVolumeName("vol1")
.setCreationTime(Time.now())
.setIsVersionEnabled(false)
- .setStorageType(StorageType.ARCHIVE)
+ .setStoragePolicy(OzoneStoragePolicy.COLD)
.setAcls(Collections.singletonList(OzoneAcl.of(
IAccessAuthorizer.ACLIdentityType.USER,
"defaultUser", OzoneAcl.AclScope.ACCESS,
IAccessAuthorizer.ACLType.WRITE_ACL
diff --git a/hadoop-ozone/dist/src/main/smoketest/basic/ozone-shell-lib.robot
b/hadoop-ozone/dist/src/main/smoketest/basic/ozone-shell-lib.robot
index 7affbcba16c..75f0464d72f 100644
--- a/hadoop-ozone/dist/src/main/smoketest/basic/ozone-shell-lib.robot
+++ b/hadoop-ozone/dist/src/main/smoketest/basic/ozone-shell-lib.robot
@@ -48,8 +48,8 @@ Test ozone shell
${result} = Execute ozone sh bucket create
${protocol}${server}/${volume}/bb1 --space-quota 10TB --namespace-quota 100
Should Be Empty ${result}
Execute ozone sh bucket info
${protocol}${server}/${volume}/bb1 > ${TMP_JSON}
- ${result} = Execute jq -r '. | select(.name=="bb1") |
.storageType' ${TMP_JSON}
- Should Be Equal ${result} DISK
+ ${result} = Execute jq -r '. | select(.name=="bb1") |
.storagePolicy' ${TMP_JSON}
+ Should Be Equal ${result} WARM
${result} = Execute jq -r '. | select(.name=="bb1") |
.quotaInBytes' ${TMP_JSON}
Should Be Equal ${result} 10995116277760
${result} = Execute jq -r '. | select(.name=="bb1") |
.quotaInNamespace' ${TMP_JSON}
diff --git
a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketGenerator.java
b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketGenerator.java
index 7c55483595e..11ed92709a0 100644
---
a/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketGenerator.java
+++
b/hadoop-ozone/freon/src/main/java/org/apache/hadoop/ozone/freon/OmBucketGenerator.java
@@ -21,7 +21,6 @@
import java.util.concurrent.Callable;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.ozone.client.OzoneClient;
import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
import org.apache.hadoop.ozone.om.protocol.OzoneManagerProtocol;
@@ -94,7 +93,6 @@ private void createBucket(long index) throws Exception {
OmBucketInfo bucketInfo = new OmBucketInfo.Builder()
.setBucketName(generateBucketName(index))
.setVolumeName(volumeName)
- .setStorageType(StorageType.DISK)
.build();
bucketCreationTimer.time(() -> {
diff --git
a/hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/AbstractS3SDKV2Tests.java
b/hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/AbstractS3SDKV2Tests.java
index b0739c62eaa..b72cfa8f763 100644
---
a/hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/AbstractS3SDKV2Tests.java
+++
b/hadoop-ozone/integration-test-s3/src/test/java/org/apache/hadoop/ozone/s3/awssdk/v2/AbstractS3SDKV2Tests.java
@@ -66,7 +66,6 @@
import org.apache.hadoop.hdds.client.ReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicationFactor;
import org.apache.hadoop.hdds.client.ReplicationType;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.ozone.MiniOzoneCluster;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.client.BucketArgs;
@@ -3464,7 +3463,6 @@ public void setBucketVerificationOnLinkBucket() throws
Exception {
String linkBucketName = "link-bucket";
nonS3Volume.createBucket(OzoneConsts.BUCKET);
BucketArgs.Builder bb = new BucketArgs.Builder()
- .setStorageType(StorageType.DEFAULT)
.setVersioning(false)
.setSourceVolume(NON_S3_VOLUME_NAME)
.setSourceBucket(OzoneConsts.BUCKET);
@@ -3494,7 +3492,6 @@ public void testDanglingBucket() throws Exception {
String linkBucket = "link-bucket-dangling";
nonS3Volume.createBucket(sourceBucket);
BucketArgs.Builder bb = new BucketArgs.Builder()
- .setStorageType(StorageType.DEFAULT)
.setVersioning(false)
.setSourceVolume(NON_S3_VOLUME_NAME)
.setSourceBucket(sourceBucket);
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/AbstractRootedOzoneFileSystemTest.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/AbstractRootedOzoneFileSystemTest.java
index a0d09264adb..ca5f075fcaf 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/AbstractRootedOzoneFileSystemTest.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/AbstractRootedOzoneFileSystemTest.java
@@ -91,7 +91,6 @@
import org.apache.hadoop.hdds.client.ReplicationType;
import org.apache.hadoop.hdds.client.StandaloneReplicationConfig;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.scm.OzoneClientConfig;
import org.apache.hadoop.hdds.utils.IOUtils;
@@ -1782,7 +1781,6 @@ void testRenameDestinationParentDoesNotExist() throws
Exception {
void testBucketDefaultsShouldNotBeInheritedToFileForNonEC()
throws Exception {
BucketArgs.Builder builder = BucketArgs.newBuilder();
- builder.setStorageType(StorageType.DISK);
builder.setBucketLayout(BucketLayout.LEGACY);
builder.setDefaultReplicationConfig(
new DefaultReplicationConfig(StandaloneReplicationConfig.getInstance(
@@ -1811,7 +1809,6 @@ void
testBucketDefaultsShouldNotBeInheritedToFileForNonEC()
void testBucketDefaultsShouldBeInheritedToFileForEC()
throws Exception {
BucketArgs.Builder builder = BucketArgs.newBuilder();
- builder.setStorageType(StorageType.DISK);
builder.setBucketLayout(BucketLayout.LEGACY);
builder.setDefaultReplicationConfig(
new DefaultReplicationConfig(
@@ -2013,7 +2010,6 @@ private void createLinkBucket(String linkVolume, String
linkBucket,
private Path createAndGetBucketPath()
throws IOException {
BucketArgs.Builder builder = BucketArgs.newBuilder();
- builder.setStorageType(StorageType.DISK);
builder.setBucketLayout(bucketLayout);
BucketArgs omBucketArgs = builder.build();
String vol = UUID.randomUUID().toString();
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestHSync.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestHSync.java
index 02fa289c023..a5460caf617 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestHSync.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestHSync.java
@@ -84,7 +84,6 @@
import org.apache.hadoop.hdds.client.ReplicationType;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.conf.StorageUnit;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos;
import org.apache.hadoop.hdds.scm.ErrorInjector;
import org.apache.hadoop.hdds.scm.OzoneClientConfig;
@@ -1069,7 +1068,6 @@ public void testOzoneStreamCapabilityForHsyncHflush()
throws Exception {
public void testECStreamCapability() throws Exception {
// create EC bucket to be used by OzoneFileSystem
BucketArgs.Builder builder = BucketArgs.newBuilder();
- builder.setStorageType(StorageType.DISK);
builder.setBucketLayout(BucketLayout.FILE_SYSTEM_OPTIMIZED);
builder.setDefaultReplicationConfig(
new DefaultReplicationConfig(
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFSInputStream.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFSInputStream.java
index c4073167faa..a73f62d544b 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFSInputStream.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFSInputStream.java
@@ -42,7 +42,6 @@
import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
import org.apache.hadoop.hdds.client.ECReplicationConfig;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.ozone.DataTestUtil;
@@ -93,7 +92,6 @@ void init() throws Exception {
// create EC bucket to be used by OzoneFileSystem
BucketArgs.Builder builder = BucketArgs.newBuilder();
- builder.setStorageType(StorageType.DISK);
builder.setBucketLayout(BucketLayout.FILE_SYSTEM_OPTIMIZED);
builder.setDefaultReplicationConfig(
new DefaultReplicationConfig(
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileChecksum.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileChecksum.java
index 45a855335e0..d700de09ee4 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileChecksum.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestOzoneFileChecksum.java
@@ -46,7 +46,6 @@
import org.apache.hadoop.hdds.client.ECReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicationType;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.utils.IOUtils;
import org.apache.hadoop.ozone.MiniOzoneCluster;
import org.apache.hadoop.ozone.OzoneConsts;
@@ -132,7 +131,6 @@ void testEcFileChecksum(List<Integer> missingIndexes,
double checksumSizeInMB) t
client.getObjectStore().createVolume(volumeName);
BucketArgs.Builder bucketArgs = BucketArgs.newBuilder()
- .setStorageType(StorageType.DISK)
.setBucketLayout(BucketLayout.LEGACY);
createBucket(client, volumeName, bucketArgs.build(), legacyBucket);
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/DataTestUtil.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/DataTestUtil.java
index b1d10d99b32..f5c2c42bff7 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/DataTestUtil.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/DataTestUtil.java
@@ -38,7 +38,6 @@
import org.apache.hadoop.hdds.client.ReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicationFactor;
import org.apache.hadoop.hdds.client.ReplicationType;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.utils.db.Table;
import org.apache.hadoop.ozone.client.BucketArgs;
import org.apache.hadoop.ozone.client.ObjectStore;
@@ -70,7 +69,6 @@ public static OzoneBucket createVolumeAndBucket(OzoneClient
client,
String volumeName, String bucketName, BucketLayout bucketLayout) throws
IOException {
BucketArgs omBucketArgs;
BucketArgs.Builder builder = BucketArgs.newBuilder();
- builder.setStorageType(StorageType.DISK);
if (bucketLayout != null) {
builder.setBucketLayout(bucketLayout);
}
@@ -85,7 +83,6 @@ public static OzoneBucket createVolumeAndBucket(OzoneClient
client,
throws IOException {
BucketArgs omBucketArgs;
BucketArgs.Builder builder = BucketArgs.newBuilder();
- builder.setStorageType(StorageType.DISK);
if (bucketLayout != null) {
builder.setBucketLayout(bucketLayout);
}
@@ -207,7 +204,6 @@ public static OzoneBucket createBucket(OzoneClient client,
public static OzoneBucket createLinkedBucket(OzoneClient client, String vol,
String sourceBucketName,
String linkedBucketName) throws
IOException {
BucketArgs.Builder bb = new BucketArgs.Builder()
- .setStorageType(StorageType.DEFAULT)
.setVersioning(false)
.setSourceVolume(vol)
.setSourceBucket(sourceBucketName);
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/OzoneRpcClientTests.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/OzoneRpcClientTests.java
index 00a419ff0c0..494e5425ad8 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/OzoneRpcClientTests.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/OzoneRpcClientTests.java
@@ -116,6 +116,7 @@
import org.apache.hadoop.hdds.client.ECReplicationConfig;
import org.apache.hadoop.hdds.client.ECReplicationConfig.EcCodec;
import org.apache.hadoop.hdds.client.OzoneQuota;
+import org.apache.hadoop.hdds.client.OzoneStoragePolicy;
import org.apache.hadoop.hdds.client.RatisReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicationFactor;
@@ -124,7 +125,6 @@
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.conf.StorageUnit;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.scm.OzoneClientConfig;
@@ -753,18 +753,18 @@ public void testCreateBucketWithVersioning()
}
@Test
- public void testCreateBucketWithStorageType()
+ public void testCreateBucketWithStoragePolicy()
throws IOException {
String volumeName = UUID.randomUUID().toString();
String bucketName = UUID.randomUUID().toString();
store.createVolume(volumeName);
OzoneVolume volume = store.getVolume(volumeName);
BucketArgs.Builder builder = BucketArgs.newBuilder();
- builder.setStorageType(StorageType.SSD);
+ builder.setStoragePolicy(OzoneStoragePolicy.HOT);
volume.createBucket(bucketName, builder.build());
OzoneBucket bucket = volume.getBucket(bucketName);
assertEquals(bucketName, bucket.getName());
- assertEquals(StorageType.SSD, bucket.getStorageType());
+ assertEquals(OzoneStoragePolicy.HOT, bucket.getStoragePolicy());
}
@Test
@@ -813,14 +813,14 @@ public void testCreateBucketWithAllArgument()
OzoneVolume volume = store.getVolume(volumeName);
BucketArgs.Builder builder = BucketArgs.newBuilder();
builder.setVersioning(true)
- .setStorageType(StorageType.SSD)
+ .setStoragePolicy(OzoneStoragePolicy.HOT)
.addAcl(userAcl)
.setDefaultReplicationConfig(new DefaultReplicationConfig(repConfig));
volume.createBucket(bucketName, builder.build());
OzoneBucket bucket = volume.getBucket(bucketName);
assertEquals(bucketName, bucket.getName());
assertTrue(bucket.getVersioning());
- assertEquals(StorageType.SSD, bucket.getStorageType());
+ assertEquals(OzoneStoragePolicy.HOT, bucket.getStoragePolicy());
assertThat(bucket.getAcls()).contains(userAcl);
assertEquals(repConfig, bucket.getReplicationConfig());
}
@@ -1000,7 +1000,7 @@ public void testAclDeDuplication()
}
@Test
- public void testSetBucketStorageType()
+ public void testSetBucketStoragePolicy()
throws IOException {
String volumeName = UUID.randomUUID().toString();
String bucketName = UUID.randomUUID().toString();
@@ -1008,10 +1008,10 @@ public void testSetBucketStorageType()
OzoneVolume volume = store.getVolume(volumeName);
volume.createBucket(bucketName);
OzoneBucket bucket = volume.getBucket(bucketName);
- bucket.setStorageType(StorageType.SSD);
+ bucket.setStoragePolicy(OzoneStoragePolicy.HOT);
OzoneBucket newBucket = volume.getBucket(bucketName);
assertEquals(bucketName, newBucket.getName());
- assertEquals(StorageType.SSD, newBucket.getStorageType());
+ assertEquals(OzoneStoragePolicy.HOT, newBucket.getStoragePolicy());
}
@ParameterizedTest
@@ -2065,7 +2065,6 @@ public void testVolumeUsedNamespace() throws IOException {
OzoneVolume volumeWithLinkedBucket = store.getVolume(targetVolName);
String targetBucketName = UUID.randomUUID().toString();
BucketArgs.Builder argsBuilder = new BucketArgs.Builder()
- .setStorageType(StorageType.DEFAULT)
.setVersioning(false)
.setSourceVolume(volumeName)
.setSourceBucket(bucketName);
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketLayoutWithOlderClient.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketLayoutWithOlderClient.java
index 71a9ab3c02a..a3d9153a379 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketLayoutWithOlderClient.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketLayoutWithOlderClient.java
@@ -21,7 +21,6 @@
import static org.junit.jupiter.api.Assertions.assertNotNull;
import java.util.UUID;
-import org.apache.hadoop.hdds.protocol.proto.HddsProtos.StorageTypeProto;
import org.apache.hadoop.hdds.utils.IOUtils;
import org.apache.hadoop.ozone.ClientVersion;
import org.apache.hadoop.ozone.DataTestUtil;
@@ -86,8 +85,7 @@ public void testCreateBucketWithOlderClient() throws
Exception {
.setBucketInfo(
OzoneManagerProtocolProtos.BucketInfo.newBuilder()
.setVolumeName(volumeName).setBucketName(buckName)
- .setIsVersionEnabled(false).setStorageType(
- StorageTypeProto.DISK)
+ .setIsVersionEnabled(false)
.build())
.build()).build();
createBucketReq = createBucketReq.toBuilder()
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketOwner.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketOwner.java
index 642be2a8b6c..90657d33200 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketOwner.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestBucketOwner.java
@@ -26,7 +26,6 @@
import java.io.IOException;
import java.util.UUID;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.ozone.OzoneAcl;
import org.apache.hadoop.ozone.client.BucketArgs;
import org.apache.hadoop.ozone.client.ObjectStore;
@@ -74,7 +73,7 @@ void init() throws Exception {
ObjectStore objectStore = client.getObjectStore();
OzoneVolume volume = objectStore.getVolume(VOLUME_NAME);
BucketArgs omBucketArgs = BucketArgs.newBuilder()
-
.setStorageType(StorageType.DISK).setOwner(user1.getShortUserName()).build();
+ .setOwner(user1.getShortUserName()).build();
volume.createBucket("bucket1", omBucketArgs);
volume.createBucket("bucket2", omBucketArgs);
volume.createBucket("bucket3", omBucketArgs);
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestListKeysWithFSO.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestListKeysWithFSO.java
index 6929dac516a..d2b7facac13 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestListKeysWithFSO.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestListKeysWithFSO.java
@@ -34,7 +34,6 @@
import org.apache.commons.io.IOUtils;
import org.apache.hadoop.hdds.client.ReplicationConfig;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.ozone.DataTestUtil;
import org.apache.hadoop.ozone.client.BucketArgs;
import org.apache.hadoop.ozone.client.OzoneBucket;
@@ -92,7 +91,6 @@ void init() throws Exception {
// create buckets
BucketArgs omBucketArgs;
BucketArgs.Builder builder = BucketArgs.newBuilder();
- builder.setStorageType(StorageType.DISK);
builder.setBucketLayout(BucketLayout.FILE_SYSTEM_OPTIMIZED);
omBucketArgs = builder.build();
@@ -109,7 +107,6 @@ void init() throws Exception {
emptyFsoOzoneBucket = ozoneVolume.getBucket(fsoBucketName);
builder = BucketArgs.newBuilder();
- builder.setStorageType(StorageType.DISK);
builder.setBucketLayout(BucketLayout.LEGACY);
omBucketArgs = builder.build();
String legacyBucketName = uniqueObjectName("bucket");
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestObjectStoreWithLegacyFS.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestObjectStoreWithLegacyFS.java
index 7904666b951..68edf9295e8 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestObjectStoreWithLegacyFS.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestObjectStoreWithLegacyFS.java
@@ -33,7 +33,6 @@
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.RandomUtils;
import org.apache.hadoop.hdds.client.RatisReplicationConfig;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.utils.IOUtils;
import org.apache.hadoop.hdds.utils.db.Table;
@@ -172,7 +171,6 @@ public void testMultiPartCompleteUpload() throws Exception {
// Test-1: Upload MPU to an OBS layout with Directory Exists
String legacyBuckName = UUID.randomUUID().toString();
BucketArgs.Builder builder = BucketArgs.newBuilder();
- builder.setStorageType(StorageType.DISK);
builder.setBucketLayout(BucketLayout.OBJECT_STORE);
BucketArgs omBucketArgs = builder.build();
volume.createBucket(legacyBuckName, omBucketArgs);
@@ -189,7 +187,6 @@ public void testMultiPartCompleteUpload() throws Exception {
// Test-2: Upload MPU to an LEGACY layout with Directory Exists
legacyBuckName = UUID.randomUUID().toString();
builder = BucketArgs.newBuilder();
- builder.setStorageType(StorageType.DISK);
builder.setBucketLayout(BucketLayout.LEGACY);
omBucketArgs = builder.build();
volume.createBucket(legacyBuckName, omBucketArgs);
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAFollowerReadWithAllRunning.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAFollowerReadWithAllRunning.java
index 0e97b249420..00c3d7484f7 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAFollowerReadWithAllRunning.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAFollowerReadWithAllRunning.java
@@ -44,8 +44,8 @@
import java.util.List;
import java.util.stream.Stream;
import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.hadoop.hdds.client.OzoneStoragePolicy;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.utils.IOUtils;
import org.apache.hadoop.ozone.ClientVersion;
import org.apache.hadoop.ozone.OzoneTestUtils;
@@ -442,7 +442,7 @@ public void testAllBucketOperations() throws Exception {
OzoneVolume retVolume = createAndCheckVolume(volumeName);
BucketArgs bucketArgs =
- BucketArgs.newBuilder().setStorageType(StorageType.DISK)
+ BucketArgs.newBuilder().setStoragePolicy(OzoneStoragePolicy.WARM)
.setVersioning(true).build();
@@ -454,7 +454,7 @@ public void testAllBucketOperations() throws Exception {
assertEquals(volumeName, ozoneBucket.getVolumeName());
assertEquals(bucketName, ozoneBucket.getName());
assertTrue(ozoneBucket.getVersioning());
- assertEquals(StorageType.DISK, ozoneBucket.getStorageType());
+ assertEquals(OzoneStoragePolicy.WARM, ozoneBucket.getStoragePolicy());
assertFalse(ozoneBucket.getCreationTime().isAfter(Instant.now()));
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAWithAllRunning.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAWithAllRunning.java
index 746f99d6495..3aa990d04d0 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAWithAllRunning.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAWithAllRunning.java
@@ -52,8 +52,8 @@
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.hadoop.hdds.client.OzoneStoragePolicy;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.utils.IOUtils;
import org.apache.hadoop.ozone.ClientVersion;
import org.apache.hadoop.ozone.OzoneAcl;
@@ -258,7 +258,7 @@ public void testAllBucketOperations() throws Exception {
OzoneVolume retVolume = createAndCheckVolume(volumeName);
BucketArgs bucketArgs =
- BucketArgs.newBuilder().setStorageType(StorageType.DISK)
+ BucketArgs.newBuilder().setStoragePolicy(OzoneStoragePolicy.WARM)
.setVersioning(true).build();
@@ -270,7 +270,7 @@ public void testAllBucketOperations() throws Exception {
assertEquals(volumeName, ozoneBucket.getVolumeName());
assertEquals(bucketName, ozoneBucket.getName());
assertTrue(ozoneBucket.getVersioning());
- assertEquals(StorageType.DISK, ozoneBucket.getStorageType());
+ assertEquals(OzoneStoragePolicy.WARM, ozoneBucket.getStoragePolicy());
assertFalse(ozoneBucket.getCreationTime().isAfter(Instant.now()));
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestRecursiveAclWithFSO.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestRecursiveAclWithFSO.java
index 9df0d34e62c..7ae83f70611 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestRecursiveAclWithFSO.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestRecursiveAclWithFSO.java
@@ -30,7 +30,6 @@
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.ozone.DataTestUtil;
import org.apache.hadoop.ozone.OzoneAcl;
import org.apache.hadoop.ozone.client.BucketArgs;
@@ -80,7 +79,7 @@ public void testKeyDeleteAndRenameWithoutPermission() throws
Exception {
ObjectStore objectStore = client.getObjectStore();
OzoneVolume volume = objectStore.getVolume(VOLUME_NAME);
BucketArgs omBucketArgs =
- BucketArgs.newBuilder().setStorageType(StorageType.DISK).build();
+ BucketArgs.newBuilder().build();
// create bucket with user1
volume.createBucket("bucket1", omBucketArgs);
@@ -225,7 +224,7 @@ public void testKeyDefaultACL() throws Exception {
ObjectStore objectStore = client.getObjectStore();
OzoneVolume volume = objectStore.getVolume(volumeName);
BucketArgs omBucketArgs =
- BucketArgs.newBuilder().setStorageType(StorageType.DISK).build();
+ BucketArgs.newBuilder().build();
String bucketName = "bucket";
volume.createBucket(bucketName, omBucketArgs);
OzoneBucket ozoneBucket = volume.getBucket(bucketName);
diff --git
a/hadoop-ozone/interface-client/src/main/proto/OmClientProtocol.proto
b/hadoop-ozone/interface-client/src/main/proto/OmClientProtocol.proto
index 1ebb8b391c5..94b3020f8e3 100644
--- a/hadoop-ozone/interface-client/src/main/proto/OmClientProtocol.proto
+++ b/hadoop-ozone/interface-client/src/main/proto/OmClientProtocol.proto
@@ -799,7 +799,11 @@ message BucketInfo {
required string bucketName = 2;
repeated OzoneAclInfo acls = 3;
required bool isVersionEnabled = 4 [default = false];
- required hadoop.hdds.StorageTypeProto storageType = 5 [deprecated = true,
default = DISK];
+ // Legacy field kept for wire compatibility with older peers whose schema
+ // still has `required storageType = 5`. New OM emits DISK on write via
+ // OmBucketInfo.getProtobuf(); new OM ignores it on read. Storage policy
+ // lives in `storagePolicy` (field 24).
+ optional hadoop.hdds.StorageTypeProto storageType = 5 [deprecated = true,
default = DISK];
optional uint64 creationTime = 6;
repeated hadoop.hdds.KeyValue metadata = 7;
optional BucketEncryptionInfoProto beinfo = 8;
@@ -818,6 +822,8 @@ message BucketInfo {
optional uint64 snapshotUsedBytes = 21;
optional uint64 snapshotUsedNamespace = 22;
repeated hadoop.hdds.KeyValue tags = 23;
+ optional hadoop.hdds.StoragePolicyProto storagePolicy = 24;
+ optional bool allowFallbackStoragePolicy = 25;
}
enum BucketLayoutProto {
@@ -884,7 +890,8 @@ message BucketArgs {
required string volumeName = 1;
required string bucketName = 2;
optional bool isVersionEnabled = 5;
- optional hadoop.hdds.StorageTypeProto storageType = 6;
+ // Legacy field kept for wire compatibility. Same rationale as
BucketInfo.storageType.
+ optional hadoop.hdds.StorageTypeProto storageType = 6 [deprecated = true];
repeated hadoop.hdds.KeyValue metadata = 7;
optional uint64 quotaInBytes = 8;
optional uint64 quotaInNamespace = 9;
@@ -892,6 +899,8 @@ message BucketArgs {
optional hadoop.hdds.DefaultReplicationConfig defaultReplicationConfig =
11;
optional BucketEncryptionInfoProto bekInfo = 12;
repeated hadoop.hdds.KeyValue tags = 13;
+ optional hadoop.hdds.StoragePolicyProto storagePolicy = 14;
+ optional bool allowFallbackStoragePolicy = 15;
}
message PrefixInfo {
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 a88e5fb7333..2911ba47c53 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
@@ -25,7 +25,7 @@
import java.util.Objects;
import org.apache.hadoop.crypto.key.KeyProviderCryptoExtension;
import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
-import org.apache.hadoop.hdds.protocol.StorageType;
+import org.apache.hadoop.hdds.client.StoragePolicy;
import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
import org.apache.hadoop.ozone.OzoneConsts;
@@ -164,14 +164,24 @@ public OMClientResponse
validateAndUpdateCache(OzoneManager ozoneManager, Execut
bucketInfoBuilder.setModificationTime(
setBucketPropertyRequest.getModificationTime());
- //Check StorageType to update
- StorageType storageType = omBucketArgs.getStorageType();
- if (storageType != null) {
- bucketInfoBuilder.setStorageType(storageType);
- LOG.debug("Updating bucket storage type for bucket: {} in volume: {}",
+ //Check StoragePolicy to update
+ StoragePolicy storagePolicy = omBucketArgs.getStoragePolicy();
+ if (storagePolicy != null) {
+ bucketInfoBuilder.setStoragePolicy(storagePolicy);
+ LOG.debug("Updating bucket storage policy for bucket: {} in volume:
{}",
bucketName, volumeName);
}
+ //Check allowFallbackStoragePolicy to update
+ Boolean allowFallbackStoragePolicy =
+ omBucketArgs.getAllowFallbackStoragePolicy();
+ if (allowFallbackStoragePolicy != null) {
+ bucketInfoBuilder.setAllowFallbackStoragePolicy(
+ allowFallbackStoragePolicy);
+ LOG.debug("Updating bucket allowFallbackStoragePolicy for bucket: {}" +
+ " in volume: {}", bucketName, volumeName);
+ }
+
//Check Versioning to update
Boolean versioning = omBucketArgs.getIsVersionEnabled();
if (versioning != null) {
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestBucketManagerImpl.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestBucketManagerImpl.java
index 6252836b57d..bcc83616e4f 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestBucketManagerImpl.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestBucketManagerImpl.java
@@ -48,10 +48,10 @@
import org.apache.hadoop.crypto.key.KeyProviderCryptoExtension;
import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
import org.apache.hadoop.hdds.client.ECReplicationConfig;
+import org.apache.hadoop.hdds.client.OzoneStoragePolicy;
import org.apache.hadoop.hdds.client.RatisReplicationConfig;
import org.apache.hadoop.hdds.client.StandaloneReplicationConfig;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationFactor;
import org.apache.hadoop.hdds.scm.HddsWhiteboxTestUtils;
import org.apache.hadoop.hdds.server.ServerUtils;
@@ -220,7 +220,7 @@ void testGetBucketInfo() throws Exception {
OmBucketInfo bucketInfo = OmBucketInfo.newBuilder()
.setVolumeName(volumeName)
.setBucketName(bucketName)
- .setStorageType(StorageType.DISK)
+ .setStoragePolicy(OzoneStoragePolicy.WARM)
.setIsVersionEnabled(false)
.build();
// Note: the helper method createBucket() in this scope won't create the
@@ -243,7 +243,7 @@ void testGetBucketInfo() throws Exception {
OmBucketInfo result = bucketManager.getBucketInfo(volumeName, bucketName);
assertEquals(volumeName, result.getVolumeName());
assertEquals(bucketName, result.getBucketName());
- assertEquals(StorageType.DISK, result.getStorageType());
+ assertEquals(OzoneStoragePolicy.WARM, result.getStoragePolicy());
assertFalse(result.getIsVersionEnabled());
}
@@ -253,7 +253,7 @@ private void createBucket(OMMetadataManager metadataManager,
}
@Test
- public void testSetBucketPropertyChangeStorageType() throws Exception {
+ public void testSetBucketPropertyChangeStoragePolicy() throws Exception {
String volume = volumeName();
createSampleVol(volume);
@@ -262,23 +262,24 @@ public void testSetBucketPropertyChangeStorageType()
throws Exception {
OmBucketInfo bucketInfo = OmBucketInfo.newBuilder()
.setVolumeName(volume)
.setBucketName("bucket-one")
- .setStorageType(StorageType.DISK)
+ .setStoragePolicy(OzoneStoragePolicy.WARM)
.build();
createBucket(metaMgr, bucketInfo);
OmBucketInfo result = bucketManager.getBucketInfo(
volume, "bucket-one");
- assertEquals(StorageType.DISK,
- result.getStorageType());
+ assertEquals(OzoneStoragePolicy.WARM,
+ result.getStoragePolicy());
OmBucketArgs bucketArgs = OmBucketArgs.newBuilder()
.setVolumeName(volume)
.setBucketName("bucket-one")
- .setStorageType(StorageType.SSD)
+ .setStoragePolicy(OzoneStoragePolicy.HOT)
+ .setAllowFallbackStoragePolicy(true)
.build();
writeClient.setBucketProperty(bucketArgs);
OmBucketInfo updatedResult = bucketManager.getBucketInfo(
volume, "bucket-one");
- assertEquals(StorageType.SSD,
- updatedResult.getStorageType());
+ assertEquals(OzoneStoragePolicy.HOT,
+ updatedResult.getStoragePolicy());
}
@Test
@@ -401,7 +402,7 @@ public void testLinkedBucketResolution() throws Exception {
.setQuotaInNamespace(24 * 1024)
.setUsedBytes(10 * 1024)
.setUsedNamespace(5 * 1024)
- .setStorageType(StorageType.SSD)
+ .setStoragePolicy(OzoneStoragePolicy.HOT)
.setIsVersionEnabled(true)
.addAllMetadata(singletonMap("CustomKey", "CustomValue"))
.build();
@@ -470,8 +471,8 @@ public void testLinkedBucketResolution() throws Exception {
bucketInfo.getMetadata(),
storedLinkBucket.getMetadata());
assertEquals(
- bucketInfo.getStorageType(),
- storedLinkBucket.getStorageType());
+ bucketInfo.getStoragePolicy(),
+ storedLinkBucket.getStoragePolicy());
assertEquals(
bucketInfo.getIsVersionEnabled(),
storedLinkBucket.getIsVersionEnabled());
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerUnit.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerUnit.java
index e7df8077cc3..4ed8b9ecdaa 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerUnit.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerUnit.java
@@ -49,7 +49,6 @@
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
import org.apache.hadoop.hdds.protocol.MockDatanodeDetails;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationFactor;
import org.apache.hadoop.hdds.scm.container.ContainerInfo;
import
org.apache.hadoop.hdds.scm.container.common.helpers.ContainerWithPipeline;
@@ -437,7 +436,6 @@ private void createBucket(OMMetadataManager
omMetadataManager,
OmBucketInfo omBucketInfo = OmBucketInfo.newBuilder()
.setVolumeName(volume)
.setBucketName(bucket)
- .setStorageType(StorageType.DISK)
.setIsVersionEnabled(false)
.build();
OMRequestTestUtils.addBucketToOM(omMetadataManager, omBucketInfo);
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmMetadataManager.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmMetadataManager.java
index 1ffcc32f0ac..211135de137 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmMetadataManager.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmMetadataManager.java
@@ -79,7 +79,6 @@
import org.apache.hadoop.hdds.client.BlockID;
import org.apache.hadoop.hdds.client.RatisReplicationConfig;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.utils.TransactionInfo;
import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
@@ -392,7 +391,6 @@ private void addBucketsToCache(String volumeName, String
bucketName) {
OmBucketInfo omBucketInfo = OmBucketInfo.newBuilder()
.setVolumeName(volumeName)
.setBucketName(bucketName)
- .setStorageType(StorageType.DISK)
.setIsVersionEnabled(false)
.build();
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerDoubleBufferWithOMResponse.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerDoubleBufferWithOMResponse.java
index 8b3027d12cd..bb8e818ecac 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerDoubleBufferWithOMResponse.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerDoubleBufferWithOMResponse.java
@@ -38,7 +38,6 @@
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicLong;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.proto.HddsProtos.StorageTypeProto;
import org.apache.hadoop.hdds.utils.TransactionInfo;
import org.apache.hadoop.hdds.utils.db.Table;
import org.apache.hadoop.ozone.OzoneConsts;
@@ -468,8 +467,7 @@ private OMBucketCreateResponse createBucket(String
volumeName,
String bucketName, long transactionID) {
BucketInfo.Builder bucketInfo =
- newBucketInfoBuilder(bucketName, volumeName)
- .setStorageType(StorageTypeProto.DISK);
+ newBucketInfoBuilder(bucketName, volumeName);
OzoneManagerProtocolProtos.OMRequest omRequest =
OMRequestTestUtils.newCreateBucketRequest(bucketInfo).build();
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/OMRequestTestUtils.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/OMRequestTestUtils.java
index 0a7ad486235..b62b333c799 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/OMRequestTestUtils.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/OMRequestTestUtils.java
@@ -768,7 +768,7 @@ public static BucketInfo.Builder newBucketInfoBuilder(
return BucketInfo.newBuilder()
.setBucketName(bucketName)
.setVolumeName(volumeName)
- .setStorageType(HddsProtos.StorageTypeProto.SSD)
+ .setStoragePolicy(HddsProtos.StoragePolicyProto.HOT)
.setIsVersionEnabled(false)
.addAllMetadata(getMetadataList());
}
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/TestOMClientRequestWithUserInfo.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/TestOMClientRequestWithUserInfo.java
index 38036912b96..6f09272c702 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/TestOMClientRequestWithUserInfo.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/TestOMClientRequestWithUserInfo.java
@@ -33,7 +33,6 @@
import java.nio.file.Path;
import java.util.UUID;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.proto.HddsProtos.StorageTypeProto;
import org.apache.hadoop.ipc_.Server;
import org.apache.hadoop.ozone.om.OMConfigKeys;
import org.apache.hadoop.ozone.om.OMMetadataManager;
@@ -106,8 +105,7 @@ public void testUserInfoInCaseOfHadoopTransport() throws
Exception {
String volumeName = UUID.randomUUID().toString();
BucketInfo.Builder bucketInfo =
newBucketInfoBuilder(bucketName, volumeName)
- .setIsVersionEnabled(true)
- .setStorageType(StorageTypeProto.DISK);
+ .setIsVersionEnabled(true);
OMRequest omRequest = newCreateBucketRequest(bucketInfo).build();
OMBucketCreateRequest omBucketCreateRequest =
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestOMBucketCreateRequest.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestOMBucketCreateRequest.java
index 96a60b647d2..64ba9df4e08 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestOMBucketCreateRequest.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestOMBucketCreateRequest.java
@@ -34,7 +34,7 @@
import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
import org.apache.hadoop.hdds.client.ECReplicationConfig;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
-import org.apache.hadoop.hdds.protocol.proto.HddsProtos.StorageTypeProto;
+import org.apache.hadoop.hdds.protocol.proto.HddsProtos.StoragePolicyProto;
import org.apache.hadoop.ozone.OzoneAcl;
import org.apache.hadoop.ozone.om.OMConfigKeys;
import org.apache.hadoop.ozone.om.OMMetadataManager;
@@ -260,7 +260,7 @@ public void testValidateAndUpdateCacheCrossSpaceQuota()
throws Exception {
.setVolumeName(volumeName)
.setIsVersionEnabled(false)
.setQuotaInBytes(99999L)
- .setStorageType(StorageTypeProto.SSD)
+ .setStoragePolicy(StoragePolicyProto.HOT)
.addAllMetadata(OMRequestTestUtils.getMetadataList()).build();
OzoneManagerProtocolProtos.CreateBucketRequest.Builder req =
OzoneManagerProtocolProtos.CreateBucketRequest.newBuilder();
@@ -390,7 +390,7 @@ public void testIgnoreClientACL(boolean ignoreClientACLs)
throws Exception {
OzoneManagerProtocolProtos.BucketInfo.newBuilder()
.setBucketName(bucketName)
.setVolumeName(volumeName)
- .setStorageType(HddsProtos.StorageTypeProto.SSD)
+ .setStoragePolicy(HddsProtos.StoragePolicyProto.HOT)
.setIsVersionEnabled(false)
.setQuotaInBytes(5000L)
.addAcls(OzoneAcl.toProtobuf(OzoneAcl.parseAcl(acl)));
@@ -484,8 +484,10 @@ protected void doValidateAndUpdateCache(String volumeName,
String bucketName,
assertTrue(dbBucketInfo.getAcls().containsAll(bucketInfoFromProto.getAcls()));
assertEquals(bucketInfoFromProto.getIsVersionEnabled(),
dbBucketInfo.getIsVersionEnabled());
- assertEquals(bucketInfoFromProto.getStorageType(),
- dbBucketInfo.getStorageType());
+ assertEquals(bucketInfoFromProto.getStoragePolicy(),
+ dbBucketInfo.getStoragePolicy());
+ assertEquals(bucketInfoFromProto.getAllowFallbackStoragePolicy(),
+ dbBucketInfo.getAllowFallbackStoragePolicy());
assertEquals(bucketInfoFromProto.getMetadata(),
dbBucketInfo.getMetadata());
assertEquals(bucketInfoFromProto.getEncryptionKeyInfo(),
@@ -506,7 +508,9 @@ protected void verifyRequest(OMRequest modifiedOmRequest,
assertEquals(original.getBucketName(), updated.getBucketName());
assertEquals(original.getVolumeName(), updated.getVolumeName());
assertEquals(original.getIsVersionEnabled(),
updated.getIsVersionEnabled());
- assertEquals(original.getStorageType(), updated.getStorageType());
+ assertEquals(original.getStoragePolicy(), updated.getStoragePolicy());
+ assertEquals(original.getAllowFallbackStoragePolicy(),
+ updated.getAllowFallbackStoragePolicy());
assertEquals(original.getMetadataList(), updated.getMetadataList());
assertNotEquals(original.getCreationTime(), updated.getCreationTime());
}
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestOMBucketCreateRequestWithFSO.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestOMBucketCreateRequestWithFSO.java
index 107e697971f..21f739f9bb4 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestOMBucketCreateRequestWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/bucket/TestOMBucketCreateRequestWithFSO.java
@@ -170,8 +170,8 @@ protected void doValidateAndUpdateCache(String volumeName,
String bucketName,
assertTrue(dbBucketInfo.getAcls().containsAll(bucketInfoFromProto.getAcls()));
assertEquals(bucketInfoFromProto.getIsVersionEnabled(),
dbBucketInfo.getIsVersionEnabled());
- assertEquals(bucketInfoFromProto.getStorageType(),
- dbBucketInfo.getStorageType());
+ assertEquals(bucketInfoFromProto.getStoragePolicy(),
+ dbBucketInfo.getStoragePolicy());
assertEquals(bucketInfoFromProto.getMetadata(),
dbBucketInfo.getMetadata());
assertEquals(bucketInfoFromProto.getEncryptionKeyInfo(),
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/TestCleanupTableInfo.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/TestCleanupTableInfo.java
index 1a9e20a5985..043ce17a8ef 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/TestCleanupTableInfo.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/TestCleanupTableInfo.java
@@ -42,7 +42,6 @@
import org.apache.hadoop.hdds.client.BlockID;
import org.apache.hadoop.hdds.client.ReplicationConfig;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.DatanodeDetailsProto;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.Pipeline;
@@ -305,7 +304,6 @@ private OmBucketInfo aBucketInfo() {
.setVolumeName(TEST_VOLUME_NAME)
.setBucketName(TEST_BUCKET_NAME)
.setIsVersionEnabled(false)
- .setStorageType(StorageType.DEFAULT)
.build();
}
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/file/TestOMDirectoryCreateResponseWithFSO.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/file/TestOMDirectoryCreateResponseWithFSO.java
index 0a5cc330186..c4f5a73f3e8 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/file/TestOMDirectoryCreateResponseWithFSO.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/file/TestOMDirectoryCreateResponseWithFSO.java
@@ -26,7 +26,6 @@
import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.utils.db.BatchOperation;
import org.apache.hadoop.hdds.utils.db.Table;
import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
@@ -138,7 +137,6 @@ private void addBucketToDB(String volumeName, String
bucketName)
.setVolumeName(volumeName)
.setBucketName(bucketName)
.setObjectID(System.currentTimeMillis())
- .setStorageType(StorageType.DISK)
.setIsVersionEnabled(false)
.build();
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/key/OMKeyResponseTests.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/key/OMKeyResponseTests.java
index 99842c9cfb3..ad73e999f54 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/key/OMKeyResponseTests.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/key/OMKeyResponseTests.java
@@ -26,7 +26,6 @@
import java.util.UUID;
import org.apache.hadoop.hdds.client.ReplicationConfig;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.utils.db.BatchOperation;
import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
@@ -97,7 +96,6 @@ public void setup() throws Exception {
.setVolumeName(volumeName)
.setBucketName(bucketName)
.setObjectID(System.currentTimeMillis())
- .setStorageType(StorageType.DISK)
.setIsVersionEnabled(false)
.build();
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartResponseTests.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartResponseTests.java
index 70b8ea0b05e..6dc8d09ec0c 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartResponseTests.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/s3/multipart/S3MultipartResponseTests.java
@@ -27,7 +27,6 @@
import java.util.UUID;
import org.apache.hadoop.hdds.client.RatisReplicationConfig;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.utils.db.BatchOperation;
import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
@@ -472,7 +471,6 @@ public void addBucketToDB(String volumeName, String
bucketName)
.setVolumeName(volumeName)
.setBucketName(bucketName)
.setObjectID(System.currentTimeMillis())
- .setStorageType(StorageType.DISK)
.setIsVersionEnabled(false)
.build();
diff --git
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/BucketObjectDBInfo.java
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/BucketObjectDBInfo.java
index 6130b2b7fb4..0756fb6ba92 100644
---
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/BucketObjectDBInfo.java
+++
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/types/BucketObjectDBInfo.java
@@ -19,7 +19,7 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
-import org.apache.hadoop.hdds.protocol.StorageType;
+import org.apache.hadoop.hdds.client.StoragePolicy;
import org.apache.hadoop.ozone.om.helpers.BucketEncryptionKeyInfo;
import org.apache.hadoop.ozone.om.helpers.BucketLayout;
import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
@@ -31,8 +31,11 @@ public class BucketObjectDBInfo extends ObjectDBInfo {
@JsonProperty("volumeName")
private String volumeName;
- @JsonProperty("storageType")
- private StorageType storageType;
+ @JsonProperty("storagePolicy")
+ private StoragePolicy storagePolicy;
+
+ @JsonProperty("allowFallbackStoragePolicy")
+ private Boolean allowFallbackStoragePolicy;
@JsonProperty("versioning")
private boolean isVersioningEnabled;
@@ -78,7 +81,9 @@ public BucketObjectDBInfo(OmBucketInfo omBucketInfo) {
this.sourceBucket = omBucketInfo.getSourceBucket();
this.sourceVolume = omBucketInfo.getSourceVolume();
this.isVersioningEnabled = omBucketInfo.getIsVersionEnabled();
- this.storageType = omBucketInfo.getStorageType();
+ this.storagePolicy = omBucketInfo.getStoragePolicy();
+ this.allowFallbackStoragePolicy =
+ omBucketInfo.getAllowFallbackStoragePolicy();
this.defaultReplicationConfig = omBucketInfo.getDefaultReplicationConfig();
this.bucketLayout = omBucketInfo.getBucketLayout();
this.owner = omBucketInfo.getOwner();
@@ -95,12 +100,12 @@ public void setVolumeName(String volumeName) {
this.volumeName = volumeName;
}
- public StorageType getStorageType() {
- return storageType;
+ public StoragePolicy getStoragePolicy() {
+ return storagePolicy;
}
- public void setStorageType(StorageType storageType) {
- this.storageType = storageType;
+ public Boolean getAllowFallbackStoragePolicy() {
+ return allowFallbackStoragePolicy;
}
public long getUsedBytes() {
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/types/om.types.tsx
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/types/om.types.tsx
index 4509638a0e8..033b06b3aea 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/types/om.types.tsx
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/types/om.types.tsx
@@ -39,7 +39,8 @@ export interface IBucket {
volumeName: string;
bucketName: string;
isVersionEnabled: boolean;
- storageType: BucketStorage;
+ storagePolicy: BucketStoragePolicy;
+ allowFallbackStoragePolicy?: boolean;
creationTime: number;
modificationTime: number;
sourceVolume?: string;
@@ -53,10 +54,10 @@ export interface IBucket {
bucketLayout: BucketLayout;
}
-// Corresponds to OzoneManagerProtocolProtos.StorageTypeProto
-export const BucketStorageTypeList = ['RAM_DISK', 'SSD', 'DISK', 'ARCHIVE'];
-type BucketStorageType = typeof BucketStorageTypeList;
-export type BucketStorage = BucketStorageType[number];
+// Corresponds to OzoneStoragePolicy
+export const BucketStoragePolicyList = ['HOT', 'WARM', 'COLD'];
+type BucketStoragePolicyType = typeof BucketStoragePolicyList;
+export type BucketStoragePolicy = BucketStoragePolicyType[number];
// Corresponds to OzoneManagerProtocolProtos.BucketLayoutProto
export const BucketLayoutTypeList = ['FILE_SYSTEM_OPTIMIZED', 'OBJECT_STORE',
'LEGACY'];
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/nuMetadata/nuMetadata.tsx
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/nuMetadata/nuMetadata.tsx
index 1bc404eb7b2..18780dea39e 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/nuMetadata/nuMetadata.tsx
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/nuMetadata/nuMetadata.tsx
@@ -70,7 +70,8 @@ type ObjectInfo = {
sourceBucket: string | null;
usedBytes: number | null;
usedNamespace: number;
- storageType: string;
+ storagePolicy: string;
+ allowFallbackStoragePolicy?: boolean;
creationTime: number;
dataSize: number;
modificationTime: number;
@@ -157,7 +158,8 @@ const NUMetadata: React.FC<MetadataProps> = ({
*/
const selectedInfoKeys = [
'bucketName', 'bucketLayout', 'encInfo', 'fileName', 'keyName',
- 'name', 'owner', 'storageType', 'usedNamespace', 'volumeName', 'volume'
+ 'name', 'owner', 'storagePolicy', 'allowFallbackStoragePolicy',
+ 'usedNamespace', 'volumeName', 'volume'
] as const;
const objectInfo: ObjectInfo = summaryResponse.objectInfo ?? {};
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/tables/bucketsTable.tsx
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/tables/bucketsTable.tsx
index a9013967e3e..591e27eec29 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/tables/bucketsTable.tsx
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/components/tables/bucketsTable.tsx
@@ -42,8 +42,8 @@ import {
BucketLayout,
BucketLayoutTypeList,
BucketsTableProps,
- BucketStorage,
- BucketStorageTypeList
+ BucketStoragePolicy,
+ BucketStoragePolicyList
} from '@/v2/types/bucket.types';
function renderIsVersionEnabled(isVersionEnabled: boolean) {
@@ -54,17 +54,16 @@ function renderIsVersionEnabled(isVersionEnabled: boolean) {
: <CloseCircleOutlined className='icon-neutral' />
};
-function renderStorageType(bucketStorage: BucketStorage) {
- const bucketStorageIconMap: Record<BucketStorage, React.ReactElement> = {
- RAM_DISK: <LaptopOutlined />,
- SSD: <SaveOutlined />,
- DISK: <HddOutlined />,
- ARCHIVE: <CloudServerOutlined />
+function renderStoragePolicy(bucketStoragePolicy: BucketStoragePolicy) {
+ const bucketStoragePolicyIconMap: Record<BucketStoragePolicy,
React.ReactElement> = {
+ HOT: <SaveOutlined />,
+ WARM: <HddOutlined />,
+ COLD: <CloudServerOutlined />
};
- const icon = bucketStorage in bucketStorageIconMap
- ? bucketStorageIconMap[bucketStorage]
+ const icon = bucketStoragePolicy in bucketStoragePolicyIconMap
+ ? bucketStoragePolicyIconMap[bucketStoragePolicy]
: <FileUnknownOutlined />;
- return <span>{icon} {bucketStorage}</span>;
+ return <span>{icon} {bucketStoragePolicy}</span>;
};
function renderBucketLayout(bucketLayout: BucketLayout) {
@@ -108,14 +107,14 @@ export const COLUMNS: ColumnsType<Bucket> = [
render: (isVersionEnabled: boolean) =>
renderIsVersionEnabled(isVersionEnabled)
},
{
- title: 'Storage Type',
- dataIndex: 'storageType',
- key: 'storageType',
+ title: 'Storage Policy',
+ dataIndex: 'storagePolicy',
+ key: 'storagePolicy',
filterMultiple: true,
- filters: BucketStorageTypeList.map(state => ({ text: state, value: state
})),
- onFilter: (value, record: Bucket) => record.storageType === value,
- sorter: (a: Bucket, b: Bucket) =>
a.storageType.localeCompare(b.storageType),
- render: (storageType: BucketStorage) => renderStorageType(storageType)
+ filters: BucketStoragePolicyList.map(state => ({ text: state, value: state
})),
+ onFilter: (value, record: Bucket) => record.storagePolicy === value,
+ sorter: (a: Bucket, b: Bucket) =>
a.storagePolicy.localeCompare(b.storagePolicy),
+ render: (storagePolicy: BucketStoragePolicy) =>
renderStoragePolicy(storagePolicy)
},
{
title: 'Bucket Layout',
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/pages/buckets/buckets.tsx
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/pages/buckets/buckets.tsx
index ae3376df480..ad3b1aa5303 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/pages/buckets/buckets.tsx
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/pages/buckets/buckets.tsx
@@ -166,7 +166,8 @@ const Buckets: React.FC<{}> = () => {
volumeName: bucket.volumeName,
name: bucket.name,
versioning: bucket.versioning,
- storageType: bucket.storageType,
+ storagePolicy: bucket.storagePolicy,
+ allowFallbackStoragePolicy: bucket.allowFallbackStoragePolicy,
bucketLayout: bucket.bucketLayout,
creationTime: bucket.creationTime,
modificationTime: bucket.modificationTime,
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/types/bucket.types.ts
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/types/bucket.types.ts
index eb499dc617e..bb1909e9eab 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/types/bucket.types.ts
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/types/bucket.types.ts
@@ -19,14 +19,13 @@
import { Acl } from "@/v2/types/acl.types";
import { Option as MultiOption } from "@/v2/components/select/multiSelect";
-// Corresponds to OzoneManagerProtocolProtos.StorageTypeProto
-export const BucketStorageTypeList = [
- 'RAM_DISK',
- 'SSD',
- 'DISK',
- 'ARCHIVE'
+// Corresponds to OzoneStoragePolicy
+export const BucketStoragePolicyList = [
+ 'HOT',
+ 'WARM',
+ 'COLD'
] as const;
-export type BucketStorage = typeof BucketStorageTypeList[number];
+export type BucketStoragePolicy = typeof BucketStoragePolicyList[number];
// Corresponds to OzoneManagerProtocolProtos.BucketLayoutProto
export const BucketLayoutTypeList = [
@@ -41,7 +40,8 @@ export type Bucket = {
volumeName: string;
name: string;
versioning: boolean;
- storageType: BucketStorage;
+ storagePolicy: BucketStoragePolicy;
+ allowFallbackStoragePolicy?: boolean;
creationTime: number;
modificationTime: number;
sourceVolume?: string;
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/buckets/buckets.tsx
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/buckets/buckets.tsx
index da49975e0e9..7f499ef2943 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/buckets/buckets.tsx
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/buckets/buckets.tsx
@@ -38,8 +38,8 @@ import CreatableSelect from "react-select/creatable";
import {
BucketLayout,
BucketLayoutTypeList,
- BucketStorage,
- BucketStorageTypeList,
+ BucketStoragePolicy,
+ BucketStoragePolicyList,
IAcl,
IBucket
} from '@/types/om.types';
@@ -59,7 +59,8 @@ interface IBucketResponse {
volumeName: string;
name: string;
versioning: boolean;
- storageType: string;
+ storagePolicy: string;
+ allowFallbackStoragePolicy?: boolean;
bucketLayout: string;
creationTime: number;
modificationTime: number;
@@ -122,17 +123,16 @@ const renderIsVersionEnabled = (isVersionEnabled:
boolean) => {
<CloseCircleOutlined className='icon-neutral' />
};
-const renderStorageType = (bucketStorage: BucketStorage) => {
- const bucketStorageIconMap = {
- RAM_DISK: <LaptopOutlined />,
- SSD: <SaveOutlined />,
- DISK: <HddOutlined />,
- ARCHIVE: <CloudServerOutlined />
+const renderStoragePolicy = (bucketStoragePolicy: BucketStoragePolicy) => {
+ const bucketStoragePolicyIconMap = {
+ HOT: <SaveOutlined />,
+ WARM: <HddOutlined />,
+ COLD: <CloudServerOutlined />
};
- const icon = bucketStorage in bucketStorageIconMap
- ? bucketStorageIconMap[bucketStorage]
+ const icon = bucketStoragePolicy in bucketStoragePolicyIconMap
+ ? bucketStoragePolicyIconMap[bucketStoragePolicy]
: <FileUnknownOutlined />;
- return <span>{icon} {bucketStorage}</span>;
+ return <span>{icon} {bucketStoragePolicy}</span>;
};
const renderBucketLayout = (bucketLayout: BucketLayout) => {
@@ -181,15 +181,15 @@ const COLUMNS: BucketTableColumn[] = [
render: (isVersionEnabled: boolean) =>
renderIsVersionEnabled(isVersionEnabled)
},
{
- title: 'Storage Type',
- dataIndex: 'storageType',
- key: 'storageType',
+ title: 'Storage Policy',
+ dataIndex: 'storagePolicy',
+ key: 'storagePolicy',
isVisible: true,
filterMultiple: true,
- filters: BucketStorageTypeList.map(state => ({ text: state, value: state
})),
- onFilter: (value: BucketStorage, record: IBucket) => record.storageType
=== value,
- sorter: (a: IBucket, b: IBucket) =>
a.storageType.localeCompare(b.storageType),
- render: (storageType: BucketStorage) => renderStorageType(storageType)
+ filters: BucketStoragePolicyList.map(state => ({ text: state, value: state
})),
+ onFilter: (value: BucketStoragePolicy, record: IBucket) =>
record.storagePolicy === value,
+ sorter: (a: IBucket, b: IBucket) =>
a.storagePolicy.localeCompare(b.storagePolicy),
+ render: (storagePolicy: BucketStoragePolicy) =>
renderStoragePolicy(storagePolicy)
},
{
title: 'Bucket Layout',
@@ -439,7 +439,8 @@ export class Buckets extends React.Component<Record<string,
object>, IBucketsSta
volumeName: bucket.volumeName,
bucketName: bucket.name,
isVersionEnabled: bucket.versioning,
- storageType: bucket.storageType,
+ storagePolicy: bucket.storagePolicy,
+ allowFallbackStoragePolicy: bucket.allowFallbackStoragePolicy,
bucketLayout: bucket.bucketLayout,
creationTime: bucket.creationTime,
modificationTime: bucket.modificationTime,
diff --git
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/diskUsage/diskUsage.tsx
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/diskUsage/diskUsage.tsx
index 1f7bba9aa75..7bbf38461fc 100644
---
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/diskUsage/diskUsage.tsx
+++
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/views/diskUsage/diskUsage.tsx
@@ -443,9 +443,13 @@ export class DiskUsage extends
React.Component<Record<string, object>, IDUState>
values.push(summaryResponse.objectInfo.sourceVolume);
}
- if (summaryResponse.objectInfo?.storageType !== undefined &&
summaryResponse.objectInfo?.storageType !== -1) {
- keys.push('Storage Type');
- values.push(summaryResponse.objectInfo.storageType);
+ if (summaryResponse.objectInfo?.storagePolicy !== undefined &&
summaryResponse.objectInfo?.storagePolicy !== -1) {
+ keys.push('Storage Policy');
+ values.push(summaryResponse.objectInfo.storagePolicy);
+ }
+ if (summaryResponse.objectInfo?.allowFallbackStoragePolicy !==
undefined) {
+ keys.push('Allow Fallback Storage Policy');
+
values.push(String(summaryResponse.objectInfo.allowFallbackStoragePolicy));
}
if (summaryResponse.objectInfo?.usedBytes !== undefined &&
summaryResponse.objectInfo?.usedBytes !== -1) {
diff --git
a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/AbstractTreeNSSummaryScenario.java
b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/AbstractTreeNSSummaryScenario.java
index 114647c2c54..071ae0e3d2c 100644
---
a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/AbstractTreeNSSummaryScenario.java
+++
b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/AbstractTreeNSSummaryScenario.java
@@ -35,7 +35,6 @@
import java.util.List;
import org.apache.hadoop.hdds.client.RatisReplicationConfig;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.ozone.OzoneAcl;
import org.apache.hadoop.ozone.OzoneConsts;
@@ -548,8 +547,6 @@ void assertBasicInfoBucketOne(NSSummaryEndpoint endpoint)
throws Exception {
assertEquals(5, bucket.getCountStats().getNumTotalKey());
assertEquals(VOL,
((BucketObjectDBInfo) bucket.getObjectDBInfo()).getVolumeName());
- assertEquals(StorageType.DISK,
- ((BucketObjectDBInfo) bucket.getObjectDBInfo()).getStorageType());
assertEquals(getBucketLayout(),
((BucketObjectDBInfo) bucket.getObjectDBInfo()).getBucketLayout());
assertEquals(BUCKET_ONE,
@@ -565,8 +562,6 @@ void assertBasicInfoBucketTwo(NSSummaryEndpoint endpoint)
throws Exception {
assertEquals(2, bucket.getCountStats().getNumTotalKey());
assertEquals(VOL,
((BucketObjectDBInfo) bucket.getObjectDBInfo()).getVolumeName());
- assertEquals(StorageType.DISK,
- ((BucketObjectDBInfo) bucket.getObjectDBInfo()).getStorageType());
assertEquals(getBucketLayout(),
((BucketObjectDBInfo) bucket.getObjectDBInfo()).getBucketLayout());
assertEquals(BUCKET_TWO,
diff --git
a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/FlatNSSummaryScenario.java
b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/FlatNSSummaryScenario.java
index 7bd37ab1027..91372541a34 100644
---
a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/FlatNSSummaryScenario.java
+++
b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/FlatNSSummaryScenario.java
@@ -32,7 +32,6 @@
import java.util.List;
import org.apache.hadoop.hdds.client.RatisReplicationConfig;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.ozone.OmUtils;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.om.OMConfigKeys;
@@ -427,8 +426,6 @@ private void assertBucket(NSSummaryEndpoint endpoint,
String path,
assertEquals(numKeys, bucket.getCountStats().getNumTotalKey());
assertEquals(volName,
((BucketObjectDBInfo) bucket.getObjectDBInfo()).getVolumeName());
- assertEquals(StorageType.DISK,
- ((BucketObjectDBInfo) bucket.getObjectDBInfo()).getStorageType());
assertEquals(layout,
((BucketObjectDBInfo) bucket.getObjectDBInfo()).getBucketLayout());
assertEquals(bucketName,
diff --git
a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestEndpoints.java
b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestEndpoints.java
index db9301e4795..704ecaa81d6 100644
---
a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestEndpoints.java
+++
b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestEndpoints.java
@@ -66,10 +66,10 @@
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import org.apache.commons.io.FileUtils;
+import org.apache.hadoop.hdds.client.OzoneStoragePolicy;
import org.apache.hadoop.hdds.client.RatisReplicationConfig;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.DatanodeDetailsProto;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.ExtendedDatanodeDetailsProto;
@@ -518,7 +518,7 @@ public void setUp() throws Exception {
.setQuotaInBytes(OzoneConsts.GB)
.setUsedBytes(OzoneConsts.MB)
.setQuotaInNamespace(5)
- .setStorageType(StorageType.DISK)
+ .setStoragePolicy(OzoneStoragePolicy.WARM)
.setUsedNamespace(3)
.setBucketLayout(BucketLayout.LEGACY)
.setOwner("TestUser2")
@@ -541,7 +541,7 @@ public void setUp() throws Exception {
.setQuotaInBytes(OzoneConsts.GB)
.setUsedBytes(100 * OzoneConsts.MB)
.setQuotaInNamespace(5)
- .setStorageType(StorageType.SSD)
+ .setStoragePolicy(OzoneStoragePolicy.HOT)
.setUsedNamespace(3)
.setBucketLayout(BucketLayout.OBJECT_STORE)
.setOwner("TestUser2")
@@ -1106,7 +1106,7 @@ private void testBucketResponse(BucketObjectDBInfo
bucketMetadata)
switch (bucketName) {
case "bucketOne":
assertEquals("sampleVol2", bucketMetadata.getVolumeName());
- assertEquals(StorageType.DISK, bucketMetadata.getStorageType());
+ assertEquals(OzoneStoragePolicy.WARM, bucketMetadata.getStoragePolicy());
assertNull(bucketMetadata.getSourceVolume());
assertNull(bucketMetadata.getSourceBucket());
assertEquals(OzoneConsts.GB, bucketMetadata.getQuotaInBytes());
@@ -1128,7 +1128,7 @@ private void testBucketResponse(BucketObjectDBInfo
bucketMetadata)
break;
case "bucketTwo":
assertEquals("sampleVol2", bucketMetadata.getVolumeName());
- assertEquals(StorageType.SSD, bucketMetadata.getStorageType());
+ assertEquals(OzoneStoragePolicy.HOT, bucketMetadata.getStoragePolicy());
assertNull(bucketMetadata.getSourceVolume());
assertNull(bucketMetadata.getSourceBucket());
assertEquals(OzoneConsts.GB, bucketMetadata.getQuotaInBytes());
diff --git
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/client/ClientProtocolStub.java
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/client/ClientProtocolStub.java
index 122158262fa..22e85954ae2 100644
---
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/client/ClientProtocolStub.java
+++
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/client/ClientProtocolStub.java
@@ -28,8 +28,8 @@
import org.apache.hadoop.hdds.client.ReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicationFactor;
import org.apache.hadoop.hdds.client.ReplicationType;
+import org.apache.hadoop.hdds.client.StoragePolicy;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.ozone.OzoneAcl;
import org.apache.hadoop.ozone.OzoneFsServerDefaults;
@@ -193,8 +193,8 @@ public void setBucketVersioning(String volumeName, String
bucketName,
}
@Override
- public void setBucketStorageType(String volumeName, String bucketName,
- StorageType storageType) throws IOException
{
+ public void setBucketStoragePolicy(String volumeName, String bucketName,
+ StoragePolicy storagePolicy) throws
IOException {
}
diff --git
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/client/OzoneVolumeStub.java
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/client/OzoneVolumeStub.java
index 414c397aeee..9fa15f6f3f0 100644
---
a/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/client/OzoneVolumeStub.java
+++
b/hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/client/OzoneVolumeStub.java
@@ -27,8 +27,8 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.hadoop.hdds.client.DefaultReplicationConfig;
+import org.apache.hadoop.hdds.client.OzoneStoragePolicy;
import org.apache.hadoop.hdds.client.RatisReplicationConfig;
-import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.ozone.OzoneAcl;
import org.apache.hadoop.ozone.om.exceptions.OMException;
@@ -110,7 +110,7 @@ public OzoneVolumeStub build() {
@Override
public void createBucket(String bucketName) throws OMException {
createBucket(bucketName, new BucketArgs.Builder()
- .setStorageType(StorageType.DEFAULT)
+ .setStoragePolicy(OzoneStoragePolicy.getDefaultPolicy())
.setVersioning(false)
.build());
}
@@ -129,7 +129,8 @@ public void createBucket(String bucketName, BucketArgs
bucketArgs) throws OMExce
RatisReplicationConfig.getInstance(
HddsProtos.ReplicationFactor.THREE)))
.setBucketLayout(bucketArgs.getBucketLayout())
- .setStorageType(bucketArgs.getStorageType())
+ .setStoragePolicy(bucketArgs.getStoragePolicy())
+
.setAllowFallbackStoragePolicy(bucketArgs.getAllowFallbackStoragePolicy())
.setVersioning(bucketArgs.getVersioning())
.setOwner(bucketArgs.getOwner())
.setCreationTime(Time.now())
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]