You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by da...@apache.org on 2023/07/06 09:24:44 UTC
[cloudstack] 01/01: Merge branch '4.18'
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 <da...@onecht.net>
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;
+ }
-}
+}