From bd06e689fd11dd0467bea28e5db14965daa15e7f Mon Sep 17 00:00:00 2001 From: Rakesh Venkatesh Date: Fri, 21 Feb 2020 11:36:23 +0100 Subject: [PATCH 1/2] Minor change --- .../network/element/VirtualRouterElement.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/server/src/main/java/com/cloud/network/element/VirtualRouterElement.java b/server/src/main/java/com/cloud/network/element/VirtualRouterElement.java index 97a26d4f68d2..62865c196406 100644 --- a/server/src/main/java/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/main/java/com/cloud/network/element/VirtualRouterElement.java @@ -702,18 +702,27 @@ public boolean savePassword(final Network network, final NicProfile nic, final V // If any router is running then send save password command otherwise // save the password in DB + boolean savePasswordResult = true; + boolean isVrRunning = false; for (final VirtualRouter router : routers) { if (router.getState() == State.Running) { final boolean result = networkTopology.savePasswordToRouter(network, nic, uservm, router); - if (result) { - // Explicit password reset, while VM hasn't generated a password yet. - final UserVmVO userVmVO = _userVmDao.findById(vm.getId()); - userVmVO.setUpdateParameters(false); - _userVmDao.update(userVmVO.getId(), userVmVO); - } - return result; + isVrRunning = true; + savePasswordResult = savePasswordResult && result; } } + + // return the result only if one of the vr is running + if (isVrRunning) { + if (savePasswordResult) { + // Explicit password reset, while VM hasn't generated a password yet. + final UserVmVO userVmVO = _userVmDao.findById(vm.getId()); + userVmVO.setUpdateParameters(false); + _userVmDao.update(userVmVO.getId(), userVmVO); + } + return savePasswordResult; + } + final String password = (String) uservm.getParameter(VirtualMachineProfile.Param.VmPassword); final String password_encrypted = DBEncryptionUtil.encrypt(password); final UserVmVO userVmVO = _userVmDao.findById(vm.getId()); From 308b214386b77fcfcee356052171f37d82745e42 Mon Sep 17 00:00:00 2001 From: Rakesh Venkatesh Date: Wed, 26 Feb 2020 10:15:32 +0100 Subject: [PATCH 2/2] Return result on failure --- .../java/com/cloud/network/element/VirtualRouterElement.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/src/main/java/com/cloud/network/element/VirtualRouterElement.java b/server/src/main/java/com/cloud/network/element/VirtualRouterElement.java index 62865c196406..da066f0d9389 100644 --- a/server/src/main/java/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/main/java/com/cloud/network/element/VirtualRouterElement.java @@ -707,6 +707,11 @@ public boolean savePassword(final Network network, final NicProfile nic, final V for (final VirtualRouter router : routers) { if (router.getState() == State.Running) { final boolean result = networkTopology.savePasswordToRouter(network, nic, uservm, router); + if (!result) { + s_logger.error("Unable to save password for VM " + vm.getInstanceName() + + " on router " + router.getInstanceName()); + return false; + } isVrRunning = true; savePasswordResult = savePasswordResult && result; }