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 2024/04/18 07:25:46 UTC

(cloudstack) branch main updated (38ca11f99ac -> 7de8a6d0826)

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

dahn pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


    from 38ca11f99ac build: fix build failure after merge-forward
     add 0a26f3315a1 Fix listStoragePoolsMetricsCmd (#8885)
     add 6cd5c6a1d01 linstor: Do not pretend handling disconnect paths that are non Linstor (#8897)
     add a55ba96a08e Merge remote-tracking branch 'origin/4.18' into 4.19
     add 075b4130412 Fix VR inheriting boot settings from user's VM (#8894)
     add 7721133ea9a Fix display of properties related to backup size (#8845)
     add 44b8d3af0ca ui: bump UI dependencies versions (#8923)
     add 85110147071 Fix error message for checkVolume command (#8842)
     add 154566f914c Updating pom.xml version numbers for release 4.18.2.0
     add 8a101fbbc11 Updating pom.xml version numbers for release 4.18.3.0-SNAPSHOT
     add cadbb563afa Merge remote-tracking branch 'origin/4.18' into 4.19
     new 7de8a6d0826 Merge LTS branch '4.19' into main

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../java/com/cloud/utils/db/GenericDaoBase.java    |    4 +
 .../kvm/storage/LinstorStorageAdaptor.java         |   50 +-
 .../network/element/VirtualRouterElement.java      |   20 +-
 .../com/cloud/storage/VolumeApiServiceImpl.java    |    3 +-
 ui/README.md                                       |    4 +-
 ui/package-lock.json                               | 1000 +++++++++-----------
 ui/package.json                                    |   12 +-
 ui/src/components/view/DetailsTab.vue              |    9 +
 ui/src/components/view/InfoCard.vue                |   12 +-
 9 files changed, 489 insertions(+), 625 deletions(-)


(cloudstack) 01/01: Merge LTS branch '4.19' into main

Posted by da...@apache.org.
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 7de8a6d0826130e7ca004b56621406755e1aa391
Merge: 38ca11f99ac cadbb563afa
Author: Daan Hoogland <da...@onecht.net>
AuthorDate: Thu Apr 18 08:54:58 2024 +0200

    Merge LTS branch '4.19' into main

 .../java/com/cloud/utils/db/GenericDaoBase.java    |    4 +
 .../kvm/storage/LinstorStorageAdaptor.java         |   50 +-
 .../network/element/VirtualRouterElement.java      |   20 +-
 .../com/cloud/storage/VolumeApiServiceImpl.java    |    3 +-
 ui/README.md                                       |    4 +-
 ui/package-lock.json                               | 1000 +++++++++-----------
 ui/package.json                                    |   12 +-
 ui/src/components/view/DetailsTab.vue              |    9 +
 ui/src/components/view/InfoCard.vue                |   12 +-
 9 files changed, 489 insertions(+), 625 deletions(-)

diff --cc framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java
index bc940c24e02,0eb45439769..a09f323905e
--- a/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java
+++ b/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java
@@@ -60,6 -57,8 +60,7 @@@ import javax.persistence.Table
  import javax.persistence.TableGenerator;
  
  import com.amazonaws.util.CollectionUtils;
+ import org.apache.commons.lang3.ArrayUtils;
 -import org.apache.log4j.Logger;
  
  import com.cloud.utils.DateUtil;
  import com.cloud.utils.NumbersUtil;
diff --cc plugins/storage/volume/linstor/src/main/java/com/cloud/hypervisor/kvm/storage/LinstorStorageAdaptor.java
index f3a70b079be,dd50c8d2214..794abfd2a38
--- a/plugins/storage/volume/linstor/src/main/java/com/cloud/hypervisor/kvm/storage/LinstorStorageAdaptor.java
+++ b/plugins/storage/volume/linstor/src/main/java/com/cloud/hypervisor/kvm/storage/LinstorStorageAdaptor.java
@@@ -285,8 -281,8 +286,8 @@@ public class LinstorStorageAdaptor impl
      @Override
      public boolean disconnectPhysicalDisk(String volumePath, KVMStoragePool pool)
      {
-         logger.debug("Linstor: disconnectPhysicalDisk " + pool.getUuid() + ":" + volumePath);
-         return true;
 -        s_logger.debug("Linstor: disconnectPhysicalDisk " + pool.getUuid() + ":" + volumePath);
++        logger.debug("Linstor: disconnectPhysicalDisk {}:{}", pool.getUuid(), volumePath);
+         return false;
      }
  
      @Override
@@@ -316,45 -312,50 +317,50 @@@
          Optional<KVMStoragePool> optFirstPool = MapStorageUuidToStoragePool.values().stream().findFirst();
          if (optFirstPool.isPresent())
          {
 -            s_logger.debug("Linstor: disconnectPhysicalDiskByPath " + localPath);
 +            logger.debug("Linstor: disconnectPhysicalDiskByPath " + localPath);
              final KVMStoragePool pool = optFirstPool.get();
  
 -            s_logger.debug("Linstor: Using storpool: " + pool.getUuid());
 +            logger.debug("Linstor: Using storpool: " + pool.getUuid());
              final DevelopersApi api = getLinstorAPI(pool);
  
-             try
-             {
+             Optional<ResourceWithVolumes> optRsc;
+             try {
                  List<ResourceWithVolumes> resources = api.viewResources(
-                     Collections.singletonList(localNodeName),
-                     null,
-                     null,
-                     null,
-                     null,
-                     null);
- 
-                 Optional<ResourceWithVolumes> rsc = getResourceByPath(resources, localPath);
+                         Collections.singletonList(localNodeName),
+                         null,
+                         null,
+                         null,
+                         null,
+                         null);
+ 
+                 optRsc = getResourceByPath(resources, localPath);
+             } catch (ApiException apiEx) {
+                 // couldn't query linstor controller
 -                s_logger.error(apiEx.getBestMessage());
++                logger.error(apiEx.getBestMessage());
+                 return false;
+             }
  
-                 if (rsc.isPresent())
-                 {
+             if (optRsc.isPresent()) {
+                 try {
+                     Resource rsc = optRsc.get();
                      ResourceDefinitionModify rdm = new ResourceDefinitionModify();
                      rdm.deleteProps(Collections.singletonList("DrbdOptions/Net/allow-two-primaries"));
-                     ApiCallRcList answers = api.resourceDefinitionModify(rsc.get().getName(), rdm);
+                     ApiCallRcList answers = api.resourceDefinitionModify(rsc.getName(), rdm);
                      if (answers.hasError()) {
 -                        s_logger.error(
 +                        logger.error(
                                  String.format("Failed to remove 'allow-two-primaries' on %s: %s",
-                                         rsc.get().getName(), LinstorUtil.getBestErrorMessage(answers)));
+                                         rsc.getName(), LinstorUtil.getBestErrorMessage(answers)));
                          // do not fail here as removing allow-two-primaries property isn't fatal
                      }
- 
+                 } catch(ApiException apiEx){
 -                    s_logger.error(apiEx.getBestMessage());
++                    logger.error(apiEx.getBestMessage());
+                     // do not fail here as removing allow-two-primaries property isn't fatal
 +                    return true;
                  }
-                 logger.warn("Linstor: Couldn't find resource for this path: " + localPath);
-             } catch (ApiException apiEx) {
-                 logger.error(apiEx.getBestMessage());
-                 // do not fail here as removing allow-two-primaries property isn't fatal
 -                return true;
              }
          }
-         return true;
 -        s_logger.info("Linstor: Couldn't find resource for this path: " + localPath);
++        logger.info("Linstor: Couldn't find resource for this path: {}", localPath);
+         return false;
      }
  
      @Override
diff --cc ui/src/components/view/DetailsTab.vue
index db188e0db9e,00aa92389c9..f731766f878
--- a/ui/src/components/view/DetailsTab.vue
+++ b/ui/src/components/view/DetailsTab.vue
@@@ -43,9 -43,18 +43,18 @@@
            <br/>
            <div v-if="Array.isArray(dataResource[item]) && item === 'service'">
              <div v-for="(service, idx) in dataResource[item]" :key="idx">
 -              {{ service.name }} : {{ service.provider[0].name }}
 +              {{ service.name }} : {{ service.provider?.[0]?.name }}
              </div>
            </div>
+           <div v-else-if="$route.meta.name === 'backup' && (item === 'size' || item === 'virtualsize')">
+             {{ $bytesToHumanReadableSize(dataResource[item]) }}
+             <a-tooltip placement="right">
+               <template #title>
+                 {{ dataResource[item] }} bytes
+               </template>
+               <QuestionCircleOutlined />
+             </a-tooltip>
+           </div>
            <div v-else-if="$route.meta.name === 'backup' && item === 'volumes'">
              <div v-for="(volume, idx) in JSON.parse(dataResource[item])" :key="idx">
                <router-link :to="{ path: '/volume/' + volume.uuid }">{{ volume.type }} - {{ volume.path }}</router-link> ({{ parseFloat(volume.size / (1024.0 * 1024.0 * 1024.0)).toFixed(1) }} GB)