diff --git a/client/tomcatconf/components.xml.in b/client/tomcatconf/components.xml.in
index 7164a764dd5..f1e4c58fc26 100755
--- a/client/tomcatconf/components.xml.in
+++ b/client/tomcatconf/components.xml.in
@@ -94,5 +94,8 @@
+
+
+
diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java
index decb09cb5ac..09672d48abe 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -46,7 +46,6 @@ import com.cloud.api.commands.AddVpnUserCmd;
import com.cloud.api.commands.AssociateIPAddrCmd;
import com.cloud.api.commands.CreateNetworkCmd;
import com.cloud.api.commands.CreateRemoteAccessVpnCmd;
-import com.cloud.api.commands.DeleteNetworkCmd;
import com.cloud.api.commands.DeleteRemoteAccessVpnCmd;
import com.cloud.api.commands.DisassociateIPAddrCmd;
import com.cloud.api.commands.ListNetworksCmd;
diff --git a/server/src/com/cloud/network/guru/DirectNetworkGuru.java b/server/src/com/cloud/network/guru/DirectNetworkGuru.java
index a9ff7489a6d..9d8492461b5 100644
--- a/server/src/com/cloud/network/guru/DirectNetworkGuru.java
+++ b/server/src/com/cloud/network/guru/DirectNetworkGuru.java
@@ -51,7 +51,7 @@ public class DirectNetworkGuru extends AdapterBase implements NetworkGuru {
@Override
public Network design(NetworkOffering offering, DeploymentPlan plan, Network userSpecified, Account owner) {
- if (!(offering.getTrafficType() == TrafficType.Public && offering.getGuestIpType() == GuestIpType.Direct)) {
+ if (!(offering.getTrafficType() == TrafficType.Public && (offering.getGuestIpType() == GuestIpType.Direct || offering.getGuestIpType() == GuestIpType.DirectPodBased))) {
s_logger.trace("We only take care of public direct network, so this is no ours");
return null;
}
diff --git a/server/src/com/cloud/server/ConfigurationServerImpl.java b/server/src/com/cloud/server/ConfigurationServerImpl.java
index e4c69d988c8..cf06cb39e68 100644
--- a/server/src/com/cloud/server/ConfigurationServerImpl.java
+++ b/server/src/com/cloud/server/ConfigurationServerImpl.java
@@ -30,6 +30,7 @@ import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.sql.PreparedStatement;
import java.sql.SQLException;
+import java.util.HashMap;
import java.util.List;
import java.util.Properties;
import java.util.UUID;
@@ -52,7 +53,16 @@ import com.cloud.domain.DomainVO;
import com.cloud.domain.dao.DomainDao;
import com.cloud.exception.InternalErrorException;
import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.network.Network.State;
+import com.cloud.network.NetworkVO;
+import com.cloud.network.Networks.BroadcastDomainType;
+import com.cloud.network.Networks.Mode;
+import com.cloud.network.Networks.TrafficType;
+import com.cloud.network.dao.NetworkDao;
import com.cloud.offering.NetworkOffering;
+import com.cloud.offering.NetworkOffering.GuestIpType;
+import com.cloud.offerings.NetworkOfferingVO;
+import com.cloud.offerings.dao.NetworkOfferingDao;
import com.cloud.service.ServiceOfferingVO;
import com.cloud.service.dao.ServiceOfferingDao;
import com.cloud.storage.DiskOfferingVO;
@@ -78,6 +88,9 @@ public class ConfigurationServerImpl implements ConfigurationServer {
private final DiskOfferingDao _diskOfferingDao;
private final ServiceOfferingDao _serviceOfferingDao;
private final DomainDao _domainDao;
+ private final NetworkOfferingDao _networkOfferingDao;
+ private final DataCenterDao _dataCenterDao;
+ private final NetworkDao _networkDao;
public ConfigurationServerImpl() {
@@ -88,7 +101,10 @@ public class ConfigurationServerImpl implements ConfigurationServer {
_podDao = locator.getDao(HostPodDao.class);
_diskOfferingDao = locator.getDao(DiskOfferingDao.class);
_serviceOfferingDao = locator.getDao(ServiceOfferingDao.class);
+ _networkOfferingDao = locator.getDao(NetworkOfferingDao.class);
_domainDao = locator.getDao(DomainDao.class);
+ _dataCenterDao = locator.getDao(DataCenterDao.class);
+ _networkDao = locator.getDao(NetworkDao.class);
}
@Override
@@ -224,6 +240,13 @@ public class ConfigurationServerImpl implements ConfigurationServer {
// generate a single sign-on key
updateSSOKey();
+
+ //Create default network offerings
+ createDefaultNetworkOfferings();
+
+ //Create default networks
+ createDefaultNetworks();
+
}
// store the public and private keys in the database
@@ -234,7 +257,7 @@ public class ConfigurationServerImpl implements ConfigurationServer {
// Update the cloud identifier
updateCloudIdentifier();
-
+
// Set init to true
_configDao.update("init", "true");
}
@@ -684,4 +707,89 @@ public class ConfigurationServerImpl implements ConfigurationServer {
return tags;
}
+
+ private void createDefaultNetworkOfferings() {
+ Integer rateMbps = getIntegerConfigValue(Config.NetworkThrottlingRate.key(), null);
+ Integer multicastRateMbps = getIntegerConfigValue(Config.MulticastThrottlingRate.key(), null);
+
+ NetworkOfferingVO publicNetworkOffering = new NetworkOfferingVO(NetworkOfferingVO.SystemVmPublicNetwork, TrafficType.Public, null);
+ publicNetworkOffering = _networkOfferingDao.persistDefaultNetworkOffering(publicNetworkOffering);
+ NetworkOfferingVO managementNetworkOffering = new NetworkOfferingVO(NetworkOfferingVO.SystemVmManagementNetwork, TrafficType.Management, null);
+ managementNetworkOffering = _networkOfferingDao.persistDefaultNetworkOffering(managementNetworkOffering);
+ NetworkOfferingVO controlNetworkOffering = new NetworkOfferingVO(NetworkOfferingVO.SystemVmControlNetwork, TrafficType.Control, null);
+ controlNetworkOffering = _networkOfferingDao.persistDefaultNetworkOffering(controlNetworkOffering);
+ NetworkOfferingVO storageNetworkOffering = new NetworkOfferingVO(NetworkOfferingVO.SystemVmStorageNetwork, TrafficType.Storage, null);
+ storageNetworkOffering = _networkOfferingDao.persistDefaultNetworkOffering(storageNetworkOffering);
+ NetworkOfferingVO defaultGuestNetworkOffering = new NetworkOfferingVO(NetworkOffering.DefaultVirtualizedNetworkOffering, "Virtual Vlan", TrafficType.Guest, GuestIpType.Virtual, false, false, rateMbps, multicastRateMbps, null, true);
+ defaultGuestNetworkOffering = _networkOfferingDao.persistDefaultNetworkOffering(defaultGuestNetworkOffering);
+ NetworkOfferingVO defaultGuestDirectNetworkOffering = new NetworkOfferingVO(NetworkOffering.DefaultDirectNetworkOffering, "Direct", TrafficType.Public, GuestIpType.Direct, false, false, rateMbps, multicastRateMbps, null, true);
+ defaultGuestNetworkOffering = _networkOfferingDao.persistDefaultNetworkOffering(defaultGuestDirectNetworkOffering);
+ NetworkOfferingVO defaultGuestDirectPodBasedNetworkOffering = new NetworkOfferingVO(NetworkOffering.DefaultDirectPodBasedNetworkOffering, "DirectPodBased", TrafficType.Public, GuestIpType.DirectPodBased, true, false, rateMbps, multicastRateMbps, null, true);
+ defaultGuestNetworkOffering = _networkOfferingDao.persistDefaultNetworkOffering(defaultGuestDirectPodBasedNetworkOffering);
+ }
+
+ private Integer getIntegerConfigValue(String configKey, Integer dflt) {
+ String value = _configDao.getValue(configKey);
+ if (value != null) {
+ return Integer.parseInt(value);
+ }
+ return dflt;
+ }
+
+ private void createDefaultNetworks() {
+ List zones = _dataCenterDao.listAll();
+ long id = 1;
+
+ HashMap guruNames = new HashMap();
+ guruNames.put(TrafficType.Public, "PublicNetworkGuru-com.cloud.network.guru.PublicNetworkGuru");
+ guruNames.put(TrafficType.Management, "PodBasedNetworkGuru-com.cloud.network.guru.PodBasedNetworkGuru");
+ guruNames.put(TrafficType.Control, "ControlNetworkGuru-com.cloud.network.guru.ControlNetworkGuru");
+ guruNames.put(TrafficType.Storage, "PodBasedNetworkGuru-com.cloud.network.guru.PodBasedNetworkGuru");
+
+ for (DataCenterVO zone : zones) {
+ long zoneId = zone.getId();
+ long accountId = 1L;
+ Long domainId = zone.getDomainId();
+
+ if (domainId == null) {
+ domainId = 1L;
+ }
+ //Create default networks - system only
+ List ntwkOff = _networkOfferingDao.listSystemNetworkOfferings();
+
+ for (NetworkOfferingVO offering : ntwkOff) {
+ if (offering.isSystemOnly()) {
+ long related = id;
+ long networkOfferingId = offering.getId();
+ Mode mode = Mode.Static;
+
+ BroadcastDomainType broadcastDomainType = null;
+ TrafficType trafficType= offering.getTrafficType();
+ GuestIpType guestIpType = offering.getGuestIpType();
+ if (offering.getGuestIpType() != GuestIpType.DirectPodBased) {
+ if (trafficType == TrafficType.Management || trafficType == TrafficType.Storage) {
+ broadcastDomainType = BroadcastDomainType.Native;
+ } else if (trafficType == TrafficType.Public) {
+ broadcastDomainType = BroadcastDomainType.Vlan;
+ } else if (trafficType == TrafficType.Control) {
+ broadcastDomainType = BroadcastDomainType.LinkLocal;
+ }
+ } else if (zone.getNetworkType() == NetworkType.Basic && offering.getGuestIpType() == GuestIpType.DirectPodBased){
+ broadcastDomainType = BroadcastDomainType.Vlan;
+ }
+
+ if (broadcastDomainType != null) {
+ NetworkVO network = new NetworkVO(id, trafficType, guestIpType, mode, broadcastDomainType, networkOfferingId, zoneId, domainId, accountId, related, null, null, true);
+ network.setGuruName(guruNames.get(network.getTrafficType()));
+ network.setDns1(zone.getDns1());
+ network.setDns2(zone.getDns2());
+ network.setState(State.Implemented);
+ _networkDao.persist(network, false);
+ id++;
+ }
+ }
+ }
+ }
+ }
+
}
diff --git a/setup/db/create-schema.sql b/setup/db/create-schema.sql
index 5f7412987bf..a14cc705742 100755
--- a/setup/db/create-schema.sql
+++ b/setup/db/create-schema.sql
@@ -296,7 +296,7 @@ INSERT INTO `cloud`.`sequence` (name, value) VALUES ('public_mac_address_seq', 1
INSERT INTO `cloud`.`sequence` (name, value) VALUES ('private_mac_address_seq', 1);
INSERT INTO `cloud`.`sequence` (name, value) VALUES ('storage_pool_seq', 200);
INSERT INTO `cloud`.`sequence` (name, value) VALUES ('volume_seq', 1);
-INSERT INTO `cloud`.`sequence` (name, value) VALUES ('networks_seq', 1);
+INSERT INTO `cloud`.`sequence` (name, value) VALUES ('networks_seq', 200);
INSERT INTO `cloud`.`sequence` (name, value) VALUES ('snapshots_seq', 1);
CREATE TABLE `cloud`.`volumes` (