package com.emc.storageos.coordinator.client.model; import com.emc.storageos.coordinator.common.Configuration; import com.emc.storageos.coordinator.common.impl.ConfigurationImpl; // Under /config/disasterRecoveryOperationStatus would have multiple nodes public class DrOperationStatus { public static final String CONFIG_KIND = "disasterRecoveryOperationStatus"; public static final String KEY_SITE_UUID = "siteUuid"; public static final String KEY_INTER_STATE = "interState"; public enum InterState { ADDING_STANDBY, REMOVING_STANDBY, PAUSING_STANDBY, RESUMING_STANDBY, SWITCHINGOVER_ACTIVE, SWITCHINGOVER_STANDBY, FAILINGOVER_STANDBY, DEGRADING_STANDBY, REJOINING_STANDBY } private String siteUuid; private InterState interState; public DrOperationStatus() { } public DrOperationStatus(Configuration config) { if (config != null) { fromConfiguration(config); } } public String getSiteUuid() { return siteUuid; } public void setSiteUuid(String siteUuid) { this.siteUuid = siteUuid; } public InterState getInterState() { return interState; } public void setInterState(InterState interState) { this.interState = interState; } public Configuration toConfiguration() { ConfigurationImpl config = new ConfigurationImpl(); config.setKind(CONFIG_KIND); config.setId(siteUuid); config.setConfig(KEY_SITE_UUID, siteUuid); config.setConfig(KEY_INTER_STATE, interState.toString()); return config; } private void fromConfiguration(Configuration config) { if (config == null) { throw new IllegalArgumentException("Can't parse from null config"); } if (!CONFIG_KIND.equals(config.getKind())) { throw new IllegalArgumentException("Unexpected configuration kind for DrOperationStatus"); } siteUuid = config.getConfig(KEY_SITE_UUID); interState = Enum.valueOf(InterState.class, config.getConfig(KEY_INTER_STATE)); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("Site [uuid=").append(siteUuid).append(","); sb.append("state=").append(interState.toString()).append("]"); return sb.toString(); } }