CLOUDSTACK-8273: fix baremetal account creation Signed-off-by: Rohit Yadav <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/e0006467 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/e0006467 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/e0006467 Branch: refs/heads/4.5 Commit: e000646790597cb6c245311f57761b41d23a4e34 Parents: 9533c54 Author: Rohit Yadav <[email protected]> Authored: Fri Feb 27 15:52:25 2015 +0530 Committer: Rohit Yadav <[email protected]> Committed: Fri Feb 27 15:52:25 2015 +0530 ---------------------------------------------------------------------- api/src/com/cloud/user/AccountService.java | 2 ++ .../manager/BaremetalVlanManagerImpl.java | 5 +---- .../contrail/management/MockAccountManager.java | 6 +++++ .../src/com/cloud/user/AccountManagerImpl.java | 23 ++++++++++++++++++++ .../com/cloud/user/MockAccountManagerImpl.java | 5 +++++ 5 files changed, 37 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e0006467/api/src/com/cloud/user/AccountService.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/user/AccountService.java b/api/src/com/cloud/user/AccountService.java index 2785264..b343027 100755 --- a/api/src/com/cloud/user/AccountService.java +++ b/api/src/com/cloud/user/AccountService.java @@ -103,6 +103,8 @@ public interface AccountService { public String[] createApiKeyAndSecretKey(RegisterCmd cmd); + public String[] createApiKeyAndSecretKey(final long userId); + UserAccount getUserByApiKey(String apiKey); RoleType getRoleType(Account account); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e0006467/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManagerImpl.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManagerImpl.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManagerImpl.java index 56c31bb..9944838 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManagerImpl.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManagerImpl.java @@ -42,7 +42,6 @@ import com.google.gson.Gson; import org.apache.cloudstack.api.AddBaremetalRctCmd; import org.apache.cloudstack.api.DeleteBaremetalRctCmd; import org.apache.cloudstack.api.ListBaremetalRctCmd; -import org.apache.cloudstack.api.command.admin.user.RegisterCmd; import org.apache.cloudstack.utils.baremetal.BaremetalUtils; import org.springframework.web.client.RestTemplate; @@ -259,9 +258,7 @@ public class BaremetalVlanManagerImpl extends ManagerBase implements BaremetalVl user.setPassword(UUID.randomUUID().toString()); user = userDao.persist(user); - RegisterCmd cmd = new RegisterCmd(); - cmd.setId(user.getId()); - String[] keys = acntMgr.createApiKeyAndSecretKey(cmd); + String[] keys = acntMgr.createApiKeyAndSecretKey(user.getId()); user.setApiKey(keys[0]); user.setSecretKey(keys[1]); userDao.update(user.getId(), user); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e0006467/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java ---------------------------------------------------------------------- diff --git a/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java b/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java index 2f97a0f..682a701 100644 --- a/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java +++ b/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/MockAccountManager.java @@ -113,6 +113,12 @@ public class MockAccountManager extends ManagerBase implements AccountManager { } @Override + public String[] createApiKeyAndSecretKey(final long userId) { + // TODO Auto-generated method stub + return null; + } + + @Override public User createUser(String arg0, String arg1, String arg2, String arg3, String arg4, String arg5, String arg6, Long arg7, String arg8) { // TODO Auto-generated method stub return null; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e0006467/server/src/com/cloud/user/AccountManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/user/AccountManagerImpl.java b/server/src/com/cloud/user/AccountManagerImpl.java index 2867b67..20cd3f9 100755 --- a/server/src/com/cloud/user/AccountManagerImpl.java +++ b/server/src/com/cloud/user/AccountManagerImpl.java @@ -2076,6 +2076,11 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M s_logger.error("Failed to authenticate user: " + username + " in domain " + domainId); return null; } + // don't allow baremetal system user + if (BaremetalUtils.BAREMETAL_SYSTEM_ACCOUNT_NAME.equals(user.getUsername())) { + s_logger.error("Won't authenticate user: " + username + " in domain " + domainId); + return null; + } if (s_logger.isDebugEnabled()) { s_logger.debug("User: " + username + " in domain " + domainId + " has successfully logged in"); @@ -2210,6 +2215,24 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M return keys; } + @Override + @DB + @ActionEvent(eventType = EventTypes.EVENT_REGISTER_FOR_SECRET_API_KEY, eventDescription = "register for the developer API keys") + public String[] createApiKeyAndSecretKey(final long userId) { + User user = getUserIncludingRemoved(userId); + if (user == null) { + throw new InvalidParameterValueException("Unable to find user by id"); + } + final String[] keys = new String[2]; + Transaction.execute(new TransactionCallbackNoReturn() { + public void doInTransactionWithoutResult(TransactionStatus status) { + keys[0] = AccountManagerImpl.this.createUserApiKey(userId); + keys[1] = AccountManagerImpl.this.createUserSecretKey(userId); + } + }); + return keys; + } + private String createUserApiKey(long userId) { try { UserVO updatedUser = _userDao.createForUpdate(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/e0006467/server/test/com/cloud/user/MockAccountManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/test/com/cloud/user/MockAccountManagerImpl.java b/server/test/com/cloud/user/MockAccountManagerImpl.java index 8620031..1b0e9aa 100644 --- a/server/test/com/cloud/user/MockAccountManagerImpl.java +++ b/server/test/com/cloud/user/MockAccountManagerImpl.java @@ -265,6 +265,11 @@ public class MockAccountManagerImpl extends ManagerBase implements Manager, Acco } @Override + public String[] createApiKeyAndSecretKey(final long userId) { + return null; + } + + @Override public boolean enableAccount(long accountId) { // TODO Auto-generated method stub return false;
