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;

Reply via email to