From d4428a93a8df233d5564ae4870649de1d9912f28 Mon Sep 17 00:00:00 2001 From: Ian Duffy Date: Sun, 20 Jul 2014 18:14:55 +0100 Subject: [PATCH] Allow for length of password on VMs to be set via global settings Conflicts: server/src/com/cloud/vm/UserVmManagerImpl.java setup/db/db/schema-430to440.sql --- .../src/com/cloud/server/ManagementServerImpl.java | 3 ++- server/src/com/cloud/vm/UserVmManagerImpl.java | 14 +++++++------- setup/db/db/schema-430to440.sql | 2 ++ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index d822b5961cb..99b12732fe7 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -895,7 +895,8 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe @Override public String generateRandomPassword() { - return PasswordGenerator.generateRandomPassword(6); + Integer passwordLength = Integer.parseInt(_configDao.getValue("vm.password.length")); + return PasswordGenerator.generateRandomPassword(passwordLength); } @Override diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 2de6f867d62..174f85b2b0b 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -35,6 +35,7 @@ import javax.ejb.Local; import javax.inject.Inject; import javax.naming.ConfigurationException; +import com.cloud.server.ManagementService; import org.apache.commons.codec.binary.Base64; import org.apache.log4j.Logger; @@ -482,6 +483,9 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir @Inject VolumeOrchestrationService volumeMgr; + @Inject + ManagementService _mgr; + @Override public UserVmVO getVirtualMachine(long vmId) { return _vmDao.findById(vmId); @@ -643,7 +647,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir String password = null; String sshPublicKey = s.getPublicKey(); if (template != null && template.getEnablePassword()) { - password = generateRandomPassword(); + password = _mgr.generateRandomPassword(); } boolean result = resetVMSSHKeyInternal(vmId, sshPublicKey, password); @@ -3362,10 +3366,6 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir } } - public String generateRandomPassword() { - return PasswordGenerator.generateRandomPassword(6); - } - @Override public Pair> startVirtualMachine(long vmId, Long hostId, Map additionalParams, String deploymentPlannerToUse) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException { @@ -3443,7 +3443,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir if (vm.getDetail("password") != null) { password = DBEncryptionUtil.decrypt(vm.getDetail("password")); } else { - password = generateRandomPassword(); + password = _mgr.generateRandomPassword(); } } @@ -4733,7 +4733,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir String password = null; if (template.getEnablePassword()) { - password = generateRandomPassword(); + password = _mgr.generateRandomPassword(); boolean result = resetVMPasswordInternal(vmId, password); if (result) { vm.setPassword(password); diff --git a/setup/db/db/schema-430to440.sql b/setup/db/db/schema-430to440.sql index cff38d0a693..fdf7300d0ab 100644 --- a/setup/db/db/schema-430to440.sql +++ b/setup/db/db/schema-430to440.sql @@ -2494,3 +2494,5 @@ CREATE TABLE `cloud`.`snapshot_policy_details` ( PRIMARY KEY (`id`), CONSTRAINT `fk_snapshot_policy_details__snapshot_policy_id` FOREIGN KEY `fk_snapshot_policy_details__snapshot_policy_id`(`policy_id`) REFERENCES `snapshot_policy`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +INSERT INTO `cloud`.`configuration`(category, instance, component, name, value, description, default_value) VALUES ('Secure', 'DEFAULT', 'management-server', 'vm.password.length', '6', 'Specifies the length of a randomly generated password', '6') ON DUPLICATE KEY UPDATE category='Secure';