diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/NetworkOfferingBaseCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/NetworkOfferingBaseCmd.java index 1c832b7217ef..9b42be137314 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/NetworkOfferingBaseCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/NetworkOfferingBaseCmd.java @@ -216,6 +216,8 @@ public abstract class NetworkOfferingBaseCmd extends BaseCmd { description = "the routing mode for the network offering. Supported types are: Static or Dynamic.") private String routingMode; + private Map sourceDetailsMap; + ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// @@ -430,9 +432,8 @@ public Map getServiceCapabilities(Network.Service se public Map getDetails() { if (details == null || details.isEmpty()) { - return null; + return sourceDetailsMap; } - Collection paramsCollection = details.values(); Object objlist[] = paramsCollection.toArray(); Map params = (Map) (objlist[0]); diff --git a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java index 164193beeda0..837254ed8b36 100644 --- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java @@ -8486,8 +8486,11 @@ private void applySourceOfferingValuesToCloneCmd(CloneNetworkOfferingCmd cmd, private Map getSourceOfferingDetails(Long sourceOfferingId) { List sourceDetailsVOs = networkOfferingDetailsDao.listDetails(sourceOfferingId); Map sourceDetailsMap = new HashMap<>(); + Set ignoredSourceDetails = new HashSet<>(Arrays.asList(Detail.internetProtocol.name(), Detail.domainid.name(), Detail.zoneid.name())); for (NetworkOfferingDetailsVO detailVO : sourceDetailsVOs) { - sourceDetailsMap.put(detailVO.getName(), detailVO.getValue()); + if (!ignoredSourceDetails.contains(detailVO.getName())) { + sourceDetailsMap.put(detailVO.getName(), detailVO.getValue()); + } } return sourceDetailsMap; } @@ -8635,7 +8638,7 @@ private void applyResolvedValuesToCommand(CloneNetworkOfferingCmd cmd, NetworkOf if (cmd.getDetails() == null || cmd.getDetails().isEmpty()) { if (!sourceDetailsMap.isEmpty()) { - setField(cmd, "details", sourceDetailsMap); + setField(cmd, "sourceDetailsMap", sourceDetailsMap); } }