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

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

commit 9df580cef457cdb767aa5bea926500fa8b1263ca
Merge: dccd37af505 3e7f21a1909
Author: Abhishek Kumar <[email protected]>
AuthorDate: Thu Oct 12 16:54:19 2023 +0530

    Merge remote-tracking branch 'apache/4.18' into main

 .../main/java/com/cloud/vm/dao/VMInstanceDao.java  |   2 +-
 .../java/com/cloud/vm/dao/VMInstanceDaoImpl.java   |  12 +-
 .../java/com/cloud/api/query/QueryManagerImpl.java |  12 +-
 .../java/com/cloud/deploy/FirstFitPlanner.java     |  12 +-
 .../cloudstack/vm/UnmanagedVMsManagerImpl.java     | 122 ++++++++++-----------
 5 files changed, 84 insertions(+), 76 deletions(-)

diff --cc 
server/src/main/java/org/apache/cloudstack/vm/UnmanagedVMsManagerImpl.java
index 12665a7db7b,79d8c7f457b..752ad5a9fba
--- a/server/src/main/java/org/apache/cloudstack/vm/UnmanagedVMsManagerImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/vm/UnmanagedVMsManagerImpl.java
@@@ -1026,13 -1038,33 +1029,31 @@@ public class UnmanagedVMsManagerImpl im
          return userVm;
      }
  
+     private HashMap<String, UnmanagedInstanceTO> 
getUnmanagedInstancesForHost(HostVO host, String instanceName, List<String> 
managedVms) {
+         HashMap<String, UnmanagedInstanceTO> unmanagedInstances = new 
HashMap<>();
+         if (host.isInMaintenanceStates()) {
+             return unmanagedInstances;
+         }
+ 
+         GetUnmanagedInstancesCommand command = new 
GetUnmanagedInstancesCommand();
+         command.setInstanceName(instanceName);
+         command.setManagedInstancesNames(managedVms);
+         Answer answer = agentManager.easySend(host.getId(), command);
+         if (!(answer instanceof GetUnmanagedInstancesAnswer)) {
+             return unmanagedInstances;
+         }
+         GetUnmanagedInstancesAnswer unmanagedInstancesAnswer = 
(GetUnmanagedInstancesAnswer) answer;
+         unmanagedInstances = unmanagedInstancesAnswer.getUnmanagedInstances();
+         return unmanagedInstances;
+     }
+ 
 -    @Override
 -    public ListResponse<UnmanagedInstanceResponse> 
listUnmanagedInstances(ListUnmanagedInstancesCmd cmd) {
 +    private Cluster basicAccessChecks(Long clusterId) {
          final Account caller = CallContext.current().getCallingAccount();
          if (caller.getType() != Account.Type.ADMIN) {
 -            throw new PermissionDeniedException(String.format("Cannot perform 
this operation, Calling account is not root admin: %s", caller.getUuid()));
 +            throw new PermissionDeniedException(String.format("Cannot perform 
this operation, caller account [%s] is not ROOT Admin.", caller.getUuid()));
          }
 -        final Long clusterId = cmd.getClusterId();
          if (clusterId == null) {
 -            throw new InvalidParameterValueException(String.format("Cluster 
ID cannot be null"));
 +            throw new InvalidParameterValueException("Cluster ID cannot be 
null.");
          }
          final Cluster cluster = clusterDao.findById(clusterId);
          if (cluster == null) {
@@@ -1190,39 -1196,40 +1187,40 @@@
              }
              Set<String> names = unmanagedInstances.keySet();
              for (String name : names) {
-                 if (instanceName.equals(name)) {
-                     UnmanagedInstanceTO unmanagedInstance = 
unmanagedInstances.get(name);
-                     if (unmanagedInstance == null) {
-                         throw new 
ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("Unable to 
retrieve details for unmanaged VM: %s", name));
+                 if (!instanceName.equals(name)) {
+                     continue;
+                 }
+                 UnmanagedInstanceTO unmanagedInstance = 
unmanagedInstances.get(name);
+                 if (unmanagedInstance == null) {
+                     throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, 
String.format("Unable to retrieve details for unmanaged VM: %s", name));
+                 }
+                 if 
(template.getName().equals(VM_IMPORT_DEFAULT_TEMPLATE_NAME)) {
+                     String osName = unmanagedInstance.getOperatingSystem();
+                     GuestOS guestOS = null;
+                     if (StringUtils.isNotEmpty(osName)) {
+                         guestOS = guestOSDao.findOneByDisplayName(osName);
                      }
-                     if 
(template.getName().equals(VM_IMPORT_DEFAULT_TEMPLATE_NAME)) {
-                         String osName = 
unmanagedInstance.getOperatingSystem();
-                         GuestOS guestOS = null;
-                         if (StringUtils.isNotEmpty(osName)) {
-                             guestOS = guestOSDao.findOneByDisplayName(osName);
-                         }
-                         GuestOSHypervisor guestOSHypervisor = null;
+                     GuestOSHypervisor guestOSHypervisor = null;
+                     if (guestOS != null) {
+                         guestOSHypervisor = 
guestOSHypervisorDao.findByOsIdAndHypervisor(guestOS.getId(), 
host.getHypervisorType().toString(), host.getHypervisorVersion());
+                     }
+                     if (guestOSHypervisor == null && 
StringUtils.isNotEmpty(unmanagedInstance.getOperatingSystemId())) {
+                         guestOSHypervisor = 
guestOSHypervisorDao.findByOsNameAndHypervisor(unmanagedInstance.getOperatingSystemId(),
 host.getHypervisorType().toString(), host.getHypervisorVersion());
+                     }
+                     if (guestOSHypervisor == null) {
                          if (guestOS != null) {
-                             guestOSHypervisor = 
guestOSHypervisorDao.findByOsIdAndHypervisor(guestOS.getId(), 
host.getHypervisorType().toString(), host.getHypervisorVersion());
-                         }
-                         if (guestOSHypervisor == null && 
StringUtils.isNotEmpty(unmanagedInstance.getOperatingSystemId())) {
-                             guestOSHypervisor = 
guestOSHypervisorDao.findByOsNameAndHypervisor(unmanagedInstance.getOperatingSystemId(),
 host.getHypervisorType().toString(), host.getHypervisorVersion());
-                         }
-                         if (guestOSHypervisor == null) {
-                             if (guestOS != null) {
-                                 throw new 
ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("Unable to find 
hypervisor guest OS ID: %s details for unmanaged VM: %s for hypervisor: %s 
version: %s. templateid parameter can be used to assign template for VM", 
guestOS.getUuid(), name, host.getHypervisorType().toString(), 
host.getHypervisorVersion()));
-                             }
-                             throw new 
ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("Unable to 
retrieve guest OS details for unmanaged VM: %s with OS name: %s, OS ID: %s for 
hypervisor: %s version: %s. templateid parameter can be used to assign template 
for VM", name, osName, unmanagedInstance.getOperatingSystemId(), 
host.getHypervisorType().toString(), host.getHypervisorVersion()));
+                             throw new 
ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("Unable to find 
hypervisor guest OS ID: %s details for unmanaged VM: %s for hypervisor: %s 
version: %s. templateid parameter can be used to assign template for VM", 
guestOS.getUuid(), name, host.getHypervisorType().toString(), 
host.getHypervisorVersion()));
                          }
-                         
template.setGuestOSId(guestOSHypervisor.getGuestOsId());
+                         throw new 
ServerApiException(ApiErrorCode.INTERNAL_ERROR, String.format("Unable to 
retrieve guest OS details for unmanaged VM: %s with OS name: %s, OS ID: %s for 
hypervisor: %s version: %s. templateid parameter can be used to assign template 
for VM", name, osName, unmanagedInstance.getOperatingSystemId(), 
host.getHypervisorType().toString(), host.getHypervisorVersion()));
                      }
-                     userVm = importVirtualMachineInternal(unmanagedInstance, 
instanceName, zone, cluster, host,
-                             template, displayName, hostName, 
CallContext.current().getCallingAccount(), owner, userId,
-                             serviceOffering, dataDiskOfferingMap,
-                             nicNetworkMap, nicIpAddressMap,
-                             details, cmd.getMigrateAllowed(), forced);
-                     break;
+                     template.setGuestOSId(guestOSHypervisor.getGuestOsId());
                  }
+                 userVm = importVirtualMachineInternal(unmanagedInstance, 
instanceName, zone, cluster, host,
 -                        template, displayName, hostName, caller, owner, 
userId,
++                        template, displayName, hostName, 
CallContext.current().getCallingAccount(), owner, userId,
+                         serviceOffering, dataDiskOfferingMap,
+                         nicNetworkMap, nicIpAddressMap,
+                         details, cmd.getMigrateAllowed(), forced);
+                 break;
              }
              if (userVm != null) {
                  break;

Reply via email to