L2: add default L2 network offerings (#2683)
Adds default L2 network offerings. Adds check for existing default L2 networks.
diff --git a/api/src/com/cloud/offering/NetworkOffering.java b/api/src/com/cloud/offering/NetworkOffering.java
index 0c83789..33b165b 100644
--- a/api/src/com/cloud/offering/NetworkOffering.java
+++ b/api/src/com/cloud/offering/NetworkOffering.java
@@ -57,6 +57,10 @@
public final static String DefaultIsolatedNetworkOfferingForVpcNetworks = "DefaultIsolatedNetworkOfferingForVpcNetworks";
public final static String DefaultIsolatedNetworkOfferingForVpcNetworksNoLB = "DefaultIsolatedNetworkOfferingForVpcNetworksNoLB";
public final static String DefaultIsolatedNetworkOfferingForVpcNetworksWithInternalLB = "DefaultIsolatedNetworkOfferingForVpcNetworksWithInternalLB";
+ public final static String DefaultL2NetworkOffering = "DefaultL2NetworkOffering";
+ public final static String DefaultL2NetworkOfferingVlan = "DefaultL2NetworkOfferingVlan";
+ public final static String DefaultL2NetworkOfferingConfigDrive = "DefaultL2NetworkOfferingConfigDrive";
+ public final static String DefaultL2NetworkOfferingConfigDriveVlan = "DefaultL2NetworkOfferingConfigDriveVlan";
/**
* @return name for the network offering.
diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
index 8f43646..b5aca5d 100644
--- a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
+++ b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
@@ -561,6 +561,8 @@
offering.setDedicatedLB(false);
_networkOfferingDao.update(offering.getId(), offering);
}
+
+ _networkOfferingDao.persistDefaultL2NetworkOfferings();
}
});
diff --git a/engine/schema/src/com/cloud/offerings/dao/NetworkOfferingDao.java b/engine/schema/src/com/cloud/offerings/dao/NetworkOfferingDao.java
index 19beddd..238a191 100644
--- a/engine/schema/src/com/cloud/offerings/dao/NetworkOfferingDao.java
+++ b/engine/schema/src/com/cloud/offerings/dao/NetworkOfferingDao.java
@@ -64,4 +64,9 @@
List<Long> listNetworkOfferingID();
boolean isUsingServicePackage(String uuid);
+
+ /**
+ * Create default L2 network offerings
+ */
+ void persistDefaultL2NetworkOfferings();
}
diff --git a/engine/schema/src/com/cloud/offerings/dao/NetworkOfferingDaoImpl.java b/engine/schema/src/com/cloud/offerings/dao/NetworkOfferingDaoImpl.java
index b0cf0fe..5c40795 100644
--- a/engine/schema/src/com/cloud/offerings/dao/NetworkOfferingDaoImpl.java
+++ b/engine/schema/src/com/cloud/offerings/dao/NetworkOfferingDaoImpl.java
@@ -23,6 +23,7 @@
import javax.inject.Inject;
import javax.persistence.EntityExistsException;
+import com.cloud.offerings.NetworkOfferingServiceMapVO;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Component;
@@ -52,6 +53,8 @@
private final GenericSearchBuilder<NetworkOfferingVO, Long> UpgradeSearch;
@Inject
NetworkOfferingDetailsDao _detailsDao;
+ @Inject
+ private NetworkOfferingServiceMapDao networkOfferingServiceMapDao;
protected NetworkOfferingDaoImpl() {
super();
@@ -221,4 +224,49 @@
return false;
}
+
+ /**
+ * Persist L2 deafult Network offering
+ */
+ private void persistL2DefaultNetworkOffering(String name, String displayText, boolean specifyVlan, boolean configDriveEnabled) {
+ NetworkOfferingVO offering = new NetworkOfferingVO(name, displayText, TrafficType.Guest, false, specifyVlan,
+ null, null, true, Availability.Optional, null, Network.GuestType.L2,
+ true,false, false, false, false, false);
+ offering.setState(NetworkOffering.State.Enabled);
+ persistDefaultNetworkOffering(offering);
+
+ if (configDriveEnabled) {
+ NetworkOfferingServiceMapVO offService = new NetworkOfferingServiceMapVO(offering.getId(),
+ Network.Service.UserData, Network.Provider.ConfigDrive);
+ networkOfferingServiceMapDao.persist(offService);
+ }
+ }
+
+ /**
+ * Check for default L2 Network Offerings, create them if they are not already created
+ */
+ private void checkPersistL2NetworkOffering(String name, String displayText, boolean specifyVlan, boolean configDriveEnabled) {
+ if (findByUniqueName(name) == null) {
+ persistL2DefaultNetworkOffering(name, displayText, specifyVlan, configDriveEnabled);
+ }
+ }
+
+ @Override
+ public void persistDefaultL2NetworkOfferings() {
+ checkPersistL2NetworkOffering(NetworkOffering.DefaultL2NetworkOffering,
+ "Offering for L2 networks",
+ false, false);
+
+ checkPersistL2NetworkOffering(NetworkOffering.DefaultL2NetworkOfferingVlan,
+ "Offering for L2 networks VLAN",
+ true, false);
+
+ checkPersistL2NetworkOffering(NetworkOffering.DefaultL2NetworkOfferingConfigDrive,
+ "Offering for L2 networks with config drive user data",
+ false, true);
+
+ checkPersistL2NetworkOffering(NetworkOffering.DefaultL2NetworkOfferingConfigDriveVlan,
+ "Offering for L2 networks with config drive user data VLAN",
+ true, true);
+ }
}
diff --git a/server/src/com/cloud/server/ConfigurationServerImpl.java b/server/src/com/cloud/server/ConfigurationServerImpl.java
index 197ebed..eb0dc90 100644
--- a/server/src/com/cloud/server/ConfigurationServerImpl.java
+++ b/server/src/com/cloud/server/ConfigurationServerImpl.java
@@ -1175,6 +1175,8 @@
_ntwkOfferingServiceMapDao.persist(offService);
s_logger.trace("Added service for the network offering: " + offService);
}
+
+ _networkOfferingDao.persistDefaultL2NetworkOfferings();
}
});
}