package org.zstack.network.service.portforwarding;
import org.zstack.header.query.ExpandedQueries;
import org.zstack.header.query.ExpandedQuery;
import org.zstack.header.search.Inventory;
import org.zstack.header.vm.VmNicInventory;
import org.zstack.network.service.vip.VipInventory;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* @inventory
* inventory for port forwarding rule
*
* @category port forwarding
*
* @example
* {
"inventory": {
"uuid": "5ddaefbaba7d46d889aa3f3a6f50f6c8",
"name": "pfRule1",
"vipUuid": "22647f340e1037d4a2ea499aca42075e",
"vipPortStart": 22,
"vipPortEnd": 100,
"privatePortStart": 22,
"privatePortEnd": 100,
"vmNicUuid": "bd00f2c066c94f07b0dfae2e9e9b567f",
"protocolType": "TCP",
"allowedCidr": "77.10.3.1/24"
}
}
*
* @since 0.1.0
*/
@Inventory(mappingVOClass = PortForwardingRuleVO.class)
@ExpandedQueries({
@ExpandedQuery(expandedField = "vip", inventoryClass = VipInventory.class,
foreignKey = "vipUuid", expandedInventoryKey = "uuid"),
@ExpandedQuery(expandedField = "vmNic", inventoryClass = VmNicInventory.class,
foreignKey = "vmNicUuid", expandedInventoryKey = "uuid"),
})
public class PortForwardingRuleInventory implements Serializable {
/**
* @desc rule uuid
*/
private String uuid;
/**
* @desc max length of 255 characters
*/
private String name;
/**
* @desc max length of 2048 characters
*/
private String description;
private String vipIp;
private String guestIp;
/**
* @desc uuid of vip this port forwarding rule created on
*/
private String vipUuid;
/**
* @desc start port to be mapped
*/
private Integer vipPortStart;
/**
* @desc end port to be mapped
*/
private Integer vipPortEnd;
/**
* @desc start port the vipPortStart maps to
*/
private Integer privatePortStart;
/**
* @desc end port the vipPortEnd maps to
*/
private Integer privatePortEnd;
/**
* @desc uuid of vm nic(see :ref:`VmNicInventory`) the rule applies to. When null, the rule
* is not attached to any vm nic yet
*
* @nullable
*/
private String vmNicUuid;
/**
* @desc network protocol type
* @choices
* - TCP
* - UDP
*/
private String protocolType;
private String state;
/**
* @desc if not null, the rule only applies to traffic from this CIDR, other traffic are denied
* @nullable
*/
private String allowedCidr;
/**
* @desc the time this resource gets created
*/
private Timestamp createDate;
/**
* @desc last time this resource gets operated
*/
private Timestamp lastOpDate;
public static PortForwardingRuleInventory valueOf(PortForwardingRuleVO vo) {
PortForwardingRuleInventory inv = new PortForwardingRuleInventory();
inv.setName(vo.getName());
inv.setDescription(vo.getDescription());
inv.setAllowedCidr(vo.getAllowedCidr());
inv.setCreateDate(vo.getCreateDate());
inv.setLastOpDate(vo.getLastOpDate());
inv.setPrivatePortEnd(vo.getPrivatePortEnd());
inv.setPrivatePortStart(vo.getPrivatePortStart());
inv.setVipUuid(vo.getVipUuid());
inv.setVipPortStart(vo.getVipPortStart());
inv.setVipPortEnd(vo.getVipPortEnd());
inv.setUuid(vo.getUuid());
inv.setVmNicUuid(vo.getVmNicUuid());
inv.setProtocolType(vo.getProtocolType().toString());
inv.setState(vo.getState().toString());
inv.setVipIp(vo.getVipIp());
inv.setGuestIp(vo.getGuestIp());
return inv;
}
public static List<PortForwardingRuleInventory> valueOf(Collection<PortForwardingRuleVO> vos) {
List<PortForwardingRuleInventory> invs = new ArrayList<PortForwardingRuleInventory>();
for (PortForwardingRuleVO vo : vos) {
invs.add(valueOf(vo));
}
return invs;
}
public String getVipIp() {
return vipIp;
}
public void setVipIp(String vipIp) {
this.vipIp = vipIp;
}
public String getGuestIp() {
return guestIp;
}
public void setGuestIp(String guestIp) {
this.guestIp = guestIp;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getVipUuid() {
return vipUuid;
}
public void setVipUuid(String vipUuid) {
this.vipUuid = vipUuid;
}
public int getVipPortStart() {
return vipPortStart;
}
public void setVipPortStart(int vipPortStart) {
this.vipPortStart = vipPortStart;
}
public int getVipPortEnd() {
return vipPortEnd;
}
public void setVipPortEnd(int vipPortEnd) {
this.vipPortEnd = vipPortEnd;
}
public int getPrivatePortStart() {
return privatePortStart;
}
public void setPrivatePortStart(int privatePortStart) {
this.privatePortStart = privatePortStart;
}
public int getPrivatePortEnd() {
return privatePortEnd;
}
public void setPrivatePortEnd(int privatePortEnd) {
this.privatePortEnd = privatePortEnd;
}
public String getVmNicUuid() {
return vmNicUuid;
}
public void setVmNicUuid(String vmNicUuid) {
this.vmNicUuid = vmNicUuid;
}
public String getProtocolType() {
return protocolType;
}
public void setProtocolType(String protocolType) {
this.protocolType = protocolType;
}
public String getAllowedCidr() {
return allowedCidr;
}
public void setAllowedCidr(String allowedCidr) {
this.allowedCidr = allowedCidr;
}
public Timestamp getCreateDate() {
return createDate;
}
public void setCreateDate(Timestamp createDate) {
this.createDate = createDate;
}
public Timestamp getLastOpDate() {
return lastOpDate;
}
public void setLastOpDate(Timestamp lastOpDate) {
this.lastOpDate = lastOpDate;
}
}