You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by mu...@apache.org on 2014/03/11 15:27:06 UTC
[44/50] [abbrv] git commit: updated refs/heads/regionvpc to edf12eb
make zone id optional parameter in createVpc, zone id can be null only
if vpc offfering supports region level VPC
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/c0575aa0
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/c0575aa0
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/c0575aa0
Branch: refs/heads/regionvpc
Commit: c0575aa02aa86797aa9e4cafa680915594dc5749
Parents: f29b73d
Author: Murali Reddy <mu...@gmail.com>
Authored: Mon Jan 27 14:41:02 2014 +0530
Committer: Murali Reddy <mu...@gmail.com>
Committed: Tue Mar 11 19:51:08 2014 +0530
----------------------------------------------------------------------
api/src/com/cloud/network/vpc/Vpc.java | 6 ++++++
api/src/org/apache/cloudstack/api/ApiConstants.java | 1 +
.../api/command/user/vpc/CreateVPCCmd.java | 2 +-
.../apache/cloudstack/api/response/VpcResponse.java | 9 +++++++++
engine/schema/src/com/cloud/network/vpc/VpcVO.java | 13 +++++++++++--
server/src/com/cloud/api/ApiResponseHelper.java | 1 +
server/src/com/cloud/network/vpc/VpcManagerImpl.java | 15 ++++++++++++---
server/test/com/cloud/vpc/VpcApiUnitTest.java | 2 +-
server/test/com/cloud/vpc/dao/MockVpcDaoImpl.java | 4 ++--
setup/db/db/schema-430to440.sql | 1 +
10 files changed, 45 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c0575aa0/api/src/com/cloud/network/vpc/Vpc.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/vpc/Vpc.java b/api/src/com/cloud/network/vpc/Vpc.java
index eb7e391..000acef 100644
--- a/api/src/com/cloud/network/vpc/Vpc.java
+++ b/api/src/com/cloud/network/vpc/Vpc.java
@@ -73,4 +73,10 @@ public interface Vpc extends ControlledEntity, Identity, InternalIdentity {
boolean isRestartRequired();
boolean isDisplay();
+
+ /**
+ *
+ * @return true if VPC spans multiple zones in the region
+ */
+ boolean isRegionLevelVpc();
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c0575aa0/api/src/org/apache/cloudstack/api/ApiConstants.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/ApiConstants.java b/api/src/org/apache/cloudstack/api/ApiConstants.java
index 6b8352f..5f87c73 100755
--- a/api/src/org/apache/cloudstack/api/ApiConstants.java
+++ b/api/src/org/apache/cloudstack/api/ApiConstants.java
@@ -588,6 +588,7 @@ public class ApiConstants {
public static final String REMAININGCAPACITY = "remainingcapacity";
public static final String SUPPORTS_REGION_LEVEL_VPC = "supportsregionLevelvpc";
public static final String SUPPORTS_STRECHED_L2_SUBNET = "supportsstrechedl2subnet";
+ public static final String REGION_LEVEL_VPC = "regionlevelvpc";
public enum HostDetails {
all, capacity, events, stats, min;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c0575aa0/api/src/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java b/api/src/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java
index a632b6d..1eca1d3 100644
--- a/api/src/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/user/vpc/CreateVPCCmd.java
@@ -62,7 +62,7 @@ public class CreateVPCCmd extends BaseAsyncCreateCmd {
private Long projectId;
@Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class,
- required = true, description = "the ID of the availability zone")
+ description = "the ID of the availability zone")
private Long zoneId;
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required = true, description = "the name of the VPC")
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c0575aa0/api/src/org/apache/cloudstack/api/response/VpcResponse.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/response/VpcResponse.java b/api/src/org/apache/cloudstack/api/response/VpcResponse.java
index eeafb40..0b0a559 100644
--- a/api/src/org/apache/cloudstack/api/response/VpcResponse.java
+++ b/api/src/org/apache/cloudstack/api/response/VpcResponse.java
@@ -111,6 +111,10 @@ public class VpcResponse extends BaseResponse implements ControlledEntityRespons
@Param(description = "is vpc for display to the regular user", since = "4.4", authorized = {RoleType.Admin})
private Boolean forDisplay;
+ @SerializedName((ApiConstants.REGION_LEVEL_VPC))
+ @Param(description = "true if VPC is region level")
+ private Boolean regionLevelVpc;
+
public void setId(String id) {
this.id = id;
}
@@ -196,7 +200,12 @@ public class VpcResponse extends BaseResponse implements ControlledEntityRespons
this.tags = tags;
}
+<<<<<<< HEAD
public void setForDisplay(Boolean forDisplay) {
this.forDisplay = forDisplay;
+=======
+ public void setRegionLevelVpc(Boolean regionLevelVpc) {
+ this.regionLevelVpc = regionLevelVpc;
+>>>>>>> make zone id optional parameter in createVpc, zone id can be null only
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c0575aa0/engine/schema/src/com/cloud/network/vpc/VpcVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/vpc/VpcVO.java b/engine/schema/src/com/cloud/network/vpc/VpcVO.java
index d1cfd7c..b7da6f1 100644
--- a/engine/schema/src/com/cloud/network/vpc/VpcVO.java
+++ b/engine/schema/src/com/cloud/network/vpc/VpcVO.java
@@ -48,7 +48,7 @@ public class VpcVO implements Vpc {
String displayText;
@Column(name = "zone_id")
- long zoneId;
+ Long zoneId;
@Column(name = "cidr")
private String cidr = null;
@@ -81,11 +81,15 @@ public class VpcVO implements Vpc {
@Column(name = "display", updatable = true, nullable = false)
protected boolean display = true;
+ @Column(name = "region_level_vpc")
+ boolean regionLevelVpc = false;
+
public VpcVO() {
uuid = UUID.randomUUID().toString();
}
- public VpcVO(long zoneId, String name, String displayText, long accountId, long domainId, long vpcOffId, String cidr, String networkDomain) {
+ public VpcVO(Long zoneId, String name, String displayText, long accountId, long domainId, long vpcOffId,
+ String cidr, String networkDomain, boolean regionLevelVpc) {
this.zoneId = zoneId;
this.name = name;
this.displayText = displayText;
@@ -96,6 +100,7 @@ public class VpcVO implements Vpc {
state = State.Enabled;
this.networkDomain = networkDomain;
vpcOfferingId = vpcOffId;
+ this.regionLevelVpc = regionLevelVpc;
}
@Override
@@ -186,6 +191,10 @@ public class VpcVO implements Vpc {
public void setUuid(String uuid) {
this.uuid = uuid;
+
+ @Override
+ public boolean isRegionLevelVpc() {
+ return regionLevelVpc;
}
public void setDisplay(boolean display) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c0575aa0/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 875034b..c0ddaf3 100755
--- a/server/src/com/cloud/api/ApiResponseHelper.java
+++ b/server/src/com/cloud/api/ApiResponseHelper.java
@@ -2791,6 +2791,7 @@ public class ApiResponseHelper implements ResponseGenerator {
response.setRestartRequired(vpc.isRestartRequired());
response.setNetworkDomain(vpc.getNetworkDomain());
response.setForDisplay(vpc.isDisplay());
+ response.setRegionLevelVpc(vpc.isRegionLevelVpc());
Map<Service, Set<Provider>> serviceProviderMap = ApiDBUtils.listVpcOffServices(vpc.getVpcOfferingId());
List<ServiceResponse> serviceResponses = new ArrayList<ServiceResponse>();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c0575aa0/server/src/com/cloud/network/vpc/VpcManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
index 881a876..7a21c13 100644
--- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
@@ -705,6 +705,15 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
throw ex;
}
+ boolean isRegionLevelVpcOff = vpcOff.offersRegionLevelVPC();
+ if (zoneId == null && !isRegionLevelVpcOff) {
+ throw new InvalidParameterValueException("VPC Offering does not support region level VPC. So specify zone id in which VPC is to be created");
+ }
+
+ if (isRegionLevelVpcOff && networkDomain == null) {
+ throw new InvalidParameterValueException("Network domain must be specified for region level VPC");
+ }
+
//Validate zone
DataCenter zone = _entityMgr.findById(DataCenter.class, zoneId);
if (zone == null) {
@@ -728,12 +737,12 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
}
}
- return createVpc(zoneId, vpcOffId, owner, vpcName, displayText, cidr, networkDomain, displayVpc);
+ return createVpc(zoneId, vpcOffId, owner, vpcName, displayText, cidr, networkDomain, displayVpc, regionLevelVpc);
}
@DB
protected Vpc createVpc(final long zoneId, final long vpcOffId, final Account vpcOwner, final String vpcName, final String displayText, final String cidr,
- final String networkDomain, final Boolean displayVpc) {
+ final String networkDomain, final Boolean displayVpc, regionLevelVpc) {
//Validate CIDR
if (!NetUtils.isValidCIDR(cidr)) {
@@ -755,7 +764,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
return Transaction.execute(new TransactionCallback<VpcVO>() {
@Override
public VpcVO doInTransaction(TransactionStatus status) {
- VpcVO vpc = new VpcVO(zoneId, vpcName, displayText, vpcOwner.getId(), vpcOwner.getDomainId(), vpcOffId, cidr, networkDomain);
+ VpcVO vpc = new VpcVO(zoneId, vpcName, displayText, vpcOwner.getId(), vpcOwner.getDomainId(), vpcOffId, cidr, networkDomain, regionLevelVpc);
if (displayVpc != null) {
vpc.setDisplay(displayVpc);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c0575aa0/server/test/com/cloud/vpc/VpcApiUnitTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vpc/VpcApiUnitTest.java b/server/test/com/cloud/vpc/VpcApiUnitTest.java
index bc982a9..0e927df 100644
--- a/server/test/com/cloud/vpc/VpcApiUnitTest.java
+++ b/server/test/com/cloud/vpc/VpcApiUnitTest.java
@@ -85,7 +85,7 @@ public class VpcApiUnitTest extends TestCase {
public void validateNtwkOffForVpc() {
//validate network offering
//1) correct network offering
- VpcVO vo = new VpcVO(1, "new vpc", "new vpc", 1, 1, 1, "0.0.0.0/0", "vpc domain");
+ VpcVO vo = new VpcVO(new Long(1), "new vpc", "new vpc", 1, 1, 1, "0.0.0.0/0", "vpc domain", false);
boolean result = false;
try {
_vpcService.validateNtwkOffForNtwkInVpc(2L, 1, "0.0.0.0", "111-", vo, "10.1.1.1", new AccountVO(), null);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c0575aa0/server/test/com/cloud/vpc/dao/MockVpcDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vpc/dao/MockVpcDaoImpl.java b/server/test/com/cloud/vpc/dao/MockVpcDaoImpl.java
index 7a0c7a0..4563343 100644
--- a/server/test/com/cloud/vpc/dao/MockVpcDaoImpl.java
+++ b/server/test/com/cloud/vpc/dao/MockVpcDaoImpl.java
@@ -98,9 +98,9 @@ public class MockVpcDaoImpl extends GenericDaoBase<VpcVO, Long> implements VpcDa
public VpcVO findById(Long id) {
VpcVO vo = null;
if (id.longValue() == 1) {
- vo = new VpcVO(1, "new vpc", "new vpc", 1, 1, 1, "0.0.0.0/0", "vpc domain");
+ vo = new VpcVO(new Long(1), "new vpc", "new vpc", 1, 1, 1, "0.0.0.0/0", "vpc domain", false);
} else if (id.longValue() == 2) {
- vo = new VpcVO(1, "new vpc", "new vpc", 1, 1, 1, "0.0.0.0/0", "vpc domain");
+ vo = new VpcVO(new Long(1), "new vpc", "new vpc", 1, 1, 1, "0.0.0.0/0", "vpc domain", false);
vo.setState(State.Inactive);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c0575aa0/setup/db/db/schema-430to440.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-430to440.sql b/setup/db/db/schema-430to440.sql
index 0d7e747..4b38468 100644
--- a/setup/db/db/schema-430to440.sql
+++ b/setup/db/db/schema-430to440.sql
@@ -613,3 +613,4 @@ CREATE TABLE `cloud`.`vgpu_types` (
ALTER TABLE `cloud`.`vpc_offerings` ADD COLUMN supports_region_level_vpc boolean default false;
ALTER TABLE `cloud`.`network_offerings` ADD COLUMN supports_streched_l2 boolean default false;
+ALTER TABLE `cloud`.`vpc` ADD COLUMN region_level_vpc boolean default false;