package org.zstack.network.l2.vxlan.vxlanNetworkPool;
import org.springframework.beans.factory.annotation.Autowired;
import org.zstack.core.cloudbus.CloudBus;
import org.zstack.core.db.DatabaseFacade;
import org.zstack.header.Component;
import org.zstack.header.network.l2.*;
import org.zstack.query.QueryFacade;
import org.zstack.utils.Utils;
import org.zstack.utils.gson.JSONObjectUtil;
import org.zstack.utils.logging.CLogger;
/**
* Created by weiwang on 03/03/2017.
*/
public class VxlanNetworkPoolFactory implements L2NetworkFactory, Component {
private static CLogger logger = Utils.getLogger(VxlanNetworkPoolFactory.class);
static L2NetworkType type = new L2NetworkType(VxlanNetworkPoolConstant.VXLAN_NETWORK_POOL_TYPE);
@Autowired
private DatabaseFacade dbf;
@Autowired
private CloudBus bus;
@Autowired
private QueryFacade qf;
@Override
public L2NetworkType getType() {
return type;
}
@Override
public L2NetworkInventory createL2Network(L2NetworkVO ovo, APICreateL2NetworkMsg msg) {
VxlanNetworkPoolVO vo = new VxlanNetworkPoolVO(ovo);
if (vo.getPhysicalInterface() == null) {
vo.setPhysicalInterface("");
}
vo = dbf.persistAndRefresh(vo);
L2VxlanNetworkPoolInventory inv = L2VxlanNetworkPoolInventory.valueOf(vo);
String info = String.format("successfully create L2VxlanNetworkPool, %s", JSONObjectUtil.toJsonString(inv));
logger.debug(info);
return inv;
}
@Override
public L2Network getL2Network(L2NetworkVO vo) {
return new VxlanNetworkPool(vo);
}
@Override
public boolean start() {
return true;
}
@Override
public boolean stop() {
return true;
}
}