You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ke...@apache.org on 2013/02/01 20:38:11 UTC
[29/50] [abbrv] - Separated RegionServiceImpl and RegionManagerImpl -
Added comments - Changed package name to org.apache.cloudstack.region
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/com/cloud/region/RegionManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/region/RegionManagerImpl.java b/server/src/com/cloud/region/RegionManagerImpl.java
deleted file mode 100755
index 988231e..0000000
--- a/server/src/com/cloud/region/RegionManagerImpl.java
+++ /dev/null
@@ -1,791 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.region;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.ejb.Local;
-import javax.naming.ConfigurationException;
-
-import org.apache.cloudstack.api.ApiConstants;
-import org.apache.cloudstack.api.command.admin.account.UpdateAccountCmd;
-import org.apache.cloudstack.api.command.admin.domain.UpdateDomainCmd;
-import org.apache.cloudstack.api.command.admin.user.DeleteUserCmd;
-import org.apache.cloudstack.api.command.admin.user.UpdateUserCmd;
-import org.apache.cloudstack.api.command.user.region.ListRegionsCmd;
-import org.apache.commons.httpclient.NameValuePair;
-import org.apache.log4j.Logger;
-
-import com.cloud.domain.Domain;
-import com.cloud.domain.DomainVO;
-import com.cloud.domain.dao.DomainDao;
-import com.cloud.exception.ConcurrentOperationException;
-import com.cloud.exception.InvalidParameterValueException;
-import com.cloud.exception.ResourceUnavailableException;
-import com.cloud.region.dao.RegionDao;
-import com.cloud.region.dao.RegionSyncDao;
-import com.cloud.user.Account;
-import com.cloud.user.AccountManager;
-import com.cloud.user.AccountVO;
-import com.cloud.user.DomainManager;
-import com.cloud.user.UserAccount;
-import com.cloud.user.UserVO;
-import com.cloud.user.dao.AccountDao;
-import com.cloud.user.dao.UserAccountDao;
-import com.cloud.user.dao.UserDao;
-import com.cloud.utils.component.Inject;
-import com.cloud.utils.component.Manager;
-import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.uuididentity.dao.IdentityDao;
-
-@Local(value = { RegionManager.class, RegionService.class })
-public class RegionManagerImpl implements RegionManager, RegionService, Manager{
- public static final Logger s_logger = Logger.getLogger(RegionManagerImpl.class);
-
- @Inject
- private RegionDao _regionDao;
- @Inject
- private AccountDao _accountDao;
- @Inject
- private AccountManager _accountMgr;
- @Inject
- private UserDao _userDao;
- @Inject
- private DomainDao _domainDao;
- @Inject
- private DomainManager _domainMgr;
- @Inject
- private UserAccountDao _userAccountDao;
- @Inject
- private IdentityDao _identityDao;
- @Inject
- private RegionSyncDao _regionSyncDao;
-
- private String _name;
- private int _id;
-
- @Override
- public boolean configure(final String name, final Map<String, Object> params) throws ConfigurationException {
- _name = name;
- _id = _regionDao.getRegionId();
- return true;
- }
-
- @Override
- public boolean start() {
- return true;
- }
-
- @Override
- public boolean stop() {
- return true;
- }
-
- @Override
- public String getName() {
- return _name;
- }
-
- @Override
- public Region addRegion(int id, String name, String endPoint, String apiKey, String secretKey) {
- if( _regionDao.findById(id) == null ){
- RegionVO region = new RegionVO(id, name, endPoint, apiKey, secretKey);
- return _regionDao.persist(region);
- } else {
- throw new InvalidParameterValueException("Region with id: "+id+" already exists");
- }
- }
-
- @Override
- public Region updateRegion(int id, String name, String endPoint, String apiKey, String secretKey) {
- RegionVO region = _regionDao.findById(id);
-
- if(region == null){
- throw new InvalidParameterValueException("Region with id: "+id+" does not exist");
- }
-
- if(name != null){
- region.setName(name);
- }
-
- if(endPoint != null){
- region.setEndPoint(endPoint);
- }
-
- if(apiKey != null){
- region.setApiKey(apiKey);
- }
-
- if(secretKey != null){
- region.setSecretKey(secretKey);
- }
-
- _regionDao.update(id, region);
- return _regionDao.findById(id);
- }
-
- @Override
- public boolean removeRegion(int id) {
- RegionVO region = _regionDao.findById(id);
- if(region != null){
- return _regionDao.remove(id);
- } else {
- throw new InvalidParameterValueException("Failed to delete Region: " + id + ", Region not found");
- }
- }
-
- @Override
- public List<RegionVO> listRegions(ListRegionsCmd cmd) {
- if(cmd.getId() != null){
- List<RegionVO> regions = new ArrayList<RegionVO>();
- regions.add(_regionDao.findById(cmd.getId()));
- return regions;
- }
- return _regionDao.listAll();
- }
-
- public int getId() {
- return _id;
- }
-
- public void setId(int _id) {
- this._id = _id;
- }
-
- @Override
- public boolean propogateAddAccount(String userName, String password, String firstName, String lastName, String email, String timezone,
- String accountName, short accountType, Long domainId, String networkDomain, Map<String, String> details, String accountUUID, String userUUID) {
- String command = "createAccount";
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- params.add(new NameValuePair(ApiConstants.USERNAME, userName));
- params.add(new NameValuePair(ApiConstants.PASSWORD, password));
- params.add(new NameValuePair(ApiConstants.FIRSTNAME, firstName));
- params.add(new NameValuePair(ApiConstants.LASTNAME, lastName));
- params.add(new NameValuePair(ApiConstants.EMAIL, email));
- params.add(new NameValuePair(ApiConstants.TIMEZONE, timezone));
- params.add(new NameValuePair(ApiConstants.ACCOUNT, accountName));
- params.add(new NameValuePair(ApiConstants.ACCOUNT_TYPE, ""+accountType));
- //use domain UUID
- params.add(new NameValuePair(ApiConstants.DOMAIN_ID, ((domainId != null) ? domainId.toString() : "")));
- params.add(new NameValuePair(ApiConstants.NETWORK_DOMAIN, networkDomain));
- params.add(new NameValuePair(ApiConstants.ACCOUNT_DETAILS, (details != null) ? details.toString() : ""));
- params.add(new NameValuePair(ApiConstants.ACCOUNT_ID, accountUUID));
- params.add(new NameValuePair(ApiConstants.USER_ID, userUUID));
- params.add(new NameValuePair(ApiConstants.REGION_ID, ""+getId()));
-
- List<RegionVO> regions = _regionDao.listAll();
- for (Region region : regions){
- if(region.getId() == getId()){
- continue;
- }
- s_logger.debug("Adding account :"+accountName+" to Region: "+region.getId());
- if (RegionsApiUtil.makeAPICall(region, command, params)) {
- s_logger.debug("Successfully added account :"+accountName+" to Region: "+region.getId());
- } else {
- addRegionSyncItem(region.getId(), command, params);
- s_logger.error("Error while Adding account :"+accountName+" to Region: "+region.getId());
- }
- }
- return true;
- }
-
- @Override
- public boolean deleteUserAccount(long accountId) {
- AccountVO account = _accountDao.findById(accountId);
- if(account == null){
- return false;
- }
- String accountUUID = account.getUuid();
- int regionId = account.getRegionId();
-
- String command = "deleteAccount";
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- params.add(new NameValuePair(ApiConstants.ID, accountUUID));
-
- if(getId() == regionId){
- if(_accountMgr.deleteUserAccount(accountId)){
- List<RegionVO> regions = _regionDao.listAll();
- for (Region region : regions){
- if(region.getId() == getId()){
- continue;
- }
- params.add(new NameValuePair(ApiConstants.IS_PROPAGATE, "true"));
- if (RegionsApiUtil.makeAPICall(region, command, params)) {
- s_logger.debug("Successfully deleted account :"+accountUUID+" in Region: "+region.getId());
- } else {
- s_logger.error("Error while deleting account :"+accountUUID+" in Region: "+region.getId());
- }
- }
- return true;
- } else {
- return false;
- }
- } else {
- //First delete in the Region where account is created
- Region region = _regionDao.findById(regionId);
- if (RegionsApiUtil.makeAPICall(region, command, params)) {
- s_logger.debug("Successfully deleted account :"+accountUUID+" in Region: "+region.getId());
- return true;
- } else {
- s_logger.error("Error while deleting account :"+accountUUID+" in Region: "+region.getId());
- return false;
- }
- }
- }
-
- @Override
- public Account updateAccount(UpdateAccountCmd cmd) {
- Long accountId = cmd.getId();
- Long domainId = cmd.getDomainId();
- DomainVO domain = _domainDao.findById(domainId);
- String accountName = cmd.getAccountName();
- String newAccountName = cmd.getNewName();
- String networkDomain = cmd.getNetworkDomain();
- //ToDo send details
- Map<String, String> details = cmd.getDetails();
-
- Account account = null;
- if (accountId != null) {
- account = _accountDao.findById(accountId);
- } else {
- account = _accountDao.findEnabledAccount(accountName, domainId);
- }
-
- // Check if account exists
- if (account == null || account.getType() == Account.ACCOUNT_TYPE_PROJECT) {
- s_logger.error("Unable to find account by accountId: " + accountId + " OR by name: " + accountName + " in domain " + domainId);
- throw new InvalidParameterValueException("Unable to find account by accountId: " + accountId + " OR by name: " + accountName + " in domain " + domainId);
- }
-
- String command = "updateAccount";
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- params.add(new NameValuePair(ApiConstants.NEW_NAME, newAccountName));
- params.add(new NameValuePair(ApiConstants.ID, account.getUuid()));
- params.add(new NameValuePair(ApiConstants.ACCOUNT, accountName));
- params.add(new NameValuePair(ApiConstants.DOMAIN_ID, domain.getUuid()));
- params.add(new NameValuePair(ApiConstants.NETWORK_DOMAIN, networkDomain));
- params.add(new NameValuePair(ApiConstants.NEW_NAME, newAccountName));
- if(details != null){
- params.add(new NameValuePair(ApiConstants.ACCOUNT_DETAILS, details.toString()));
- }
- int regionId = account.getRegionId();
- if(getId() == regionId){
- Account updatedAccount = _accountMgr.updateAccount(cmd);
- if(updatedAccount != null){
- List<RegionVO> regions = _regionDao.listAll();
- for (Region region : regions){
- if(region.getId() == getId()){
- continue;
- }
- params.add(new NameValuePair(ApiConstants.IS_PROPAGATE, "true"));
- if (RegionsApiUtil.makeAPICall(region, command, params)) {
- s_logger.debug("Successfully updated account :"+account.getUuid()+" in Region: "+region.getId());
- } else {
- s_logger.error("Error while updating account :"+account.getUuid()+" in Region: "+region.getId());
- }
- }
- }
- return updatedAccount;
- } else {
- //First update in the Region where account is created
- Region region = _regionDao.findById(regionId);
- RegionAccount updatedAccount = RegionsApiUtil.makeAccountAPICall(region, command, params);
- if (updatedAccount != null) {
- Long id = _identityDao.getIdentityId("account", updatedAccount.getUuid());
- updatedAccount.setId(id);
- Long domainID = _identityDao.getIdentityId("domain", updatedAccount.getDomainUuid());
- updatedAccount.setDomainId(domainID);
- s_logger.debug("Successfully updated account :"+account.getUuid()+" in source Region: "+region.getId());
- return updatedAccount;
- } else {
- throw new CloudRuntimeException("Error while updating account :"+account.getUuid()+" in source Region: "+region.getId());
- }
- }
- }
-
- @Override
- public Account disableAccount(String accountName, Long domainId, Long accountId, Boolean lockRequested) throws ConcurrentOperationException, ResourceUnavailableException {
- Account account = null;
- if (accountId != null) {
- account = _accountDao.findById(accountId);
- } else {
- account = _accountDao.findActiveAccount(accountName, domainId);
- }
-
- if (account == null || account.getType() == Account.ACCOUNT_TYPE_PROJECT) {
- throw new InvalidParameterValueException("Unable to find active account by accountId: " + accountId + " OR by name: " + accountName + " in domain " + domainId);
- }
- String accountUUID = account.getUuid();
-
- String command = "disableAccount";
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- params.add(new NameValuePair(ApiConstants.LOCK, lockRequested.toString()));
- params.add(new NameValuePair(ApiConstants.ID, accountUUID));
- DomainVO domain = _domainDao.findById(domainId);
- if(domain != null){
- params.add(new NameValuePair(ApiConstants.DOMAIN_ID, domain.getUuid()));
- }
-
- int regionId = account.getRegionId();
- if(getId() == regionId){
- Account retAccount = null;
- if(lockRequested){
- retAccount = _accountMgr.lockAccount(accountName, domainId, accountId);
- } else {
- retAccount = _accountMgr.disableAccount(accountName, domainId, accountId);
- }
- if(retAccount != null){
- List<RegionVO> regions = _regionDao.listAll();
- for (Region region : regions){
- if(region.getId() == getId()){
- continue;
- }
- params.add(new NameValuePair(ApiConstants.IS_PROPAGATE, "true"));
- if (RegionsApiUtil.makeAPICall(region, command, params)) {
- s_logger.debug("Successfully disabled account :"+accountUUID+" in Region: "+region.getId());
- } else {
- s_logger.error("Error while disabling account :"+accountUUID+" in Region: "+region.getId());
- }
- }
- }
- return retAccount;
- } else {
- //First disable account in the Region where account is created
- Region region = _regionDao.findById(regionId);
- Account retAccount = RegionsApiUtil.makeAccountAPICall(region, command, params);
- if (retAccount != null) {
- s_logger.debug("Successfully disabled account :"+accountUUID+" in source Region: "+region.getId());
- return retAccount;
- } else {
- throw new CloudRuntimeException("Error while disabling account :"+accountUUID+" in source Region: "+region.getId());
- }
- }
- }
-
- @Override
- public Account enableAccount(String accountName, Long domainId, Long accountId) {
- // Check if account exists
- Account account = null;
- if (accountId != null) {
- account = _accountDao.findById(accountId);
- } else {
- account = _accountDao.findActiveAccount(accountName, domainId);
- }
-
- if (account == null || account.getType() == Account.ACCOUNT_TYPE_PROJECT) {
- throw new InvalidParameterValueException("Unable to find account by accountId: " + accountId + " OR by name: " + accountName + " in domain " + domainId);
- }
- String accountUUID = account.getUuid();
-
- String command = "enableAccount";
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- params.add(new NameValuePair(ApiConstants.ID, accountUUID));
- params.add(new NameValuePair(ApiConstants.ACCOUNT, accountName));
- DomainVO domain = _domainDao.findById(domainId);
- if(domain != null){
- params.add(new NameValuePair(ApiConstants.DOMAIN_ID, domain.getUuid()));
- }
-
- int regionId = account.getRegionId();
- if(getId() == regionId){
- Account retAccount = _accountMgr.enableAccount(accountName, domainId, accountId);
- if(retAccount != null){
- List<RegionVO> regions = _regionDao.listAll();
-
- for (Region region : regions){
- if(region.getId() == getId()){
- continue;
- }
- params.add(new NameValuePair(ApiConstants.IS_PROPAGATE, "true"));
- if (RegionsApiUtil.makeAPICall(region, command, params)) {
- s_logger.debug("Successfully enabled account :"+accountUUID+" in Region: "+region.getId());
- } else {
- s_logger.error("Error while enabling account :"+accountUUID+" in Region: "+region.getId());
- }
- }
- }
- return retAccount;
- } else {
- //First disable account in the Region where account is created
- Region region = _regionDao.findById(regionId);
- Account retAccount = RegionsApiUtil.makeAccountAPICall(region, command, params);
- if (retAccount != null) {
- s_logger.debug("Successfully enabled account :"+accountUUID+" in source Region: "+region.getId());
- return retAccount;
- } else {
- throw new CloudRuntimeException("Error while enabling account :"+accountUUID+" in source Region: "+region.getId());
- }
- }
- }
-
- @Override
- public boolean deleteUser(DeleteUserCmd cmd) {
- long id = cmd.getId();
-
- UserVO user = _userDao.findById(id);
-
- if (user == null) {
- throw new InvalidParameterValueException("The specified user doesn't exist in the system");
- }
-
- String userUUID = user.getUuid();
- int regionId = user.getRegionId();
-
- String command = "deleteUser";
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- params.add(new NameValuePair(ApiConstants.ID, userUUID));
-
- if(getId() == regionId){
- if(_accountMgr.deleteUser(cmd)){
- List<RegionVO> regions = _regionDao.listAll();
- for (Region region : regions){
- if(region.getId() == getId()){
- continue;
- }
- params.add(new NameValuePair(ApiConstants.IS_PROPAGATE, "true"));
- if (RegionsApiUtil.makeAPICall(region, command, params)) {
- s_logger.debug("Successfully deleted user :"+userUUID+" in Region: "+region.getId());
- } else {
- s_logger.error("Error while deleting account :"+userUUID+" in Region: "+region.getId());
- }
- }
- return true;
- } else {
- return false;
- }
- } else {
- //First delete in the Region where account is created
- Region region = _regionDao.findById(regionId);
- if (RegionsApiUtil.makeAPICall(region, command, params)) {
- s_logger.debug("Successfully deleted user :"+userUUID+" in source Region: "+region.getId());
- return true;
- } else {
- s_logger.error("Error while deleting user :"+userUUID+" in source Region: "+region.getId());
- return false;
- }
- }
- }
-
- @Override
- public boolean deleteDomain(Long id, Boolean cleanup) {
-
- DomainVO domain = _domainDao.findById(id);
- if(domain == null){
- throw new InvalidParameterValueException("The specified domain doesn't exist in the system");
- }
- String domainUUID = domain.getUuid();
-
- String command = "deleteDomain";
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- params.add(new NameValuePair(ApiConstants.ID, domainUUID));
- params.add(new NameValuePair(ApiConstants.CLEANUP, cleanup.toString()));
-
- int regionId = domain.getRegionId();
- if(getId() == regionId){
- if(_domainMgr.deleteDomain(id, cleanup)){
- List<RegionVO> regions = _regionDao.listAll();
- for (Region region : regions){
- if(region.getId() == getId()){
- continue;
- }
- params.add(new NameValuePair(ApiConstants.IS_PROPAGATE, "true"));
- if (RegionsApiUtil.makeAPICall(region, command, params)) {
- s_logger.debug("Successfully deleted domain :"+domainUUID+" in Region: "+region.getId());
- } else {
- s_logger.error("Error while deleting domain :"+domainUUID+" in Region: "+region.getId());
- }
- }
- return true;
- } else {
- return false;
- }
- } else {
- //First delete in the Region where domain is created
- Region region = _regionDao.findById(regionId);
- if (RegionsApiUtil.makeAPICall(region, command, params)) {
- s_logger.debug("Successfully deleted domain :"+domainUUID+" in Region: "+region.getId());
- return true;
- } else {
- s_logger.error("Error while deleting domain :"+domainUUID+" in Region: "+region.getId());
- return false;
- }
- }
- }
-
- @Override
- public UserAccount updateUser(UpdateUserCmd cmd){
- long id = cmd.getId();
-
- UserVO user = _userDao.findById(id);
-
- if (user == null) {
- throw new InvalidParameterValueException("The specified user doesn't exist in the system");
- }
- String userUUID = user.getUuid();
-
- String command = "updateUser";
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- params.add(new NameValuePair(ApiConstants.ID, userUUID));
- params.add(new NameValuePair(ApiConstants.API_KEY, cmd.getApiKey()));
- params.add(new NameValuePair(ApiConstants.EMAIL, cmd.getEmail()));
- params.add(new NameValuePair(ApiConstants.FIRSTNAME, cmd.getFirstname()));
- params.add(new NameValuePair(ApiConstants.LASTNAME, cmd.getLastname()));
- params.add(new NameValuePair(ApiConstants.PASSWORD, cmd.getPassword()));
- params.add(new NameValuePair(ApiConstants.SECRET_KEY, cmd.getSecretKey()));
- params.add(new NameValuePair(ApiConstants.TIMEZONE, cmd.getTimezone()));
- params.add(new NameValuePair(ApiConstants.USERNAME, cmd.getUsername()));
-
- int regionId = user.getRegionId();
- if(getId() == regionId){
- UserAccount updateUser = _accountMgr.updateUser(cmd);
- if(updateUser != null){
- List<RegionVO> regions = _regionDao.listAll();
- for (Region region : regions){
- if(region.getId() == getId()){
- continue;
- }
- params.add(new NameValuePair(ApiConstants.IS_PROPAGATE, "true"));
- if (RegionsApiUtil.makeAPICall(region, command, params)) {
- s_logger.debug("Successfully updated user :"+userUUID+" in Region: "+region.getId());
- } else {
- s_logger.error("Error while updating user :"+userUUID+" in Region: "+region.getId());
- }
- }
- }
- return updateUser;
- } else {
- //First update in the Region where user was created
- Region region = _regionDao.findById(regionId);
- UserAccount updateUser = RegionsApiUtil.makeUserAccountAPICall(region, command, params);
- if (updateUser != null) {
- s_logger.debug("Successfully updated user :"+userUUID+" in source Region: "+region.getId());
- return updateUser;
- } else {
- throw new CloudRuntimeException("Error while updating user :"+userUUID+" in source Region: "+region.getId());
- }
- }
- }
-
- @Override
- public Domain updateDomain(UpdateDomainCmd cmd) {
- long id = cmd.getId();
- DomainVO domain = _domainDao.findById(id);
- if(domain == null){
- throw new InvalidParameterValueException("The specified domain doesn't exist in the system");
- }
- String domainUUID = domain.getUuid();
-
- String command = "updateDomain";
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- params.add(new NameValuePair(ApiConstants.ID, domainUUID));
- params.add(new NameValuePair(ApiConstants.NAME, cmd.getDomainName()));
- params.add(new NameValuePair(ApiConstants.NETWORK_DOMAIN, cmd.getNetworkDomain()));
-
- int regionId = domain.getRegionId();
- if(getId() == regionId){
- Domain updatedDomain = _domainMgr.updateDomain(cmd);
- if(updatedDomain != null){
- List<RegionVO> regions = _regionDao.listAll();
- for (Region region : regions){
- if(region.getId() == getId()){
- continue;
- }
- params.add(new NameValuePair(ApiConstants.IS_PROPAGATE, "true"));
- if (RegionsApiUtil.makeAPICall(region, command, params)) {
- s_logger.debug("Successfully updated updatedDomain :"+domainUUID+" in Region: "+region.getId());
- } else {
- s_logger.error("Error while updating updatedDomain :"+domainUUID+" in Region: "+region.getId());
- }
- }
- }
- return updatedDomain;
- } else {
- //First update in the Region where domain was created
- Region region = _regionDao.findById(regionId);
- RegionDomain updatedDomain = RegionsApiUtil.makeDomainAPICall(region, command, params);
- if (updatedDomain != null) {
- Long parentId = _identityDao.getIdentityId("domain", updatedDomain.getParentUuid());
- updatedDomain.setParent(parentId);
- s_logger.debug("Successfully updated user :"+domainUUID+" in source Region: "+region.getId());
- return (DomainVO)updatedDomain;
- } else {
- throw new CloudRuntimeException("Error while updating user :"+domainUUID+" in source Region: "+region.getId());
- }
- }
- }
-
- @Override
- public UserAccount disableUser(Long userId) {
- UserVO user = _userDao.findById(userId);
- if (user == null || user.getRemoved() != null) {
- throw new InvalidParameterValueException("Unable to find active user by id " + userId);
- }
- int regionId = user.getRegionId();
-
- String command = "disableUser";
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- params.add(new NameValuePair(ApiConstants.ID, user.getUuid()));
-
- if(getId() == regionId){
- UserAccount disabledUser = _accountMgr.disableUser(userId);
- if(disabledUser != null){
- List<RegionVO> regions = _regionDao.listAll();
- for (Region region : regions){
- if(region.getId() == getId()){
- continue;
- }
- params.add(new NameValuePair(ApiConstants.IS_PROPAGATE, "true"));
- if (RegionsApiUtil.makeAPICall(region, command, params)) {
- s_logger.debug("Successfully disabled user :"+user.getUuid()+" in Region: "+region.getId());
- } else {
- s_logger.error("Error while disabling user :"+user.getUuid()+" in Region: "+region.getId());
- }
- }
- }
- return disabledUser;
- } else {
- //First disable in the Region where user was created
- Region region = _regionDao.findById(regionId);
- UserAccount disabledUser = RegionsApiUtil.makeUserAccountAPICall(region, command, params);
- if (disabledUser != null) {
- s_logger.debug("Successfully disabled user :"+user.getUuid()+" in source Region: "+region.getId());
- return disabledUser;
- } else {
- throw new CloudRuntimeException("Error while disabling user :"+user.getUuid()+" in source Region: "+region.getId());
- }
- }
- }
-
- @Override
- public UserAccount enableUser(Long userId) {
- UserVO user = _userDao.findById(userId);
- if (user == null || user.getRemoved() != null) {
- throw new InvalidParameterValueException("Unable to find active user by id " + userId);
- }
- int regionId = user.getRegionId();
-
- String command = "enableUser";
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- params.add(new NameValuePair(ApiConstants.ID, user.getUuid()));
-
- if(getId() == regionId){
- UserAccount enabledUser = _accountMgr.enableUser(userId);
- if(enabledUser != null){
- List<RegionVO> regions = _regionDao.listAll();
- for (Region region : regions){
- if(region.getId() == getId()){
- continue;
- }
- params.add(new NameValuePair(ApiConstants.IS_PROPAGATE, "true"));
- if (RegionsApiUtil.makeAPICall(region, command, params)) {
- s_logger.debug("Successfully enabled user :"+user.getUuid()+" in Region: "+region.getId());
- } else {
- s_logger.error("Error while disabling user :"+user.getUuid()+" in Region: "+region.getId());
- }
- }
- }
- return enabledUser;
- } else {
- //First enable in the Region where user was created
- Region region = _regionDao.findById(regionId);
- UserAccount enabledUser = RegionsApiUtil.makeUserAccountAPICall(region, command, params);
- if (enabledUser != null) {
- s_logger.debug("Successfully enabled user :"+user.getUuid()+" in source Region: "+region.getId());
- return enabledUser;
- } else {
- throw new CloudRuntimeException("Error while enabling user :"+user.getUuid()+" in source Region: "+region.getId());
- }
- }
- }
-
- @Override
- public void propogateAddUser(String userName, String password,
- String firstName, String lastName, String email, String timezone,
- String accountName, String domainUUId, String userUUID) {
-
- String command = "createUser";
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- params.add(new NameValuePair(ApiConstants.USERNAME, userName));
- params.add(new NameValuePair(ApiConstants.PASSWORD, password));
- params.add(new NameValuePair(ApiConstants.FIRSTNAME, firstName));
- params.add(new NameValuePair(ApiConstants.LASTNAME, lastName));
- params.add(new NameValuePair(ApiConstants.EMAIL, email));
- params.add(new NameValuePair(ApiConstants.TIMEZONE, timezone));
- params.add(new NameValuePair(ApiConstants.ACCOUNT, accountName));
- params.add(new NameValuePair(ApiConstants.DOMAIN_ID, domainUUId));
- params.add(new NameValuePair(ApiConstants.USER_ID, userUUID));
- params.add(new NameValuePair(ApiConstants.REGION_ID, ""+getId()));
-
- List<RegionVO> regions = _regionDao.listAll();
- for (Region region : regions){
- if(region.getId() == getId()){
- continue;
- }
- s_logger.debug("Adding account :"+accountName+" to Region: "+region.getId());
- if (RegionsApiUtil.makeAPICall(region, command, params)) {
- s_logger.debug("Successfully added user :"+userName+" to Region: "+region.getId());
- } else {
- addRegionSyncItem(region.getId(), command, params);
- s_logger.error("Error while Adding user :"+userName+" to Region: "+region.getId());
- }
- }
- return;
- }
-
- @Override
- public void propogateAddDomain(String name, Long parentId, String networkDomain, String uuid) {
-
- String command = "createDomain";
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- params.add(new NameValuePair(ApiConstants.NAME, name));
- if(parentId != null){
- DomainVO domain = _domainDao.findById(parentId);
- if(domain != null){
- params.add(new NameValuePair(ApiConstants.PARENT_DOMAIN_ID, domain.getUuid()));
- }
- }
- params.add(new NameValuePair(ApiConstants.NETWORK_DOMAIN, networkDomain));
- params.add(new NameValuePair(ApiConstants.DOMAIN_ID, uuid));
- params.add(new NameValuePair(ApiConstants.REGION_ID, ""+getId()));
-
- List<RegionVO> regions = _regionDao.listAll();
- for (Region region : regions){
- if(region.getId() == getId()){
- continue;
- }
- s_logger.debug("Adding domain :"+name+" to Region: "+region.getId());
- if (RegionsApiUtil.makeAPICall(region, command, params)) {
- s_logger.debug("Successfully added domain :"+name+" to Region: "+region.getId());
- } else {
- addRegionSyncItem(region.getId(), command, params);
- s_logger.error("Error while Adding domain :"+name+" to Region: "+region.getId());
- }
- }
- return;
- }
-
- private void addRegionSyncItem(int regionId, String command, List<NameValuePair> params){
- String api = RegionsApiUtil.buildParams(command, params);
- RegionSyncVO sync = new RegionSyncVO(regionId, api);
- if(_regionSyncDao.persist(sync) == null){
- s_logger.error("Failed to add Region Sync Item. RegionId: "+regionId + "API command: "+api);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/com/cloud/region/RegionSyncVO.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/region/RegionSyncVO.java b/server/src/com/cloud/region/RegionSyncVO.java
deleted file mode 100644
index fc3f423..0000000
--- a/server/src/com/cloud/region/RegionSyncVO.java
+++ /dev/null
@@ -1,93 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.region;
-
-import java.util.Date;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-import com.cloud.utils.db.GenericDao;
-
-
-@Entity
-@Table(name="region_sync")
-public class RegionSyncVO implements RegionSync {
-
- @Id
- @Column(name="id")
- private long id;
-
- @Column(name="region_id")
- private int regionId;
-
- @Column(name="api")
- private String api;
-
- @Column(name=GenericDao.CREATED_COLUMN)
- private Date createDate;
-
- @Column(name="processed")
- boolean processed;
-
- public RegionSyncVO() {
- }
-
- public RegionSyncVO(int regionId, String api) {
- this.regionId = regionId;
- this.api = api;
- }
-
- public int getRegionId() {
- return regionId;
- }
-
- public void setRegionId(int regionId) {
- this.regionId = regionId;
- }
-
- public String getApi() {
- return api;
- }
-
- public void setApi(String api) {
- this.api = api;
- }
-
- public Date getCreateDate() {
- return createDate;
- }
-
- public void setCreateDate(Date createDate) {
- this.createDate = createDate;
- }
-
- public boolean isProcessed() {
- return processed;
- }
-
- public void setProcessed(boolean processed) {
- this.processed = processed;
- }
-
- public long getId() {
- return id;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/com/cloud/region/RegionUser.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/region/RegionUser.java b/server/src/com/cloud/region/RegionUser.java
deleted file mode 100644
index 8786558..0000000
--- a/server/src/com/cloud/region/RegionUser.java
+++ /dev/null
@@ -1,76 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.region;
-
-import com.cloud.user.UserVO;
-
-public class RegionUser extends UserVO {
- String accountUuid;
- String created;
- String account;
- String accounttype;
- String domainid;
- String domain;
-
- public RegionUser() {
- }
-
- public String getAccountuuid() {
- return accountUuid;
- }
-
- public void setAccountuuid(String accountUuid) {
- this.accountUuid = accountUuid;
- }
-
- public void setCreated(String created) {
- this.created = created;
- }
-
- public String getAccount() {
- return account;
- }
-
- public void setAccount(String account) {
- this.account = account;
- }
-
- public String getAccounttype() {
- return accounttype;
- }
-
- public void setAccounttype(String accounttype) {
- this.accounttype = accounttype;
- }
-
- public String getDomainid() {
- return domainid;
- }
-
- public void setDomainid(String domainid) {
- this.domainid = domainid;
- }
-
- public String getDomain() {
- return domain;
- }
-
- public void setDomain(String domain) {
- this.domain = domain;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/com/cloud/region/RegionVO.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/region/RegionVO.java b/server/src/com/cloud/region/RegionVO.java
deleted file mode 100644
index a168f39..0000000
--- a/server/src/com/cloud/region/RegionVO.java
+++ /dev/null
@@ -1,93 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.region;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-
-@Entity
-@Table(name="region")
-public class RegionVO implements Region{
-
- @Id
- @Column(name="id")
- private int id;
-
- @Column(name="name")
- private String name;
-
- @Column(name="end_point")
- private String endPoint;
-
- @Column(name="api_key")
- private String apiKey;
-
- @Column(name="secret_key")
- private String secretKey;
-
- public RegionVO() {
- }
-
- public RegionVO(int id, String name, String endPoint, String apiKey, String secretKey) {
- this.id = id;
- this.name = name;
- this.endPoint = endPoint;
- this.apiKey = apiKey;
- this.secretKey = secretKey;
- }
-
- public int getId() {
- return id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getEndPoint() {
- return endPoint;
- }
-
- public void setEndPoint(String endPoint) {
- this.endPoint = endPoint;
- }
-
- public String getApiKey() {
- return apiKey;
- }
-
- public void setApiKey(String apiKey) {
- this.apiKey = apiKey;
- }
-
- public String getSecretKey() {
- return secretKey;
- }
-
- public void setSecretKey(String secretKey) {
- this.secretKey = secretKey;
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/com/cloud/region/RegionsApiUtil.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/region/RegionsApiUtil.java b/server/src/com/cloud/region/RegionsApiUtil.java
deleted file mode 100644
index a7c7137..0000000
--- a/server/src/com/cloud/region/RegionsApiUtil.java
+++ /dev/null
@@ -1,256 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.region;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import javax.crypto.Mac;
-import javax.crypto.spec.SecretKeySpec;
-
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpException;
-import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.NameValuePair;
-import org.apache.commons.httpclient.methods.GetMethod;
-import org.apache.log4j.Logger;
-
-import com.cloud.domain.DomainVO;
-import com.cloud.user.UserAccount;
-import com.cloud.user.UserAccountVO;
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.io.xml.DomDriver;
-
-public class RegionsApiUtil {
- public static final Logger s_logger = Logger.getLogger(RegionsApiUtil.class);
-
- protected static boolean makeAPICall(Region region, String command, List<NameValuePair> params){
- try {
- String apiParams = buildParams(command, params);
- String url = buildUrl(apiParams, region);
- HttpClient client = new HttpClient();
- HttpMethod method = new GetMethod(url);
- if( client.executeMethod(method) == 200){
- return true;
- } else {
- return false;
- }
- } catch (HttpException e) {
- s_logger.error(e.getMessage());
- return false;
- } catch (IOException e) {
- s_logger.error(e.getMessage());
- return false;
- }
- }
-
- protected static RegionAccount makeAccountAPICall(Region region, String command, List<NameValuePair> params){
- try {
- String url = buildUrl(buildParams(command, params), region);
- HttpClient client = new HttpClient();
- HttpMethod method = new GetMethod(url);
- if( client.executeMethod(method) == 200){
- InputStream is = method.getResponseBodyAsStream();
- XStream xstream = new XStream(new DomDriver());
- xstream.alias("account", RegionAccount.class);
- xstream.alias("user", RegionUser.class);
- xstream.aliasField("id", RegionAccount.class, "uuid");
- xstream.aliasField("name", RegionAccount.class, "accountName");
- xstream.aliasField("accounttype", RegionAccount.class, "type");
- xstream.aliasField("domainid", RegionAccount.class, "domainUuid");
- xstream.aliasField("networkdomain", RegionAccount.class, "networkDomain");
- xstream.aliasField("id", RegionUser.class, "uuid");
- xstream.aliasField("accountId", RegionUser.class, "accountUuid");
- ObjectInputStream in = xstream.createObjectInputStream(is);
- return (RegionAccount)in.readObject();
- } else {
- return null;
- }
- } catch (HttpException e) {
- s_logger.error(e.getMessage());
- return null;
- } catch (IOException e) {
- s_logger.error(e.getMessage());
- return null;
- } catch (ClassNotFoundException e) {
- s_logger.error(e.getMessage());
- return null;
- }
- }
-
- protected static RegionDomain makeDomainAPICall(Region region, String command, List<NameValuePair> params){
- try {
- String url = buildUrl(buildParams(command, params), region);
- HttpClient client = new HttpClient();
- HttpMethod method = new GetMethod(url);
- if( client.executeMethod(method) == 200){
- InputStream is = method.getResponseBodyAsStream();
- XStream xstream = new XStream(new DomDriver());
- xstream.alias("domain", RegionDomain.class);
- xstream.aliasField("id", RegionDomain.class, "uuid");
- xstream.aliasField("parentdomainid", RegionDomain.class, "parentUuid");
- xstream.aliasField("networkdomain", DomainVO.class, "networkDomain");
- ObjectInputStream in = xstream.createObjectInputStream(is);
- return (RegionDomain)in.readObject();
- } else {
- return null;
- }
- } catch (HttpException e) {
- s_logger.error(e.getMessage());
- return null;
- } catch (IOException e) {
- s_logger.error(e.getMessage());
- return null;
- } catch (ClassNotFoundException e) {
- s_logger.error(e.getMessage());
- return null;
- }
- }
-
- protected static UserAccount makeUserAccountAPICall(Region region, String command, List<NameValuePair> params){
- try {
- String url = buildUrl(buildParams(command, params), region);
- HttpClient client = new HttpClient();
- HttpMethod method = new GetMethod(url);
- if( client.executeMethod(method) == 200){
- InputStream is = method.getResponseBodyAsStream();
- XStream xstream = new XStream(new DomDriver());
- xstream.alias("useraccount", UserAccountVO.class);
- xstream.aliasField("id", UserAccountVO.class, "uuid");
- ObjectInputStream in = xstream.createObjectInputStream(is);
- return (UserAccountVO)in.readObject();
- } else {
- return null;
- }
- } catch (HttpException e) {
- s_logger.error(e.getMessage());
- return null;
- } catch (IOException e) {
- s_logger.error(e.getMessage());
- return null;
- } catch (ClassNotFoundException e) {
- s_logger.error(e.getMessage());
- return null;
- }
- }
-
- protected static String buildParams(String command, List<NameValuePair> params) {
- StringBuffer paramString = new StringBuffer("command="+command);
- Iterator<NameValuePair> iter = params.iterator();
- try {
- while(iter.hasNext()){
- NameValuePair param = iter.next();
- if(param.getValue() != null && !(param.getValue().isEmpty())){
- paramString.append("&"+param.getName()+"="+URLEncoder.encode(param.getValue(), "UTF-8"));
- }
- }
- }
- catch (UnsupportedEncodingException e) {
- s_logger.error(e.getMessage());
- return null;
- }
- return paramString.toString();
- }
-
- private static String buildUrl(String apiParams, Region region) {
-
- String apiKey = region.getApiKey();
- String secretKey = region.getSecretKey();
-
-
- if (apiKey == null || secretKey == null) {
- return region.getEndPoint() +"?"+ apiParams;
- }
-
- String encodedApiKey;
- try {
- encodedApiKey = URLEncoder.encode(apiKey, "UTF-8");
-
- List<String> sortedParams = new ArrayList<String>();
- sortedParams.add("apikey=" + encodedApiKey.toLowerCase());
- StringTokenizer st = new StringTokenizer(apiParams, "&");
- String url = null;
- boolean first = true;
- while (st.hasMoreTokens()) {
- String paramValue = st.nextToken();
- String param = paramValue.substring(0, paramValue.indexOf("="));
- String value = paramValue.substring(paramValue.indexOf("=") + 1, paramValue.length());
- if (first) {
- url = param + "=" + value;
- first = false;
- } else {
- url = url + "&" + param + "=" + value;
- }
- sortedParams.add(param.toLowerCase() + "=" + value.toLowerCase());
- }
- Collections.sort(sortedParams);
-
-
- //Construct the sorted URL and sign and URL encode the sorted URL with your secret key
- String sortedUrl = null;
- first = true;
- for (String param : sortedParams) {
- if (first) {
- sortedUrl = param;
- first = false;
- } else {
- sortedUrl = sortedUrl + "&" + param;
- }
- }
- String encodedSignature = signRequest(sortedUrl, secretKey);
-
- String finalUrl = region.getEndPoint() +"?"+apiParams+ "&apiKey=" + apiKey + "&signature=" + encodedSignature;
-
- return finalUrl;
-
- } catch (UnsupportedEncodingException e) {
- s_logger.error(e.getMessage());
- return null;
- }
- }
-
- /**
- * 1. Signs a string with a secret key using SHA-1 2. Base64 encode the result 3. URL encode the final result
- *
- * @param request
- * @param key
- * @return
- */
- private static String signRequest(String request, String key) {
- try {
- Mac mac = Mac.getInstance("HmacSHA1");
- SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "HmacSHA1");
- mac.init(keySpec);
- mac.update(request.getBytes());
- byte[] encryptedBytes = mac.doFinal();
- return URLEncoder.encode(Base64.encodeBase64String(encryptedBytes), "UTF-8");
- } catch (Exception ex) {
- s_logger.error(ex.getMessage());
- return null;
- }
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/com/cloud/region/dao/RegionDao.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/region/dao/RegionDao.java b/server/src/com/cloud/region/dao/RegionDao.java
deleted file mode 100644
index e334ef8..0000000
--- a/server/src/com/cloud/region/dao/RegionDao.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.region.dao;
-
-import com.cloud.region.RegionVO;
-import com.cloud.utils.db.GenericDao;
-
-public interface RegionDao extends GenericDao<RegionVO, Integer> {
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/com/cloud/region/dao/RegionDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/region/dao/RegionDaoImpl.java b/server/src/com/cloud/region/dao/RegionDaoImpl.java
deleted file mode 100644
index 0d8a69d..0000000
--- a/server/src/com/cloud/region/dao/RegionDaoImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.region.dao;
-
-import javax.ejb.Local;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.region.RegionVO;
-import com.cloud.utils.db.GenericDaoBase;
-
-@Local(value={RegionDao.class})
-public class RegionDaoImpl extends GenericDaoBase<RegionVO, Integer> implements RegionDao {
- private static final Logger s_logger = Logger.getLogger(RegionDaoImpl.class);
-
- public RegionDaoImpl(){
-
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/com/cloud/region/dao/RegionSyncDao.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/region/dao/RegionSyncDao.java b/server/src/com/cloud/region/dao/RegionSyncDao.java
deleted file mode 100644
index 5387d2e..0000000
--- a/server/src/com/cloud/region/dao/RegionSyncDao.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.region.dao;
-
-import com.cloud.region.RegionSyncVO;
-import com.cloud.utils.db.GenericDao;
-
-public interface RegionSyncDao extends GenericDao<RegionSyncVO, Integer> {
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/com/cloud/region/dao/RegionSyncDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/region/dao/RegionSyncDaoImpl.java b/server/src/com/cloud/region/dao/RegionSyncDaoImpl.java
deleted file mode 100644
index 766286e..0000000
--- a/server/src/com/cloud/region/dao/RegionSyncDaoImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.region.dao;
-
-import javax.ejb.Local;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.region.RegionSyncVO;
-import com.cloud.utils.db.GenericDaoBase;
-
-@Local(value={RegionSyncDao.class})
-public class RegionSyncDaoImpl extends GenericDaoBase<RegionSyncVO, Integer> implements RegionSyncDao {
- private static final Logger s_logger = Logger.getLogger(RegionSyncDaoImpl.class);
-
- public RegionSyncDaoImpl(){
-
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/com/cloud/server/ConfigurationServerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/server/ConfigurationServerImpl.java b/server/src/com/cloud/server/ConfigurationServerImpl.java
index a63ad19..2ae0843 100755
--- a/server/src/com/cloud/server/ConfigurationServerImpl.java
+++ b/server/src/com/cloud/server/ConfigurationServerImpl.java
@@ -52,8 +52,6 @@ import com.cloud.offerings.NetworkOfferingServiceMapVO;
import com.cloud.offerings.NetworkOfferingVO;
import com.cloud.offerings.dao.NetworkOfferingDao;
import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
-import com.cloud.region.RegionVO;
-import com.cloud.region.dao.RegionDao;
import com.cloud.service.ServiceOfferingVO;
import com.cloud.service.dao.ServiceOfferingDao;
import com.cloud.storage.DiskOfferingVO;
@@ -74,6 +72,8 @@ import com.cloud.utils.net.NetUtils;
import com.cloud.utils.script.Script;
import com.cloud.uuididentity.dao.IdentityDao;
+import org.apache.cloudstack.region.RegionVO;
+import org.apache.cloudstack.region.dao.RegionDao;
import org.apache.commons.codec.binary.Base64;
import org.apache.log4j.Logger;
@@ -1252,7 +1252,6 @@ public class ConfigurationServerImpl implements ConfigurationServer {
private void createDefaultRegion(){
//Get Region name and URL from db.properties
_regionDao.persist(new RegionVO(_regionDao.getRegionId(), "Local", "http://localhost:8080/client/api", "", ""));
- //Default account, user and domain should share same uuid
}
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/com/cloud/user/AccountManager.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/user/AccountManager.java b/server/src/com/cloud/user/AccountManager.java
index a262308..4b3a601 100755
--- a/server/src/com/cloud/user/AccountManager.java
+++ b/server/src/com/cloud/user/AccountManager.java
@@ -20,6 +20,10 @@ import java.util.List;
import java.util.Map;
import org.apache.cloudstack.acl.ControlledEntity;
+import org.apache.cloudstack.api.command.admin.account.UpdateAccountCmd;
+import org.apache.cloudstack.api.command.admin.user.DeleteUserCmd;
+import org.apache.cloudstack.api.command.admin.user.UpdateUserCmd;
+
import com.cloud.api.query.vo.ControlledViewEntity;
import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.ResourceUnavailableException;
@@ -102,5 +106,94 @@ public interface AccountManager extends AccountService {
void buildACLSearchParameters(Account caller, Long id,
String accountName, Long projectId, List<Long> permittedAccounts, Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject, boolean listAll, boolean forProjectInvitation);
-
+
+ /**
+ * Deletes a user by userId
+ *
+ * @param accountId
+ * - id of the account do delete
+ *
+ * @return true if delete was successful, false otherwise
+ */
+ boolean deleteUserAccount(long accountId);
+
+ /**
+ * Updates an account
+ *
+ * @param cmd
+ * - the parameter containing accountId or account nameand domainId
+ * @return updated account object
+ */
+ Account updateAccount(UpdateAccountCmd cmd);
+
+ /**
+ * Disables an account by accountName and domainId
+ *
+ * @param accountName
+ * @param domainId
+ * @param accountId
+ * @param disabled
+ * account if success
+ * @return true if disable was successful, false otherwise
+ */
+ Account disableAccount(String accountName, Long domainId, Long accountId) throws ConcurrentOperationException, ResourceUnavailableException;
+
+ /**
+ * Enables an account by accountId
+ *
+ * @param accountName
+ * - the enableAccount command defining the accountId to be deleted.
+ * @param domainId
+ * TODO
+ * @param accountId
+ * @return account object
+ */
+ Account enableAccount(String accountName, Long domainId, Long accountId);
+
+ /**
+ * Deletes user by Id
+ * @param deleteUserCmd
+ * @return
+ */
+ boolean deleteUser(DeleteUserCmd deleteUserCmd);
+
+ /**
+ * Update a user by userId
+ *
+ * @param userId
+ * @return UserAccount object
+ */
+ UserAccount updateUser(UpdateUserCmd cmd);
+
+ /**
+ * Disables a user by userId
+ *
+ * @param userId
+ * - the userId
+ * @return UserAccount object
+ */
+ UserAccount disableUser(long userId);
+
+ /**
+ * Enables a user
+ *
+ * @param userId
+ * - the userId
+ * @return UserAccount object
+ */
+ UserAccount enableUser(long userId);
+
+ /**
+ * Locks an account by accountId. A locked account cannot access the API, but will still have running VMs/IP
+ * addresses
+ * allocated/etc.
+ *
+ * @param accountName
+ * - the LockAccount command defining the accountId to be locked.
+ * @param domainId
+ * TODO
+ * @param accountId
+ * @return account object
+ */
+ Account lockAccount(String accountName, Long domainId, Long accountId);
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/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 c5c53e8..919b7c6 100755
--- a/server/src/com/cloud/user/AccountManagerImpl.java
+++ b/server/src/com/cloud/user/AccountManagerImpl.java
@@ -52,11 +52,12 @@ import com.cloud.api.query.vo.ControlledViewEntity;
import org.apache.cloudstack.api.command.admin.user.DeleteUserCmd;
import org.apache.cloudstack.api.command.admin.user.UpdateUserCmd;
+import org.apache.cloudstack.region.RegionManager;
+
import com.cloud.configuration.Config;
import com.cloud.configuration.ConfigurationManager;
import com.cloud.configuration.ResourceLimit;
import com.cloud.configuration.dao.ConfigurationDao;
-import com.cloud.configuration.dao.ConfigurationDaoImpl;
import com.cloud.configuration.dao.ResourceCountDao;
import com.cloud.dc.DataCenterVO;
import com.cloud.dc.dao.DataCenterDao;
@@ -97,7 +98,6 @@ import com.cloud.projects.ProjectManager;
import com.cloud.projects.ProjectVO;
import com.cloud.projects.dao.ProjectAccountDao;
import com.cloud.projects.dao.ProjectDao;
-import com.cloud.region.RegionManager;
import com.cloud.server.auth.UserAuthenticator;
import com.cloud.storage.StorageManager;
import com.cloud.storage.VMTemplateVO;
@@ -830,13 +830,13 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag
user.setRegistrationToken(registrationToken);
}
txn.commit();
- //Propogate Add account to other Regions
- _regionMgr.propogateAddAccount(userName, password, firstName, lastName, email, timezone, accountName, accountType, domainId,
+ //Propagate Add account to other Regions
+ _regionMgr.propagateAddAccount(userName, password, firstName, lastName, email, timezone, accountName, accountType, domainId,
networkDomain, details, account.getUuid(), user.getUuid());
//check success
return _userAccountDao.findById(user.getId());
} else {
- // Account is propogated from another Region
+ // Account is propagated from another Region
Transaction txn = Transaction.currentTxn();
txn.start();
@@ -891,8 +891,8 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag
UserVO user = null;
if(regionId == null){
user = createUser(account.getId(), userName, password, firstName, lastName, email, timeZone);
- //Propogate Add user to other Regions
- _regionMgr.propogateAddUser(userName, password, firstName, lastName, email, timeZone, accountName, domain.getUuid(), user.getUuid());
+ //Propagate Add user to peer Regions
+ _regionMgr.propagateAddUser(userName, password, firstName, lastName, email, timeZone, accountName, domain.getUuid(), user.getUuid());
} else {
user = createUser(account.getId(), userName, password, firstName, lastName, email, timeZone, userUUID, regionId);
}
@@ -1744,7 +1744,6 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag
// Create default security group
_networkGroupMgr.createDefaultSecurityGroup(accountId);
- //_regionMgr.propogateAddResource();
txn.commit();
return account;
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/com/cloud/user/DomainManager.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/user/DomainManager.java b/server/src/com/cloud/user/DomainManager.java
index aea653e..af102e2 100644
--- a/server/src/com/cloud/user/DomainManager.java
+++ b/server/src/com/cloud/user/DomainManager.java
@@ -19,6 +19,8 @@ package com.cloud.user;
import java.util.List;
import java.util.Set;
+import org.apache.cloudstack.api.command.admin.domain.UpdateDomainCmd;
+
import com.cloud.domain.Domain;
import com.cloud.domain.DomainVO;
@@ -34,5 +36,15 @@ public interface DomainManager extends DomainService {
List<? extends Domain> findInactiveDomains();
boolean deleteDomain(DomainVO domain, Boolean cleanup);
-
+
+ boolean deleteDomain(long domainId, Boolean cleanup);
+
+ /**
+ * update an existing domain
+ *
+ * @param cmd
+ * - the command containing domainId and new domainName
+ * @return Domain object if the command succeeded
+ */
+ Domain updateDomain(UpdateDomainCmd cmd);
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/com/cloud/user/DomainManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/user/DomainManagerImpl.java b/server/src/com/cloud/user/DomainManagerImpl.java
index 92277e8..2fde0e1 100644
--- a/server/src/com/cloud/user/DomainManagerImpl.java
+++ b/server/src/com/cloud/user/DomainManagerImpl.java
@@ -27,6 +27,7 @@ import javax.naming.ConfigurationException;
import org.apache.cloudstack.api.command.admin.domain.ListDomainChildrenCmd;
import org.apache.cloudstack.api.command.admin.domain.ListDomainsCmd;
import org.apache.cloudstack.api.command.admin.domain.UpdateDomainCmd;
+import org.apache.cloudstack.region.RegionManager;
import org.apache.log4j.Logger;
import com.cloud.configuration.ResourceLimit;
@@ -43,7 +44,6 @@ import com.cloud.exception.ResourceUnavailableException;
import com.cloud.projects.ProjectManager;
import com.cloud.projects.ProjectVO;
import com.cloud.projects.dao.ProjectDao;
-import com.cloud.region.RegionManager;
import com.cloud.service.ServiceOfferingVO;
import com.cloud.service.dao.ServiceOfferingDao;
import com.cloud.storage.DiskOfferingVO;
@@ -187,8 +187,9 @@ public class DomainManagerImpl implements DomainManager, DomainService, Manager
DomainVO domain = _domainDao.create(new DomainVO(name, ownerId, parentId, networkDomain, _regionMgr.getId()));
_resourceCountDao.createResourceCounts(domain.getId(), ResourceLimit.ResourceOwnerType.Domain);
- _regionMgr.propogateAddDomain(name, parentId, networkDomain, domain.getUuid());
txn.commit();
+ //Propagate domain creation to peer Regions
+ _regionMgr.propagateAddDomain(name, parentId, networkDomain, domain.getUuid());
return domain;
} else {
Transaction txn = Transaction.currentTxn();
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/com/cloud/user/dao/UserDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/user/dao/UserDaoImpl.java b/server/src/com/cloud/user/dao/UserDaoImpl.java
index 19ef691..e1f4a2e 100644
--- a/server/src/com/cloud/user/dao/UserDaoImpl.java
+++ b/server/src/com/cloud/user/dao/UserDaoImpl.java
@@ -20,10 +20,7 @@ import java.util.List;
import javax.ejb.Local;
-import com.cloud.region.RegionManager;
import com.cloud.user.UserVO;
-import com.cloud.utils.component.Inject;
-import com.cloud.utils.db.DB;
import com.cloud.utils.db.GenericDaoBase;
import com.cloud.utils.db.SearchBuilder;
import com.cloud.utils.db.SearchCriteria;
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/org/apache/cloudstack/region/RegionAccount.java
----------------------------------------------------------------------
diff --git a/server/src/org/apache/cloudstack/region/RegionAccount.java b/server/src/org/apache/cloudstack/region/RegionAccount.java
new file mode 100644
index 0000000..dba3101
--- /dev/null
+++ b/server/src/org/apache/cloudstack/region/RegionAccount.java
@@ -0,0 +1,287 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package org.apache.cloudstack.region;
+
+import com.cloud.user.AccountVO;
+
+public class RegionAccount extends AccountVO {
+ String accountUuid;
+ String domainUuid;
+ String domain;
+ String receivedbytes;
+ String sentbytes;
+ String vmlimit;
+ String vmtotal;
+ String vmavailable;
+ String iplimit;
+ String iptotal;
+ String ipavailable;
+ String volumelimit;
+ String volumetotal;
+ String volumeavailable;
+ String snapshotlimit;
+ String snapshottotal;
+ String snapshotavailable;
+ String templatelimit;
+ String templatetotal;
+ String templateavailable;
+ String vmstopped;
+ String vmrunning;
+ String projectlimit;
+ String projecttotal;
+ String projectavailable;
+ String networklimit;
+ String networktotal;
+ String networkavailable;
+ RegionUser user;
+
+ public RegionAccount() {
+ }
+
+ public String getAccountuuid() {
+ return accountUuid;
+ }
+
+ public void setAccountuuid(String accountUuid) {
+ this.accountUuid = accountUuid;
+ }
+
+ public String getDomainUuid() {
+ return domainUuid;
+ }
+
+ public void setDomainUuid(String domainUuid) {
+ this.domainUuid = domainUuid;
+ }
+
+ public String getDomain() {
+ return domain;
+ }
+
+ public void setDomain(String domain) {
+ this.domain = domain;
+ }
+
+ public String getReceivedbytes() {
+ return receivedbytes;
+ }
+
+ public void setReceivedbytes(String receivedbytes) {
+ this.receivedbytes = receivedbytes;
+ }
+
+ public String getSentbytes() {
+ return sentbytes;
+ }
+
+ public void setSentbytes(String sentbytes) {
+ this.sentbytes = sentbytes;
+ }
+
+ public String getVmlimit() {
+ return vmlimit;
+ }
+
+ public void setVmlimit(String vmlimit) {
+ this.vmlimit = vmlimit;
+ }
+
+ public String getVmtotal() {
+ return vmtotal;
+ }
+
+ public void setVmtotal(String vmtotal) {
+ this.vmtotal = vmtotal;
+ }
+
+ public String getVmavailable() {
+ return vmavailable;
+ }
+
+ public void setVmavailable(String vmavailable) {
+ this.vmavailable = vmavailable;
+ }
+
+ public String getIplimit() {
+ return iplimit;
+ }
+
+ public void setIplimit(String iplimit) {
+ this.iplimit = iplimit;
+ }
+
+ public String getIptotal() {
+ return iptotal;
+ }
+
+ public void setIptotal(String iptotal) {
+ this.iptotal = iptotal;
+ }
+
+ public String getIpavailable() {
+ return ipavailable;
+ }
+
+ public void setIpavailable(String ipavailable) {
+ this.ipavailable = ipavailable;
+ }
+
+ public String getVolumelimit() {
+ return volumelimit;
+ }
+
+ public void setVolumelimit(String volumelimit) {
+ this.volumelimit = volumelimit;
+ }
+
+ public String getVolumetotal() {
+ return volumetotal;
+ }
+
+ public void setVolumetotal(String volumetotal) {
+ this.volumetotal = volumetotal;
+ }
+
+ public String getVolumeavailable() {
+ return volumeavailable;
+ }
+
+ public void setVolumeavailable(String volumeavailable) {
+ this.volumeavailable = volumeavailable;
+ }
+
+ public String getSnapshotlimit() {
+ return snapshotlimit;
+ }
+
+ public void setSnapshotlimit(String snapshotlimit) {
+ this.snapshotlimit = snapshotlimit;
+ }
+
+ public String getSnapshottotal() {
+ return snapshottotal;
+ }
+
+ public void setSnapshottotal(String snapshottotal) {
+ this.snapshottotal = snapshottotal;
+ }
+
+ public String getSnapshotavailable() {
+ return snapshotavailable;
+ }
+
+ public void setSnapshotavailable(String snapshotavailable) {
+ this.snapshotavailable = snapshotavailable;
+ }
+
+ public String getTemplatelimit() {
+ return templatelimit;
+ }
+
+ public void setTemplatelimit(String templatelimit) {
+ this.templatelimit = templatelimit;
+ }
+
+ public String getTemplatetotal() {
+ return templatetotal;
+ }
+
+ public void setTemplatetotal(String templatetotal) {
+ this.templatetotal = templatetotal;
+ }
+
+ public String getTemplateavailable() {
+ return templateavailable;
+ }
+
+ public void setTemplateavailable(String templateavailable) {
+ this.templateavailable = templateavailable;
+ }
+
+ public String getVmstopped() {
+ return vmstopped;
+ }
+
+ public void setVmstopped(String vmstopped) {
+ this.vmstopped = vmstopped;
+ }
+
+ public String getVmrunning() {
+ return vmrunning;
+ }
+
+ public void setVmrunning(String vmrunning) {
+ this.vmrunning = vmrunning;
+ }
+
+ public String getProjectlimit() {
+ return projectlimit;
+ }
+
+ public void setProjectlimit(String projectlimit) {
+ this.projectlimit = projectlimit;
+ }
+
+ public String getProjecttotal() {
+ return projecttotal;
+ }
+
+ public void setProjecttotal(String projecttotal) {
+ this.projecttotal = projecttotal;
+ }
+
+ public String getProjectavailable() {
+ return projectavailable;
+ }
+
+ public void setProjectavailable(String projectavailable) {
+ this.projectavailable = projectavailable;
+ }
+
+ public String getNetworklimit() {
+ return networklimit;
+ }
+
+ public void setNetworklimit(String networklimit) {
+ this.networklimit = networklimit;
+ }
+
+ public String getNetworktotal() {
+ return networktotal;
+ }
+
+ public void setNetworktotal(String networktotal) {
+ this.networktotal = networktotal;
+ }
+
+ public String getNetworkavailable() {
+ return networkavailable;
+ }
+
+ public void setNetworkavailable(String networkavailable) {
+ this.networkavailable = networkavailable;
+ }
+
+ public RegionUser getUser() {
+ return user;
+ }
+
+ public void setUser(RegionUser user) {
+ this.user = user;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/org/apache/cloudstack/region/RegionDomain.java
----------------------------------------------------------------------
diff --git a/server/src/org/apache/cloudstack/region/RegionDomain.java b/server/src/org/apache/cloudstack/region/RegionDomain.java
new file mode 100644
index 0000000..df46198
--- /dev/null
+++ b/server/src/org/apache/cloudstack/region/RegionDomain.java
@@ -0,0 +1,61 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package org.apache.cloudstack.region;
+
+import com.cloud.domain.DomainVO;
+
+public class RegionDomain extends DomainVO {
+ String accountUuid;
+ String parentUuid;
+ String parentdomainname;
+ Boolean haschild;
+
+ public RegionDomain() {
+ }
+
+ public String getAccountuuid() {
+ return accountUuid;
+ }
+
+ public void setAccountuuid(String accountUuid) {
+ this.accountUuid = accountUuid;
+ }
+
+ public String getParentUuid() {
+ return parentUuid;
+ }
+
+ public void setParentUuid(String parentUuid) {
+ this.parentUuid = parentUuid;
+ }
+
+ public String getParentdomainname() {
+ return parentdomainname;
+ }
+
+ public void setParentdomainname(String parentdomainname) {
+ this.parentdomainname = parentdomainname;
+ }
+
+ public Boolean getHaschild() {
+ return haschild;
+ }
+
+ public void setHaschild(Boolean haschild) {
+ this.haschild = haschild;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/8b1a5b1d/server/src/org/apache/cloudstack/region/RegionManager.java
----------------------------------------------------------------------
diff --git a/server/src/org/apache/cloudstack/region/RegionManager.java b/server/src/org/apache/cloudstack/region/RegionManager.java
new file mode 100644
index 0000000..56bdb9b
--- /dev/null
+++ b/server/src/org/apache/cloudstack/region/RegionManager.java
@@ -0,0 +1,216 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package org.apache.cloudstack.region;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.cloudstack.api.command.admin.account.UpdateAccountCmd;
+import org.apache.cloudstack.api.command.admin.domain.UpdateDomainCmd;
+import org.apache.cloudstack.api.command.admin.user.DeleteUserCmd;
+import org.apache.cloudstack.api.command.admin.user.UpdateUserCmd;
+
+import com.cloud.domain.Domain;
+import com.cloud.exception.ConcurrentOperationException;
+import com.cloud.exception.ResourceUnavailableException;
+import com.cloud.user.Account;
+import com.cloud.user.UserAccount;
+
+public interface RegionManager {
+
+ /**
+ * Propagates Account details to peer Regions
+ * @param userName
+ * @param password
+ * @param firstName
+ * @param lastName
+ * @param email
+ * @param timezone
+ * @param accountName
+ * @param accountType
+ * @param domainId
+ * @param networkDomain
+ * @param details
+ * @param accountUUID
+ * @param userUUID
+ * @return
+ */
+ public boolean propagateAddAccount(String userName, String password, String firstName, String lastName, String email, String timezone, String accountName, short accountType, Long domainId, String networkDomain,
+ Map<String, String> details, String accountUUID, String userUUID);
+
+ /**
+ * Returns the Id of local Region
+ * @return
+ */
+ public int getId();
+
+ /**
+ * Propagates User details to peer Regions
+ * @param userName
+ * @param password
+ * @param firstName
+ * @param lastName
+ * @param email
+ * @param timeZone
+ * @param accountName
+ * @param domainUUId
+ * @param userUUID
+ */
+ public void propagateAddUser(String userName, String password,
+ String firstName, String lastName, String email, String timeZone,
+ String accountName, String domainUUId, String userUUID);
+
+ /**
+ * Propagates Domain details to peer Regions
+ * @param name
+ * @param parentId
+ * @param networkDomain
+ * @param uuid
+ */
+ public void propagateAddDomain(String name, Long parentId, String networkDomain, String uuid);
+
+
+ /**
+ * Adds a peer Region to the local Region
+ * @param id
+ * @param name
+ * @param endPoint
+ * @param apiKey
+ * @param secretKey
+ * @return Returns added Region object
+ */
+ Region addRegion(int id, String name, String endPoint, String apiKey, String secretKey);
+
+ /**
+ * Update details of the Region with specified Id
+ * @param id
+ * @param name
+ * @param endPoint
+ *
+ * @param apiKey
+ * @param secretKey
+ * @return Returns update Region object
+ */
+ Region updateRegion(int id, String name, String endPoint, String apiKey, String secretKey);
+
+ /**
+ * @param id
+ * @return True if region is successfully removed
+ */
+ boolean removeRegion(int id);
+
+ /** List all Regions or by Id/Name
+ * @param id
+ * @param name
+ * @return List of Regions
+ */
+ List<RegionVO> listRegions(Integer id, String name);
+
+ /**
+ * Deletes a user by userId and propagates the change to peer Regions
+ *
+ * @param accountId
+ * - id of the account do delete
+ *
+ * @return true if delete was successful, false otherwise
+ */
+ boolean deleteUserAccount(long accountId);
+
+ /**
+ * Updates an account
+ * isPopagate falg is set to true if sent from peer Region
+ *
+ * @param cmd
+ * - the parameter containing accountId or account nameand domainId
+ * @return updated account object
+ */
+ Account updateAccount(UpdateAccountCmd cmd);
+
+ /**
+ * Disables an account by accountName and domainId or accountId
+ * @param accountName
+ * @param domainId
+ * @param id
+ * @param lockRequested
+ * @return
+ * @throws ConcurrentOperationException
+ * @throws ResourceUnavailableException
+ */
+ Account disableAccount(String accountName, Long domainId, Long id, Boolean lockRequested) throws ConcurrentOperationException, ResourceUnavailableException;
+
+ /**
+ * Enables an account by accountId
+ *
+ * @param accountName
+ * - the enableAccount command defining the accountId to be deleted.
+ * @param domainId
+ * TODO
+ * @param accountId
+ * @return account object
+ */
+ Account enableAccount(String accountName, Long domainId, Long accountId);
+
+ /**
+ * Deletes user by Id
+ * @param deleteUserCmd
+ * @return
+ */
+ boolean deleteUser(DeleteUserCmd deleteUserCmd);
+
+ /**
+ * update an existing domain
+ *
+ * @param cmd
+ * - the command containing domainId and new domainName
+ * @return Domain object if the command succeeded
+ */
+ Domain updateDomain(UpdateDomainCmd updateDomainCmd);
+
+ /**
+ * Deletes domain by Id
+ * @param id
+ * @param cleanup
+ * @return true if delete was successful, false otherwise
+ */
+ boolean deleteDomain(Long id, Boolean cleanup);
+
+ /**
+ * Update a user by userId
+ *
+ * @param userId
+ * @return UserAccount object
+ */
+ UserAccount updateUser(UpdateUserCmd updateUserCmd);
+
+ /**
+ * Disables a user by userId
+ *
+ * @param userId
+ * - the userId
+ * @return UserAccount object
+ */
+ UserAccount disableUser(Long id);
+
+ /**
+ * Enables a user
+ *
+ * @param userId
+ * - the userId
+ * @return UserAccount object
+ */
+ UserAccount enableUser(long userId);
+}