/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.api.mapper;
import com.emc.storageos.coordinator.client.model.Site;
import com.emc.storageos.coordinator.client.model.SiteMonitorResult;
import com.emc.storageos.coordinator.client.model.SiteNetworkState.NetworkHealth;
import com.emc.storageos.coordinator.client.model.SiteState;
import com.emc.storageos.coordinator.client.service.DrUtil;
import com.emc.storageos.db.client.model.StringMap;
import com.emc.storageos.model.dr.SiteParam;
import com.emc.storageos.model.dr.SiteRestRep;
public class SiteMapper {
public SiteRestRep map(Site from) {
if (from == null) {
return null;
}
SiteRestRep to = new SiteRestRep();
map(from, to);
return to;
}
public SiteRestRep mapWithNetwork(Site from, DrUtil drUtil) {
if (from == null) {
return null;
}
SiteRestRep to = new SiteRestRep();
map(from, to);
NetworkHealth networkHealth = drUtil.getSiteNetworkState(from.getUuid()).getNetworkHealth();
SiteState state = from.getState();
// Skip network health state amid ADDING/RESUMING
if ( networkHealth != null && SiteState.STANDBY_ADDING != state && SiteState.STANDBY_RESUMING != state) {
to.setNetworkHealth(networkHealth.toString());
}
// check if syssvc are up
boolean runningState = drUtil.isSiteUp(from.getUuid());
if (runningState && !from.getState().equals(SiteState.ACTIVE)) {
// check if dbsvc are up
SiteMonitorResult monitorResult = drUtil.getCoordinator().getTargetInfo(from.getUuid(), SiteMonitorResult.class);
if (monitorResult != null && monitorResult.getDbQuorumLostSince() > 0) {
runningState = false;
}
}
to.setRunningState(runningState);
return to;
}
public void map(Site from, SiteRestRep to) {
if (from == null) {
return;
}
to.setUuid(from.getUuid());
to.setVdcShortId(from.getVdcShortId());
to.setName(from.getName());
to.setVipEndpoint(from.getVipEndPoint());
to.setDescription(from.getDescription());
to.setState(from.getState().toString());
to.setCreateTime(from.getCreationTime());
}
public void map(Site from, SiteParam to) {
to.setHostIPv4AddressMap(new StringMap(from.getHostIPv4AddressMap()));
to.setHostIPv6AddressMap(new StringMap(from.getHostIPv6AddressMap()));
to.setName(from.getName()); // this is the name for the standby site
to.setUuid(from.getUuid());
to.setVip(from.getVip());
to.setVip6(from.getVip6());
to.setShortId(from.getSiteShortId());
to.setState(from.getState().toString());
to.setNodeCount(from.getNodeCount());
to.setCreationTime(from.getCreationTime());
}
public void map(SiteParam from, Site to) {
to.setUuid(from.getUuid());
to.setName(from.getName());
to.setVip(from.getVip());
to.setVip6(from.getVip6());
to.getHostIPv4AddressMap().putAll(from.getHostIPv4AddressMap());
to.getHostIPv6AddressMap().putAll(from.getHostIPv6AddressMap());
to.setSiteShortId(from.getShortId());
to.setState(SiteState.valueOf(from.getState()));
to.setNodeCount(from.getNodeCount());
to.setCreationTime(from.getCreationTime());
}
}