/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package models.datatable; import static com.emc.vipr.client.core.util.ResourceUtils.name; import java.text.DecimalFormat; import org.apache.commons.lang.StringUtils; import play.i18n.Messages; import util.datatable.DataTable; import com.emc.sa.util.SizeUtils; import com.emc.storageos.model.compute.ComputeElementRestRep; import com.emc.storageos.model.compute.ComputeSystemRestRep; import com.emc.vipr.client.core.util.CachedResources; public class ComputeSystemElementDataTable extends DataTable { public ComputeSystemElementDataTable() { addColumn("name"); addColumn("computeSystem").hidden(); addColumn("model"); addColumn("numberOfProcessors"); addColumn("numberOfCores"); addColumn("numberOfThreads"); addColumn("processorSpeed"); addColumn("ram").hidden(); addColumn("ramString"); addColumn("uuid").hidden(); addColumn("dn").setRenderFunction("render.operationalStatus").hidden(); addColumn("registrationStatus").setRenderFunction("render.registrationStatus"); addColumn("status"); setDefaultSort("name", "asc"); sortAllExcept("id"); } public static class ComputeElementInfo extends DiscoveredSystemInfo { public String id; public String name; public String computeSystem; public String model; public Short numberOfProcessors; public Integer numberOfCores; public Integer numberOfThreads; public String processorSpeed; public Long ram; public String ramString; public String uuid; public String dn; public String registrationStatus; public String status; public boolean assigned; public ComputeElementInfo(ComputeElementRestRep computeElement) { this(computeElement, (String) null); } public ComputeElementInfo(ComputeElementRestRep computeElement, CachedResources<ComputeSystemRestRep> computeSystems) { this(computeElement, name(computeSystems.get(computeElement.getComputeSystem()))); } public ComputeElementInfo(ComputeElementRestRep computeElement, String computeSystemName) { super(computeElement); this.id = computeElement.getId().toString(); this.name = computeElement.getName(); this.computeSystem = StringUtils.defaultIfEmpty(computeSystemName, "N/A"); this.model = computeElement.getModel(); this.numberOfProcessors = computeElement.getNumOfProcessors(); this.numberOfThreads = computeElement.getNumOfThreads(); this.processorSpeed = FormatSpeed(computeElement.getProcessorSpeed()); this.ram = computeElement.getRam(); this.ramString = SizeUtils.humanReadableMegaByteCount(computeElement.getRam()); this.uuid = computeElement.getUuid(); this.dn = "OK"; this.numberOfCores = computeElement.getNumOfCores(); this.registrationStatus = computeElement.getRegistrationStatus(); this.status = Messages.get("computeSystemElements.Unavailable"); if (computeElement.getAvailable()) { this.status = Messages.get("computeSystemElements.Available"); } } // Suppressing Sonar violation of Method name FormatSpeed should comply with naming convention @SuppressWarnings("squid:S00100") public String FormatSpeed(String speed) { String returnSpeed = Messages.get("computeSystemElements.Unspecified"); try { Float newSpeed = Float.parseFloat(speed); DecimalFormat df = new DecimalFormat("0.00"); df.setMaximumFractionDigits(2); newSpeed = Float.parseFloat(df.format(newSpeed)); returnSpeed = newSpeed.toString(); } catch (Exception e) { // don't need to do anything - this is expected when UCS sends string } return returnSpeed; } } }