You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ki...@apache.org on 2012/07/05 21:13:56 UTC
[2/3] git commit: Add Region APIs
Add Region APIs
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/6a1b0f3e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/6a1b0f3e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/6a1b0f3e
Branch: refs/heads/regions
Commit: 6a1b0f3ecf02b3d3c730089ad18b458f216d9784
Parents: ccf15cb
Author: kishan <ki...@cloud.com>
Authored: Tue Jul 3 13:05:19 2012 -0700
Committer: kishan <ki...@cloud.com>
Committed: Tue Jul 3 13:05:19 2012 -0700
----------------------------------------------------------------------
api/src/com/cloud/api/ApiConstants.java | 1 +
api/src/com/cloud/api/BaseCmd.java | 5 ++++-
api/src/com/cloud/api/ResponseGenerator.java | 4 ++++
client/tomcatconf/commands.properties.in | 6 ++++++
core/src/com/cloud/user/AccountVO.java | 12 +++++++++++-
core/src/com/cloud/user/UserVO.java | 11 +++++++++++
server/src/com/cloud/api/ApiResponseHelper.java | 12 ++++++++++++
.../configuration/DefaultComponentLibrary.java | 4 ++++
server/src/com/cloud/domain/DomainVO.java | 11 +++++++++++
server/src/com/cloud/domain/dao/DomainDaoImpl.java | 9 +++++++++
server/src/com/cloud/user/AccountManagerImpl.java | 6 ++++--
server/src/com/cloud/user/dao/AccountDaoImpl.java | 9 +++++++++
server/src/com/cloud/user/dao/UserDaoImpl.java | 9 +++++++++
setup/db/create-schema.sql | 15 +++++++++++++++
14 files changed, 110 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/6a1b0f3e/api/src/com/cloud/api/ApiConstants.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/api/ApiConstants.java b/api/src/com/cloud/api/ApiConstants.java
index f7acd51..69e7939 100755
--- a/api/src/com/cloud/api/ApiConstants.java
+++ b/api/src/com/cloud/api/ApiConstants.java
@@ -357,6 +357,7 @@ public class ApiConstants {
public static final String VSM_CONFIG_STATE = "vsmconfigstate";
public static final String VSM_DEVICE_STATE = "vsmdevicestate";
public static final String ADD_VSM_FLAG = "addvsmflag";
+ public static final String END_POINT = "endpoint";
public enum HostDetails {
all, capacity, events, stats, min;
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/6a1b0f3e/api/src/com/cloud/api/BaseCmd.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/api/BaseCmd.java b/api/src/com/cloud/api/BaseCmd.java
index a9b6f60..afebf2b 100755
--- a/api/src/com/cloud/api/BaseCmd.java
+++ b/api/src/com/cloud/api/BaseCmd.java
@@ -47,6 +47,7 @@ import com.cloud.network.security.SecurityGroupService;
import com.cloud.network.vpn.RemoteAccessVpnService;
import com.cloud.projects.Project;
import com.cloud.projects.ProjectService;
+import com.cloud.region.RegionService;
import com.cloud.resource.ResourceService;
import com.cloud.server.ManagementService;
import com.cloud.storage.StorageService;
@@ -128,7 +129,8 @@ public abstract class BaseCmd {
public static ResourceLimitService _resourceLimitService;
public static IdentityService _identityService;
public static StorageNetworkService _storageNetworkService;
-
+ public static RegionService _regionService;
+
static void setComponents(ResponseGenerator generator) {
ComponentLocator locator = ComponentLocator.getLocator(ManagementService.Name);
_mgr = (ManagementService) ComponentLocator.getComponent(ManagementService.Name);
@@ -155,6 +157,7 @@ public abstract class BaseCmd {
_resourceLimitService = locator.getManager(ResourceLimitService.class);
_identityService = locator.getManager(IdentityService.class);
_storageNetworkService = locator.getManager(StorageNetworkService.class);
+ _regionService = locator.getManager(RegionService.class);
}
public abstract void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException;
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/6a1b0f3e/api/src/com/cloud/api/ResponseGenerator.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/api/ResponseGenerator.java b/api/src/com/cloud/api/ResponseGenerator.java
index 5f55705..42da0fd 100755
--- a/api/src/com/cloud/api/ResponseGenerator.java
+++ b/api/src/com/cloud/api/ResponseGenerator.java
@@ -53,6 +53,7 @@ import com.cloud.api.response.ProjectAccountResponse;
import com.cloud.api.response.ProjectInvitationResponse;
import com.cloud.api.response.ProjectResponse;
import com.cloud.api.response.ProviderResponse;
+import com.cloud.api.response.RegionResponse;
import com.cloud.api.response.RemoteAccessVpnResponse;
import com.cloud.api.response.ResourceCountResponse;
import com.cloud.api.response.ResourceLimitResponse;
@@ -83,6 +84,7 @@ import com.cloud.configuration.ResourceCount;
import com.cloud.configuration.ResourceLimit;
import com.cloud.dc.DataCenter;
import com.cloud.dc.Pod;
+import com.cloud.region.Region;
import com.cloud.dc.StorageNetworkIpRange;
import com.cloud.dc.Vlan;
import com.cloud.domain.Domain;
@@ -273,6 +275,8 @@ public interface ResponseGenerator {
LDAPConfigResponse createLDAPConfigResponse(String hostname, Integer port, Boolean useSSL, String queryFilter, String baseSearch, String dn);
StorageNetworkIpRangeResponse createStorageNetworkIpRangeResponse(StorageNetworkIpRange result);
+
+ RegionResponse createRegionResponse(Region region);
/**
* @param tableName TODO
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/6a1b0f3e/client/tomcatconf/commands.properties.in
----------------------------------------------------------------------
diff --git a/client/tomcatconf/commands.properties.in b/client/tomcatconf/commands.properties.in
index a939eb7..6ef0961 100755
--- a/client/tomcatconf/commands.properties.in
+++ b/client/tomcatconf/commands.properties.in
@@ -332,3 +332,9 @@ updateStorageNetworkIpRange=com.cloud.api.commands.UpdateStorageNetworkIpRangeCm
addNetworkDevice=com.cloud.api.commands.AddNetworkDeviceCmd;1
listNetworkDevice=com.cloud.api.commands.ListNetworkDeviceCmd;1
deleteNetworkDevice=com.cloud.api.commands.DeleteNetworkDeviceCmd;1
+
+#### Region commands
+addRegion=com.cloud.api.commands.AddRegionCmd;1
+updateRegion=com.cloud.api.commands.UpdateRegionCmd;1
+removeRegion=com.cloud.api.commands.RemoveRegionCmd;1
+listRegions=com.cloud.api.commands.ListRegionsCmd;7
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/6a1b0f3e/core/src/com/cloud/user/AccountVO.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/user/AccountVO.java b/core/src/com/cloud/user/AccountVO.java
index b8f3940..a9bb51a 100644
--- a/core/src/com/cloud/user/AccountVO.java
+++ b/core/src/com/cloud/user/AccountVO.java
@@ -63,6 +63,9 @@ public class AccountVO implements Account, Identity {
@Column(name="default_zone_id")
private Long defaultZoneId = null;
+ @Column(name="region_id")
+ private long regionId;
+
public AccountVO() {
this.uuid = UUID.randomUUID().toString();
}
@@ -78,7 +81,6 @@ public class AccountVO implements Account, Identity {
this.networkDomain = networkDomain;
this.type = type;
this.state = State.enabled;
- this.uuid = UUID.randomUUID().toString();
}
public void setNeedsCleanup(boolean value) {
@@ -171,4 +173,12 @@ public class AccountVO implements Account, Identity {
public void setUuid(String uuid) {
this.uuid = uuid;
}
+
+ public long getRegionId() {
+ return regionId;
+ }
+
+ public void setRegionId(long regionId) {
+ this.regionId = regionId;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/6a1b0f3e/core/src/com/cloud/user/UserVO.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/user/UserVO.java b/core/src/com/cloud/user/UserVO.java
index f866f15..efb0583 100644
--- a/core/src/com/cloud/user/UserVO.java
+++ b/core/src/com/cloud/user/UserVO.java
@@ -89,6 +89,9 @@ public class UserVO implements User, Identity {
@Column(name="uuid")
private String uuid;
+ @Column(name="region_id")
+ private long regionId;
+
public UserVO() {
this.uuid = UUID.randomUUID().toString();
}
@@ -257,4 +260,12 @@ public class UserVO implements User, Identity {
public void setUuid(String uuid) {
this.uuid = uuid;
}
+
+ public long getRegionId() {
+ return regionId;
+ }
+
+ public void setRegionId(long regionId) {
+ this.regionId = regionId;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/6a1b0f3e/server/src/com/cloud/api/ApiResponseHelper.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java
index eb64d98..accdbab 100755
--- a/server/src/com/cloud/api/ApiResponseHelper.java
+++ b/server/src/com/cloud/api/ApiResponseHelper.java
@@ -67,6 +67,7 @@ import com.cloud.api.response.ProjectAccountResponse;
import com.cloud.api.response.ProjectInvitationResponse;
import com.cloud.api.response.ProjectResponse;
import com.cloud.api.response.ProviderResponse;
+import com.cloud.api.response.RegionResponse;
import com.cloud.api.response.RemoteAccessVpnResponse;
import com.cloud.api.response.ResourceCountResponse;
import com.cloud.api.response.ResourceLimitResponse;
@@ -150,6 +151,7 @@ import com.cloud.org.Cluster;
import com.cloud.projects.Project;
import com.cloud.projects.ProjectAccount;
import com.cloud.projects.ProjectInvitation;
+import com.cloud.region.Region;
import com.cloud.server.Criteria;
import com.cloud.storage.DiskOfferingVO;
import com.cloud.storage.GuestOS;
@@ -3399,4 +3401,14 @@ public class ApiResponseHelper implements ResponseGenerator {
return ApiDispatcher.getIdentiyId(tableName, token);
}
+ @Override
+ public RegionResponse createRegionResponse(Region region) {
+ RegionResponse response = new RegionResponse();
+ response.setId(region.getId());
+ response.setName(region.getName());
+ response.setEndPoint(region.getEndPoint());
+ response.setObjectName("region");
+ return response;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/6a1b0f3e/server/src/com/cloud/configuration/DefaultComponentLibrary.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/configuration/DefaultComponentLibrary.java b/server/src/com/cloud/configuration/DefaultComponentLibrary.java
index 150d7af..a27ae17 100755
--- a/server/src/com/cloud/configuration/DefaultComponentLibrary.java
+++ b/server/src/com/cloud/configuration/DefaultComponentLibrary.java
@@ -129,6 +129,8 @@ import com.cloud.projects.ProjectManagerImpl;
import com.cloud.projects.dao.ProjectAccountDaoImpl;
import com.cloud.projects.dao.ProjectDaoImpl;
import com.cloud.projects.dao.ProjectInvitationDaoImpl;
+import com.cloud.region.RegionManagerImpl;
+import com.cloud.region.dao.RegionDaoImpl;
import com.cloud.resource.ResourceManagerImpl;
import com.cloud.resourcelimit.ResourceLimitManagerImpl;
import com.cloud.service.dao.ServiceOfferingDaoImpl;
@@ -329,6 +331,7 @@ public class DefaultComponentLibrary extends ComponentLibraryBase implements Com
addDao("NetworkServiceMapDao", NetworkServiceMapDaoImpl.class);
addDao("StorageNetworkIpAddressDao", StorageNetworkIpAddressDaoImpl.class);
addDao("StorageNetworkIpRangeDao", StorageNetworkIpRangeDaoImpl.class);
+ addDao("RegionDao", RegionDaoImpl.class);
}
@Override
@@ -385,6 +388,7 @@ public class DefaultComponentLibrary extends ComponentLibraryBase implements Com
addManager("StorageNetworkManager", StorageNetworkManagerImpl.class);
addManager("ExternalLoadBalancerUsageManager", ExternalLoadBalancerUsageManagerImpl.class);
addManager("HA Manager", HighAvailabilityManagerImpl.class);
+ addManager("Region Manager", RegionManagerImpl.class);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/6a1b0f3e/server/src/com/cloud/domain/DomainVO.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/domain/DomainVO.java b/server/src/com/cloud/domain/DomainVO.java
index 53ed075..a5cfe1b 100644
--- a/server/src/com/cloud/domain/DomainVO.java
+++ b/server/src/com/cloud/domain/DomainVO.java
@@ -69,6 +69,9 @@ public class DomainVO implements Domain, Identity {
@Column(name="uuid")
private String uuid;
+
+ @Column(name="region_id")
+ private long regionId;
public DomainVO() {}
@@ -200,5 +203,13 @@ public class DomainVO implements Domain, Identity {
public void setUuid(String uuid) {
this.uuid = uuid;
}
+
+ public long getRegionId() {
+ return regionId;
+ }
+
+ public void setRegionId(long regionId) {
+ this.regionId = regionId;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/6a1b0f3e/server/src/com/cloud/domain/dao/DomainDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/domain/dao/DomainDaoImpl.java b/server/src/com/cloud/domain/dao/DomainDaoImpl.java
index c570969..b653d7b 100644
--- a/server/src/com/cloud/domain/dao/DomainDaoImpl.java
+++ b/server/src/com/cloud/domain/dao/DomainDaoImpl.java
@@ -25,6 +25,7 @@ import org.apache.log4j.Logger;
import com.cloud.domain.Domain;
import com.cloud.domain.DomainVO;
+import com.cloud.user.UserVO;
import com.cloud.utils.db.DB;
import com.cloud.utils.db.GenericDaoBase;
import com.cloud.utils.db.GlobalLock;
@@ -42,6 +43,7 @@ public class DomainDaoImpl extends GenericDaoBase<DomainVO, Long> implements Dom
protected SearchBuilder<DomainVO> ImmediateChildDomainSearch;
protected SearchBuilder<DomainVO> FindAllChildrenSearch;
protected SearchBuilder<DomainVO> AllFieldsSearch;
+ private final long _regionId = 1;
public DomainDaoImpl () {
DomainNameLikeSearch = createSearchBuilder();
@@ -266,4 +268,11 @@ public class DomainDaoImpl extends GenericDaoBase<DomainVO, Long> implements Dom
return parentDomains;
}
+
+ @Override
+ @DB
+ public DomainVO persist(DomainVO domain) {
+ domain.setRegionId(_regionId);
+ return super.persist(domain);
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/6a1b0f3e/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 35fbfe0..cd63b4d 100755
--- a/server/src/com/cloud/user/AccountManagerImpl.java
+++ b/server/src/com/cloud/user/AccountManagerImpl.java
@@ -199,7 +199,9 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag
private ProjectAccountDao _projectAccountDao;
@Inject
private IPAddressDao _ipAddressDao;
-
+ //@Inject
+ //private RegionManager _regionMgr;
+
private Adapters<UserAuthenticator> _userAuthenticators;
private final ScheduledExecutorService _executor = Executors.newScheduledThreadPool(1, new NamedThreadFactory("AccountChecker"));
@@ -1575,7 +1577,7 @@ 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/6a1b0f3e/server/src/com/cloud/user/dao/AccountDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/user/dao/AccountDaoImpl.java b/server/src/com/cloud/user/dao/AccountDaoImpl.java
index c820e22..be14ec3 100755
--- a/server/src/com/cloud/user/dao/AccountDaoImpl.java
+++ b/server/src/com/cloud/user/dao/AccountDaoImpl.java
@@ -28,6 +28,7 @@ import com.cloud.user.User;
import com.cloud.user.UserVO;
import com.cloud.utils.Pair;
import com.cloud.utils.crypt.DBEncryptionUtil;
+import com.cloud.utils.db.DB;
import com.cloud.utils.db.Filter;
import com.cloud.utils.db.GenericDaoBase;
import com.cloud.utils.db.SearchBuilder;
@@ -48,6 +49,7 @@ public class AccountDaoImpl extends GenericDaoBase<AccountVO, Long> implements A
protected final SearchBuilder<AccountVO> CleanupForRemovedAccountsSearch;
protected final SearchBuilder<AccountVO> CleanupForDisabledAccountsSearch;
protected final SearchBuilder<AccountVO> NonProjectAccountSearch;
+ private final long _regionId = 1;
protected AccountDaoImpl() {
AllFieldsSearch = createSearchBuilder();
@@ -257,4 +259,11 @@ public class AccountDaoImpl extends GenericDaoBase<AccountVO, Long> implements A
}
}
}
+
+ @Override
+ @DB
+ public AccountVO persist(AccountVO account) {
+ account.setRegionId(_regionId);
+ return super.persist(account);
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/6a1b0f3e/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 2c24461..17a7b5c 100644
--- a/server/src/com/cloud/user/dao/UserDaoImpl.java
+++ b/server/src/com/cloud/user/dao/UserDaoImpl.java
@@ -17,6 +17,7 @@ import java.util.List;
import javax.ejb.Local;
import com.cloud.user.UserVO;
+import com.cloud.utils.db.DB;
import com.cloud.utils.db.GenericDaoBase;
import com.cloud.utils.db.SearchBuilder;
import com.cloud.utils.db.SearchCriteria;
@@ -35,6 +36,7 @@ public class UserDaoImpl extends GenericDaoBase<UserVO, Long> implements UserDao
protected SearchBuilder<UserVO> AccountIdSearch;
protected SearchBuilder<UserVO> SecretKeySearch;
protected SearchBuilder<UserVO> RegistrationTokenSearch;
+ private final long _regionId = 1;
protected UserDaoImpl () {
UsernameSearch = createSearchBuilder();
@@ -123,4 +125,11 @@ public class UserDaoImpl extends GenericDaoBase<UserVO, Long> implements UserDao
sc.setParameters("username", username);
return listBy(sc);
}
+
+ @Override
+ @DB
+ public UserVO persist(UserVO user) {
+ user.setRegionId(_regionId);
+ return super.persist(user);
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/6a1b0f3e/setup/db/create-schema.sql
----------------------------------------------------------------------
diff --git a/setup/db/create-schema.sql b/setup/db/create-schema.sql
index 488fb06..ff092eb 100755
--- a/setup/db/create-schema.sql
+++ b/setup/db/create-schema.sql
@@ -137,6 +137,7 @@ DROP TABLE IF EXISTS `cloud`.`op_dc_storage_network_ip_address`;
DROP TABLE IF EXISTS `cloud`.`cluster_vsm_map`;
DROP TABLE IF EXISTS `cloud`.`virtual_supervisor_module`;
DROP TABLE IF EXISTS `cloud`.`port_profile`;
+DROP TABLE IF EXISTS `cloud`.`region`;
CREATE TABLE `cloud`.`version` (
`id` bigint unsigned NOT NULL UNIQUE AUTO_INCREMENT COMMENT 'id',
@@ -874,6 +875,7 @@ CREATE TABLE `cloud`.`user` (
`timezone` varchar(30) default NULL,
`registration_token` varchar(255) default NULL,
`is_registered` tinyint NOT NULL DEFAULT 0 COMMENT '1: yes, 0: no',
+ `region_id` bigint unsigned,
PRIMARY KEY (`id`),
INDEX `i_user__removed`(`removed`),
INDEX `i_user__secret_key_removed`(`secret_key`, `removed`),
@@ -1219,6 +1221,7 @@ CREATE TABLE `cloud`.`domain` (
`state` char(32) NOT NULL default 'Active' COMMENT 'state of the domain',
`network_domain` varchar(255),
`type` varchar(255) NOT NULL DEFAULT 'Normal' COMMENT 'type of the domain - can be Normal or Project',
+ `region_id` bigint unsigned,
PRIMARY KEY (`id`),
UNIQUE (parent, name, removed),
INDEX `i_domain__path`(`path`),
@@ -1237,6 +1240,7 @@ CREATE TABLE `cloud`.`account` (
`cleanup_needed` tinyint(1) NOT NULL default '0',
`network_domain` varchar(255),
`default_zone_id` bigint unsigned,
+ `region_id` bigint unsigned,
PRIMARY KEY (`id`),
INDEX i_account__removed(`removed`),
CONSTRAINT `fk_account__default_zone_id` FOREIGN KEY `fk_account__default_zone_id`(`default_zone_id`) REFERENCES `data_center`(`id`) ON DELETE CASCADE,
@@ -2132,4 +2136,15 @@ CREATE TABLE `cloud`.`netscaler_pod_ref` (
CONSTRAINT `fk_ns_pod_ref__device_id` FOREIGN KEY (`external_load_balancer_device_id`) REFERENCES `external_load_balancer_devices`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE `cloud`.`region` (
+ `id` bigint unsigned NOT NULL UNIQUE,
+ `name` varchar(255),
+ `end_point` varchar(255),
+ `status` varchar(32) NOT NULL,
+ `removed` datetime COMMENT 'date removed if not null',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+
SET foreign_key_checks = 1;