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

commit 2132f46fcb34e5cc42f063f06563ecabd469ac4c
Merge: 02be2cdf67d 939ee9e1534
Author: Daan Hoogland <[email protected]>
AuthorDate: Thu Jul 6 11:24:08 2023 +0200

    Merge branch '4.18'

 .../download/HttpsDirectTemplateDownloader.java    | 131 -----------
 .../download/MetalinkDirectTemplateDownloader.java | 101 --------
 .../java/com/cloud/storage/JavaStorageLayer.java   |   9 +-
 .../direct/download/DirectDownloadHelper.java      |  83 +++++++
 .../direct/download/DirectTemplateDownloader.java  |  30 ++-
 .../download/DirectTemplateDownloaderImpl.java     |  34 ++-
 .../download/HttpDirectTemplateDownloader.java     |  89 ++++++-
 .../download/HttpsDirectTemplateDownloader.java    | 252 ++++++++++++++++++++
 .../direct/download/HttpsMultiTrustManager.java    | 102 ++++++++
 .../download/MetalinkDirectTemplateDownloader.java | 177 ++++++++++++++
 .../download/NfsDirectTemplateDownloader.java      |  33 ++-
 .../com/cloud/storage/JavaStorageLayerTest.java    |  35 +--
 .../download/BaseDirectTemplateDownloaderTest.java |  72 ++++++
 .../HttpsDirectTemplateDownloaderTest.java         |  29 ++-
 .../MetalinkDirectTemplateDownloaderTest.java      |  30 ++-
 .../com/cloud/vm/VirtualMachineManagerImpl.java    | 111 ++++-----
 .../cloud/upgrade/dao/DatabaseAccessObject.java    |  11 +
 .../java/com/cloud/upgrade/dao/DbUpgradeUtils.java |   5 +-
 .../com/cloud/upgrade/dao/Upgrade41800to41810.java |  29 +++
 .../storage/datastore/db/TemplateDataStoreVO.java  |   2 +-
 .../resources/META-INF/db/schema-41720to41800.sql  |  14 --
 .../resource/wrapper/LibvirtCheckUrlCommand.java   |  19 +-
 .../kvm/storage/KVMStorageProcessor.java           |  35 +--
 .../com/cloud/storage/VolumeApiServiceImpl.java    |   3 +-
 .../main/java/com/cloud/vm/UserVmManagerImpl.java  | 258 ++++++++++-----------
 ui/src/views/network/CreateIsolatedNetworkForm.vue |   3 +
 utils/src/main/java/com/cloud/utils/UriUtils.java  |  87 +------
 27 files changed, 1157 insertions(+), 627 deletions(-)

diff --cc 
core/src/main/java/org/apache/cloudstack/direct/download/HttpDirectTemplateDownloader.java
index db387b28538,11ba6a5aab0..093f0604a44
--- 
a/core/src/main/java/org/apache/cloudstack/direct/download/HttpDirectTemplateDownloader.java
+++ 
b/core/src/main/java/org/apache/cloudstack/direct/download/HttpDirectTemplateDownloader.java
@@@ -107,4 -107,71 +107,71 @@@ public class HttpDirectTemplateDownload
          }
          return new Pair<>(true, getDownloadedFilePath());
      }
+ 
+     @Override
+     public boolean checkUrl(String url) {
+         HeadMethod httpHead = new HeadMethod(url);
+         try {
+             if (client.executeMethod(httpHead) != HttpStatus.SC_OK) {
+                 s_logger.error(String.format("Invalid URL: %s", url));
+                 return false;
+             }
+             return true;
+         } catch (IOException e) {
+             s_logger.error(String.format("Cannot reach URL: %s due to: %s", 
url, e.getMessage()), e);
+             return false;
+         } finally {
+             httpHead.releaseConnection();
+         }
+     }
+ 
+     @Override
+     public Long getRemoteFileSize(String url, String format) {
+         if ("qcow2".equalsIgnoreCase(format)) {
+             return QCOW2Utils.getVirtualSize(url);
+         } else {
+             return UriUtils.getRemoteSize(url);
+         }
+     }
+ 
+     @Override
+     public List<String> getMetalinkUrls(String metalinkUrl) {
+         GetMethod getMethod = new GetMethod(metalinkUrl);
+         List<String> urls = new ArrayList<>();
+         int status;
+         try {
+             status = client.executeMethod(getMethod);
+         } catch (IOException e) {
+             s_logger.error("Error retrieving urls form metalink: " + 
metalinkUrl);
+             getMethod.releaseConnection();
+             return null;
+         }
+         try {
+             InputStream is = getMethod.getResponseBodyAsStream();
+             if (status == HttpStatus.SC_OK) {
+                 addMetalinkUrlsToListFromInputStream(is, urls);
+             }
+         } catch (IOException e) {
+             s_logger.warn(e.getMessage());
+         } finally {
+             getMethod.releaseConnection();
+         }
+         return urls;
+     }
+ 
+     @Override
+     public List<String> getMetalinkChecksums(String metalinkUrl) {
+         GetMethod getMethod = new GetMethod(metalinkUrl);
+         try {
+             if (client.executeMethod(getMethod) == HttpStatus.SC_OK) {
+                 InputStream is = getMethod.getResponseBodyAsStream();
+                 return generateChecksumListFromInputStream(is);
+             }
+         } catch (IOException e) {
+             s_logger.error(String.format("Error obtaining metalink checksums 
on URL %s: %s", metalinkUrl, e.getMessage()), e);
+         } finally {
+             getMethod.releaseConnection();
+         }
+         return null;
+     }
 -}
 +}

Reply via email to