blob: a9a78954d4babc1c4a9b32c4d3d925237088890c [file] [log] [blame]
/**
* Copyright (C) 2010 Cloud.com, Inc. All rights reserved.
*
* This software is licensed under the GNU General Public License v3 or later.
*
* It is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.cloud.vm;
import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import com.cloud.utils.net.NetUtils;
/**
* VirtualMachineRouterVO implements all the fields stored for a domain router.
*/
@Entity
@Table(name="domain_router")
@PrimaryKeyJoinColumn(name="id")
@DiscriminatorValue(value="DomainRouter")
public class DomainRouterVO extends VMInstanceVO implements DomainRouter {
@Column(name="account_id", updatable=false, nullable=false)
private long accountId = -1;
@Column(name="domain_id", updatable=false, nullable=false)
private long domainId = 0;
@Column(name="ram_size", updatable=false, nullable=false)
private int ramSize;
@Column(name="gateway")
private String gateway;
@Column(name="public_ip_address")
private String publicIpAddress;
@Column(name="public_mac_address")
private String publicMacAddress;
@Column(name="public_netmask")
private String publicNetmask;
@Column(name="vlan_db_id")
private Long vlanDbId;
@Column(name="vlan_id")
private String vlanId;
@Column(name="guest_mac_address")
private String guestMacAddress;
@Column(name="guest_ip_address")
private String guestIpAddress;
@Column(name="guest_netmask")
private String guestNetmask;
@Column(name="dns1")
private String dns1;
@Column(name="dns2")
private String dns2;
@Column(name="domain", nullable=false)
private String domain;
@Column(name="vnet")
private String vnet;
@Column(name="dc_vlan")
private String zoneVlan;
@Column(name="guest_dc_mac_address")
private String guestZoneMacAddress;
@Column(name="role")
@Enumerated(EnumType.STRING)
private Role role = Role.DHCP_FIREWALL_LB_PASSWD_USERDATA;
public DomainRouterVO(long id,
String name,
String instanceName,
State state,
String privateMacAddress,
String privateIpAddress,
String privateNetmask,
long templateId,
long guestOSId,
String guestMacAddress,
String guestIpAddress,
String guestNetmask,
String vnet,
long accountId,
long domainId,
String publicMacAddress,
String publicIpAddress,
String publicNetMask,
Long vlanDbId,
String vlanId,
long podId,
long dataCenterId,
int ramSize,
String gateway,
String domain,
Long hostId,
String dns1,
String dns2) {
super(id, name, instanceName, state, Type.DomainRouter, templateId, guestOSId, privateMacAddress, privateIpAddress, privateNetmask, dataCenterId, podId, true, hostId, null, null);
this.privateMacAddress = privateMacAddress;
this.guestMacAddress = guestMacAddress;
this.guestIpAddress = guestIpAddress;
this.publicIpAddress = publicIpAddress;
this.publicMacAddress = publicMacAddress;
this.publicNetmask = publicNetMask;
this.vlanDbId = vlanDbId;
this.vlanId = vlanId;
this.ramSize = ramSize;
this.gateway = gateway;
this.domain = domain;
this.dns1 = dns1;
this.dns2 = dns2;
this.dataCenterId = dataCenterId;
this.vnet = vnet;
this.accountId = accountId;
this.domainId = domainId;
this.guestNetmask = guestNetmask;
}
public DomainRouterVO(long id,
String name,
String privateMacAddress,
String privateIpAddress,
String privateNetmask,
long templateId,
long guestOSId,
String guestMacAddress,
String guestIpAddress,
String guestNetmask,
long accountId,
long domainId,
String publicMacAddress,
String publicIpAddress,
String publicNetMask,
Long vlanDbId, String vlanId,
long podId,
long dataCenterId,
int ramSize,
String gateway,
String domain,
String dns1,
String dns2) {
this(id, name, name, State.Creating, privateMacAddress, privateIpAddress, privateNetmask, templateId, guestOSId, guestMacAddress, guestIpAddress, guestNetmask, null, accountId, domainId, publicMacAddress, publicIpAddress, publicNetMask, vlanDbId, vlanId, podId, dataCenterId, ramSize, gateway, domain, null, dns1, dns2);
}
public long getAccountId() {
return accountId;
}
public long getDomainId() {
return domainId;
}
public void setGateway(String gateway) {
this.gateway = gateway;
}
public void setPublicIpAddress(String publicIpAddress) {
this.publicIpAddress = publicIpAddress;
}
public void setPublicMacAddress(String publicMacAddress) {
this.publicMacAddress = publicMacAddress;
}
public void setPublicNetmask(String publicNetmask) {
this.publicNetmask = publicNetmask;
}
public void setGuestMacAddress(String routerMacAddress) {
this.guestMacAddress = routerMacAddress;
}
@Override
public String getGuestNetmask() {
return guestNetmask;
}
public void setGuestIpAddress(String routerIpAddress) {
this.guestIpAddress = routerIpAddress;
}
public void setDns1(String dns1) {
this.dns1 = dns1;
}
public void setDns2(String dns2) {
this.dns2 = dns2;
}
public void setDomain(String domain) {
this.domain = domain;
}
public void setVnet(String vnet) {
this.vnet = vnet;
}
@Override
public String getVnet() {
return vnet;
}
@Override
public long getDataCenterId() {
return dataCenterId;
}
@Override
public String getPublicNetmask() {
return publicNetmask;
}
@Override
public String getPublicMacAddress() {
return publicMacAddress;
}
@Override
public String getGuestIpAddress() {
return guestIpAddress;
}
protected DomainRouterVO() {
super();
}
@Override
public String getDns1() {
return dns1;
}
@Override
public String getDns2() {
return dns2;
}
@Override
public String getDomain() {
return domain;
}
@Override
public int getRamSize() {
return ramSize;
}
@Override
public String getGateway() {
return gateway;
}
@Override
public String getPublicIpAddress() {
return publicIpAddress;
}
@Override
public String getVlanId() {
return vlanId;
}
@Override
public String getGuestMacAddress() {
return guestMacAddress;
}
public void setVlanDbId(Long vlanDbId) {
this.vlanDbId = vlanDbId;
}
public Long getVlanDbId() {
return vlanDbId;
}
@Override
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
@Override
public String[] getDhcpRange() {
if (guestIpAddress != null && guestNetmask != null) {
long cidrSize = NetUtils.getCidrSize(guestNetmask);
return NetUtils.getIpRangeFromCidr(guestIpAddress, cidrSize);
}
return new String[2];
}
public void setZoneVlan(String zoneVlan) {
this.zoneVlan = zoneVlan;
}
public String getZoneVlan() {
return zoneVlan;
}
public void setGuestZoneMacAddress(String guestZoneMacAddress) {
this.guestZoneMacAddress = guestZoneMacAddress;
}
public String getGuestZoneMacAddress() {
return guestZoneMacAddress;
}
}