This is an automated email from the ASF dual-hosted git repository.

winterhazel pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/main by this push:
     new 7900b2715a2 server: fix clone network offerings with detail 
internetProtocol=IPv4 (#13615)
7900b2715a2 is described below

commit 7900b2715a2b79f41582a64a514f06000242d623
Author: Wei Zhou <[email protected]>
AuthorDate: Mon Jul 20 17:35:11 2026 +0200

    server: fix clone network offerings with detail internetProtocol=IPv4 
(#13615)
    
    Co-authored-by: Copilot Autofix powered by AI 
<[email protected]>
---
 .../api/command/admin/network/NetworkOfferingBaseCmd.java          | 5 +++--
 .../java/com/cloud/configuration/ConfigurationManagerImpl.java     | 7 +++++--
 2 files changed, 8 insertions(+), 4 deletions(-)

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 1c832b7217e..9b42be13731 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<String, String> sourceDetailsMap;
+
     /////////////////////////////////////////////////////
     /////////////////// Accessors ///////////////////////
     /////////////////////////////////////////////////////
@@ -430,9 +432,8 @@ public abstract class NetworkOfferingBaseCmd extends 
BaseCmd {
 
     public Map<String, String> getDetails() {
         if (details == null || details.isEmpty()) {
-            return null;
+            return sourceDetailsMap;
         }
-
         Collection paramsCollection = details.values();
         Object objlist[] = paramsCollection.toArray();
         Map<String, String> params = (Map<String, String>) (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 164193beeda..837254ed8b3 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 @@ public class ConfigurationManagerImpl extends 
ManagerBase implements Configurati
     private Map<String, String> getSourceOfferingDetails(Long 
sourceOfferingId) {
         List<NetworkOfferingDetailsVO> sourceDetailsVOs = 
networkOfferingDetailsDao.listDetails(sourceOfferingId);
         Map<String, String> sourceDetailsMap = new HashMap<>();
+        Set<String> 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 @@ public class ConfigurationManagerImpl extends ManagerBase 
implements Configurati
 
             if (cmd.getDetails() == null || cmd.getDetails().isEmpty()) {
                 if (!sourceDetailsMap.isEmpty()) {
-                    setField(cmd, "details", sourceDetailsMap);
+                    setField(cmd, "sourceDetailsMap", sourceDetailsMap);
                 }
             }
 

Reply via email to