diff --git a/api/src/com/cloud/network/Site2SiteCustomerGateway.java b/api/src/com/cloud/network/Site2SiteCustomerGateway.java new file mode 100644 index 00000000000..0dbda6523c5 --- /dev/null +++ b/api/src/com/cloud/network/Site2SiteCustomerGateway.java @@ -0,0 +1,11 @@ +package com.cloud.network; + +import java.util.Date; + +public interface Site2SiteCustomerGateway { + public long getId(); + public String getGatewayIp(); + public String getGuestCidrList(); + public String getIpsecPsk(); + public Date getRemoved(); +} diff --git a/api/src/com/cloud/network/Site2SiteVpnConnection.java b/api/src/com/cloud/network/Site2SiteVpnConnection.java new file mode 100644 index 00000000000..f700563f636 --- /dev/null +++ b/api/src/com/cloud/network/Site2SiteVpnConnection.java @@ -0,0 +1,19 @@ +package com.cloud.network; + +import java.util.Date; + +public interface Site2SiteVpnConnection { + enum State { + Pending, + Connected, + Disconnecting, + Disconnected, + Error, + } + public long getId(); + public long getVpnGatewayId(); + public long getCustomerGatewayId(); + public State getState(); + public Date getCreated(); + public Date getRemoved(); +} diff --git a/api/src/com/cloud/network/Site2SiteVpnGateway.java b/api/src/com/cloud/network/Site2SiteVpnGateway.java new file mode 100644 index 00000000000..19ec7425641 --- /dev/null +++ b/api/src/com/cloud/network/Site2SiteVpnGateway.java @@ -0,0 +1,9 @@ +package com.cloud.network; + +import java.util.Date; + +public interface Site2SiteVpnGateway { + public long getId(); + public long getAddrId(); + public Date getRemoved(); +} diff --git a/server/src/com/cloud/network/Site2SiteCustomerGatewayVO.java b/server/src/com/cloud/network/Site2SiteCustomerGatewayVO.java new file mode 100644 index 00000000000..d0d8b2b69fd --- /dev/null +++ b/server/src/com/cloud/network/Site2SiteCustomerGatewayVO.java @@ -0,0 +1,127 @@ +package com.cloud.network; + +import java.util.Date; +import java.util.UUID; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import com.cloud.utils.db.GenericDao; + +@Entity +@Table(name=("s2s_customer_gateway")) +public class Site2SiteCustomerGatewayVO implements Site2SiteCustomerGateway { + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="id") + private long id; + + @Column(name="uuid") + private String uuid; + + @Column(name="gateway_ip") + private String gatewayIp; + + @Column(name="guest_cidr_list") + private String guestCidrList; + + @Column(name="ipsec_psk") + private String ipsecPsk; + + @Column(name="ike_policy") + private String ikePolicy; + + @Column(name="esp_policy") + private String espPolicy; + + @Column(name="lifetime") + private long lifetime; + + @Column(name=GenericDao.REMOVED_COLUMN) + private Date removed; + + public Site2SiteCustomerGatewayVO() { } + + public Site2SiteCustomerGatewayVO(String gatewayIp, String guestCidrList, String ipsecPsk, String ikePolicy, String espPolicy, long lifetime) { + this.gatewayIp = gatewayIp; + this.guestCidrList = guestCidrList; + this.ipsecPsk = ipsecPsk; + this.ikePolicy = ikePolicy; + this.espPolicy = espPolicy; + this.lifetime = lifetime; + this.uuid = UUID.randomUUID().toString(); + } + + @Override + public long getId() { + return id; + } + + @Override + public String getGatewayIp() { + return gatewayIp; + } + + public void setGatewayIp(String gatewayIp) { + this.gatewayIp = gatewayIp; + } + + @Override + public String getGuestCidrList() { + return guestCidrList; + } + + public void setGuestCidrList(String guestCidrList) { + this.guestCidrList = guestCidrList; + } + + @Override + public String getIpsecPsk() { + return ipsecPsk; + } + + public void setIpsecPsk(String ipsecPsk) { + this.ipsecPsk = ipsecPsk; + } + + @Override + public Date getRemoved() { + return removed; + } + + public void setRemoved(Date removed) { + this.removed = removed; + } + + public long getLifetime() { + return lifetime; + } + + public void setLifetime(long lifetime) { + this.lifetime = lifetime; + } + + public String getIkePolicy() { + return ikePolicy; + } + + public void setIkePolicy(String ikePolicy) { + this.ikePolicy = ikePolicy; + } + + public String getEspPolicy() { + return espPolicy; + } + + public void setEspPolicy(String espPolicy) { + this.espPolicy = espPolicy; + } + + public String getUuid() { + return uuid; + } +} diff --git a/server/src/com/cloud/network/Site2SiteVpnConnectionVO.java b/server/src/com/cloud/network/Site2SiteVpnConnectionVO.java new file mode 100644 index 00000000000..4362b2210a3 --- /dev/null +++ b/server/src/com/cloud/network/Site2SiteVpnConnectionVO.java @@ -0,0 +1,103 @@ +package com.cloud.network; + +import java.util.Date; +import java.util.UUID; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import com.cloud.utils.db.GenericDao; + +@Entity +@Table(name=("s2s_vpn_connection")) +public class Site2SiteVpnConnectionVO implements Site2SiteVpnConnection { + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="id") + private long id; + + @Column(name="uuid") + private String uuid; + + @Column(name="vpn_gateway_id") + private long vpnGatewayId; + + @Column(name="customer_gateway_id") + private long customerGatewayId; + + @Column(name="state") + private State state; + + @Column(name=GenericDao.CREATED_COLUMN) + private Date created; + + @Column(name=GenericDao.REMOVED_COLUMN) + private Date removed; + + public Site2SiteVpnConnectionVO() { } + + public Site2SiteVpnConnectionVO(long vpnGatewayId, long customerGatewayId) { + this.uuid = UUID.randomUUID().toString(); + this.setVpnGatewayId(vpnGatewayId); + this.setCustomerGatewayId(customerGatewayId); + this.setState(State.Pending); + } + + @Override + public long getId() { + return id; + } + + @Override + public State getState() { + return state; + } + + public void setState(State state) { + this.state = state; + } + + @Override + public long getVpnGatewayId() { + return vpnGatewayId; + } + + public void setVpnGatewayId(long vpnGatewayId) { + this.vpnGatewayId = vpnGatewayId; + } + + @Override + public long getCustomerGatewayId() { + return customerGatewayId; + } + + public void setCustomerGatewayId(long customerGatewayId) { + this.customerGatewayId = customerGatewayId; + } + + @Override + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + @Override + public Date getRemoved() { + return removed; + } + + public void setRemoved(Date removed) { + this.removed = removed; + } + + public String getUuid() { + return uuid; + } +} diff --git a/server/src/com/cloud/network/Site2SiteVpnGatewayVO.java b/server/src/com/cloud/network/Site2SiteVpnGatewayVO.java new file mode 100644 index 00000000000..5c9486637c4 --- /dev/null +++ b/server/src/com/cloud/network/Site2SiteVpnGatewayVO.java @@ -0,0 +1,65 @@ +package com.cloud.network; + +import java.util.Date; +import java.util.UUID; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import com.cloud.utils.db.GenericDao; + +@Entity +@Table(name=("s2s_vpn_gateway")) +public class Site2SiteVpnGatewayVO implements Site2SiteVpnGateway { + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name="id") + private long id; + + @Column(name="uuid") + private String uuid; + + @Column(name="addr_id") + private long addrId; + + @Column(name=GenericDao.REMOVED_COLUMN) + private Date removed; + + public Site2SiteVpnGatewayVO() { } + + public Site2SiteVpnGatewayVO(long addrId) { + this.uuid = UUID.randomUUID().toString(); + this.setAddrId(addrId); + } + + @Override + public long getId() { + return id; + } + + @Override + public long getAddrId() { + return addrId; + } + + public void setAddrId(long addrId) { + this.addrId = addrId; + } + + @Override + public Date getRemoved() { + return removed; + } + + public void setRemoved(Date removed) { + this.removed = removed; + } + + public String getUuid() { + return uuid; + } +} diff --git a/server/src/com/cloud/network/dao/Site2SiteCustomerGatewayDao.java b/server/src/com/cloud/network/dao/Site2SiteCustomerGatewayDao.java new file mode 100644 index 00000000000..a27903b9ee1 --- /dev/null +++ b/server/src/com/cloud/network/dao/Site2SiteCustomerGatewayDao.java @@ -0,0 +1,8 @@ +package com.cloud.network.dao; + +import com.cloud.network.Site2SiteCustomerGatewayVO; +import com.cloud.utils.db.GenericDao; + +public interface Site2SiteCustomerGatewayDao extends GenericDao { + Site2SiteCustomerGatewayVO findByGatewayIp(String ip); +} diff --git a/server/src/com/cloud/network/dao/Site2SiteCustomerGatewayDaoImpl.java b/server/src/com/cloud/network/dao/Site2SiteCustomerGatewayDaoImpl.java new file mode 100644 index 00000000000..6c5fb3fc74f --- /dev/null +++ b/server/src/com/cloud/network/dao/Site2SiteCustomerGatewayDaoImpl.java @@ -0,0 +1,31 @@ +package com.cloud.network.dao; + +import javax.ejb.Local; + +import org.apache.log4j.Logger; + +import com.cloud.network.Site2SiteCustomerGatewayVO; +import com.cloud.utils.db.GenericDaoBase; +import com.cloud.utils.db.SearchBuilder; +import com.cloud.utils.db.SearchCriteria; + +@Local(value={Site2SiteCustomerGatewayDao.class}) +public class Site2SiteCustomerGatewayDaoImpl extends GenericDaoBase implements Site2SiteCustomerGatewayDao { + private static final Logger s_logger = Logger.getLogger(Site2SiteCustomerGatewayDaoImpl.class); + + private final SearchBuilder AllFieldsSearch; + + protected Site2SiteCustomerGatewayDaoImpl() { + AllFieldsSearch = createSearchBuilder(); + AllFieldsSearch.and("gatewayIp", AllFieldsSearch.entity().getGatewayIp(), SearchCriteria.Op.EQ); + AllFieldsSearch.done(); + } + + @Override + public Site2SiteCustomerGatewayVO findByGatewayIp(String ip) { + SearchCriteria sc = AllFieldsSearch.create(); + sc.setParameters("gatewayIp", ip); + return findOneBy(sc); + } + +} diff --git a/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDao.java b/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDao.java new file mode 100644 index 00000000000..61204a5d9e5 --- /dev/null +++ b/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDao.java @@ -0,0 +1,9 @@ +package com.cloud.network.dao; + +import com.cloud.network.Site2SiteVpnConnectionVO; +import com.cloud.utils.db.GenericDao; + +public interface Site2SiteVpnConnectionDao extends GenericDao { + Site2SiteVpnConnectionVO findByCustomerGatewayId(long id); + Site2SiteVpnConnectionVO findByVpnGatewayId(long id); +} diff --git a/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java b/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java new file mode 100644 index 00000000000..8659d2784be --- /dev/null +++ b/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java @@ -0,0 +1,38 @@ +package com.cloud.network.dao; + +import javax.ejb.Local; + +import org.apache.log4j.Logger; + +import com.cloud.network.Site2SiteVpnConnectionVO; +import com.cloud.utils.db.GenericDaoBase; +import com.cloud.utils.db.SearchBuilder; +import com.cloud.utils.db.SearchCriteria; + +@Local(value={Site2SiteVpnConnectionDao.class}) +public class Site2SiteVpnConnectionDaoImpl extends GenericDaoBase implements Site2SiteVpnConnectionDao { + private static final Logger s_logger = Logger.getLogger(Site2SiteVpnConnectionDaoImpl.class); + + private final SearchBuilder AllFieldsSearch; + + protected Site2SiteVpnConnectionDaoImpl() { + AllFieldsSearch = createSearchBuilder(); + AllFieldsSearch.and("customerGatewayId", AllFieldsSearch.entity().getCustomerGatewayId(), SearchCriteria.Op.EQ); + AllFieldsSearch.and("vpnGatewayId", AllFieldsSearch.entity().getVpnGatewayId(), SearchCriteria.Op.EQ); + AllFieldsSearch.done(); + } + + @Override + public Site2SiteVpnConnectionVO findByCustomerGatewayId(long id) { + SearchCriteria sc = AllFieldsSearch.create(); + sc.setParameters("customerGatewayId", id); + return findOneBy(sc); + } + + @Override + public Site2SiteVpnConnectionVO findByVpnGatewayId(long id) { + SearchCriteria sc = AllFieldsSearch.create(); + sc.setParameters("vpnGatewayId", id); + return findOneBy(sc); + } +} diff --git a/server/src/com/cloud/network/dao/Site2SiteVpnGatewayDao.java b/server/src/com/cloud/network/dao/Site2SiteVpnGatewayDao.java new file mode 100644 index 00000000000..e9dcbbfbeb0 --- /dev/null +++ b/server/src/com/cloud/network/dao/Site2SiteVpnGatewayDao.java @@ -0,0 +1,10 @@ +package com.cloud.network.dao; + +import java.util.List; + +import com.cloud.network.Site2SiteVpnGatewayVO; +import com.cloud.utils.db.GenericDao; + +public interface Site2SiteVpnGatewayDao extends GenericDao { + Site2SiteVpnGatewayVO findByIpAddrId(long id); +} diff --git a/server/src/com/cloud/network/dao/Site2SiteVpnGatewayDaoImpl.java b/server/src/com/cloud/network/dao/Site2SiteVpnGatewayDaoImpl.java new file mode 100644 index 00000000000..feab33a992f --- /dev/null +++ b/server/src/com/cloud/network/dao/Site2SiteVpnGatewayDaoImpl.java @@ -0,0 +1,32 @@ +package com.cloud.network.dao; + +import java.util.List; + +import javax.ejb.Local; + +import org.apache.log4j.Logger; + +import com.cloud.network.Site2SiteVpnGatewayVO; +import com.cloud.utils.db.GenericDaoBase; +import com.cloud.utils.db.SearchBuilder; +import com.cloud.utils.db.SearchCriteria; + +@Local(value={Site2SiteVpnGatewayDao.class}) +public class Site2SiteVpnGatewayDaoImpl extends GenericDaoBase implements Site2SiteVpnGatewayDao { + private static final Logger s_logger = Logger.getLogger(Site2SiteVpnGatewayDaoImpl.class); + + private final SearchBuilder AllFieldsSearch; + + protected Site2SiteVpnGatewayDaoImpl() { + AllFieldsSearch = createSearchBuilder(); + AllFieldsSearch.and("addrId", AllFieldsSearch.entity().getAddrId(), SearchCriteria.Op.EQ); + AllFieldsSearch.done(); + } + + @Override + public Site2SiteVpnGatewayVO findByIpAddrId(long id) { + SearchCriteria sc = AllFieldsSearch.create(); + sc.setParameters("addrId", id); + return findOneBy(sc); + } +}