You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by we...@apache.org on 2024/02/17 11:32:03 UTC

(cloudstack) branch main updated (a31449b1049 -> 6af1c25f520)

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

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


    from a31449b1049 Allow altering only either CPU or memory during VM live scale (#8234)
     add 17516fd9890 test: skip check for volume stats history on xenserver (#8661)
     add f86c62e49a5 UI: load domain lists only if listDomains API is available (#8660)
     add 6f3e4e63022 fix_filter_and_pagination (#8306)
     add a0e592e945e prevent nic removal on out of bounds router stop (#8371)
     new 6af1c25f520 Merge remote-tracking branch 'apache/4.19'

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/server/ManagementService.java   |  3 +-
 api/src/main/java/com/cloud/vm/NicProfile.java     |  2 +-
 .../storage/FindStoragePoolsForMigrationCmd.java   |  5 +-
 .../main/java/com/cloud/serializer/GsonHelper.java |  2 +
 .../api/storage/StoragePoolAllocator.java          |  3 +
 .../engine/orchestration/NetworkOrchestrator.java  | 11 ++-
 .../schema/src/main/java/com/cloud/vm/NicVO.java   | 13 +--
 .../storage/datastore/db/PrimaryDataStoreDao.java  |  8 +-
 .../datastore/db/PrimaryDataStoreDaoImpl.java      | 28 +++++-
 .../allocator/AbstractStoragePoolAllocator.java    | 10 ++-
 .../ClusterScopeStoragePoolAllocator.java          |  2 +-
 .../GarbageCollectingStoragePoolAllocator.java     |  2 +-
 .../allocator/LocalStoragePoolAllocator.java       |  4 +-
 .../allocator/ZoneWideStoragePoolAllocator.java    |  2 +-
 .../AbstractStoragePoolAllocatorTest.java          |  2 +-
 .../allocator/RandomStoragePoolAllocator.java      |  2 +-
 .../com/cloud/network/guru/ControlNetworkGuru.java | 13 ++-
 .../cloud/network/guru/PodBasedNetworkGuru.java    |  2 +-
 .../router/VirtualNetworkApplianceManager.java     | 99 ++++++++++------------
 .../router/VirtualNetworkApplianceManagerImpl.java | 82 ++++++++----------
 .../com/cloud/server/ManagementServerImpl.java     | 22 ++---
 test/integration/smoke/test_metrics_api.py         |  2 +-
 ui/src/views/network/CreateIsolatedNetworkForm.vue |  6 +-
 23 files changed, 173 insertions(+), 152 deletions(-)


(cloudstack) 01/01: Merge remote-tracking branch 'apache/4.19'

Posted by we...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 6af1c25f5201b47b29b6e984817a63739002498c
Merge: a31449b1049 a0e592e945e
Author: Wei Zhou <we...@apache.org>
AuthorDate: Sat Feb 17 12:30:40 2024 +0100

    Merge remote-tracking branch 'apache/4.19'

 .../java/com/cloud/server/ManagementService.java   |  3 +-
 api/src/main/java/com/cloud/vm/NicProfile.java     |  2 +-
 .../storage/FindStoragePoolsForMigrationCmd.java   |  5 +-
 .../main/java/com/cloud/serializer/GsonHelper.java |  2 +
 .../api/storage/StoragePoolAllocator.java          |  3 +
 .../engine/orchestration/NetworkOrchestrator.java  | 11 ++-
 .../schema/src/main/java/com/cloud/vm/NicVO.java   | 13 +--
 .../storage/datastore/db/PrimaryDataStoreDao.java  |  8 +-
 .../datastore/db/PrimaryDataStoreDaoImpl.java      | 28 +++++-
 .../allocator/AbstractStoragePoolAllocator.java    | 10 ++-
 .../ClusterScopeStoragePoolAllocator.java          |  2 +-
 .../GarbageCollectingStoragePoolAllocator.java     |  2 +-
 .../allocator/LocalStoragePoolAllocator.java       |  4 +-
 .../allocator/ZoneWideStoragePoolAllocator.java    |  2 +-
 .../AbstractStoragePoolAllocatorTest.java          |  2 +-
 .../allocator/RandomStoragePoolAllocator.java      |  2 +-
 .../com/cloud/network/guru/ControlNetworkGuru.java | 13 ++-
 .../cloud/network/guru/PodBasedNetworkGuru.java    |  2 +-
 .../router/VirtualNetworkApplianceManager.java     | 99 ++++++++++------------
 .../router/VirtualNetworkApplianceManagerImpl.java | 82 ++++++++----------
 .../com/cloud/server/ManagementServerImpl.java     | 22 ++---
 test/integration/smoke/test_metrics_api.py         |  2 +-
 ui/src/views/network/CreateIsolatedNetworkForm.vue |  6 +-
 23 files changed, 173 insertions(+), 152 deletions(-)

diff --cc core/src/main/java/com/cloud/serializer/GsonHelper.java
index 8288b779680,7c33ef0e5d5..5d3a9944c48
--- a/core/src/main/java/com/cloud/serializer/GsonHelper.java
+++ b/core/src/main/java/com/cloud/serializer/GsonHelper.java
@@@ -51,11 -48,13 +51,13 @@@ public class GsonHelper 
      static {
          GsonBuilder gsonBuilder = new GsonBuilder();
          s_gson = setDefaultGsonConfig(gsonBuilder);
 -        GsonBuilder loggerBuilder = new GsonBuilder();
 -        loggerBuilder.disableHtmlEscaping();
 -        loggerBuilder.setExclusionStrategies(new LoggingExclusionStrategy(s_logger));
 -        loggerBuilder.serializeSpecialFloatingPointValues();
 -        // maybe add loggerBuilder.serializeNulls(); as well?
 -        s_gogger = setDefaultGsonConfig(loggerBuilder);
 -        s_logger.info("Default Builder inited.");
 +        GsonBuilder LOGGERBuilder = new GsonBuilder();
 +        LOGGERBuilder.disableHtmlEscaping();
 +        LOGGERBuilder.setExclusionStrategies(new LoggingExclusionStrategy(LOGGER));
++        LOGGERBuilder.serializeSpecialFloatingPointValues();
++        // maybe add LOGGERBuilder.serializeNulls(); as well?
 +        s_gogger = setDefaultGsonConfig(LOGGERBuilder);
 +        LOGGER.info("Default Builder inited.");
      }
  
      static Gson setDefaultGsonConfig(GsonBuilder builder) {
diff --cc engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
index 6d858a5dd12,57f6f99bf2a..e7cd1a3ef3a
--- a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
+++ b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
@@@ -2327,6 -2329,9 +2327,9 @@@ public class NetworkOrchestrator extend
                          final NicProfile profile = new NicProfile(nic, network, nic.getBroadcastUri(), nic.getIsolationUri(), null, _networkModel
                                  .isSecurityGroupSupportedInNetwork(network), _networkModel.getNetworkTag(vmProfile.getHypervisorType(), network));
                          if (guru.release(profile, vmProfile, nic.getReservationId())) {
 -                            if (s_logger.isDebugEnabled()) {
 -                                s_logger.debug(String.format("The nic %s on %s was released according to %s by guru %s, now updating record.", nic, profile, vmProfile, guru));
++                            if (logger.isDebugEnabled()) {
++                                logger.debug(String.format("The nic %s on %s was released according to %s by guru %s, now updating record.", nic, profile, vmProfile, guru));
+                             }
                              applyProfileToNicForRelease(nic, profile);
                              nic.setState(Nic.State.Allocated);
                              if (originalState == Nic.State.Reserved) {
@@@ -2432,8 -2437,8 +2435,8 @@@
              final List<Provider> providersToImplement = getNetworkProviders(network.getId());
              for (final NetworkElement element : networkElements) {
                  if (providersToImplement.contains(element.getProvider())) {
 -                    if (s_logger.isDebugEnabled()) {
 -                        s_logger.debug(String.format("Asking %s to release %s, according to the reservation strategy %s", element.getName(), nic, nic.getReservationStrategy()));
 +                    if (logger.isDebugEnabled()) {
-                         logger.debug("Asking " + element.getName() + " to release " + nic);
++                        logger.debug(String.format("Asking %s to release %s, according to the reservation strategy %s", element.getName(), nic, nic.getReservationStrategy()));
                      }
                      try {
                          element.release(network, profile, vm, null);
diff --cc engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/GarbageCollectingStoragePoolAllocator.java
index c6f18f33f0b,9b9f56d4aa5..39c29bd2c6e
--- a/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/GarbageCollectingStoragePoolAllocator.java
+++ b/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/GarbageCollectingStoragePoolAllocator.java
@@@ -45,10 -47,10 +45,10 @@@ public class GarbageCollectingStoragePo
      boolean _storagePoolCleanupEnabled;
  
      @Override
-     public List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck) {
+     public List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck, String keyword) {
          logStartOfSearch(dskCh, vmProfile, plan, returnUpTo, bypassStorageTypeCheck);
          if (!_storagePoolCleanupEnabled) {
 -            s_logger.debug("Storage pool cleanup is not enabled, so GarbageCollectingStoragePoolAllocator is being skipped.");
 +            logger.debug("Storage pool cleanup is not enabled, so GarbageCollectingStoragePoolAllocator is being skipped.");
              return null;
          }
  
diff --cc plugins/storage-allocators/random/src/main/java/org/apache/cloudstack/storage/allocator/RandomStoragePoolAllocator.java
index 78a588a2cf9,87a6bf56a6e..dd8f2e78b73
--- a/plugins/storage-allocators/random/src/main/java/org/apache/cloudstack/storage/allocator/RandomStoragePoolAllocator.java
+++ b/plugins/storage-allocators/random/src/main/java/org/apache/cloudstack/storage/allocator/RandomStoragePoolAllocator.java
@@@ -31,9 -32,10 +31,9 @@@ import com.cloud.vm.DiskProfile
  import com.cloud.vm.VirtualMachineProfile;
  
  public class RandomStoragePoolAllocator extends AbstractStoragePoolAllocator {
 -    private static final Logger s_logger = Logger.getLogger(RandomStoragePoolAllocator.class);
  
      @Override
-     public List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck) {
+     public List<StoragePool> select(DiskProfile dskCh, VirtualMachineProfile vmProfile, DeploymentPlan plan, ExcludeList avoid, int returnUpTo, boolean bypassStorageTypeCheck, String keyword) {
          logStartOfSearch(dskCh, vmProfile, plan, returnUpTo, bypassStorageTypeCheck);
  
          List<StoragePool> suitablePools = new ArrayList<StoragePool>();
diff --cc server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java
index 0ed71cf8b3f,ce59b50f3c3..d553f81cecf
--- a/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java
+++ b/server/src/main/java/com/cloud/network/guru/ControlNetworkGuru.java
@@@ -21,7 -21,9 +21,8 @@@ import java.util.Map
  import javax.inject.Inject;
  import javax.naming.ConfigurationException;
  
+ import com.cloud.network.router.VirtualNetworkApplianceManager;
  import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
 -import org.apache.log4j.Logger;
  
  import com.cloud.configuration.Config;
  import com.cloud.dc.DataCenter;
@@@ -164,18 -167,24 +165,24 @@@ public class ControlNetworkGuru extend
          assert nic.getTrafficType() == TrafficType.Control;
          HypervisorType hType = vm.getHypervisorType();
          if ( ( (hType == HypervisorType.VMware) || (hType == HypervisorType.Hyperv) )&& isRouterVm(vm)) {
+             if (!VirtualNetworkApplianceManager.RemoveControlIpOnStop.valueIn(vm.getVirtualMachine().getDataCenterId())) {
 -                if (s_logger.isDebugEnabled()) {
 -                    s_logger.debug(String.format("not releasing %s from %s with reservationId %s, as systemvm.release.control.ip.on.stop is set to false for the data center.", nic, vm, reservationId));
++                if (logger.isDebugEnabled()) {
++                    logger.debug(String.format("not releasing %s from %s with reservationId %s, as systemvm.release.control.ip.on.stop is set to false for the data center.", nic, vm, reservationId));
+                 }
+                 return true;
+             }
              long dcId = vm.getVirtualMachine().getDataCenterId();
              DataCenterVO dcVo = _dcDao.findById(dcId);
              if (dcVo.getNetworkType() != NetworkType.Basic) {
                  super.release(nic, vm, reservationId);
 -                if (s_logger.isDebugEnabled()) {
 -                    s_logger.debug(String.format("Released nic: %s for vm %s", nic, vm));
 +                if (logger.isDebugEnabled()) {
-                     logger.debug("Released nic: " + nic);
++                    logger.debug(String.format("Released nic: %s for vm %s", nic, vm));
                  }
                  return true;
              } else {
                  nic.deallocate();
 -                if (s_logger.isDebugEnabled()) {
 -                    s_logger.debug(String.format("Released nic: %s for vm %s", nic, vm));
 +                if (logger.isDebugEnabled()) {
-                     logger.debug("Released nic: " + nic);
++                    logger.debug(String.format("Released nic: %s for vm %s", nic, vm));
                  }
                  return true;
              }
@@@ -184,8 -193,8 +191,8 @@@
          _dcDao.releaseLinkLocalIpAddress(nic.getId(), reservationId);
  
          nic.deallocate();
 -        if (s_logger.isDebugEnabled()) {
 -            s_logger.debug(String.format("Released nic: %s for vm %s", nic, vm));
 +        if (logger.isDebugEnabled()) {
-             logger.debug("Released nic: " + nic);
++            logger.debug(String.format("Released nic: %s for vm %s", nic, vm));
          }
  
          return true;
diff --cc server/src/main/java/com/cloud/network/guru/PodBasedNetworkGuru.java
index 3a0ad7e9093,44d349a861e..a857581397c
--- a/server/src/main/java/com/cloud/network/guru/PodBasedNetworkGuru.java
+++ b/server/src/main/java/com/cloud/network/guru/PodBasedNetworkGuru.java
@@@ -156,8 -158,8 +156,8 @@@ public class PodBasedNetworkGuru extend
  
          nic.deallocate();
  
 -        if (s_logger.isDebugEnabled()) {
 -            s_logger.debug(String.format("Released nic: %s for vm %s", nic, vm));
 +        if (logger.isDebugEnabled()) {
-             logger.debug("Released nic: " + nic);
++            logger.debug(String.format("Released nic: %s for vm %s", nic, vm));
          }
  
          return true;
diff --cc server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index b1c7ceef2d1,ebce0492ce3..8467e6a3d4c
--- a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@@ -2818,6 -2774,35 +2772,35 @@@ Configurable, StateListener<VirtualMach
  
      @Override
      public void finalizeExpunge(final VirtualMachine vm) {
+         if (Boolean.FALSE.equals(RemoveControlIpOnStop.valueIn(vm.getDataCenterId()))) {
+             final DomainRouterVO domR = _routerDao.findById(vm.getId());
 -            s_logger.info(String.format("removing nics for VR [%s]", vm));
++            logger.info(String.format("removing nics for VR [%s]", vm));
+             removeNics(vm, domR);
+         }
+     }
+ 
+     private void removeNics(VirtualMachine vm, DomainRouterVO domR) {
+         final List<? extends Nic> routerNics = _nicDao.listByVmId(vm.getId());
+         final DataCenterVO dcVO = _dcDao.findById(vm.getDataCenterId());
+ 
+         for (final Nic nic : routerNics) {
+             final Network network = _networkModel.getNetwork(nic.getNetworkId());
+ 
+             removeDhcpRulesForPvLan(domR, nic, network, dcVO);
+         }
+     }
+ 
+     private void removeDhcpRulesForPvLan(DomainRouterVO domR, Nic nic, Network network, DataCenterVO dcVO) {
+         if (network.getTrafficType() == TrafficType.Guest && nic.getBroadcastUri() != null && nic.getBroadcastUri().getScheme().equals("pvlan")) {
+             final NicProfile nicProfile = new NicProfile(nic, network, nic.getBroadcastUri(), nic.getIsolationUri(), 0, false, "pvlan-nic");
+ 
+             final NetworkTopology networkTopology = _networkTopologyContext.retrieveNetworkTopology(dcVO);
+             try {
+                 networkTopology.setupDhcpForPvlan(false, domR, domR.getHostId(), nicProfile);
+             } catch (final ResourceUnavailableException e) {
 -                s_logger.debug("ERROR in finalizeStop: ", e);
++                logger.debug("ERROR in finalizeStop: ", e);
+             }
+         }
      }
  
      @Override