mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	Fix NPE while checking for user data provider (#10255)
This commit is contained in:
		
							parent
							
								
									c1bc57b844
								
							
						
					
					
						commit
						238d0c5e30
					
				| @ -935,8 +935,12 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel, Confi | ||||
| 
 | ||||
|     @Override | ||||
|     public UserDataServiceProvider getUserDataUpdateProvider(Network network) { | ||||
|         String userDataProvider = _ntwkSrvcDao.getProviderForServiceInNetwork(network.getId(), Service.UserData); | ||||
|         if (network == null) { | ||||
|             s_logger.warn("No network details, can't fetch user data provider"); | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         String userDataProvider = _ntwkSrvcDao.getProviderForServiceInNetwork(network.getId(), Service.UserData); | ||||
|         if (userDataProvider == null) { | ||||
|             s_logger.debug("Network " + network + " doesn't support service " + Service.UserData.getName()); | ||||
|             return null; | ||||
|  | ||||
| @ -320,8 +320,12 @@ public class ConfigDriveNetworkElement extends AdapterBase implements NetworkEle | ||||
|             try { | ||||
|                 final Network network = _networkMgr.getNetwork(nic.getNetworkId()); | ||||
|                 final UserDataServiceProvider userDataUpdateProvider = _networkModel.getUserDataUpdateProvider(network); | ||||
|                 if (userDataUpdateProvider == null) { | ||||
|                     LOG.warn("Failed to get user data provider"); | ||||
|                     return false; | ||||
|                 } | ||||
|                 final Provider provider = userDataUpdateProvider.getProvider(); | ||||
|                 if (provider.equals(Provider.ConfigDrive)) { | ||||
|                 if (Provider.ConfigDrive.equals(provider)) { | ||||
|                     try { | ||||
|                         return deleteConfigDriveIso(vm); | ||||
|                     } catch (ResourceUnavailableException e) { | ||||
| @ -336,7 +340,12 @@ public class ConfigDriveNetworkElement extends AdapterBase implements NetworkEle | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean prepareMigration(NicProfile nic, Network network, VirtualMachineProfile vm, DeployDestination dest, ReservationContext context) { | ||||
|         if (_networkModel.getUserDataUpdateProvider(network).getProvider().equals(Provider.ConfigDrive)) { | ||||
|         final UserDataServiceProvider userDataUpdateProvider = _networkModel.getUserDataUpdateProvider(network); | ||||
|         if (userDataUpdateProvider == null) { | ||||
|             LOG.warn("Failed to prepare for migration, can't get user data provider"); | ||||
|             return false; | ||||
|         } | ||||
|         if (Provider.ConfigDrive.equals(userDataUpdateProvider.getProvider())) { | ||||
|             LOG.trace(String.format("[prepareMigration] for vm: %s", vm.getInstanceName())); | ||||
|             try { | ||||
|                 if (isConfigDriveIsoOnHostCache(vm.getId())) { | ||||
| @ -384,7 +393,11 @@ public class ConfigDriveNetworkElement extends AdapterBase implements NetworkEle | ||||
|     } | ||||
| 
 | ||||
|     private void recreateConfigDriveIso(NicProfile nic, Network network, VirtualMachineProfile vm, DeployDestination dest) throws ResourceUnavailableException { | ||||
|         if (nic.isDefaultNic() && _networkModel.getUserDataUpdateProvider(network).getProvider().equals(Provider.ConfigDrive)) { | ||||
|         final UserDataServiceProvider userDataUpdateProvider = _networkModel.getUserDataUpdateProvider(network); | ||||
|         if (userDataUpdateProvider == null) { | ||||
|             return; | ||||
|         } | ||||
|         if (nic.isDefaultNic() && Provider.ConfigDrive.equals(userDataUpdateProvider.getProvider())) { | ||||
|             DiskTO diskToUse = null; | ||||
|             for (DiskTO disk : vm.getDisks()) { | ||||
|                 if (disk.getType() == Volume.Type.ISO && disk.getPath() != null && disk.getPath().contains("configdrive")) { | ||||
|  | ||||
| @ -767,7 +767,12 @@ NetworkMigrationResponder, AggregatedCommandExecutor, RedundantResource, DnsServ | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean saveHypervisorHostname(NicProfile nicProfile, Network network, VirtualMachineProfile vm, DeployDestination dest) throws ResourceUnavailableException { | ||||
|         if (_networkModel.getUserDataUpdateProvider(network).getProvider().equals(Provider.VirtualRouter) && vm.getVirtualMachine().getType() == VirtualMachine.Type.User) { | ||||
|         final UserDataServiceProvider userDataUpdateProvider = _networkModel.getUserDataUpdateProvider(network); | ||||
|         if (userDataUpdateProvider == null) { | ||||
|             s_logger.warn("Failed to update hypervisor host details, can't get user data provider"); | ||||
|             return false; | ||||
|         } | ||||
|         if (Provider.VirtualRouter.equals(userDataUpdateProvider.getProvider()) && vm.getVirtualMachine().getType() == VirtualMachine.Type.User) { | ||||
|             VirtualMachine uvm = vm.getVirtualMachine(); | ||||
|             UserVmVO destVm = _userVmDao.findById(uvm.getId()); | ||||
|             VirtualMachineProfile profile = null; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user