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

pearl11594 pushed a commit to branch change-cp-settings-to-zonelevel
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to 
refs/heads/change-cp-settings-to-zonelevel by this push:
     new 317696fb88a move most console proxy setting to zone level
317696fb88a is described below

commit 317696fb88a0cac621db648f8ed6c7dcccdac210
Author: Pearl Dsilva <[email protected]>
AuthorDate: Thu Aug 7 15:06:49 2025 -0400

    move most console proxy setting to zone level
---
 .../AgentBasedConsoleProxyManager.java             |  2 +-
 .../cloud/consoleproxy/ConsoleProxyManager.java    |  8 +--
 .../consoleproxy/ConsoleProxyManagerImpl.java      | 78 ++++++++++------------
 .../consoleproxy/ConsoleAccessManagerImpl.java     |  2 +-
 4 files changed, 40 insertions(+), 50 deletions(-)

diff --git 
a/server/src/main/java/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java
 
b/server/src/main/java/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java
index 47c873a0780..a65d54e5346 100644
--- 
a/server/src/main/java/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java
+++ 
b/server/src/main/java/com/cloud/consoleproxy/AgentBasedConsoleProxyManager.java
@@ -191,7 +191,7 @@ public class AgentBasedConsoleProxyManager extends 
ManagerBase implements Consol
     }
 
     @Override
-    public int getVncPort() {
+    public int getVncPort(Long dataCenterId) {
         return _consoleProxyPort;
     }
 
diff --git 
a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManager.java 
b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManager.java
index 1b585f12d1a..f804f99253d 100644
--- a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManager.java
+++ b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManager.java
@@ -56,11 +56,11 @@ public interface ConsoleProxyManager extends Manager, 
ConsoleProxyService {
     ConfigKey<Boolean> NoVncConsoleSourceIpCheckEnabled = new 
ConfigKey<>(ConfigKey.CATEGORY_ADVANCED, Boolean.class, 
"novnc.console.sourceip.check.enabled", "false",
         "If true, The source IP to access novnc console must be same as the IP 
in request to management server for console URL. Needs to reconnect CPVM to 
management server when this changes (via restart CPVM, or management server, or 
cloud service in CPVM)", false);
 
-    ConfigKey<String> ConsoleProxyCapacityStandby = new 
ConfigKey<>(String.class, "consoleproxy.capacity.standby", "Console Proxy", 
"10",
+    ConfigKey<String> ConsoleProxyCapacityStandby = new 
ConfigKey<>(String.class, "consoleproxy.capacity.standby", "Console Proxy", 
String.valueOf(DEFAULT_STANDBY_CAPACITY),
             "The minimal number of console proxy viewer sessions that system 
is able to serve immediately(standby capacity)", false, ConfigKey.Scope.Zone, 
null);
 
     ConfigKey<String> ConsoleProxyCapacityScanInterval = new 
ConfigKey<>(String.class, "consoleproxy.capacityscan.interval", "Console 
Proxy", "30000",
-            "The time interval(in millisecond) to scan whether or not system 
needs more console proxy to ensure minimal standby capacity", false, 
ConfigKey.Scope.Zone, null);
+            "The time interval(in millisecond) to scan whether or not system 
needs more console proxy to ensure minimal standby capacity", false, null);
 
     ConfigKey<Integer> ConsoleProxyCmdPort = new ConfigKey<>(Integer.class, 
"consoleproxy.cmd.port", "Console Proxy", 
String.valueOf(DEFAULT_PROXY_CMD_PORT),
             "Console proxy command port that is used to communicate with 
management server", false, ConfigKey.Scope.Zone, null);
@@ -74,7 +74,7 @@ public interface ConsoleProxyManager extends Manager, 
ConsoleProxyService {
     ConfigKey<Integer> ConsoleProxySessionMax = new ConfigKey<>(Integer.class, 
"consoleproxy.session.max", "Console Proxy", 
String.valueOf(DEFAULT_PROXY_CAPACITY),
             "The max number of viewer sessions console proxy is configured to 
serve for", false, ConfigKey.Scope.Zone, null);
 
-    ConfigKey<Integer> ConsoleProxySessionTimeout = new 
ConfigKey<>(Integer.class, "consoleproxy.session.timeout", "Console Proxy", 
"300000",
+    ConfigKey<Integer> ConsoleProxySessionTimeout = new 
ConfigKey<>(Integer.class, "consoleproxy.session.timeout", "Console Proxy", 
String.valueOf(DEFAULT_PROXY_SESSION_TIMEOUT),
             "Timeout(in milliseconds) that console proxy tries to maintain a 
viewer session before it times out the session for no activity", false, 
ConfigKey.Scope.Zone, null);
 
     ConfigKey<Boolean> ConsoleProxyDisableRpFilter = new 
ConfigKey<>(Boolean.class, "consoleproxy.disable.rpfilter", "Console Proxy", 
"true",
@@ -108,6 +108,6 @@ public interface ConsoleProxyManager extends Manager, 
ConsoleProxyService {
 
     boolean destroyProxy(long proxyVmId);
 
-    int getVncPort();
+    int getVncPort(Long dataCenterId);
 
 }
diff --git 
a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java 
b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
index 097ad6dc179..fbf72d074b2 100644
--- a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
+++ b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
@@ -233,17 +233,10 @@ public class ConsoleProxyManagerImpl extends ManagerBase 
implements ConsoleProxy
     private ServiceOfferingVO serviceOfferingVO;
 
     private long capacityScanInterval = 
DEFAULT_CAPACITY_SCAN_INTERVAL_IN_MILLISECONDS;
-    private int capacityPerProxy = ConsoleProxyManager.DEFAULT_PROXY_CAPACITY;
-    private int standbyCapacity = ConsoleProxyManager.DEFAULT_STANDBY_CAPACITY;
 
     private boolean useStorageVm;
-    private boolean disableRpFilter = false;
     private String instance;
 
-    private int proxySessionTimeoutValue = DEFAULT_PROXY_SESSION_TIMEOUT;
-    private boolean sslEnabled = false;
-    private String consoleProxyUrlDomain;
-
     private SystemVmLoadScanner<Long> loadScanner;
     private Map<Long, ZoneHostInfo> zoneHostInfoMap;
     private Map<Long, ConsoleProxyLoadInfo> zoneProxyCountMap;
@@ -342,7 +335,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase 
implements ConsoleProxy
             logger.warn(String.format("SSL is enabled for console proxy [%s] 
but no server certificate found in database.", proxy.toString()));
         }
 
-        consoleProxyUrlDomain = ConsoleProxyUrlDomain.valueIn(dataCenterId);
+        String consoleProxyUrlDomain = 
ConsoleProxyUrlDomain.valueIn(dataCenterId);
         ConsoleProxyInfo info;
         if (staticPublicIp == null) {
             info = new ConsoleProxyInfo(proxy.isSslEnabled(), 
proxy.getPublicIpAddress(), consoleProxyPort, proxy.getPort(), 
consoleProxyUrlDomain);
@@ -375,6 +368,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase 
implements ConsoleProxy
                             }
                             proxy = null;
                         } else {
+                            long capacityPerProxy = 
ConsoleProxySessionMax.valueIn(dataCenterId);
                             if 
(consoleProxyDao.getProxyActiveLoad(proxy.getId()) < capacityPerProxy || 
hasPreviousSession(proxy, vm)) {
                                 if (logger.isDebugEnabled()) {
                                     logger.debug("Assign previous allocated 
console proxy for user vm: {}", vm);
@@ -409,7 +403,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase 
implements ConsoleProxy
         if (vm.getProxyId() == null || vm.getProxyId() != proxy.getId()) {
             vmInstanceDao.updateProxyId(vm.getId(), proxy.getId(), 
DateUtil.currentGMTTime());
         }
-
+        boolean sslEnabled = isSslEnabled(dataCenterId);
         proxy.setSslEnabled(sslEnabled);
         if (sslEnabled) {
             proxy.setPort(443);
@@ -452,6 +446,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase 
implements ConsoleProxy
                 }
             }
 
+            Integer proxySessionTimeoutValue = 
ConsoleProxySessionTimeout.valueIn(proxy.getDataCenterId());
             return DateUtil.currentGMTTime().getTime() - 
vm.getProxyAssignTime().getTime() < proxySessionTimeoutValue;
         } else {
             logger.warn(String.format("Unable to retrieve load info from proxy 
[%s] on an overloaded proxy.", proxy.toString()));
@@ -501,6 +496,8 @@ public class ConsoleProxyManagerImpl extends ManagerBase 
implements ConsoleProxy
             logger.debug("Assign console proxy from running pool for request 
from data center: {}", zone);
         }
 
+        long capacityPerProxy = ConsoleProxySessionMax.valueIn(dataCenterId);
+
         ConsoleProxyAllocator allocator = getCurrentAllocator();
         assert (allocator != null);
         List<ConsoleProxyVO> runningList = 
consoleProxyDao.getProxyListInStates(dataCenterId, State.Running);
@@ -820,8 +817,9 @@ public class ConsoleProxyManagerImpl extends ManagerBase 
implements ConsoleProxy
         return l.size() < launchLimit;
     }
 
-    private boolean checkCapacity(ConsoleProxyLoadInfo proxyCountInfo, 
ConsoleProxyLoadInfo vmCountInfo) {
-        return proxyCountInfo.getCount() * capacityPerProxy - 
vmCountInfo.getCount() > standbyCapacity;
+    private boolean checkCapacity(ConsoleProxyLoadInfo proxyCountInfo, 
ConsoleProxyLoadInfo vmCountInfo, long dataCenterId) {
+        long capacityPerProxy = ConsoleProxySessionMax.valueIn(dataCenterId);
+        return proxyCountInfo.getCount() * capacityPerProxy - 
vmCountInfo.getCount() > getStandbyCapacity(dataCenterId);
     }
 
     private void allocCapacity(long dataCenterId) {
@@ -1118,8 +1116,8 @@ public class ConsoleProxyManagerImpl extends ManagerBase 
implements ConsoleProxy
     }
 
     @Override
-    public int getVncPort() {
-        return sslEnabled && 
_ksDao.findByName(ConsoleProxyManager.CERTIFICATE_NAME) != null ? 8443 : 8080;
+    public int getVncPort(Long dataCenterId) {
+        return isSslEnabled(dataCenterId) && 
_ksDao.findByName(ConsoleProxyManager.CERTIFICATE_NAME) != null ? 8443 : 8080;
     }
 
     private String getAllocProxyLockName() {
@@ -1136,44 +1134,20 @@ public class ConsoleProxyManagerImpl extends 
ManagerBase implements ConsoleProxy
         for (Map.Entry<String, String> entry : configs.entrySet()) {
             logger.info("PEARL - Configure console proxy manager : " + 
entry.getKey() + " = " + entry.getValue());
         }
-        String value = configs.get(ConsoleProxySslEnabled.key());
-        if (value != null && value.equalsIgnoreCase("true")) {
-            sslEnabled = true;
-        }
 
-        consoleProxyUrlDomain = ConsoleProxyUrlDomain.value();
-        if( sslEnabled && (consoleProxyUrlDomain == null || 
consoleProxyUrlDomain.isEmpty())) {
-            logger.warn("Empty console proxy domain, explicitly disabling 
SSL");
-            sslEnabled = false;
-        }
-
-        value = ConsoleProxyCapacityScanInterval.value();
+        String value = ConsoleProxyCapacityScanInterval.value();
         capacityScanInterval = NumbersUtil.parseLong(value, 
DEFAULT_CAPACITY_SCAN_INTERVAL_IN_MILLISECONDS);
 
-        capacityPerProxy = 
NumbersUtil.parseInt(configs.get("consoleproxy.session.max"), 
DEFAULT_PROXY_CAPACITY);
-        standbyCapacity = 
NumbersUtil.parseInt(ConsoleProxyCapacityStandby.value(), 
DEFAULT_STANDBY_CAPACITY);
-        proxySessionTimeoutValue = 
NumbersUtil.parseInt(configs.get("consoleproxy.session.timeout"), 
DEFAULT_PROXY_SESSION_TIMEOUT);
-
         value = configs.get("consoleproxy.port");
         if (value != null) {
             consoleProxyPort = NumbersUtil.parseInt(value, 
ConsoleProxyManager.DEFAULT_PROXY_VNC_PORT);
         }
 
-        Boolean rpFilterDisabled = ConsoleProxyDisableRpFilter.value();
-        if (Boolean.TRUE.equals(rpFilterDisabled)) {
-            disableRpFilter = true;
-        }
-
         value = configs.get("secondary.storage.vm");
         if (value != null && value.equalsIgnoreCase("true")) {
             useStorageVm = true;
         }
 
-        if (logger.isInfoEnabled()) {
-            logger.info("Console proxy max session soft limit : " + 
capacityPerProxy);
-            logger.info("Console proxy standby capacity : " + standbyCapacity);
-        }
-
         instance = configs.get("instance.name");
         if (instance == null) {
             instance = "DEFAULT";
@@ -1255,7 +1229,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase 
implements ConsoleProxy
         buf.append(" 
host=").append(StringUtils.toCSVList(indirectAgentLB.getManagementServerList(dest.getHost().getId(),
 dest.getDataCenter().getId(), null)));
         buf.append(" port=").append(managementPort);
         buf.append(" name=").append(profile.getVirtualMachine().getHostName());
-        if (sslEnabled) {
+        if (isSslEnabled(dest.getDataCenter().getId())) {
             buf.append(" premium=true");
         }
         Long datacenterId = dest.getDataCenter().getId();
@@ -1263,8 +1237,8 @@ public class ConsoleProxyManagerImpl extends ManagerBase 
implements ConsoleProxy
         buf.append(" pod=").append(dest.getPod().getId());
         buf.append(" guid=Proxy.").append(profile.getId());
         buf.append(" proxy_vm=").append(profile.getId());
-        disableRpFilter = ConsoleProxyDisableRpFilter.valueIn(datacenterId);
-        if (disableRpFilter) {
+        Boolean disableRpFilter = 
ConsoleProxyDisableRpFilter.valueIn(datacenterId);
+        if (Boolean.TRUE.equals(disableRpFilter)) {
             buf.append(" disable_rp_filter=true");
         }
 
@@ -1324,7 +1298,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase 
implements ConsoleProxy
             buf.append(" dns2=").append(dc.getDns2());
         }
         if (VirtualMachine.Type.ConsoleProxy == 
profile.getVirtualMachine().getType()) {
-            buf.append(" vncport=").append(getVncPort());
+            buf.append(" vncport=").append(getVncPort(datacenterId));
         }
         buf.append(" 
keystore_password=").append(VirtualMachineGuru.getEncodedString(PasswordGenerator.generateRandomPassword(16)));
         String bootArgs = buf.toString();
@@ -1557,7 +1531,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase 
implements ConsoleProxy
             vmInfo = new ConsoleProxyLoadInfo();
         }
 
-        if (!checkCapacity(proxyInfo, vmInfo)) {
+        if (!checkCapacity(proxyInfo, vmInfo, dataCenterId)) {
             if (logger.isDebugEnabled()) {
                 logger.debug("Expand console proxy standby capacity for zone " 
+ proxyInfo.getName());
             }
@@ -1632,7 +1606,9 @@ public class ConsoleProxyManagerImpl extends ManagerBase 
implements ConsoleProxy
 
     @Override
     public ConfigKey<?>[] getConfigKeys() {
-        return new ConfigKey<?>[] { ConsoleProxySslEnabled, 
NoVncConsoleDefault, NoVncConsoleSourceIpCheckEnabled };
+        return new ConfigKey<?>[] { ConsoleProxySslEnabled, 
NoVncConsoleDefault, NoVncConsoleSourceIpCheckEnabled,
+                ConsoleProxyCapacityStandby, ConsoleProxyCapacityScanInterval, 
ConsoleProxyCmdPort, ConsoleProxyRestart, ConsoleProxyUrlDomain, 
ConsoleProxySessionMax, ConsoleProxySessionTimeout, 
ConsoleProxyDisableRpFilter, ConsoleProxyLaunchMax,
+                ConsoleProxyManagementLastState, 
ConsoleProxyServiceManagementState };
     }
 
     protected ConsoleProxyStatus parseJsonToConsoleProxyStatus(String json) 
throws JsonParseException {
@@ -1666,4 +1642,18 @@ public class ConsoleProxyManagerImpl extends ManagerBase 
implements ConsoleProxy
 
         consoleProxyDao.update(proxyVmId, count, DateUtil.currentGMTTime(), 
details);
     }
+
+    private boolean isSslEnabled(Long dataCenterId) {
+        boolean sslEnabled = ConsoleProxySslEnabled.valueIn(dataCenterId);
+        String consoleProxyUrlDomain = 
ConsoleProxyUrlDomain.valueIn(dataCenterId);
+        if( sslEnabled && (consoleProxyUrlDomain == null || 
consoleProxyUrlDomain.isEmpty())) {
+            logger.warn("Empty console proxy domain, explicitly disabling 
SSL");
+            sslEnabled = false;
+        }
+        return sslEnabled;
+    }
+
+    private Integer getStandbyCapacity(Long datacenterId) {
+        return 
Integer.parseInt(ConsoleProxyCapacityStandby.valueIn(datacenterId));
+    }
 }
diff --git 
a/server/src/main/java/org/apache/cloudstack/consoleproxy/ConsoleAccessManagerImpl.java
 
b/server/src/main/java/org/apache/cloudstack/consoleproxy/ConsoleAccessManagerImpl.java
index 306023a2263..aeb5f8a8b46 100644
--- 
a/server/src/main/java/org/apache/cloudstack/consoleproxy/ConsoleAccessManagerImpl.java
+++ 
b/server/src/main/java/org/apache/cloudstack/consoleproxy/ConsoleAccessManagerImpl.java
@@ -476,7 +476,7 @@ public class ConsoleAccessManagerImpl extends ManagerBase 
implements ConsoleAcce
         ConsoleProxyClientParam param = 
generateConsoleProxyClientParam(parsedHostInfo, port, sid, tag, ticket,
                 sessionUuid, addr, extraSecurityToken, vm, hostVo, details, 
portInfo, host, displayName);
         String token = encryptor.encryptObject(ConsoleProxyClientParam.class, 
param);
-        int vncPort = consoleProxyManager.getVncPort();
+        int vncPort = consoleProxyManager.getVncPort(vm.getDataCenterId());
 
         String url = generateConsoleAccessUrl(rootUrl, param, token, vncPort, 
vm, hostVo, details);
 

Reply via email to