| // Licensed to the Apache Software Foundation (ASF) under one | |
| // or more contributor license agreements. See the NOTICE file | |
| // distributed with this work for additional information | |
| // regarding copyright ownership. The ASF licenses this file | |
| // to you under the Apache License, Version 2.0 (the | |
| // "License"); you may not use this file except in compliance | |
| // with the License. You may obtain a copy of the License at | |
| // | |
| // http://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, | |
| // software distributed under the License is distributed on an | |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| // KIND, either express or implied. See the License for the | |
| // specific language governing permissions and limitations | |
| // under the License. | |
| package com.cloud.dc; | |
| import java.util.Date; | |
| import java.util.Map; | |
| import java.util.UUID; | |
| import javax.persistence.Column; | |
| import javax.persistence.Entity; | |
| import javax.persistence.EnumType; | |
| import javax.persistence.Enumerated; | |
| import javax.persistence.GeneratedValue; | |
| import javax.persistence.GenerationType; | |
| import javax.persistence.Id; | |
| import javax.persistence.Table; | |
| import javax.persistence.TableGenerator; | |
| import javax.persistence.Transient; | |
| import com.cloud.network.Network.Provider; | |
| import com.cloud.org.Grouping; | |
| import com.cloud.utils.NumbersUtil; | |
| import com.cloud.utils.db.GenericDao; | |
| @Entity | |
| @Table(name = "data_center") | |
| public class DataCenterVO implements DataCenter { | |
| @Id | |
| @GeneratedValue(strategy = GenerationType.IDENTITY) | |
| @Column(name = "id") | |
| private long id; | |
| @Column(name = "name") | |
| private String name = null; | |
| @Column(name = "description") | |
| private String description = null; | |
| @Column(name = "dns1") | |
| private String dns1 = null; | |
| @Column(name = "dns2") | |
| private String dns2 = null; | |
| @Column(name = "ip6_dns1") | |
| private String ip6Dns1 = null; | |
| @Column(name = "ip6_dns2") | |
| private String ip6Dns2 = null; | |
| @Column(name = "internal_dns1") | |
| private String internalDns1 = null; | |
| @Column(name = "internal_dns2") | |
| private String internalDns2 = null; | |
| @Column(name = "router_mac_address", updatable = false, nullable = false) | |
| private String routerMacAddress = "02:00:00:00:00:01"; | |
| @Column(name = "guest_network_cidr") | |
| private String guestNetworkCidr = null; | |
| @Column(name = "domain_id") | |
| private Long domainId = null; | |
| @Column(name = "domain") | |
| private String domain; | |
| @Column(name = "networktype") | |
| @Enumerated(EnumType.STRING) | |
| NetworkType networkType; | |
| @Column(name = "dns_provider") | |
| private String dnsProvider; | |
| @Column(name = "dhcp_provider") | |
| private String dhcpProvider; | |
| @Column(name = "gateway_provider") | |
| private String gatewayProvider; | |
| @Column(name = "vpn_provider") | |
| private String vpnProvider; | |
| @Column(name = "userdata_provider") | |
| private String userDataProvider; | |
| @Column(name = "lb_provider") | |
| private String loadBalancerProvider; | |
| @Column(name = "firewall_provider") | |
| private String firewallProvider; | |
| @Column(name = "mac_address", nullable = false) | |
| @TableGenerator(name = "mac_address_sq", table = "data_center", pkColumnName = "id", valueColumnName = "mac_address", allocationSize = 1) | |
| private long macAddress = 1; | |
| @Column(name = "zone_token") | |
| private String zoneToken; | |
| @Column(name = GenericDao.REMOVED_COLUMN) | |
| private Date removed; | |
| // This is a delayed load value. If the value is null, | |
| // then this field has not been loaded yet. | |
| // Call the dao to load it. | |
| @Transient | |
| Map<String, String> details; | |
| @Column(name = "allocation_state") | |
| @Enumerated(value = EnumType.STRING) | |
| AllocationState allocationState; | |
| @Column(name = "uuid") | |
| private String uuid; | |
| @Column(name = "is_security_group_enabled") | |
| boolean securityGroupEnabled; | |
| @Column(name = "is_local_storage_enabled") | |
| boolean localStorageEnabled; | |
| @Column(name = "sort_key") | |
| int sortKey; | |
| @Column(name = "type") | |
| @Enumerated(value = EnumType.STRING) | |
| private DataCenter.Type type; | |
| @Column(name = "storage_access_groups") | |
| String storageAccessGroups; | |
| @Override | |
| public String getDnsProvider() { | |
| return dnsProvider; | |
| } | |
| public void setDnsProvider(String dnsProvider) { | |
| this.dnsProvider = dnsProvider; | |
| } | |
| @Override | |
| public String getDhcpProvider() { | |
| return dhcpProvider; | |
| } | |
| public void setDhcpProvider(String dhcpProvider) { | |
| this.dhcpProvider = dhcpProvider; | |
| } | |
| @Override | |
| public String getGatewayProvider() { | |
| return gatewayProvider; | |
| } | |
| public void setGatewayProvider(String gatewayProvider) { | |
| this.gatewayProvider = gatewayProvider; | |
| } | |
| @Override | |
| public String getLoadBalancerProvider() { | |
| return loadBalancerProvider; | |
| } | |
| public void setLoadBalancerProvider(String loadBalancerProvider) { | |
| this.loadBalancerProvider = loadBalancerProvider; | |
| } | |
| @Override | |
| public String getFirewallProvider() { | |
| return firewallProvider; | |
| } | |
| public void setFirewallProvider(String firewallProvider) { | |
| this.firewallProvider = firewallProvider; | |
| } | |
| public DataCenterVO(long id, String name, String description, String dns1, String dns2, String internalDns1, String internalDns2, String guestCidr, String domain, Long domainId, | |
| NetworkType zoneType, String zoneToken, String domainSuffix) { | |
| this(name, description, dns1, dns2, internalDns1, internalDns2, guestCidr, domain, domainId, zoneType, zoneToken, domainSuffix, false, false, null, null); | |
| this.id = id; | |
| this.allocationState = Grouping.AllocationState.Enabled; | |
| this.uuid = UUID.randomUUID().toString(); | |
| } | |
| public DataCenterVO(String name, String description, String dns1, String dns2, String internalDns1, String internalDns2, String guestCidr, String domain, Long domainId, | |
| NetworkType zoneType, String zoneToken, String domainSuffix, boolean securityGroupEnabled, boolean localStorageEnabled, String ip6Dns1, String ip6Dns2) { | |
| this.name = name; | |
| this.description = description; | |
| this.dns1 = dns1; | |
| this.dns2 = dns2; | |
| this.ip6Dns1 = ip6Dns1; | |
| this.ip6Dns2 = ip6Dns2; | |
| this.internalDns1 = internalDns1; | |
| this.internalDns2 = internalDns2; | |
| this.guestNetworkCidr = guestCidr; | |
| this.domain = domain; | |
| this.domainId = domainId; | |
| this.networkType = zoneType; | |
| this.allocationState = Grouping.AllocationState.Enabled; | |
| this.securityGroupEnabled = securityGroupEnabled; | |
| this.localStorageEnabled = localStorageEnabled; | |
| if (zoneType == NetworkType.Advanced) { | |
| loadBalancerProvider = Provider.VirtualRouter.getName(); | |
| firewallProvider = Provider.VirtualRouter.getName(); | |
| dhcpProvider = Provider.VirtualRouter.getName(); | |
| dnsProvider = Provider.VirtualRouter.getName(); | |
| gatewayProvider = Provider.VirtualRouter.getName(); | |
| vpnProvider = Provider.VirtualRouter.getName(); | |
| userDataProvider = Provider.VirtualRouter.getName(); | |
| } else if (zoneType == NetworkType.Basic) { | |
| dhcpProvider = Provider.VirtualRouter.getName(); | |
| dnsProvider = Provider.VirtualRouter.getName(); | |
| userDataProvider = Provider.VirtualRouter.getName(); | |
| loadBalancerProvider = Provider.ElasticLoadBalancerVm.getName(); | |
| } | |
| this.zoneToken = zoneToken; | |
| this.domain = domainSuffix; | |
| this.uuid = UUID.randomUUID().toString(); | |
| } | |
| @Override | |
| public String getVpnProvider() { | |
| return vpnProvider; | |
| } | |
| public void setVpnProvider(String vpnProvider) { | |
| this.vpnProvider = vpnProvider; | |
| } | |
| @Override | |
| public String getUserDataProvider() { | |
| return userDataProvider; | |
| } | |
| public void setUserDataProvider(String userDataProvider) { | |
| this.userDataProvider = userDataProvider; | |
| } | |
| @Override | |
| public String getGuestNetworkCidr() { | |
| return guestNetworkCidr; | |
| } | |
| public void setGuestNetworkCidr(String guestNetworkCidr) { | |
| this.guestNetworkCidr = guestNetworkCidr; | |
| } | |
| @Override | |
| public Long getDomainId() { | |
| return domainId; | |
| } | |
| public void setDomainId(Long domainId) { | |
| this.domainId = domainId; | |
| } | |
| @Override | |
| public String getDescription() { | |
| return description; | |
| } | |
| public String getRouterMacAddress() { | |
| return routerMacAddress; | |
| } | |
| @Override | |
| public String getDns1() { | |
| return dns1; | |
| } | |
| @Override | |
| public String getDns2() { | |
| return dns2; | |
| } | |
| @Override | |
| public String getInternalDns1() { | |
| return internalDns1; | |
| } | |
| @Override | |
| public String getInternalDns2() { | |
| return internalDns2; | |
| } | |
| protected DataCenterVO() { | |
| } | |
| @Override | |
| public long getId() { | |
| return id; | |
| } | |
| @Override | |
| public String getName() { | |
| return name; | |
| } | |
| public void setName(String name) { | |
| this.name = name; | |
| } | |
| public void setDns1(String dns1) { | |
| this.dns1 = dns1; | |
| } | |
| public void setDns2(String dns2) { | |
| this.dns2 = dns2; | |
| } | |
| public void setInternalDns1(String dns3) { | |
| this.internalDns1 = dns3; | |
| } | |
| public void setInternalDns2(String dns4) { | |
| this.internalDns2 = dns4; | |
| } | |
| public void setRouterMacAddress(String routerMacAddress) { | |
| this.routerMacAddress = routerMacAddress; | |
| } | |
| @Override | |
| public String getDomain() { | |
| return domain; | |
| } | |
| public void setDomain(String domain) { | |
| this.domain = domain; | |
| } | |
| public void setNetworkType(NetworkType zoneNetworkType) { | |
| this.networkType = zoneNetworkType; | |
| } | |
| @Override | |
| public NetworkType getNetworkType() { | |
| return networkType; | |
| } | |
| @Override | |
| public boolean isSecurityGroupEnabled() { | |
| return securityGroupEnabled; | |
| } | |
| public void setSecurityGroupEnabled(boolean enabled) { | |
| this.securityGroupEnabled = enabled; | |
| } | |
| @Override | |
| public boolean isLocalStorageEnabled() { | |
| return localStorageEnabled; | |
| } | |
| public void setLocalStorageEnabled(boolean enabled) { | |
| this.localStorageEnabled = enabled; | |
| } | |
| @Override | |
| public int getSortKey() { | |
| return sortKey; | |
| } | |
| public void setSortKey(int newSortKey) { | |
| sortKey = newSortKey; | |
| } | |
| @Override | |
| public Map<String, String> getDetails() { | |
| return details; | |
| } | |
| @Override | |
| public void setDetails(Map<String, String> details2) { | |
| details = details2; | |
| } | |
| public String getDetail(String name) { | |
| return details != null ? details.get(name) : null ; | |
| } | |
| public void setDetail(String name, String value) { | |
| assert (details != null) : "Did you forget to load the details?"; | |
| details.put(name, value); | |
| } | |
| @Override | |
| public AllocationState getAllocationState() { | |
| return allocationState; | |
| } | |
| public void setAllocationState(AllocationState allocationState) { | |
| this.allocationState = allocationState; | |
| } | |
| @Override | |
| public int hashCode() { | |
| return NumbersUtil.hash(id); | |
| } | |
| @Override | |
| public boolean equals(Object obj) { | |
| if (!(obj instanceof DataCenterVO)) { | |
| return false; | |
| } | |
| DataCenterVO that = (DataCenterVO)obj; | |
| return this.id == that.id; | |
| } | |
| @Override | |
| public String getZoneToken() { | |
| return zoneToken; | |
| } | |
| public void setZoneToken(String zoneToken) { | |
| this.zoneToken = zoneToken; | |
| } | |
| public Date getRemoved() { | |
| return removed; | |
| } | |
| @Override | |
| public String getUuid() { | |
| return this.uuid; | |
| } | |
| public void setUuid(String uuid) { | |
| this.uuid = uuid; | |
| } | |
| public long getMacAddress() { | |
| return macAddress; | |
| } | |
| public void setMacAddress(long macAddress) { | |
| this.macAddress = macAddress; | |
| } | |
| @Override | |
| public String getIp6Dns1() { | |
| return ip6Dns1; | |
| } | |
| public void setIp6Dns1(String ip6Dns1) { | |
| this.ip6Dns1 = ip6Dns1; | |
| } | |
| @Override | |
| public String getIp6Dns2() { | |
| return ip6Dns2; | |
| } | |
| public void setIp6Dns2(String ip6Dns2) { | |
| this.ip6Dns2 = ip6Dns2; | |
| } | |
| @Override | |
| public PartitionType partitionType() { | |
| return PartitionType.Zone; | |
| } | |
| @Override | |
| public DataCenter.Type getType() { | |
| return type; | |
| } | |
| public void setType(Type type) { | |
| this.type = type; | |
| } | |
| public String getStorageAccessGroups() { | |
| return storageAccessGroups; | |
| } | |
| public void setStorageAccessGroups(String storageAccessGroups) { | |
| this.storageAccessGroups = storageAccessGroups; | |
| } | |
| @Override | |
| public String toString() { | |
| return String.format("Zone {\"id\": \"%s\", \"name\": \"%s\", \"uuid\": \"%s\"}", id, name, uuid); | |
| } | |
| } |