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

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

commit f2dec38172608f8efdc6d4cb22ed00693bd9b245
Merge: 7d45dcb4301 3dc23056b73
Author: Daan Hoogland <[email protected]>
AuthorDate: Wed Sep 2 10:08:42 2026 +0200

    Merge branch '4.20' into 4.22

 .github/linters/codespell.txt                      |  1 +
 .../java/com/cloud/agent/mockvm/MockVmMgr.java     |  2 +-
 .../admin/backup/UpdateBackupOfferingCmd.java      |  4 +-
 .../com/cloud/network/IsolationMethodTest.java     |  2 +-
 .../facade/AbstractConfigItemFacade.java           |  2 +-
 .../com/cloud/network/HAProxyConfigurator.java     |  2 +-
 .../java/com/cloud/resource/RequestWrapper.java    |  2 +-
 .../directdownload/DirectDownloadCommand.java      |  1 -
 .../com/cloud/resource/ServerResourceBaseTest.java | 23 +++----
 .../java/com/cloud/agent/manager/AgentAttache.java |  9 ++-
 .../cloud/agent/manager/DirectAgentAttache.java    |  5 ++
 .../com/cloud/vm/VirtualMachineManagerImpl.java    |  2 +-
 .../engine/orchestration/NetworkOrchestrator.java  |  2 +-
 .../agent/manager/ConnectedAgentAttacheTest.java   |  6 +-
 .../com/cloud/offerings/NetworkOfferingVO.java     |  2 +-
 .../upgrade/SystemVmTemplateRegistration.java      | 59 ++++++++--------
 .../cloud/upgrade/dao/DatabaseAccessObject.java    |  2 +-
 .../com/cloud/upgrade/dao/Upgrade41500to41510.java | 79 ++++++++++------------
 .../cloud/network/as/AutoScaleVmProfileVOTest.java | 22 ++++--
 .../upgrade/SystemVmTemplateRegistrationTest.java  |  1 +
 .../vmsnapshot/ScaleIOVMSnapshotStrategy.java      |  2 +-
 .../storage/endpoint/DefaultEndPointSelector.java  |  8 +--
 .../java/com/cloud/utils/db/GenericDaoBase.java    |  4 +-
 .../framework/serializer/OnwireClassRegistry.java  |  2 +-
 .../factory/ModuleBasedContextFactoryTest.java     |  3 +-
 .../cloudstack/ca/provider/RootCAProvider.java     |  2 +-
 .../test/HypervDirectConnectResourceTest.java      |  3 +
 .../kvm/resource/LibvirtComputingResource.java     |  6 +-
 .../kvm/storage/KVMStorageProcessor.java           |  4 +-
 .../kvm/storage/MultipathSCSIAdapterBase.java      | 12 ++--
 .../kvm/resource/LibvirtComputingResourceTest.java |  3 +
 .../kvm/storage/ScaleIOStoragePoolTest.java        |  2 +
 .../hypervisor/ovm3/objects/ConnectionTest.java    |  2 +-
 .../com/cloud/hypervisor/ovm3/objects/NtpTest.java |  2 +
 .../vmware/VmwareDatacenterApiUnitTest.java        | 15 ++--
 .../java/com/cloud/hypervisor/XenServerGuru.java   |  7 +-
 .../xenserver/resource/CitrixResourceBaseTest.java |  3 +
 .../guru/BrocadeVcsGuestNetworkGuruTest.java       |  2 -
 .../network/cisco/CiscoVnmcConnectionTest.java     |  3 +-
 .../network/resource/CiscoVnmcResourceTest.java    |  3 +
 .../guru/NiciraNvpGuestNetworkGuruTest.java        |  6 --
 .../com/cloud/network/nicira/NiciraNvpApiIT.java   |  2 -
 .../cloudstack/agent/api/NsxNetworkCommand.java    |  2 +-
 .../AddTungstenFabricPolicyRuleCmdTest.java        |  2 +
 .../CreateTungstenFabricFirewallRuleCmdTest.java   |  2 +
 .../CreateTungstenFabricProviderCmdTest.java       |  2 +
 .../command/DeleteTungstenFabricTagCmdTest.java    |  2 +
 .../command/RemoveTungstenFabricTagCmdTest.java    |  2 +
 .../driver/redfish/RedfishWrapper.java             |  2 +-
 .../datastore/util/NexentaStorAppliance.java       | 13 +++-
 .../driver/StorPoolPrimaryDataStoreDriver.java     |  2 +-
 .../storage/motion/StorPoolDataMotionStrategy.java |  2 +-
 .../cloudstack/ldap/ADLdapUserManagerImpl.java     |  1 +
 .../cloudstack/ldap/OpenLdapUserManagerImpl.java   |  4 ++
 .../ldap/LdapDirectoryServerConnectionTest.java    |  3 +
 .../ldap/LdapUnboundidZapdotConnectionTest.java    |  3 +
 .../java/com/cloud/api/doc/ApiXmlDocWriter.java    |  2 +-
 .../src/main/java/com/cloud/api/doc/Argument.java  | 12 ++--
 .../com/cloud/api/query/dao/HostJoinDaoImpl.java   |  9 ++-
 .../cloud/api/query/dao/TemplateJoinDaoImpl.java   |  4 +-
 .../configuration/ConfigurationManagerImpl.java    |  2 +-
 .../com/cloud/ha/HighAvailabilityManagerImpl.java  |  4 +-
 .../com/cloud/network/IpAddressManagerImpl.java    |  2 +-
 .../com/cloud/storage/VolumeApiServiceImpl.java    |  2 +-
 .../main/java/com/cloud/vm/UserVmManagerImpl.java  |  4 +-
 .../cloudstack/network/RoutedIpv4ManagerImpl.java  |  8 +--
 .../gslb/GlobalLoadBalancingRulesServiceImpl.java  | 11 ++-
 .../com/cloud/api/query/QueryManagerImplTest.java  |  1 +
 .../deploy/DeploymentPlanningManagerImplTest.java  | 57 ++++++----------
 .../cloud/network/as/AutoScaleManagerImplTest.java |  5 +-
 .../template/HypervisorTemplateAdapterTest.java    |  2 +
 .../cloud/template/TemplateManagerImplTest.java    |  2 +
 .../java/com/cloud/user/DomainManagerImplTest.java |  7 +-
 .../java/com/cloud/vm/UserVmManagerImplTest.java   |  1 +
 .../test/java/com/cloud/vm/UserVmManagerTest.java  |  3 +
 .../cloud/vm/snapshot/VMSnapshotManagerTest.java   |  7 +-
 .../deployment/RouterDeploymentDefinitionTest.java |  2 +-
 .../rdpclient/ntlmssp/ServerNtlmsspChallenge.java  |  5 +-
 .../src/main/java/streamer/ByteBuffer.java         |  2 +-
 .../src/test/java/streamer/ByteBufferTest.java     |  1 +
 ui/public/locales/en.json                          |  1 +
 ui/src/config/section/infra/hosts.js               |  2 +-
 ui/src/views/offering/AddNetworkOffering.vue       |  1 -
 .../hypervisor/vmware/mo/HypervisorHostHelper.java |  8 +--
 84 files changed, 297 insertions(+), 236 deletions(-)

diff --cc .github/linters/codespell.txt
index 27761c70f44,8b05c4ef621..e954402a57c
--- a/.github/linters/codespell.txt
+++ b/.github/linters/codespell.txt
@@@ -187,8 -188,11 +187,9 @@@ environmne
  equivalant
  erro
  erronous
+ errorprone
  everthing
  everytime
 -excetion
 -excption
  excute
  execept
  execption
diff --cc 
engine/orchestration/src/test/java/com/cloud/agent/manager/ConnectedAgentAttacheTest.java
index 66e6bbae5e2,69f77ecc672..72b217d0fdd
--- 
a/engine/orchestration/src/test/java/com/cloud/agent/manager/ConnectedAgentAttacheTest.java
+++ 
b/engine/orchestration/src/test/java/com/cloud/agent/manager/ConnectedAgentAttacheTest.java
@@@ -65,8 -64,8 +65,8 @@@ public class ConnectedAgentAttacheTest 
  
          Link link1 = mock(Link.class);
  
-         ConnectedAgentAttache agentAttache1 = new ConnectedAgentAttache(null, 
1, "uuid", null, Hypervisor.HypervisorType.KVM, link1, false);
-         ConnectedAgentAttache agentAttache2 = new ConnectedAgentAttache(null, 
2, "uuid", null, Hypervisor.HypervisorType.KVM, link1, false);
 -        ConnectedAgentAttache agentAttache1 = new ConnectedAgentAttache(null, 
1, "uuid1", null, link1, false);
 -        ConnectedAgentAttache agentAttache2 = new ConnectedAgentAttache(null, 
2, "uuid2", null, link1, false);
++        ConnectedAgentAttache agentAttache1 = new ConnectedAgentAttache(null, 
1, "uuid1", null, Hypervisor.HypervisorType.KVM, link1, false);
++        ConnectedAgentAttache agentAttache2 = new ConnectedAgentAttache(null, 
2, "uuid2", null, Hypervisor.HypervisorType.KVM, link1, false);
  
          assertFalse(agentAttache1.equals(agentAttache2));
      }
diff --cc 
plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java
index aaebd8c7aeb,4683a76fac9..c59ebe0f419
--- 
a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java
+++ 
b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java
@@@ -5639,9 -5605,10 +5640,10 @@@ public class LibvirtComputingResourceTe
          extraConfig.put("extraconfig-2", "value2");
          extraConfig.put("extraconfig-3", "value3");
          libvirtComputingResourceMock.addExtraConfigComponent(extraConfig, 
vmDef);
 -        Mockito.verify(vmDef, times(1)).addComp(Mockito.any());
 +        Mockito.verify(vmDef, times(1)).addComp(any());
      }
  
+     @Ignore
      public void 
validateGetCurrentMemAccordingToMemBallooningWithoutMemBalooning(){
          VirtualMachineTO vmTo = Mockito.mock(VirtualMachineTO.class);
          Mockito.when(vmTo.getType()).thenReturn(Type.User);
diff --cc 
plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/OpenLdapUserManagerImpl.java
index 80d394d7478,98d3be2f10c..837429c9e32
--- 
a/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/OpenLdapUserManagerImpl.java
+++ 
b/plugins/user-authenticators/ldap/src/main/java/org/apache/cloudstack/ldap/OpenLdapUserManagerImpl.java
@@@ -277,7 -287,8 +279,8 @@@ public class OpenLdapUserManagerImpl im
          return false;
      }
  
+     @SuppressWarnings("BanJNDI")
 -    public LdapUser searchUser(final String basedn, final String 
searchString, final LdapContext context, Long domainId) throws NamingException, 
IOException {
 +    public LdapUser searchUser(final String basedn, final String 
searchString, final LdapContext context, Long domainId) throws NamingException {
          final SearchControls searchControls = new SearchControls();
  
          searchControls.setSearchScope(_ldapConfiguration.getScope());
diff --cc server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java
index 7e149020cb0,4f6afa7fb15..e8190a1a77e
--- a/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/HostJoinDaoImpl.java
@@@ -131,16 -126,14 +131,23 @@@ public class HostJoinDaoImpl extends Ge
              hostResponse.setHypervisor(hypervisorType);
          }
          hostResponse.setHostType(host.getType());
 +        if (!details.contains(HostDetails.core) && 
(host.getType().equals(Host.Type.ConsoleProxy) || 
host.getType().equals(Host.Type.SecondaryStorageVM))) {
 +            VMInstanceVO vm = 
virtualMachineDao.findVMByInstanceNameIncludingRemoved(host.getName());
 +            if (vm != null) {
 +                hostResponse.setVirtualMachineId(vm.getUuid());
 +            }
 +        }
-         hostResponse.setLastPinged(new Date(host.getLastPinged()));
+         hostResponse.setLastPinged(new Date(host.getLastPinged() << 10));
+         Long mshostId = host.getManagementServerId();
+         if (mshostId != null) {
+             ManagementServerHostVO managementServer = 
managementServerHostDao.findByMsid(host.getManagementServerId());
+             if (managementServer != null) {
+                 
hostResponse.setManagementServerId(managementServer.getUuid());
+             }
+         }
 +
 +        setManagementServerResponse(hostResponse, host, details);
 +
          hostResponse.setName(host.getName());
          hostResponse.setPodId(host.getPodUuid());
          hostResponse.setRemoved(host.getRemoved());
diff --cc server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java
index 8a933d7d91f,41d516f6dd3..bd73fee5c59
--- a/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java
+++ b/server/src/main/java/com/cloud/api/query/dao/TemplateJoinDaoImpl.java
@@@ -28,6 -28,18 +28,8 @@@ import java.util.stream.Collectors
  
  import javax.inject.Inject;
  
 -import com.cloud.deployasis.DeployAsIsConstants;
 -import com.cloud.deployasis.TemplateDeployAsIsDetailVO;
 -import com.cloud.deployasis.dao.TemplateDeployAsIsDetailsDao;
 -import com.cloud.storage.DataStoreRole;
 -import com.cloud.storage.VMTemplateStoragePoolVO;
 -import com.cloud.storage.dao.VMTemplatePoolDao;
 -import com.cloud.storage.VnfTemplateDetailVO;
 -import com.cloud.storage.VnfTemplateNicVO;
 -import com.cloud.storage.dao.VnfTemplateDetailsDao;
 -import com.cloud.storage.dao.VnfTemplateNicDao;
 -import com.cloud.user.dao.UserDataDao;
+ import com.google.common.primitives.Ints;
++
  import org.apache.cloudstack.annotation.AnnotationService;
  import org.apache.cloudstack.annotation.dao.AnnotationDao;
  import org.apache.cloudstack.api.ApiConstants;
diff --cc server/src/main/java/com/cloud/ha/HighAvailabilityManagerImpl.java
index 66ab4b9ffee,52320f3589b..07d51c5deb3
--- a/server/src/main/java/com/cloud/ha/HighAvailabilityManagerImpl.java
+++ b/server/src/main/java/com/cloud/ha/HighAvailabilityManagerImpl.java
@@@ -1174,10 -1038,7 +1174,8 @@@ public class HighAvailabilityManagerImp
          final VMInstanceVO vm = _instanceDao.findById(work.getInstanceId());
          try {
              if (vm != null && !VmHaEnabled.valueIn(vm.getDataCenterId())) {
-                 if (logger.isDebugEnabled()) {
-                     logger.debug("VM high availability manager is disabled, 
rescheduling the HA work {} for the VM {} ({}) " +
 -                logger.debug("VM high availability manager is disabled, 
rescheduling the HA work {}, for the VM {} (id: {}) to retry later in case VM 
high availability manager is enabled on retry attempt", work, vm.getName(), 
vm.getId());
++                logger.debug("VM high availability manager is disabled, 
rescheduling the HA work {}, for the VM {} (id: {})" +
 +                            "to retry later in case VM high availability 
manager is enabled on retry attempt", work, vm.getName(), vm.getId());
-                 }
                  long nextTime = getRescheduleTime(wt);
                  rescheduleWork(work, nextTime);
                  return;
diff --cc ui/src/config/section/infra/hosts.js
index 2f27db5780b,2a147656120..d7dd6f99b09
--- a/ui/src/config/section/infra/hosts.js
+++ b/ui/src/config/section/infra/hosts.js
@@@ -42,10 -42,9 +42,10 @@@ export default 
      }
      fields.push('clustername')
      fields.push('zonename')
 +    fields.push('managementservername')
      return fields
    },
-   details: ['name', 'id', 'resourcestate', 'ipaddress', 'hypervisor', 
'externalprovisioner', 'arch', 'type', 'clustername', 'podname', 'zonename', 
'storageaccessgroups', 'clusterstorageaccessgroups', 'podstorageaccessgroups', 
'zonestorageaccessgroups', 'managementservername', 'disconnected', 'created', 
'externaldetails'],
 -  details: ['name', 'id', 'resourcestate', 'ipaddress', 'hypervisor', 'arch', 
'type', 'clustername', 'podname', 'zonename', 'lastpinged', 'disconnected', 
'created'],
++  details: ['name', 'id', 'resourcestate', 'ipaddress', 'hypervisor', 
'externalprovisioner', 'arch', 'type', 'clustername', 'podname', 'zonename', 
'lastpinged', 'storageaccessgroups', 'clusterstorageaccessgroups', 
'podstorageaccessgroups', 'zonestorageaccessgroups', 'managementservername', 
'disconnected', 'created', 'externaldetails'],
    tabs: [{
      name: 'details',
      component: shallowRef(defineAsyncComponent(() => 
import('@/components/view/DetailsTab.vue')))

Reply via email to