package net.onrc.onos.core.linkdiscovery.internal;

import net.floodlightcontroller.core.web.serializers.DPIDSerializer;

import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonSerialize;

/***
 * Topology Cluster merge/split event history related classes and members
 * @author subrata
 *
 */
public class EventHistoryTopologyCluster {
    // The following fields are not stored as String to save memory
    // They should be converted to appropriate human-readable strings by 
    // the front end (e.g. in cli in Python)
    public long     dpid;
    public long     clusterIdOld; // Switch with dpid moved from cluster x to y
    public long     clusterIdNew;
    public String   reason;
    
    @JsonProperty("Switch")
    @JsonSerialize(using=DPIDSerializer.class)
    public long getDpid() {
        return dpid;
    }
    @JsonProperty("OldClusterId")
    @JsonSerialize(using=DPIDSerializer.class)
    public long getClusterIdOld() {
        return clusterIdOld;
    }
    @JsonProperty("NewClusterId")
    @JsonSerialize(using=DPIDSerializer.class)
    public long getClusterIdNew() {
        return clusterIdNew;
    }
    @JsonProperty("Reason")
    public String getReason() {
        return reason;
    }
    
    
}
