From 6f28947510b90108a130490b992d4e30d843f665 Mon Sep 17 00:00:00 2001 From: Gustavo Silveira Date: Mon, 2 Feb 2026 09:56:22 -0300 Subject: [PATCH 1/3] dynamic vm.network.throttling.rate global configuration --- .../service/NetworkOrchestrationService.java | 3 +++ .../engine/orchestration/NetworkOrchestrator.java | 2 +- server/src/main/java/com/cloud/configuration/Config.java | 8 -------- .../com/cloud/configuration/ConfigurationManagerImpl.java | 3 +-- 4 files changed, 5 insertions(+), 11 deletions(-) diff --git a/engine/api/src/main/java/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java b/engine/api/src/main/java/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java index 947cbd8e6182..94941568ff68 100644 --- a/engine/api/src/main/java/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java +++ b/engine/api/src/main/java/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java @@ -112,6 +112,9 @@ public interface NetworkOrchestrationService { ConfigKey NSX_ENABLED = new ConfigKey<>(Boolean.class, "nsx.plugin.enable", "Advanced", "false", "Indicates whether to enable the NSX plugin", false, ConfigKey.Scope.Zone, null); + ConfigKey VmNetworkThrottlingRate = new ConfigKey("Network", Integer.class, "vm.network.throttling.rate", "200", + "Default data transfer rate in megabits per second allowed in User vm's default network.", true); + ConfigKey NETRIS_ENABLED = new ConfigKey<>(Boolean.class, "netris.plugin.enable", "Advanced", "false", "Indicates whether to enable the Netris plugin", false, ConfigKey.Scope.Zone, null); ConfigKey NETWORK_LB_HAPROXY_MAX_CONN = new ConfigKey<>( diff --git a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java index 31144296f602..082f54a9fab0 100644 --- a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java +++ b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java @@ -4919,6 +4919,6 @@ public ConfigKey[] getConfigKeys() { return new ConfigKey[]{NetworkGcWait, NetworkGcInterval, NetworkLockTimeout, DeniedRoutes, GuestDomainSuffix, NetworkThrottlingRate, MinVRVersion, PromiscuousMode, MacAddressChanges, ForgedTransmits, MacLearning, RollingRestartEnabled, - TUNGSTEN_ENABLED, NSX_ENABLED, NETRIS_ENABLED, NETWORK_LB_HAPROXY_MAX_CONN}; + TUNGSTEN_ENABLED, NSX_ENABLED, NETRIS_ENABLED, NETWORK_LB_HAPROXY_MAX_CONN, VmNetworkThrottlingRate}; } } diff --git a/server/src/main/java/com/cloud/configuration/Config.java b/server/src/main/java/com/cloud/configuration/Config.java index a82ccb33a4a3..8fd98771ebc7 100644 --- a/server/src/main/java/com/cloud/configuration/Config.java +++ b/server/src/main/java/com/cloud/configuration/Config.java @@ -289,14 +289,6 @@ public enum Config { "cloud-public", "Default network label to be used when fetching interface for GRE endpoints", null), - VmNetworkThrottlingRate( - "Network", - ManagementServer.class, - Integer.class, - "vm.network.throttling.rate", - "200", - "Default data transfer rate in megabits per second allowed in User vm's default network.", - null), SecurityGroupWorkCleanupInterval( "Network", diff --git a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java index 7b171e5f996f..c434b7729d5a 100644 --- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java @@ -8242,8 +8242,7 @@ public Integer getServiceOfferingNetworkRate(final long serviceOfferingId, final if (offering.getVmType() != null && offering.getVmType().equalsIgnoreCase(VirtualMachine.Type.DomainRouter.toString())) { networkRate = NetworkOrchestrationService.NetworkThrottlingRate.valueIn(dataCenterId); } else { - networkRate = Integer.parseInt(_configDao.getValue(Config.VmNetworkThrottlingRate.key())); - } + networkRate = NetworkOrchestrationService.VmNetworkThrottlingRate.value();} } // networkRate is unsigned int in serviceOffering table, and can't be From 22dc645c58a02056a1d65e9cddc480711d85df4a Mon Sep 17 00:00:00 2001 From: Gustavo Silveira Date: Mon, 2 Feb 2026 10:48:38 -0300 Subject: [PATCH 2/3] fix curly brace --- .../java/com/cloud/configuration/ConfigurationManagerImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java index c434b7729d5a..b3aed46303fe 100644 --- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java @@ -8242,7 +8242,8 @@ public Integer getServiceOfferingNetworkRate(final long serviceOfferingId, final if (offering.getVmType() != null && offering.getVmType().equalsIgnoreCase(VirtualMachine.Type.DomainRouter.toString())) { networkRate = NetworkOrchestrationService.NetworkThrottlingRate.valueIn(dataCenterId); } else { - networkRate = NetworkOrchestrationService.VmNetworkThrottlingRate.value();} + networkRate = NetworkOrchestrationService.VmNetworkThrottlingRate.value(); + } } // networkRate is unsigned int in serviceOffering table, and can't be From 2e88c415b928e503985d1e1c2d548695647e6580 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavo=20R=C3=BCck?= Date: Fri, 29 May 2026 11:25:26 -0300 Subject: [PATCH 3/3] apply suggestions --- .../orchestration/service/NetworkOrchestrationService.java | 2 +- .../cloudstack/engine/orchestration/NetworkOrchestrator.java | 4 ++-- .../com/cloud/configuration/ConfigurationManagerImpl.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/engine/api/src/main/java/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java b/engine/api/src/main/java/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java index c97a050bfc3a..82faac77f9a8 100644 --- a/engine/api/src/main/java/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java +++ b/engine/api/src/main/java/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java @@ -113,7 +113,7 @@ public interface NetworkOrchestrationService { "Indicates whether to enable the NSX plugin", false, ConfigKey.Scope.Zone, null); ConfigKey VmNetworkThrottlingRate = new ConfigKey("Network", Integer.class, "vm.network.throttling.rate", "200", - "Default data transfer rate in megabits per second allowed in User vm's default network.", true); + "Default data transfer rate in megabits per second allowed in User vm's default network.", true, ConfigKey.Scope.Zone); ConfigKey NETRIS_ENABLED = new ConfigKey<>(Boolean.class, "netris.plugin.enable", "Advanced", "false", "Indicates whether to enable the Netris plugin", false, ConfigKey.Scope.Zone, null); diff --git a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java index 0890ddaf1019..45a85ebba8a4 100644 --- a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java +++ b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java @@ -4955,8 +4955,8 @@ public String getConfigComponentName() { @Override public ConfigKey[] getConfigKeys() { return new ConfigKey[]{NetworkGcWait, NetworkGcInterval, NetworkLockTimeout, DeniedRoutes, - GuestDomainSuffix, NetworkThrottlingRate, MinVRVersion, + GuestDomainSuffix, NetworkThrottlingRate, VmNetworkThrottlingRate, MinVRVersion, PromiscuousMode, MacAddressChanges, ForgedTransmits, MacLearning, RollingRestartEnabled, - TUNGSTEN_ENABLED, NSX_ENABLED, NETRIS_ENABLED, NETWORK_LB_HAPROXY_MAX_CONN, VmNetworkThrottlingRate}; + TUNGSTEN_ENABLED, NSX_ENABLED, NETRIS_ENABLED, NETWORK_LB_HAPROXY_MAX_CONN, NETWORK_LB_HAPROXY_IDLE_TIMEOUT}; } } diff --git a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java index b8122340f562..88e132a8136e 100644 --- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java @@ -9165,7 +9165,7 @@ public Integer getServiceOfferingNetworkRate(final long serviceOfferingId, final if (offering.getVmType() != null && offering.getVmType().equalsIgnoreCase(VirtualMachine.Type.DomainRouter.toString())) { networkRate = NetworkOrchestrationService.NetworkThrottlingRate.valueIn(dataCenterId); } else { - networkRate = NetworkOrchestrationService.VmNetworkThrottlingRate.value(); + networkRate = NetworkOrchestrationService.VmNetworkThrottlingRate.valueIn(dataCenterId); } }