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 b38f1364e6a38c9f59551991bd44b1ae0f8f9d38
Merge: 2a63483b4c5 33659fdf069
Author: Daan Hoogland <d...@onecht.net>
AuthorDate: Thu May 23 12:34:04 2024 +0200

    Merge branch '4.19'

 .../cloud/configuration/ConfigurationManager.java  |  3 +-
 .../engine/orchestration/NetworkOrchestrator.java  | 34 ++++++++++++++++------
 .../configuration/ConfigurationManagerImpl.java    | 17 +++++++----
 .../main/java/com/cloud/vm/UserVmManagerImpl.java  |  2 +-
 .../cloud/vpc/MockConfigurationManagerImpl.java    |  5 ++--
 test/integration/smoke/test_events_resource.py     | 15 ++++++++--
 ui/src/config/section/compute.js                   |  2 +-
 ui/src/views/compute/EditVM.vue                    |  3 +-
 ui/src/views/dashboard/UsageDashboard.vue          |  6 ++--
 9 files changed, 62 insertions(+), 25 deletions(-)

diff --cc 
engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java
index ebbae0b31c2,728511ba8d5..0aff8435d9e
--- 
a/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java
+++ 
b/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java
@@@ -186,10 -187,10 +187,10 @@@ public interface ConfigurationManager 
       *
       * @param userId
       * @param vlanDbId
 -     * @param caller TODO
 +     * @param caller
       * @return success/failure
       */
-     boolean deleteVlanAndPublicIpRange(long userId, long vlanDbId, Account 
caller);
+     VlanVO deleteVlanAndPublicIpRange(long userId, long vlanDbId, Account 
caller);
  
      void checkZoneAccess(Account caller, DataCenter zone);
  
diff --cc 
engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
index d07fee32276,09500051df6..fded0a38dde
--- 
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
@@@ -257,8 -254,9 +257,10 @@@ import com.cloud.vm.dao.NicSecondaryIpV
  import com.cloud.vm.dao.UserVmDao;
  import com.cloud.vm.dao.VMInstanceDao;
  import com.googlecode.ipv6.IPv6Address;
 +import org.jetbrains.annotations.NotNull;
  
+ import static 
com.cloud.configuration.ConfigurationManager.MESSAGE_DELETE_VLAN_IP_RANGE_EVENT;
+ 
  /**
   * NetworkManagerImpl implements NetworkManager.
   */
@@@ -3332,9 -3308,9 +3334,9 @@@ public class NetworkOrchestrator extend
                          if (!guru.trash(networkFinal, 
_networkOfferingDao.findById(networkFinal.getNetworkOfferingId()))) {
                              throw new CloudRuntimeException("Failed to trash 
network.");
                          }
- 
-                         if (!deleteVlansInNetwork(networkFinal, 
context.getCaller().getId(), callerAccount)) {
-                             logger.warn("Failed to delete network {}; was 
unable to cleanup corresponding ip ranges", networkFinal);
+                         Pair<Boolean, List<VlanVO>> deletedVlans = 
deleteVlansInNetwork(networkFinal, context.getCaller().getId(), callerAccount);
+                         if (!deletedVlans.first()) {
 -                            s_logger.warn("Failed to delete network " + 
networkFinal + "; was unable to cleanup corresponding ip ranges");
++                            logger.warn("Failed to delete network " + 
networkFinal + "; was unable to cleanup corresponding ip ranges");
                              throw new CloudRuntimeException("Failed to delete 
network " + networkFinal + "; was unable to cleanup corresponding ip ranges");
                          } else {
                              // commit transaction only when ips and vlans for 
the network are released successfully
@@@ -3397,11 -3383,15 +3409,15 @@@
          final long networkId = network.getId();
          //cleanup Public vlans
          final List<VlanVO> publicVlans = 
_vlanDao.listVlansByNetworkId(networkId);
+         List<VlanVO> deletedPublicVlanRange = new ArrayList<>();
          boolean result = true;
          for (final VlanVO vlan : publicVlans) {
-             if (!_configMgr.deleteVlanAndPublicIpRange(userId, vlan.getId(), 
callerAccount)) {
-                 logger.warn("Failed to delete vlan {});", vlan.getId());
+             VlanVO vlanRange = _configMgr.deleteVlanAndPublicIpRange(userId, 
vlan.getId(), callerAccount);
+             if (vlanRange == null) {
 -                s_logger.warn("Failed to delete vlan " + vlan.getId() + ");");
++                logger.warn("Failed to delete vlan " + vlan.getId() + ");");
                  result = false;
+             } else {
+                 deletedPublicVlanRange.add(vlanRange);
              }
          }
  
diff --cc server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
index dce8a21b478,3c172051463..a5a8f07546b
--- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
@@@ -8044,13 -7909,8 +8044,13 @@@ public class UserVmManagerImpl extends 
  
                  // Detach, destroy and create the usage event for the old 
root volume.
                  _volsDao.detachVolume(root.getId());
-                 _volumeService.destroyVolume(root.getId(), caller, 
Volume.State.Allocated.equals(root.getState()) || expunge, false);
+                 destroyVolumeInContext(vm, 
Volume.State.Allocated.equals(root.getState()) || expunge, root);
  
 +                if (currentTemplate.getId() != template.getId() && 
VirtualMachine.Type.User.equals(vm.type) && 
!VirtualMachineManager.ResourceCountRunningVMsonly.value()) {
 +                    ServiceOfferingVO serviceOffering = 
serviceOfferingDao.findById(vm.getId(), vm.getServiceOfferingId());
 +                    
_resourceLimitMgr.updateVmResourceCountForTemplateChange(vm.getAccountId(), 
vm.isDisplay(), serviceOffering, currentTemplate, template);
 +                }
 +
                  // For VMware hypervisor since the old root volume is 
replaced by the new root volume, force expunge old root volume if it has been 
created in storage
                  if (vm.getHypervisorType() == HypervisorType.VMware) {
                      VolumeInfo volumeInStorage = 
volFactory.getVolume(root.getId());

Reply via email to