This is an automated email from the ASF dual-hosted git repository.
dahn pushed a commit to branch 4.20
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.20 by this push:
new 890386e9499 Allow custom NTP servers for CPVM (#11210)
890386e9499 is described below
commit 890386e9499f0e8582cb0af15db66ab709731457
Author: Pearl Dsilva <[email protected]>
AuthorDate: Fri Jul 25 09:21:06 2025 -0400
Allow custom NTP servers for CPVM (#11210)
---
engine/api/src/main/java/com/cloud/vm/VirtualMachineGuru.java | 4 ++++
.../main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java | 6 +++++-
.../cloudstack/secondarystorage/SecondaryStorageManagerImpl.java | 5 +----
systemvm/debian/opt/cloud/bin/setup/common.sh | 6 +++---
systemvm/debian/opt/cloud/bin/setup/consoleproxy.sh | 4 ++++
systemvm/debian/opt/cloud/bin/setup/secstorage.sh | 1 +
6 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/engine/api/src/main/java/com/cloud/vm/VirtualMachineGuru.java
b/engine/api/src/main/java/com/cloud/vm/VirtualMachineGuru.java
index f8032bf4b0e..76f0830f369 100644
--- a/engine/api/src/main/java/com/cloud/vm/VirtualMachineGuru.java
+++ b/engine/api/src/main/java/com/cloud/vm/VirtualMachineGuru.java
@@ -24,6 +24,7 @@ import com.cloud.utils.PasswordGenerator;
import com.cloud.utils.exception.CloudRuntimeException;
import org.apache.cloudstack.ca.CAManager;
import org.apache.cloudstack.framework.ca.Certificate;
+import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.cloudstack.utils.security.CertUtils;
import org.apache.cloudstack.utils.security.KeyStoreUtils;
@@ -37,6 +38,9 @@ import java.util.Base64;
*/
public interface VirtualMachineGuru {
+ static final ConfigKey<String> NTPServerConfig = new
ConfigKey<String>(String.class, "ntp.server.list", "Advanced", null,
+ "Comma separated list of NTP servers to configure in System VMs",
true, ConfigKey.Scope.Global, null, null, null, null, null, ConfigKey.Kind.CSV,
null);
+
boolean finalizeVirtualMachineProfile(VirtualMachineProfile profile,
DeployDestination dest, ReservationContext context);
/**
diff --git
a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
index 5baed2643c9..22cfe785edf 100644
--- a/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
+++ b/server/src/main/java/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
@@ -1276,6 +1276,10 @@ public class ConsoleProxyManagerImpl extends ManagerBase
implements ConsoleProxy
buf.append("
vmpassword=").append(configurationDao.getValue("system.vm.password"));
}
+ if (StringUtils.isNotEmpty(NTPServerConfig.value())) {
+ buf.append("
ntpserverlist=").append(NTPServerConfig.value().replaceAll("\\s+",""));
+ }
+
for (NicProfile nic : profile.getNics()) {
int deviceId = nic.getDeviceId();
if (nic.getIPv4Address() == null) {
@@ -1506,7 +1510,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase
implements ConsoleProxy
public Long[] getScannablePools() {
List<Long> zoneIds = dataCenterDao.listEnabledNonEdgeZoneIds();
if (logger.isDebugEnabled()) {
- logger.debug(String.format("Enabled non-edge zones available for
scan: %s", org.apache.commons.lang3.StringUtils.join(zoneIds, ",")));
+ logger.debug(String.format("Enabled non-edge zones available for
scan: %s", StringUtils.join(zoneIds, ",")));
}
return zoneIds.toArray(Long[]::new);
}
diff --git
a/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java
b/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java
index 25d43388b65..1c732de6a55 100644
---
a/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java
+++
b/services/secondary-storage/controller/src/main/java/org/apache/cloudstack/secondarystorage/SecondaryStorageManagerImpl.java
@@ -268,9 +268,6 @@ public class SecondaryStorageManagerImpl extends
ManagerBase implements Secondar
private final GlobalLock _allocLock =
GlobalLock.getInternLock(getAllocLockName());
- static final ConfigKey<String> NTPServerConfig = new
ConfigKey<String>(String.class, "ntp.server.list", "Advanced", null,
- "Comma separated list of NTP servers to configure in Secondary
storage VM", true, ConfigKey.Scope.Global, null, null, null, null, null,
ConfigKey.Kind.CSV, null);
-
static final ConfigKey<Integer> MaxNumberOfSsvmsForMigration = new
ConfigKey<Integer>("Advanced", Integer.class, "max.ssvm.count", "5",
"Number of additional SSVMs to handle migration of data objects
concurrently", true, ConfigKey.Scope.Global);
@@ -1178,7 +1175,7 @@ public class SecondaryStorageManagerImpl extends
ManagerBase implements Secondar
buf.append("
vmpassword=").append(_configDao.getValue("system.vm.password"));
}
- if (NTPServerConfig.value() != null) {
+ if (StringUtils.isNotEmpty(NTPServerConfig.value())) {
buf.append("
ntpserverlist=").append(NTPServerConfig.value().replaceAll("\\s+",""));
}
diff --git a/systemvm/debian/opt/cloud/bin/setup/common.sh
b/systemvm/debian/opt/cloud/bin/setup/common.sh
index 5156d77a6a6..85b78ee16ae 100755
--- a/systemvm/debian/opt/cloud/bin/setup/common.sh
+++ b/systemvm/debian/opt/cloud/bin/setup/common.sh
@@ -683,7 +683,7 @@ getPublicIp() {
setup_ntp() {
log_it "Setting up NTP"
- NTP_CONF_FILE="/etc/ntp.conf"
+ NTP_CONF_FILE="/etc/ntpsec/ntp.conf"
if [ -f $NTP_CONF_FILE ]
then
IFS=',' read -a server_list <<< "$NTP_SERVER_LIST"
@@ -692,9 +692,9 @@ setup_ntp() {
do
server=$(echo ${server_list[iterator]} | tr -d '\r')
PATTERN="server $server"
- sed -i "0,/^#server/s//$PATTERN\n#server/" $NTP_CONF_FILE
+ sed -i "0,/^# server/s//$PATTERN\n# server/" $NTP_CONF_FILE
done
- systemctl enable ntp
+ systemctl enable --now --no-block ntp
else
log_it "NTP configuration file not found"
fi
diff --git a/systemvm/debian/opt/cloud/bin/setup/consoleproxy.sh
b/systemvm/debian/opt/cloud/bin/setup/consoleproxy.sh
index 596ad50ab50..d35ac260712 100755
--- a/systemvm/debian/opt/cloud/bin/setup/consoleproxy.sh
+++ b/systemvm/debian/opt/cloud/bin/setup/consoleproxy.sh
@@ -40,6 +40,10 @@ setup_console_proxy() {
disable_rpfilter
enable_fwding 0
enable_irqbalance 0
+ if [[ -n "$NTP_SERVER_LIST" ]]; then
+ setup_ntp
+ systemctl restart ntp
+ fi
rm -f /etc/logrotate.d/cloud
}
diff --git a/systemvm/debian/opt/cloud/bin/setup/secstorage.sh
b/systemvm/debian/opt/cloud/bin/setup/secstorage.sh
index c60f70c3cef..b8ed7b54311 100755
--- a/systemvm/debian/opt/cloud/bin/setup/secstorage.sh
+++ b/systemvm/debian/opt/cloud/bin/setup/secstorage.sh
@@ -82,6 +82,7 @@ HTTP
enable_fwding 0
enable_irqbalance 0
setup_ntp
+ systemctl restart ntp
rm -f /etc/logrotate.d/cloud
}