mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	CS-16222: send password reset command only to the element responsible for the userdata service in network
Reviewed-by: Sheng Yang
This commit is contained in:
		
							parent
							
								
									19a3037325
								
							
						
					
					
						commit
						51cc301fef
					
				| @ -187,7 +187,7 @@ public interface NetworkManager extends NetworkService { | ||||
| 
 | ||||
|     Nic getDefaultNic(long vmId); | ||||
| 
 | ||||
|     List<? extends UserDataServiceProvider> getPasswordResetElements(); | ||||
|     UserDataServiceProvider getPasswordResetProvider(Network network); | ||||
| 
 | ||||
|     boolean networkIsConfiguredForExternalNetworking(long zoneId, long networkId); | ||||
| 
 | ||||
|  | ||||
| @ -4298,15 +4298,15 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public List<? extends UserDataServiceProvider> getPasswordResetElements() { | ||||
|         List<UserDataServiceProvider> elements = new ArrayList<UserDataServiceProvider>(); | ||||
|         for (NetworkElement element : _networkElements) { | ||||
|             if (element instanceof UserDataServiceProvider) { | ||||
|                 UserDataServiceProvider e = (UserDataServiceProvider) element; | ||||
|                 elements.add(e); | ||||
|             } | ||||
|     public UserDataServiceProvider getPasswordResetProvider(Network network) { | ||||
|         String passwordProvider = _ntwkSrvcDao.getProviderForServiceInNetwork(network.getId(), Service.UserData); | ||||
| 
 | ||||
|         if (passwordProvider == null) { | ||||
|             s_logger.debug("Network " + network + " doesn't support service " + Service.UserData.getName()); | ||||
|             return null; | ||||
|         } | ||||
|         return elements; | ||||
|          | ||||
|         return (UserDataServiceProvider)getElementImplementingProvider(passwordProvider); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|  | ||||
| @ -421,6 +421,8 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager | ||||
|                 userVm.setDetail("Encrypted.Password", encryptedPasswd); | ||||
|                 _vmDao.saveDetails(userVm); | ||||
|             } | ||||
|         } else { | ||||
|             throw new CloudRuntimeException("Failed to reset password for the virtual machine "); | ||||
|         } | ||||
| 
 | ||||
|         return userVm; | ||||
| @ -448,15 +450,14 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager | ||||
|             VirtualMachineProfile<VMInstanceVO> vmProfile = new VirtualMachineProfileImpl<VMInstanceVO>(vmInstance); | ||||
|             vmProfile.setParameter(VirtualMachineProfile.Param.VmPassword, password); | ||||
| 
 | ||||
|             List<? extends UserDataServiceProvider> elements = _networkMgr.getPasswordResetElements(); | ||||
| 
 | ||||
|             boolean result = true; | ||||
|             for (UserDataServiceProvider element : elements) { | ||||
|                 if (!element.savePassword(defaultNetwork, defaultNicProfile, vmProfile)) { | ||||
|                     result = false; | ||||
|                 } | ||||
|             UserDataServiceProvider element = _networkMgr.getPasswordResetProvider(defaultNetwork); | ||||
|             if (element == null) { | ||||
|                 throw new CloudRuntimeException("Can't find network element for " + Service.UserData.getName() +  | ||||
|                         " provider needed for password reset"); | ||||
|             } | ||||
| 
 | ||||
|             boolean result = element.savePassword(defaultNetwork, defaultNicProfile, vmProfile); | ||||
| 
 | ||||
|             // Need to reboot the virtual machine so that the password gets redownloaded from the DomR, and reset on the VM | ||||
|             if (!result) { | ||||
|                 s_logger.debug("Failed to reset password for the virutal machine; no need to reboot the vm"); | ||||
|  | ||||
| @ -610,7 +610,7 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager, NetworkS | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public List<? extends UserDataServiceProvider> getPasswordResetElements() { | ||||
|     public UserDataServiceProvider getPasswordResetProvider(Network network) { | ||||
|         // TODO Auto-generated method stub | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
| @ -805,7 +805,7 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager{ | ||||
|      * @see com.cloud.network.NetworkManager#getPasswordResetElements() | ||||
|      */ | ||||
|     @Override | ||||
|     public List<? extends UserDataServiceProvider> getPasswordResetElements() { | ||||
|     public UserDataServiceProvider getPasswordResetProvider(Network network) { | ||||
|         // TODO Auto-generated method stub | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user