/**
* Copyright 2013, Big Switch Networks, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
**/
package net.floodlightcontroller.loadbalancer;
import java.util.ArrayList;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import net.floodlightcontroller.loadbalancer.LoadBalancer.IPClient;
import net.floodlightcontroller.util.MACAddress;
/**
* Data structure for Load Balancer based on
* Quantum proposal http://wiki.openstack.org/LBaaS/CoreResourceModel/proposal
*
* @author KC Wang
*/
@JsonSerialize(using=LBVipSerializer.class)
public class LBVip {
protected String id;
protected String name;
protected String tenantId;
protected String netId;
protected int address;
protected byte protocol;
protected short lbMethod;
protected short port;
protected ArrayList<String> pools;
protected boolean sessionPersistence;
protected int connectionLimit;
protected short adminState;
protected short status;
protected MACAddress proxyMac;
public static String LB_PROXY_MAC= "12:34:56:78:90:12";
public LBVip() {
this.id = String.valueOf((int) (Math.random()*10000));
this.name = null;
this.tenantId = null;
this.netId = null;
this.address = 0;
this.protocol = 0;
this.lbMethod = 0;
this.port = 0;
this.pools = new ArrayList<String>();
this.sessionPersistence = false;
this.connectionLimit = 0;
this.address = 0;
this.status = 0;
this.proxyMac = MACAddress.valueOf(LB_PROXY_MAC);
}
public String pickPool(IPClient client) {
// for now, return the first pool; consider different pool choice policy later
if (pools.size() > 0)
return pools.get(0);
else
return null;
}
}