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);
|
Nic getDefaultNic(long vmId);
|
||||||
|
|
||||||
List<? extends UserDataServiceProvider> getPasswordResetElements();
|
UserDataServiceProvider getPasswordResetProvider(Network network);
|
||||||
|
|
||||||
boolean networkIsConfiguredForExternalNetworking(long zoneId, long networkId);
|
boolean networkIsConfiguredForExternalNetworking(long zoneId, long networkId);
|
||||||
|
|
||||||
|
|||||||
@ -4298,15 +4298,15 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<? extends UserDataServiceProvider> getPasswordResetElements() {
|
public UserDataServiceProvider getPasswordResetProvider(Network network) {
|
||||||
List<UserDataServiceProvider> elements = new ArrayList<UserDataServiceProvider>();
|
String passwordProvider = _ntwkSrvcDao.getProviderForServiceInNetwork(network.getId(), Service.UserData);
|
||||||
for (NetworkElement element : _networkElements) {
|
|
||||||
if (element instanceof UserDataServiceProvider) {
|
if (passwordProvider == null) {
|
||||||
UserDataServiceProvider e = (UserDataServiceProvider) element;
|
s_logger.debug("Network " + network + " doesn't support service " + Service.UserData.getName());
|
||||||
elements.add(e);
|
return null;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return elements;
|
|
||||||
|
return (UserDataServiceProvider)getElementImplementingProvider(passwordProvider);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -421,6 +421,8 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
|||||||
userVm.setDetail("Encrypted.Password", encryptedPasswd);
|
userVm.setDetail("Encrypted.Password", encryptedPasswd);
|
||||||
_vmDao.saveDetails(userVm);
|
_vmDao.saveDetails(userVm);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
throw new CloudRuntimeException("Failed to reset password for the virtual machine ");
|
||||||
}
|
}
|
||||||
|
|
||||||
return userVm;
|
return userVm;
|
||||||
@ -448,15 +450,14 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
|||||||
VirtualMachineProfile<VMInstanceVO> vmProfile = new VirtualMachineProfileImpl<VMInstanceVO>(vmInstance);
|
VirtualMachineProfile<VMInstanceVO> vmProfile = new VirtualMachineProfileImpl<VMInstanceVO>(vmInstance);
|
||||||
vmProfile.setParameter(VirtualMachineProfile.Param.VmPassword, password);
|
vmProfile.setParameter(VirtualMachineProfile.Param.VmPassword, password);
|
||||||
|
|
||||||
List<? extends UserDataServiceProvider> elements = _networkMgr.getPasswordResetElements();
|
UserDataServiceProvider element = _networkMgr.getPasswordResetProvider(defaultNetwork);
|
||||||
|
if (element == null) {
|
||||||
boolean result = true;
|
throw new CloudRuntimeException("Can't find network element for " + Service.UserData.getName() +
|
||||||
for (UserDataServiceProvider element : elements) {
|
" provider needed for password reset");
|
||||||
if (!element.savePassword(defaultNetwork, defaultNicProfile, vmProfile)) {
|
|
||||||
result = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
// Need to reboot the virtual machine so that the password gets redownloaded from the DomR, and reset on the VM
|
||||||
if (!result) {
|
if (!result) {
|
||||||
s_logger.debug("Failed to reset password for the virutal machine; no need to reboot the vm");
|
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
|
@Override
|
||||||
public List<? extends UserDataServiceProvider> getPasswordResetElements() {
|
public UserDataServiceProvider getPasswordResetProvider(Network network) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -805,7 +805,7 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager{
|
|||||||
* @see com.cloud.network.NetworkManager#getPasswordResetElements()
|
* @see com.cloud.network.NetworkManager#getPasswordResetElements()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<? extends UserDataServiceProvider> getPasswordResetElements() {
|
public UserDataServiceProvider getPasswordResetProvider(Network network) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user