CLOUDSTACK-6278

Baremetal Advanced Networking support
This commit is contained in:
Frank.Zhang 2014-08-21 15:37:57 -07:00
parent c2c511efcd
commit c301bd1c94
3 changed files with 55 additions and 0 deletions

View File

@ -52,6 +52,10 @@ public class RegisterCmd extends BaseCmd {
return id;
}
public void setId(Long id) {
this.id = id;
}
/////////////////////////////////////////////////////
/////////////// API Implementation///////////////////
/////////////////////////////////////////////////////

View File

@ -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);
}

View File

@ -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<AccountVO> 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<Class<?>> getCommands() {