/* * Copyright (c) 2016 EMC Corporation * All Rights Reserved */ package com.emc.storageos.model.block.export; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; import org.slf4j.Logger; import com.emc.storageos.model.NamedRelatedResourceRep; @XmlRootElement(name = "export_paths_adjustment_preview") @XmlAccessorType(XmlAccessType.PROPERTY) public class ExportPathsAdjustmentPreviewRestRep { private String storageSystem; private List<InitiatorPortMapRestRep> adjustedPaths; private List<InitiatorPortMapRestRep> removedPaths; private List<NamedRelatedResourceRep> affectedExportGroups; @XmlElementWrapper(name = "affected_export_groups") public List<NamedRelatedResourceRep> getAffectedExportGroups() { if (affectedExportGroups == null) { affectedExportGroups = new ArrayList<NamedRelatedResourceRep>(); } return affectedExportGroups; } @XmlElementWrapper(name = "adjusted_paths") public List<InitiatorPortMapRestRep> getAdjustedPaths() { if (adjustedPaths == null) { adjustedPaths = new ArrayList<InitiatorPortMapRestRep>(); } return adjustedPaths; } @XmlElementWrapper(name = "removed_paths") public List<InitiatorPortMapRestRep> getRemovedPaths() { if (removedPaths == null) { removedPaths = new ArrayList<InitiatorPortMapRestRep>(); } return removedPaths; } public class InitiatorPortMapRestRepComparator implements Comparator<InitiatorPortMapRestRep> { @Override public int compare(InitiatorPortMapRestRep arg0, InitiatorPortMapRestRep arg1) { if (arg0.getInitiator() == null || arg0.getInitiator().getHostName() == null || arg0.getInitiator().getInitiatorPort() == null || arg1.getInitiator() == null || arg1.getInitiator().getHostName() == null || arg1.getInitiator().getInitiatorPort() == null) { return 0; } if (arg0.getInitiator().getHostName().equals(arg1.getInitiator().getHostName())) { return (arg0.getInitiator().getInitiatorPort().compareTo(arg1.getInitiator().getInitiatorPort())); } return (arg0.getInitiator().getHostName().compareTo(arg1.getInitiator().getHostName())); } } public void logResponse(Logger log) { log.info("Path Adjustment Preview : adjustedPaths"); for (InitiatorPortMapRestRep entry : adjustedPaths) { log.info(String.format("Host %s initiator %s (%s): ", entry.getInitiator().getHostName(), entry.getInitiator().getInitiatorPort(), entry.getInitiator().getId())); StringBuilder buffer = new StringBuilder(); for (NamedRelatedResourceRep aPort : entry.getStoragePorts()) { buffer.append(String.format("%s (%s) ", aPort.getName(), aPort.getId())); } log.info("Ports: " + buffer.toString()); } log.info("Path Adjustment Preview : removedPaths"); if (removedPaths != null) { for (InitiatorPortMapRestRep entry : removedPaths) { log.info(String.format("Host %s initiator %s (%s): ", entry.getInitiator().getHostName(), entry.getInitiator().getInitiatorPort(), entry.getInitiator().getId())); StringBuilder buffer = new StringBuilder(); for (NamedRelatedResourceRep aPort : entry.getStoragePorts()) { buffer.append(String.format("%s (%s) ", aPort.getName(), aPort.getId())); } log.info("Ports: " + buffer.toString()); } } } @XmlElement(name = "storage_system") public String getStorageSystem() { return storageSystem; } public void setStorageSystem(String storageSystem) { this.storageSystem = storageSystem; } }