From a75ff231315e045d441c25e6b368ad2e863cc004 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Fri, 27 Feb 2015 15:52:25 +0530 Subject: [PATCH] CLOUDSTACK-8273: fix baremetal account creation Signed-off-by: Rohit Yadav (cherry picked from commit e000646790597cb6c245311f57761b41d23a4e34) Signed-off-by: Rohit Yadav Conflicts: plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManagerImpl.java --- api/src/com/cloud/user/AccountService.java | 2 ++ .../manager/BaremetalVlanManagerImpl.java | 7 ++---- .../management/MockAccountManager.java | 6 +++++ .../com/cloud/user/AccountManagerImpl.java | 23 +++++++++++++++++++ .../cloud/user/MockAccountManagerImpl.java | 5 ++++ 5 files changed, 38 insertions(+), 5 deletions(-) diff --git a/api/src/com/cloud/user/AccountService.java b/api/src/com/cloud/user/AccountService.java index 75f95cea2fa..c483d059d07 100644 --- a/api/src/com/cloud/user/AccountService.java +++ b/api/src/com/cloud/user/AccountService.java @@ -105,6 +105,8 @@ public interface AccountService { public String[] createApiKeyAndSecretKey(RegisterCmd cmd); + public String[] createApiKeyAndSecretKey(final long userId); + UserAccount getUserByApiKey(String apiKey); RoleType getRoleType(Account account); 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 316959719ab..d3ea3d2f36e 100644 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManagerImpl.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManagerImpl.java @@ -42,8 +42,7 @@ 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.apache.cloudstack.utils.baremetal.BaremetalUtils; import org.springframework.web.client.RestTemplate; import javax.inject.Inject; @@ -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); 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 daeb6bd12c1..9bc11d6726a 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 @@ -115,6 +115,12 @@ public class MockAccountManager extends ManagerBase implements AccountManager { return null; } + @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 diff --git a/server/src/com/cloud/user/AccountManagerImpl.java b/server/src/com/cloud/user/AccountManagerImpl.java index 78a8733fb83..29ea9aa853d 100644 --- a/server/src/com/cloud/user/AccountManagerImpl.java +++ b/server/src/com/cloud/user/AccountManagerImpl.java @@ -2079,6 +2079,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(); diff --git a/server/test/com/cloud/user/MockAccountManagerImpl.java b/server/test/com/cloud/user/MockAccountManagerImpl.java index 35eb94acb43..26f89042472 100644 --- a/server/test/com/cloud/user/MockAccountManagerImpl.java +++ b/server/test/com/cloud/user/MockAccountManagerImpl.java @@ -277,6 +277,11 @@ public class MockAccountManagerImpl extends ManagerBase implements Manager, Acco return null; } + @Override + public String[] createApiKeyAndSecretKey(final long userId) { + return null; + } + @Override public boolean enableAccount(long accountId) { // TODO Auto-generated method stub