package controllers.resources;
import static com.emc.vipr.client.core.util.ResourceUtils.uri;
import static util.BourneUtil.getViprClient;
import java.net.URI;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import models.datatable.VirtualNasServerDataTable;
import models.datatable.VirtualNasServerDataTable.VirtualNasServerInfo;
import org.apache.commons.lang.StringUtils;
import play.mvc.With;
import util.datatable.DataTablesSupport;
import com.emc.storageos.model.project.ProjectRestRep;
import com.emc.storageos.model.vnas.VirtualNASRestRep;
import com.google.common.collect.Lists;
import controllers.Common;
@With(Common.class)
public class VirtualNasServers extends ResourceController{
private static VirtualNasForProjectDataTable vNasDataTable = new VirtualNasForProjectDataTable();
public static void vNasServers(String projectId) {
setActiveProjectId(projectId);
renderArgs.put("dataTable", vNasDataTable);
addReferenceData();
render();
}
public static void virtualNasServersJson(String projectId) {
if (StringUtils.isNotBlank(projectId)) {
setActiveProjectId(projectId);
} else {
projectId = getActiveProjectId();
}
List<VirtualNasServerInfo> vNasServers = getVirtualNasServers(projectId);
renderJSON(DataTablesSupport.createJSON(vNasServers, params));
}
private static List<VirtualNasServerInfo> getVirtualNasServers(String projectId) {
if (projectId == null) {
return Collections.EMPTY_LIST;
}
List<VirtualNasServerInfo> vNasServers = Lists.newArrayList();
ProjectRestRep projRestRep = getViprClient().projects().get(uri(projectId));
Set<String> vNasIds = projRestRep.getAssignedVNasServers();
List<URI> vNasUris = Lists.newArrayList();
if (vNasIds != null) {
for (String id : vNasIds) {
vNasUris.add(uri(id));
}
if (!vNasUris.isEmpty()) {
List<VirtualNASRestRep> vNas = getViprClient().virtualNasServers().getByIds(vNasUris);
for (VirtualNASRestRep vNasServer : vNas) {
vNasServers.add(new VirtualNasServerInfo(vNasServer,true));
}
}
}
return vNasServers;
}
public static class VirtualNasForProjectDataTable extends VirtualNasServerDataTable{
public VirtualNasForProjectDataTable(){
alterColumn("project").hidden();
}
}
}