|
@@ -42,6 +42,8 @@ import org.apache.hadoop.hdfs.DFSUtilClient;
|
|
|
import org.apache.hadoop.hdfs.protocol.BlockStoragePolicy;
|
|
|
import org.apache.hadoop.hdfs.protocol.DatanodeInfo;
|
|
|
import org.apache.hadoop.hdfs.protocol.ErasureCodingPolicy;
|
|
|
+import org.apache.hadoop.hdfs.protocol.ErasureCodingPolicyInfo;
|
|
|
+import org.apache.hadoop.hdfs.protocol.ErasureCodingPolicyState;
|
|
|
import org.apache.hadoop.hdfs.protocol.SnapshotDiffReport;
|
|
|
import org.apache.hadoop.hdfs.protocol.SnapshotDiffReportListing;
|
|
|
import org.apache.hadoop.hdfs.protocol.SnapshotDiffReportListing.DiffReportListingEntry;
|
|
@@ -835,6 +837,36 @@ public class JsonUtilClient {
|
|
|
return new FsStatus(capacity, used, remaining);
|
|
|
}
|
|
|
|
|
|
+ public static Collection<ErasureCodingPolicyInfo> getAllErasureCodingPolicies(
|
|
|
+ Map<?, ?> json) {
|
|
|
+ Map<?, ?> erasureCodingPoliciesJson = (Map<?, ?>) json.get("ErasureCodingPolicies");
|
|
|
+ if (erasureCodingPoliciesJson != null) {
|
|
|
+ List<?> objs = (List<?>) erasureCodingPoliciesJson.get(ErasureCodingPolicyInfo.class
|
|
|
+ .getSimpleName());
|
|
|
+ if (objs != null) {
|
|
|
+ ErasureCodingPolicyInfo[] erasureCodingPolicies = new ErasureCodingPolicyInfo[objs
|
|
|
+ .size()];
|
|
|
+ for (int i = 0; i < objs.size(); i++) {
|
|
|
+ final Map<?, ?> m = (Map<?, ?>) objs.get(i);
|
|
|
+ ErasureCodingPolicyInfo erasureCodingPolicyInfo = toECPolicyInfo(m);
|
|
|
+ erasureCodingPolicies[i] = erasureCodingPolicyInfo;
|
|
|
+ }
|
|
|
+ return Arrays.asList(erasureCodingPolicies);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return new ArrayList<ErasureCodingPolicyInfo>(0);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static ErasureCodingPolicyInfo toECPolicyInfo(Map<?, ?> m) {
|
|
|
+ if (m == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ ErasureCodingPolicy ecPolicy = toECPolicy((Map<?, ?>) m.get("policy"));
|
|
|
+ String state = getString(m, "state", "DISABLE");
|
|
|
+ final ErasureCodingPolicyState ecPolicyState = ErasureCodingPolicyState.valueOf(state);
|
|
|
+ return new ErasureCodingPolicyInfo(ecPolicy, ecPolicyState);
|
|
|
+ }
|
|
|
+
|
|
|
private static List<SnapshotDiffReport.DiffReportEntry> toDiffList(
|
|
|
List<?> objs) {
|
|
|
if (objs == null) {
|