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')))
