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

dahn 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 69c69dc537c server,engine-schema: make config - use.https.to.upload 
zone scoped (#11539)
69c69dc537c is described below

commit 69c69dc537c025eca86dc0e48ae9dc7761887ef8
Author: Abhishek Kumar <[email protected]>
AuthorDate: Wed Jan 28 17:53:39 2026 +0530

    server,engine-schema: make config - use.https.to.upload zone scoped (#11539)
---
 api/src/main/java/com/cloud/storage/VolumeApiService.java  |  4 ++--
 .../storage/command/TemplateOrVolumePostUploadCommand.java | 14 +++++++++-----
 .../src/main/resources/META-INF/db/schema-42100to42200.sql |  5 +++++
 .../main/java/com/cloud/storage/VolumeApiServiceImpl.java  | 11 +++++++----
 .../main/java/com/cloud/template/TemplateAdapterBase.java  |  7 ++++---
 .../main/java/com/cloud/template/TemplateManagerImpl.java  |  2 +-
 .../secondarystorage/SecondaryStorageManagerImpl.java      |  2 +-
 7 files changed, 29 insertions(+), 16 deletions(-)

diff --git a/api/src/main/java/com/cloud/storage/VolumeApiService.java 
b/api/src/main/java/com/cloud/storage/VolumeApiService.java
index 19c2ebe455a..1a9bcc6ee98 100644
--- a/api/src/main/java/com/cloud/storage/VolumeApiService.java
+++ b/api/src/main/java/com/cloud/storage/VolumeApiService.java
@@ -56,9 +56,9 @@ public interface VolumeApiService {
             Boolean.class,
             "use.https.to.upload",
             "true",
-            "Determines the protocol (HTTPS or HTTP) ACS will use to generate 
links to upload ISOs, volumes, and templates. When set as 'true', ACS will use 
protocol HTTPS, otherwise, it will use protocol HTTP. Default value is 'true'.",
+            "Controls whether upload links for ISOs, volumes, and templates 
use HTTPS (true, default) or HTTP (false). After changing this setting, the 
Secondary Storage VM (SSVM) must be recreated",
             true,
-            ConfigKey.Scope.StoragePool);
+            ConfigKey.Scope.Zone);
 
     /**
      * Creates the database object for a volume based on the given criteria
diff --git 
a/core/src/main/java/org/apache/cloudstack/storage/command/TemplateOrVolumePostUploadCommand.java
 
b/core/src/main/java/org/apache/cloudstack/storage/command/TemplateOrVolumePostUploadCommand.java
index 3ac83031eaf..253a2607a72 100644
--- 
a/core/src/main/java/org/apache/cloudstack/storage/command/TemplateOrVolumePostUploadCommand.java
+++ 
b/core/src/main/java/org/apache/cloudstack/storage/command/TemplateOrVolumePostUploadCommand.java
@@ -57,8 +57,10 @@ public class TemplateOrVolumePostUploadCommand {
 
     private String nfsVersion;
 
-    public TemplateOrVolumePostUploadCommand(long entityId, String entityUUID, 
String absolutePath, String checksum, String type, String name, String 
imageFormat, String dataTo,
-            String dataToRole) {
+    private long zoneId;
+
+    public TemplateOrVolumePostUploadCommand(long entityId, String entityUUID, 
String absolutePath, String checksum,
+             String type, String name, String imageFormat, String dataTo, 
String dataToRole, long zoneId) {
         this.entityId = entityId;
         this.entityUUID = entityUUID;
         this.absolutePath = absolutePath;
@@ -68,9 +70,7 @@ public class TemplateOrVolumePostUploadCommand {
         this.imageFormat = imageFormat;
         this.dataTo = dataTo;
         this.dataToRole = dataToRole;
-    }
-
-    public TemplateOrVolumePostUploadCommand() {
+        this.zoneId = zoneId;
     }
 
     public String getRemoteEndPoint() {
@@ -216,4 +216,8 @@ public class TemplateOrVolumePostUploadCommand {
     public long getProcessTimeout() {
         return processTimeout;
     }
+
+    public long getZoneId() {
+        return zoneId;
+    }
 }
diff --git 
a/engine/schema/src/main/resources/META-INF/db/schema-42100to42200.sql 
b/engine/schema/src/main/resources/META-INF/db/schema-42100to42200.sql
index b523016aa3d..858c46a7c1e 100644
--- a/engine/schema/src/main/resources/META-INF/db/schema-42100to42200.sql
+++ b/engine/schema/src/main/resources/META-INF/db/schema-42100to42200.sql
@@ -87,3 +87,8 @@ CALL `cloud`.`INSERT_EXTENSION_DETAIL_IF_NOT_EXISTS`('MaaS', 
'orchestratorrequir
 
 CALL `cloud`.`IDEMPOTENT_DROP_UNIQUE_KEY`('counter', 
'uc_counter__provider__source__value');
 CALL `cloud`.`IDEMPOTENT_ADD_UNIQUE_KEY`('cloud.counter', 
'uc_counter__provider__source__value__removed', '(provider, source, value, 
removed)');
+
+-- Change scope for configuration - 'use.https.to.upload from' from 
StoragePool to Zone
+UPDATE `cloud`.`configuration` SET `scope` = 2 WHERE `name` = 
'use.https.to.upload';
+-- Delete the configuration for 'use.https.to.upload' from StoragePool
+DELETE FROM `cloud`.`storage_pool_details` WHERE `name` = 
'use.https.to.upload';
diff --git a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java 
b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java
index ce7fab9272e..31bf80e6459 100644
--- a/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java
+++ b/server/src/main/java/com/cloud/storage/VolumeApiServiceImpl.java
@@ -504,9 +504,10 @@ public class VolumeApiServiceImpl extends ManagerBase 
implements VolumeApiServic
                 GetUploadParamsResponse response = new 
GetUploadParamsResponse();
 
                 String ssvmUrlDomain = 
_configDao.getValue(Config.SecStorageSecureCopyCert.key());
-                String protocol = UseHttpsToUpload.value() ? "https" : "http";
+                String protocol = UseHttpsToUpload.valueIn(zoneId) ? "https" : 
"http";
 
-                String url = 
ImageStoreUtil.generatePostUploadUrl(ssvmUrlDomain, ep.getPublicAddr(), 
vol.getUuid(),  protocol);
+                String url = 
ImageStoreUtil.generatePostUploadUrl(ssvmUrlDomain, ep.getPublicAddr(), 
vol.getUuid(),
+                        protocol);
                 response.setPostURL(new URL(url));
 
                 // set the post url, this is used in the monitoring thread to 
determine the SSVM
@@ -526,8 +527,10 @@ public class VolumeApiServiceImpl extends ManagerBase 
implements VolumeApiServic
                 /*
                  * encoded metadata using the post upload config key
                  */
-                TemplateOrVolumePostUploadCommand command = new 
TemplateOrVolumePostUploadCommand(vol.getId(), vol.getUuid(), 
volumeStore.getInstallPath(), cmd.getChecksum(), vol.getType().toString(),
-                        vol.getName(), vol.getFormat().toString(), 
dataObject.getDataStore().getUri(), 
dataObject.getDataStore().getRole().toString());
+                TemplateOrVolumePostUploadCommand command = new 
TemplateOrVolumePostUploadCommand(vol.getId(),
+                        vol.getUuid(), volumeStore.getInstallPath(), 
cmd.getChecksum(), vol.getType().toString(),
+                        vol.getName(), vol.getFormat().toString(), 
dataObject.getDataStore().getUri(),
+                        dataObject.getDataStore().getRole().toString(), 
zoneId);
                 command.setLocalPath(volumeStore.getLocalDownloadPath());
                 //using the existing max upload size configuration
                 
command.setProcessTimeout(NumbersUtil.parseLong(_configDao.getValue("vmware.package.ova.timeout"),
 3600));
diff --git a/server/src/main/java/com/cloud/template/TemplateAdapterBase.java 
b/server/src/main/java/com/cloud/template/TemplateAdapterBase.java
index da620a3375a..b50acedddc0 100644
--- a/server/src/main/java/com/cloud/template/TemplateAdapterBase.java
+++ b/server/src/main/java/com/cloud/template/TemplateAdapterBase.java
@@ -234,9 +234,10 @@ public abstract class TemplateAdapterBase extends 
AdapterBase implements Templat
                 throw new CloudRuntimeException(errMsg);
             }
 
-            TemplateOrVolumePostUploadCommand payload = new 
TemplateOrVolumePostUploadCommand(template.getId(), template.getUuid(), 
tmpl.getInstallPath(), tmpl
-                    .getChecksum(), tmpl.getType().toString(), 
template.getUniqueName(), template.getFormat().toString(), 
templateOnStore.getDataStore().getUri(),
-                    templateOnStore.getDataStore().getRole().toString());
+            TemplateOrVolumePostUploadCommand payload = new 
TemplateOrVolumePostUploadCommand(template.getId(),
+                    template.getUuid(), tmpl.getInstallPath(), 
tmpl.getChecksum(), tmpl.getType().toString(),
+                    template.getUniqueName(), template.getFormat().toString(), 
templateOnStore.getDataStore().getUri(),
+                    templateOnStore.getDataStore().getRole().toString(), 
zoneId_is);
             //using the existing max template size configuration
             
payload.setMaxUploadSize(_configDao.getValue(Config.MaxTemplateAndIsoSize.key()));
 
diff --git a/server/src/main/java/com/cloud/template/TemplateManagerImpl.java 
b/server/src/main/java/com/cloud/template/TemplateManagerImpl.java
index d751bf92e7b..91998877761 100755
--- a/server/src/main/java/com/cloud/template/TemplateManagerImpl.java
+++ b/server/src/main/java/com/cloud/template/TemplateManagerImpl.java
@@ -415,7 +415,7 @@ public class TemplateManagerImpl extends ManagerBase 
implements TemplateManager,
             TemplateOrVolumePostUploadCommand firstCommand = payload.get(0);
 
             String ssvmUrlDomain = 
_configDao.getValue(Config.SecStorageSecureCopyCert.key());
-            String protocol = VolumeApiService.UseHttpsToUpload.value() ? 
"https" : "http";
+            String protocol = 
VolumeApiService.UseHttpsToUpload.valueIn(firstCommand.getZoneId()) ? "https" : 
"http";
 
             String url = ImageStoreUtil.generatePostUploadUrl(ssvmUrlDomain, 
firstCommand.getRemoteEndPoint(), firstCommand.getEntityUUID(), protocol);
             response.setPostURL(new URL(url));
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 e26091f677e..9d4c7311159 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
@@ -1252,7 +1252,7 @@ public class SecondaryStorageManagerImpl extends 
ManagerBase implements Secondar
             logger.debug(String.format("Boot args for machine profile [%s]: 
[%s].", profile.toString(), bootArgs));
         }
 
-        boolean useHttpsToUpload = 
BooleanUtils.toBooleanDefaultIfNull(VolumeApiService.UseHttpsToUpload.value(), 
true);
+        boolean useHttpsToUpload = 
VolumeApiService.UseHttpsToUpload.valueIn(dc.getId());
         logger.debug(String.format("Setting UseHttpsToUpload config on cmdline 
with [%s] value.", useHttpsToUpload));
         buf.append(" useHttpsToUpload=").append(useHttpsToUpload);
 

Reply via email to