diff --git a/api/src/org/apache/cloudstack/api/command/admin/user/RegisterCmd.java b/api/src/org/apache/cloudstack/api/command/admin/user/RegisterCmd.java old mode 100644 new mode 100755 index bb809990bde..2732bb90589 --- a/api/src/org/apache/cloudstack/api/command/admin/user/RegisterCmd.java +++ b/api/src/org/apache/cloudstack/api/command/admin/user/RegisterCmd.java @@ -52,6 +52,10 @@ public class RegisterCmd extends BaseCmd { return id; } + public void setId(Long id) { + this.id = id; + } + ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// ///////////////////////////////////////////////////// diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManager.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManager.java index 7ffe461c698..13e61fa9533 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManager.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManager.java @@ -26,5 +26,7 @@ import org.apache.cloudstack.api.AddBaremetalRctCmd; * Created by frank on 4/30/14. */ public interface BaremetalVlanManager extends Manager, PluggableService { + public static final String BAREMETAL_SYSTEM_ACCOUNT_NAME = "baremetal-system-account"; + BaremetalRctResponse addRct(AddBaremetalRctCmd cmd); } 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 16daa5baa55..f307af4cca4 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManagerImpl.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManagerImpl.java @@ -20,11 +20,18 @@ package com.cloud.baremetal.manager; import com.cloud.baremetal.database.BaremetalRctDao; import com.cloud.baremetal.database.BaremetalRctVO; import com.cloud.baremetal.networkservice.BaremetalRctResponse; +import com.cloud.user.Account; +import com.cloud.user.AccountManager; +import com.cloud.user.AccountVO; +import com.cloud.user.UserVO; +import com.cloud.user.dao.AccountDao; +import com.cloud.user.dao.UserDao; import com.cloud.utils.component.ManagerBase; import com.cloud.utils.db.QueryBuilder; import com.cloud.utils.db.SearchCriteria; import com.google.gson.Gson; import org.apache.cloudstack.api.AddBaremetalRctCmd; +import org.apache.cloudstack.api.command.admin.user.RegisterCmd; import org.springframework.web.client.RestTemplate; import javax.inject.Inject; @@ -32,6 +39,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; +import java.util.UUID; /** * Created by frank on 5/8/14. @@ -41,6 +49,12 @@ public class BaremetalVlanManagerImpl extends ManagerBase implements BaremetalVl @Inject private BaremetalRctDao rctDao; + @Inject + private AccountDao acntDao; + @Inject + private UserDao userDao; + @Inject + private AccountManager acntMgr; @Override public BaremetalRctResponse addRct(AddBaremetalRctCmd cmd) { @@ -78,6 +92,41 @@ public class BaremetalVlanManagerImpl extends ManagerBase implements BaremetalVl return "Baremetal Vlan Manager"; } + @Override + public boolean start() { + QueryBuilder acntq = QueryBuilder.create(AccountVO.class); + acntq.and(acntq.entity().getAccountName(), SearchCriteria.Op.EQ, BaremetalVlanManager.BAREMETAL_SYSTEM_ACCOUNT_NAME); + AccountVO acnt = acntq.find(); + if (acnt != null) { + return true; + } + + acnt = new AccountVO(); + acnt.setAccountName(BAREMETAL_SYSTEM_ACCOUNT_NAME); + acnt.setUuid(UUID.randomUUID().toString()); + acnt.setState(Account.State.enabled); + acnt.setDomainId(1); + acnt = acntDao.persist(acnt); + + UserVO user = new UserVO(); + user.setState(Account.State.enabled); + user.setUuid(UUID.randomUUID().toString()); + user.setAccountId(acnt.getAccountId()); + user.setUsername(BAREMETAL_SYSTEM_ACCOUNT_NAME); + user.setFirstname(BAREMETAL_SYSTEM_ACCOUNT_NAME); + user.setLastname(BAREMETAL_SYSTEM_ACCOUNT_NAME); + user.setPassword(UUID.randomUUID().toString()); + user = userDao.persist(user); + + RegisterCmd cmd = new RegisterCmd(); + cmd.setId(user.getId()); + String[] keys = acntMgr.createApiKeyAndSecretKey(cmd); + user.setApiKey(keys[0]); + user.setSecretKey(keys[1]); + userDao.update(user.getId(), user); + return true; + } + @Override public List> getCommands() {