/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package models.datatable;
import static util.BourneUtil.getViprClient;
import java.net.URI;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import util.datatable.DataTable;
import com.emc.storageos.model.object.BucketRestRep;
import com.emc.vipr.client.ViPRCoreClient;
import com.emc.vipr.client.core.util.ResourceUtils;
import com.google.common.collect.Lists;
import controllers.resources.ObjectBuckets;
public class ObjectBucketsDataTable extends DataTable {
public ObjectBucketsDataTable() {
addColumn("name");
addColumn("hardquota").setRenderFunction("render.sizeInGb");
addColumn("softquota").setRenderFunction("render.sizeInGb");
addColumn("varray");
addColumn("vpool");
addColumn("protocols");
sortAll();
setDefaultSort("name", "asc");
setRowCallback("createRowLink");
}
public static List<Bucket> fetch(URI projectId) {
if (projectId == null) {
return Collections.EMPTY_LIST;
}
ViPRCoreClient client = getViprClient();
List<BucketRestRep> buckets = client.objectBuckets().findByProject(projectId);
Map<URI, String> virtualArrays = ResourceUtils.mapNames(client.varrays().list());
Map<URI, String> virtualPools = ResourceUtils.mapNames(client.objectVpools().list());
List<Bucket> results = Lists.newArrayList();
for (BucketRestRep bucket : buckets) {
results.add(new Bucket(bucket, virtualArrays, virtualPools));
}
return results;
}
public static class Bucket {
public String rowLink;
public URI id;
public String name;
public String softquota;
public String hardquota;
public String varray;
public String vpool;
public Set<String> protocols;
public Bucket(BucketRestRep bucket, Map<URI, String> varrayMap, Map<URI, String> vpoolMap) {
id = bucket.getId();
name = bucket.getName();
this.rowLink = createLink(ObjectBuckets.class, "bucket", "bucketId", id);
softquota = bucket.getSoftQuota();
hardquota = bucket.getHardQuota();
if (bucket.getVirtualArray() != null) {
varray = varrayMap.get(bucket.getVirtualArray().getId());
}
if (bucket.getVirtualPool() != null) {
vpool = vpoolMap.get(bucket.getVirtualPool().getId());
}
protocols = bucket.getProtocols();
}
}
}