Simple Load Balancer Application - Recommitting the source codewith the whole source...
[controller.git] / opendaylight / samples / loadbalancer / src / main / java / org / opendaylight / controller / samples / loadbalancer / entities / PoolMember.java
diff --git a/opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/PoolMember.java b/opendaylight/samples/loadbalancer/src/main/java/org/opendaylight/controller/samples/loadbalancer/entities/PoolMember.java
new file mode 100644 (file)
index 0000000..31297eb
--- /dev/null
@@ -0,0 +1,178 @@
+/*
+ * Copyright IBM Corporation, 2013.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.controller.samples.loadbalancer.entities;
+
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * This class represents the host where load balancing service will
+ * redirect VIP traffic for load balancing. All these hosts have to
+ * register with a pool to be a part of traffic load balancing.
+ * This entity is referred to as a 'PoolMember'. 
+ * Load balancer service differentiates each pool member based on its 
+ * two properties { ip address, attached pool }.
+ * A host (IP) can be attached to two different pools through creation of two
+ * different pool member objects.
+ * 
+ * NOTE: Each pool member should have a unique name.
+ *
+ */
+@XmlRootElement(name="poolmember")
+@XmlAccessorType(XmlAccessType.NONE)
+public class PoolMember {
+    
+    /*
+     * Unique name of the pool member
+     */
+    @XmlElement
+    private String name;
+    
+    /*
+     * IP address of the pool member
+     */
+    @XmlElement
+    private String ip;
+    
+    /*
+     * Name of the pool this member is attached to.
+     */
+    @XmlElement(name="poolname")
+    private String poolName;
+    
+    /*
+     * Status (active/inactive)
+     */
+    @XmlElement
+    private String status;
+    
+    /**
+     * Private constructor used for JAXB mapping
+     */
+    @SuppressWarnings("unused")
+    private PoolMember() {}
+    
+    public PoolMember(String name, String memberIP, String poolName){
+        this.name = name;
+        this.ip = memberIP;
+        this.poolName = poolName;
+    }
+    
+    /**
+     * @return the name
+     */
+    public String getName() {
+        return name;
+    }
+    
+    /**
+     * @param name the name to set
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+    
+    /**
+     * @return the ip
+     */
+    public String getIp() {
+        return ip;
+    }
+    
+    /**
+     * @param ip the ip to set
+     */
+    public void setIp(String ip) {
+        this.ip = ip;
+    }
+    
+    /**
+     * @return the poolName
+     */
+    public String getPoolName() {
+        return poolName;
+    }
+    
+    /**
+     * @param poolName the poolName to set
+     */
+    public void setPoolName(String poolName) {
+        this.poolName = poolName;
+    }
+    
+    /**
+     * @return the status
+     */
+    public String getStatus() {
+        return status;
+    }
+    
+    /**
+     * @param status the status to set
+     */
+    public void setStatus(String status) {
+        this.status = status;
+    }
+    
+    /* (non-Javadoc)
+     * @see java.lang.Object#hashCode()
+     */
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((ip == null) ? 0 : ip.hashCode());
+        result = prime * result
+                + ((poolName == null) ? 0 : poolName.hashCode());
+        return result;
+    }
+    
+    /* (non-Javadoc)
+     * @see java.lang.Object#equals(java.lang.Object)
+     */
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (!(obj instanceof PoolMember)) {
+            return false;
+        }
+        PoolMember other = (PoolMember) obj;
+        if (ip == null) {
+            if (other.ip != null) {
+                return false;
+            }
+        }else if (!ip.equals(other.ip)) {
+            return false;
+        }
+        if (poolName == null) {
+            if (other.poolName != null) {
+                return false;
+            }
+        }else if (!poolName.equals(other.poolName)) {
+            return false;
+        }
+        return true;
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return "PoolMember [name=" + name + ", ip=" + ip + ", poolName="
+                                    + poolName + ", status=" + status + "]";
+    }
+}
\ No newline at end of file