This is an automated email from the ASF dual-hosted git repository.
weichiu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 6064b84576 HDDS-7503. CLI admin namespace -quota should return whole
file system disk capacity consumed by all replicas (#3976)
6064b84576 is described below
commit 6064b8457655b4aa3d9358699deee4e80c45c19d
Author: DaveTeng0 <[email protected]>
AuthorDate: Wed Dec 14 11:21:35 2022 -0800
HDDS-7503. CLI admin namespace -quota should return whole file system disk
capacity consumed by all replicas (#3976)
---
.../recon/api/handlers/RootEntityHandler.java | 24 ++++------------------
.../recon/api/TestNSSummaryEndpointWithFSO.java | 10 +++++++++
.../recon/api/TestNSSummaryEndpointWithLegacy.java | 10 +++++++++
3 files changed, 24 insertions(+), 20 deletions(-)
diff --git
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/handlers/RootEntityHandler.java
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/handlers/RootEntityHandler.java
index 357f3a30c2..12b19b88ce 100644
---
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/handlers/RootEntityHandler.java
+++
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/api/handlers/RootEntityHandler.java
@@ -28,6 +28,7 @@ import
org.apache.hadoop.ozone.recon.api.types.QuotaUsageResponse;
import org.apache.hadoop.ozone.recon.api.types.FileSizeDistributionResponse;
import org.apache.hadoop.ozone.recon.recovery.ReconOMMetadataManager;
import org.apache.hadoop.ozone.recon.spi.ReconNamespaceSummaryManager;
+import org.apache.hadoop.hdds.scm.container.placement.metrics.SCMNodeStat;
import java.io.IOException;
import java.util.ArrayList;
@@ -127,26 +128,9 @@ public class RootEntityHandler extends EntityHandler {
public QuotaUsageResponse getQuotaResponse()
throws IOException {
QuotaUsageResponse quotaUsageResponse = new QuotaUsageResponse();
- List<OmVolumeArgs> volumes = listVolumes();
- List<OmBucketInfo> buckets = listBucketsUnderVolume(null);
- long quotaInBytes = 0L;
- long quotaUsedInBytes = 0L;
-
- for (OmVolumeArgs volume: volumes) {
- final long quota = volume.getQuotaInBytes();
- assert (quota >= -1L);
- if (quota == -1L) {
- // If one volume has unlimited quota, the "root" quota is unlimited.
- quotaInBytes = -1L;
- break;
- }
- quotaInBytes += quota;
- }
- for (OmBucketInfo bucket: buckets) {
- long bucketObjectId = bucket.getObjectID();
- quotaUsedInBytes += getTotalSize(bucketObjectId);
- }
-
+ SCMNodeStat stats = getReconSCM().getScmNodeManager().getStats();
+ long quotaInBytes = stats.getCapacity().get();
+ long quotaUsedInBytes = getDuResponse(true, true).getSizeWithReplica();
quotaUsageResponse.setQuota(quotaInBytes);
quotaUsageResponse.setQuotaUsed(quotaUsedInBytes);
return quotaUsageResponse;
diff --git
a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithFSO.java
b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithFSO.java
index 72a997cfca..13cb13d78d 100644
---
a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithFSO.java
+++
b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithFSO.java
@@ -30,6 +30,7 @@ import org.apache.hadoop.hdds.scm.container.ContainerID;
import org.apache.hadoop.hdds.scm.container.ContainerManager;
import org.apache.hadoop.hdds.scm.container.ContainerNotFoundException;
import org.apache.hadoop.hdds.scm.container.ContainerReplica;
+import org.apache.hadoop.hdds.scm.container.placement.metrics.SCMNodeStat;
import org.apache.hadoop.hdds.scm.server.OzoneStorageContainerManager;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.om.OMMetadataManager;
@@ -50,6 +51,7 @@ import
org.apache.hadoop.ozone.recon.api.types.FileSizeDistributionResponse;
import org.apache.hadoop.ozone.recon.api.types.ResponseStatus;
import org.apache.hadoop.ozone.recon.api.types.QuotaUsageResponse;
import org.apache.hadoop.ozone.recon.recovery.ReconOMMetadataManager;
+import org.apache.hadoop.ozone.recon.scm.ReconNodeManager;
import org.apache.hadoop.ozone.recon.scm.ReconStorageContainerManagerFacade;
import org.apache.hadoop.ozone.recon.spi.ReconNamespaceSummaryManager;
import org.apache.hadoop.ozone.recon.spi.StorageContainerServiceProvider;
@@ -1262,10 +1264,18 @@ public class TestNSSummaryEndpointWithFSO {
.thenReturn(containerReplicas6);
when(reconSCM.getContainerManager()).thenReturn(containerManager);
+ ReconNodeManager mockReconNodeManager = mock(ReconNodeManager.class);
+ when(mockReconNodeManager.getStats()).thenReturn(getMockSCMRootStat());
+ when(reconSCM.getScmNodeManager()).thenReturn(mockReconNodeManager);
return reconSCM;
}
private static BucketLayout getBucketLayout() {
return BucketLayout.FILE_SYSTEM_OPTIMIZED;
}
+
+ private static SCMNodeStat getMockSCMRootStat() {
+ return new SCMNodeStat(ROOT_QUOTA, ROOT_DATA_SIZE,
+ ROOT_QUOTA - ROOT_DATA_SIZE);
+ }
}
\ No newline at end of file
diff --git
a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithLegacy.java
b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithLegacy.java
index 41643303ea..c7c69623e2 100644
---
a/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithLegacy.java
+++
b/hadoop-ozone/recon/src/test/java/org/apache/hadoop/ozone/recon/api/TestNSSummaryEndpointWithLegacy.java
@@ -30,6 +30,7 @@ import org.apache.hadoop.hdds.scm.container.ContainerID;
import org.apache.hadoop.hdds.scm.container.ContainerManager;
import org.apache.hadoop.hdds.scm.container.ContainerNotFoundException;
import org.apache.hadoop.hdds.scm.container.ContainerReplica;
+import org.apache.hadoop.hdds.scm.container.placement.metrics.SCMNodeStat;
import org.apache.hadoop.hdds.scm.server.OzoneStorageContainerManager;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.om.OMConfigKeys;
@@ -51,6 +52,7 @@ import
org.apache.hadoop.ozone.recon.api.types.FileSizeDistributionResponse;
import org.apache.hadoop.ozone.recon.api.types.ResponseStatus;
import org.apache.hadoop.ozone.recon.api.types.QuotaUsageResponse;
import org.apache.hadoop.ozone.recon.recovery.ReconOMMetadataManager;
+import org.apache.hadoop.ozone.recon.scm.ReconNodeManager;
import org.apache.hadoop.ozone.recon.scm.ReconStorageContainerManagerFacade;
import org.apache.hadoop.ozone.recon.spi.ReconNamespaceSummaryManager;
import org.apache.hadoop.ozone.recon.spi.StorageContainerServiceProvider;
@@ -1301,10 +1303,18 @@ public class TestNSSummaryEndpointWithLegacy {
.thenReturn(containerReplicas6);
when(reconSCM.getContainerManager()).thenReturn(containerManager);
+ ReconNodeManager mockReconNodeManager = mock(ReconNodeManager.class);
+ when(mockReconNodeManager.getStats()).thenReturn(getMockSCMRootStat());
+ when(reconSCM.getScmNodeManager()).thenReturn(mockReconNodeManager);
return reconSCM;
}
private static BucketLayout getBucketLayout() {
return BucketLayout.LEGACY;
}
+
+ private static SCMNodeStat getMockSCMRootStat() {
+ return new SCMNodeStat(ROOT_QUOTA, ROOT_DATA_SIZE,
+ ROOT_QUOTA - ROOT_DATA_SIZE);
+ }
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]