package org.zstack.network.l2.vxlan.vxlanNetwork;
import org.zstack.header.configuration.PythonClassInventory;
import org.zstack.header.network.l2.L2NetworkInventory;
import org.zstack.header.query.ExpandedQueries;
import org.zstack.header.query.ExpandedQuery;
import org.zstack.header.query.Queryable;
import org.zstack.header.search.Inventory;
import org.zstack.header.search.Parent;
import org.zstack.network.l2.vxlan.vxlanNetworkPool.L2VxlanNetworkPoolInventory;
import org.zstack.network.l2.vxlan.vxlanNetworkPool.VxlanNetworkPoolVO;
import javax.persistence.JoinColumn;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@PythonClassInventory
@Inventory(mappingVOClass = VxlanNetworkVO.class, collectionValueOfMethod = "valueOf1",
parent = {@Parent(inventoryClass = L2NetworkInventory.class, type = VxlanNetworkConstant.VXLAN_NETWORK_TYPE)})
@ExpandedQueries({
@ExpandedQuery(expandedField = "vxlanPool", inventoryClass = L2VxlanNetworkPoolInventory.class,
foreignKey = "poolUuid", expandedInventoryKey = "uuid")
})
public class L2VxlanNetworkInventory extends L2NetworkInventory {
/**
* @desc vlan id
* @choices [1, 16777215]
*/
private Integer vni;
@Queryable(mappingClass = VxlanNetworkPoolVO.class,
joinColumn = @JoinColumn(name = "uuid", referencedColumnName = "poolUuid"))
private String poolUuid;
public L2VxlanNetworkInventory() {
}
protected L2VxlanNetworkInventory(VxlanNetworkVO vo) {
super(vo);
this.setVni(vo.getVni());
this.setPoolUuid(vo.getPoolUuid());
}
public static L2VxlanNetworkInventory valueOf(VxlanNetworkVO vo) {
return new L2VxlanNetworkInventory(vo);
}
public static List<L2VxlanNetworkInventory> valueOf1(Collection<VxlanNetworkVO> vos) {
List<L2VxlanNetworkInventory> invs = new ArrayList<L2VxlanNetworkInventory>(vos.size());
for (VxlanNetworkVO vo : vos) {
invs.add(new L2VxlanNetworkInventory(vo));
}
return invs;
}
public int getVni() {
return vni;
}
public void setVni(int vni) {
this.vni = vni;
}
public String getPoolUuid() {
return poolUuid;
}
public void setPoolUuid(String poolUuid) {
this.poolUuid = poolUuid;
}
}