Skip to content

Commit 81273dd

Browse files
committed
send password only to master router
1 parent 98bfb94 commit 81273dd

2 files changed

Lines changed: 26 additions & 32 deletions

File tree

server/src/com/cloud/network/element/VirtualRouterElement.java

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -775,43 +775,33 @@ public boolean savePassword(final Network network, final NicProfile nic, final V
775775
}
776776

777777
final VirtualMachineProfile uservm = vm;
778-
779778
final DataCenterVO dcVO = _dcDao.findById(network.getDataCenterId());
780779
final NetworkTopology networkTopology = networkTopologyContext.retrieveNetworkTopology(dcVO);
781780

782-
// If any router is not running then save the password in DB
783-
List<VirtualRouter> routerList = new ArrayList<VirtualRouter>();
784-
//applied true implies we have applied the password successfully on at
785-
//least one router. save true implies we have to save the password to send
786-
//it to the remaining routers.
787-
Boolean applied = true, save = false;
788-
for (final VirtualRouter router : routers) {
789-
if (router.getState() == State.Running) {
790-
routerList.add(router);
791-
} else {
792-
save = true;
793-
}
781+
if (!network.isRedundant()) {
782+
return networkTopology.savePasswordToRouter(network, nic, uservm, routers.get(0));
794783
}
795-
for (VirtualRouter router : routerList) {
796-
applied = networkTopology.savePasswordToRouter(network, nic, uservm, router);
797-
if (!applied)
798-
break;
784+
785+
for (final VirtualRouter router : routers) {
786+
if (router.getState() == State.Running && router.getRedundantState() == VirtualRouter.RedundantState.MASTER) {
787+
return networkTopology.savePasswordToRouter(network, nic, uservm, router);
788+
}
799789
}
800-
if (save && applied) {
801-
final String password = (String) uservm.getParameter(VirtualMachineProfile.Param.VmPassword);
802-
final String password_encrypted = DBEncryptionUtil.encrypt(password);
803-
final UserVmVO userVmVO = _userVmDao.findById(vm.getId());
790+
return savePassword(uservm);
791+
}
804792

805-
_userVmDao.loadDetails(userVmVO);
806-
userVmVO.setDetail("password", password_encrypted);
807-
_userVmDao.saveDetails(userVmVO);
793+
private boolean savePassword(VirtualMachineProfile uservm) {
794+
//save password
795+
final String password = (String) uservm.getParameter(VirtualMachineProfile.Param.VmPassword);
796+
final String password_encrypted = DBEncryptionUtil.encrypt(password);
797+
final UserVmVO userVmVO = _userVmDao.findById(uservm.getId());
808798

809-
userVmVO.setUpdateParameters(true);
810-
_userVmDao.update(userVmVO.getId(), userVmVO);
811-
}
812-
if (!applied) {
813-
return false;
814-
}
799+
_userVmDao.loadDetails(userVmVO);
800+
userVmVO.setDetail("password", password_encrypted);
801+
_userVmDao.saveDetails(userVmVO);
802+
803+
userVmVO.setUpdateParameters(true);
804+
_userVmDao.update(userVmVO.getId(), userVmVO);
815805
return true;
816806
}
817807

server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,17 @@ public class AdvancedNetworkVisitor extends BasicNetworkVisitor {
6161
@Override
6262
public boolean visit(final UserdataPwdRules userdata) throws ResourceUnavailableException {
6363
final VirtualRouter router = userdata.getRouter();
64-
6564
final Commands commands = new Commands(Command.OnError.Stop);
6665
final VirtualMachineProfile profile = userdata.getProfile();
6766
final NicVO nicVo = userdata.getNicVo();
6867
final UserVmVO userVM = userdata.getUserVM();
6968

70-
_commandSetupHelper.createPasswordCommand(router, profile, nicVo, commands);
69+
if (!router.getIsRedundantRouter() && router.getVpcId() == null && router.getRedundantState() == VirtualRouter.RedundantState.MASTER) {
70+
_commandSetupHelper.createPasswordCommand(router, profile, nicVo, commands);
71+
}else if (!router.getIsRedundantRouter() || router.getVpcId()!= null){
72+
_commandSetupHelper.createPasswordCommand(router, profile, nicVo, commands);
73+
}
74+
7175
_commandSetupHelper.createVmDataCommand(router, userVM, nicVo, userVM.getDetail("SSH.PublicKey"), commands);
7276

7377
return _networkGeneralHelper.sendCommandsToRouter(router, commands);

0 commit comments

Comments
 (0)