package org.zstack.network.securitygroup;
import org.zstack.header.configuration.PythonClassInventory;
import org.zstack.header.query.ExpandedQueries;
import org.zstack.header.query.ExpandedQuery;
import org.zstack.header.search.Inventory;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* @inventory
* inventory for security group rule
*
* @category security group
*
* @example
* {
"uuid": "02bc62abee88444ca3e2c434a1b8fdea",
"securityGroupUuid": "3904b4837f0c4f539063777ed463b648",
"type": "Ingress",
"startPort": 10,
"endPort": 10,
"protocol": "UDP",
"allowedCidr": "192.168.0.1/0",
"createDate": "May 14, 2014 9:38:24 PM",
"lastOpDate": "May 14, 2014 9:38:24 PM"
}
*
* @since 0.1.0
*/
@Inventory(mappingVOClass = SecurityGroupRuleVO.class)
@PythonClassInventory
@ExpandedQueries({
@ExpandedQuery(expandedField = "securityGroup", inventoryClass = SecurityGroupInventory.class,
foreignKey = "securityGroupUuid", expandedInventoryKey = "uuid")
})
public class SecurityGroupRuleInventory {
/**
* @desc rule uuid
*/
private String uuid;
/**
* @desc security group uuid
*/
private String securityGroupUuid;
/**
* @desc
* rule type
*
* - Ingress: for inbound traffic
* - Egress: for outbound traffic
* @choices
* - Ingress
* - Egress
*/
private String type;
/**
* @desc
* start port
* @choices 0 - 65535
*/
private Integer startPort;
/**
* @desc
* end port
* @choices 0 - 65535
*/
private Integer endPort;
/**
* @desc
* network protocol type
* @choices
* - TCP
* - UDP
* - ICMP
*/
private String protocol;
private String state;
/**
* @desc source CIDR the rule applies to. If set, the rule only applies to traffic from this CIDR. If omitted, the rule
* applies to all traffic
* @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 SecurityGroupRuleInventory() {
}
protected SecurityGroupRuleInventory(SecurityGroupRuleVO vo) {
this.setState(vo.getState().toString());
this.setUuid(vo.getUuid());
this.setSecurityGroupUuid(vo.getSecurityGroupUuid());
this.setType(vo.getType().toString());
this.setStartPort(vo.getStartPort());
this.setEndPort(vo.getEndPort());
this.setProtocol(vo.getProtocol().toString());
this.setAllowedCidr(vo.getAllowedCidr());
this.setCreateDate(vo.getCreateDate());
this.setLastOpDate(vo.getLastOpDate());
}
public static SecurityGroupRuleInventory valueOf(SecurityGroupRuleVO vo) {
SecurityGroupRuleInventory inv = new SecurityGroupRuleInventory(vo);
return inv;
}
public static List<SecurityGroupRuleInventory> valueOf(Collection<SecurityGroupRuleVO> vos) {
List<SecurityGroupRuleInventory> invs = new ArrayList<SecurityGroupRuleInventory>(vos.size());
for (SecurityGroupRuleVO vo : vos) {
invs.add(valueOf(vo));
}
return invs;
}
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 getSecurityGroupUuid() {
return securityGroupUuid;
}
public void setSecurityGroupUuid(String securityGroupUuid) {
this.securityGroupUuid = securityGroupUuid;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getStartPort() {
return startPort;
}
public void setStartPort(int startPort) {
this.startPort = startPort;
}
public int getEndPort() {
return endPort;
}
public void setEndPort(int endPort) {
this.endPort = endPort;
}
public String getProtocol() {
return protocol;
}
public void setProtocol(String protocol) {
this.protocol = protocol;
}
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;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(String.format("type: %s,", this.type));
sb.append(String.format("protocol: %s,", this.protocol));
sb.append(String.format("startPort: %s,", this.startPort));
sb.append(String.format("endPort: %s,", this.endPort));
sb.append(String.format("allowedCidr: %s", this.allowedCidr));
return sb.toString();
}
}