2020import com .cloud .baremetal .database .BaremetalRctDao ;
2121import com .cloud .baremetal .database .BaremetalRctVO ;
2222import com .cloud .baremetal .networkservice .BaremetalRctResponse ;
23+ import com .cloud .user .Account ;
24+ import com .cloud .user .AccountManager ;
25+ import com .cloud .user .AccountVO ;
26+ import com .cloud .user .UserVO ;
27+ import com .cloud .user .dao .AccountDao ;
28+ import com .cloud .user .dao .UserDao ;
2329import com .cloud .utils .component .ManagerBase ;
2430import com .cloud .utils .db .QueryBuilder ;
2531import com .cloud .utils .db .SearchCriteria ;
2632import com .google .gson .Gson ;
2733import org .apache .cloudstack .api .AddBaremetalRctCmd ;
34+ import org .apache .cloudstack .api .command .admin .user .RegisterCmd ;
2835import org .springframework .web .client .RestTemplate ;
2936
3037import javax .inject .Inject ;
3138import java .net .MalformedURLException ;
3239import java .net .URL ;
3340import java .util .ArrayList ;
3441import java .util .List ;
42+ import java .util .UUID ;
3543
3644/**
3745 * Created by frank on 5/8/14.
@@ -41,6 +49,12 @@ public class BaremetalVlanManagerImpl extends ManagerBase implements BaremetalVl
4149
4250 @ Inject
4351 private BaremetalRctDao rctDao ;
52+ @ Inject
53+ private AccountDao acntDao ;
54+ @ Inject
55+ private UserDao userDao ;
56+ @ Inject
57+ private AccountManager acntMgr ;
4458
4559 @ Override
4660 public BaremetalRctResponse addRct (AddBaremetalRctCmd cmd ) {
@@ -78,6 +92,41 @@ public String getName() {
7892 return "Baremetal Vlan Manager" ;
7993 }
8094
95+ @ Override
96+ public boolean start () {
97+ QueryBuilder <AccountVO > acntq = QueryBuilder .create (AccountVO .class );
98+ acntq .and (acntq .entity ().getAccountName (), SearchCriteria .Op .EQ , BaremetalVlanManager .BAREMETAL_SYSTEM_ACCOUNT_NAME );
99+ AccountVO acnt = acntq .find ();
100+ if (acnt != null ) {
101+ return true ;
102+ }
103+
104+ acnt = new AccountVO ();
105+ acnt .setAccountName (BAREMETAL_SYSTEM_ACCOUNT_NAME );
106+ acnt .setUuid (UUID .randomUUID ().toString ());
107+ acnt .setState (Account .State .enabled );
108+ acnt .setDomainId (1 );
109+ acnt = acntDao .persist (acnt );
110+
111+ UserVO user = new UserVO ();
112+ user .setState (Account .State .enabled );
113+ user .setUuid (UUID .randomUUID ().toString ());
114+ user .setAccountId (acnt .getAccountId ());
115+ user .setUsername (BAREMETAL_SYSTEM_ACCOUNT_NAME );
116+ user .setFirstname (BAREMETAL_SYSTEM_ACCOUNT_NAME );
117+ user .setLastname (BAREMETAL_SYSTEM_ACCOUNT_NAME );
118+ user .setPassword (UUID .randomUUID ().toString ());
119+ user = userDao .persist (user );
120+
121+ RegisterCmd cmd = new RegisterCmd ();
122+ cmd .setId (user .getId ());
123+ String [] keys = acntMgr .createApiKeyAndSecretKey (cmd );
124+ user .setApiKey (keys [0 ]);
125+ user .setSecretKey (keys [1 ]);
126+ userDao .update (user .getId (), user );
127+ return true ;
128+ }
129+
81130
82131 @ Override
83132 public List <Class <?>> getCommands () {
0 commit comments