Return-Path: X-Original-To: apmail-cloudstack-commits-archive@www.apache.org Delivered-To: apmail-cloudstack-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5AB4711EC6 for ; Mon, 13 May 2013 17:51:04 +0000 (UTC) Received: (qmail 28755 invoked by uid 500); 13 May 2013 15:53:28 -0000 Delivered-To: apmail-cloudstack-commits-archive@cloudstack.apache.org Received: (qmail 28399 invoked by uid 500); 13 May 2013 15:53:27 -0000 Mailing-List: contact commits-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list commits@cloudstack.apache.org Received: (qmail 26227 invoked by uid 99); 13 May 2013 15:53:25 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 13 May 2013 15:53:24 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 82FB788F7FD; Mon, 13 May 2013 15:53:24 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: muralireddy@apache.org To: commits@cloudstack.apache.org Date: Mon, 13 May 2013 15:54:41 -0000 Message-Id: In-Reply-To: <3dd7f1ce499f4ed180dff4676f352f9b@git.apache.org> References: <3dd7f1ce499f4ed180dff4676f352f9b@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [81/93] [abbrv] git commit: updated refs/heads/portablepublicip to a718d35 merge with master Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/8d53b1ef Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/8d53b1ef Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/8d53b1ef Branch: refs/heads/portablepublicip Commit: 8d53b1ef05a45604d76b2cf80094f688edf15b44 Parents: 941a9a5 78ffb7a Author: Nitin Mehta Authored: Mon May 13 16:36:41 2013 +0530 Committer: Nitin Mehta Committed: Mon May 13 16:36:41 2013 +0530 ---------------------------------------------------------------------- api/src/com/cloud/agent/api/to/NetworkACLTO.java | 49 +- api/src/com/cloud/event/EventTypes.java | 8 + api/src/com/cloud/network/Network.java | 3 + api/src/com/cloud/network/NetworkProfile.java | 12 + .../network/element/NetworkACLServiceProvider.java | 3 +- .../cloud/network/firewall/NetworkACLService.java | 51 -- api/src/com/cloud/network/vpc/NetworkACL.java | 36 + api/src/com/cloud/network/vpc/NetworkACLItem.java | 80 +++ .../com/cloud/network/vpc/NetworkACLService.java | 125 ++++ .../org/apache/cloudstack/api/ApiConstants.java | 2 + api/src/org/apache/cloudstack/api/BaseCmd.java | 2 +- .../apache/cloudstack/api/ResponseGenerator.java | 20 +- .../command/user/network/CreateNetworkACLCmd.java | 222 ++----- .../user/network/CreateNetworkACLListCmd.java | 120 ++++ .../api/command/user/network/CreateNetworkCmd.java | 15 +- .../command/user/network/DeleteNetworkACLCmd.java | 43 +- .../user/network/DeleteNetworkACLListCmd.java | 93 +++ .../user/network/ListNetworkACLListsCmd.java | 102 +++ .../command/user/network/ListNetworkACLsCmd.java | 46 +- .../user/network/ReplaceNetworkACLListCmd.java | 98 +++ .../user/network/UpdateNetworkACLItemCmd.java | 173 +++++ .../api/response/NetworkACLItemResponse.java | 122 ++++ .../api/response/NetworkACLResponse.java | 78 +-- client/tomcatconf/applicationContext.xml.in | 3 + client/tomcatconf/commands.properties.in | 6 + .../agent/api/routing/SetNetworkACLCommand.java | 19 +- docs/en-US/Installation_Guide.xml | 1 + docs/en-US/gslb.xml | 21 + docs/en-US/storage-setup.xml | 192 +++++ .../src/com/cloud/network/dao/NetworkDao.java | 2 + .../src/com/cloud/network/dao/NetworkDaoImpl.java | 9 + .../src/com/cloud/network/dao/NetworkVO.java | 13 + .../src/com/cloud/upgrade/dao/Upgrade410to420.java | 159 +++++ .../debian/config/opt/cloud/bin/vpc_acl.sh | 11 +- .../cloud/network/resource/CiscoVnmcResource.java | 8 +- .../network/resource/CiscoVnmcResourceTest.java | 13 +- server/src/com/cloud/api/ApiDBUtils.java | 31 +- server/src/com/cloud/api/ApiResponseHelper.java | 73 ++- .../src/com/cloud/api/query/QueryManagerImpl.java | 2 + .../src/com/cloud/network/NetworkManagerImpl.java | 36 +- .../src/com/cloud/network/NetworkServiceImpl.java | 37 +- .../network/element/VpcVirtualRouterElement.java | 8 +- .../network/firewall/FirewallManagerImpl.java | 4 +- .../router/VpcVirtualNetworkApplianceManager.java | 7 +- .../VpcVirtualNetworkApplianceManagerImpl.java | 29 +- .../com/cloud/network/vpc/NetworkACLItemDao.java | 37 + .../com/cloud/network/vpc/NetworkACLItemVO.java | 237 +++++++ .../com/cloud/network/vpc/NetworkACLManager.java | 120 +++- .../cloud/network/vpc/NetworkACLManagerImpl.java | 538 ++++++--------- .../cloud/network/vpc/NetworkACLServiceImpl.java | 448 ++++++++++++ server/src/com/cloud/network/vpc/NetworkACLVO.java | 79 +++ server/src/com/cloud/network/vpc/VpcManager.java | 3 +- .../src/com/cloud/network/vpc/VpcManagerImpl.java | 9 +- .../com/cloud/network/vpc/dao/NetworkACLDao.java | 23 + .../cloud/network/vpc/dao/NetworkACLDaoImpl.java | 35 + .../network/vpc/dao/NetworkACLItemDaoImpl.java | 113 +++ .../src/com/cloud/server/ManagementServerImpl.java | 40 +- .../com/cloud/tags/TaggedResourceManagerImpl.java | 4 + .../com/cloud/network/MockNetworkManagerImpl.java | 8 +- .../test/com/cloud/vpc/MockNetworkManagerImpl.java | 3 + server/test/com/cloud/vpc/MockVpcManagerImpl.java | 10 +- .../vpc/MockVpcVirtualNetworkApplianceManager.java | 10 +- .../test/com/cloud/vpc/NetworkACLManagerTest.java | 195 ++++++ .../test/com/cloud/vpc/NetworkACLServiceTest.java | 219 ++++++ .../test/com/cloud/vpc/dao/MockNetworkDaoImpl.java | 5 + setup/db/db/schema-410to420.sql | 43 ++ test/integration/smoke/test_network_acl.py | 119 ++++ tools/marvin/setup.py | 14 +- ui/scripts/events.js | 10 +- ui/scripts/vpc.js | 9 +- 70 files changed, 3687 insertions(+), 831 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/api/src/com/cloud/event/EventTypes.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/api/src/com/cloud/network/Network.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/api/src/com/cloud/network/NetworkProfile.java ---------------------------------------------------------------------- diff --cc api/src/com/cloud/network/NetworkProfile.java index 7358b1a,1807021..fa63ea2 --- a/api/src/com/cloud/network/NetworkProfile.java +++ b/api/src/com/cloud/network/NetworkProfile.java @@@ -52,7 -52,7 +52,8 @@@ public class NetworkProfile implements private boolean restartRequired; private boolean specifyIpRanges; private Long vpcId; + private boolean displayNetwork; + private Long networkAclId; public NetworkProfile(Network network) { this.id = network.getId(); @@@ -82,7 -82,7 +83,8 @@@ this.restartRequired = network.isRestartRequired(); this.specifyIpRanges = network.getSpecifyIpRanges(); this.vpcId = network.getVpcId(); + this.displayNetwork = network.getDisplayNetwork(); + this.networkAclId = network.getNetworkACLId(); } public String getDns1() { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/api/src/org/apache/cloudstack/api/ApiConstants.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/api/src/org/apache/cloudstack/api/BaseCmd.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/api/src/org/apache/cloudstack/api/ResponseGenerator.java ---------------------------------------------------------------------- diff --cc api/src/org/apache/cloudstack/api/ResponseGenerator.java index ab8f995,16760c0..10bf305 --- a/api/src/org/apache/cloudstack/api/ResponseGenerator.java +++ b/api/src/org/apache/cloudstack/api/ResponseGenerator.java @@@ -26,89 -33,7 +33,90 @@@ import com.cloud.network.vpc.VpcOfferin import org.apache.cloudstack.api.ApiConstants.HostDetails; import org.apache.cloudstack.api.ApiConstants.VMDetails; import org.apache.cloudstack.api.command.user.job.QueryAsyncJobResultCmd; +import org.apache.cloudstack.api.response.AccountResponse; +import org.apache.cloudstack.api.response.ApplicationLoadBalancerResponse; +import org.apache.cloudstack.api.response.AsyncJobResponse; +import org.apache.cloudstack.api.response.AutoScalePolicyResponse; +import org.apache.cloudstack.api.response.AutoScaleVmGroupResponse; +import org.apache.cloudstack.api.response.AutoScaleVmProfileResponse; +import org.apache.cloudstack.api.response.CapacityResponse; +import org.apache.cloudstack.api.response.ClusterResponse; +import org.apache.cloudstack.api.response.ConditionResponse; +import org.apache.cloudstack.api.response.ConfigurationResponse; +import org.apache.cloudstack.api.response.CounterResponse; +import org.apache.cloudstack.api.response.CreateCmdResponse; +import org.apache.cloudstack.api.response.DiskOfferingResponse; +import org.apache.cloudstack.api.response.DomainResponse; +import org.apache.cloudstack.api.response.DomainRouterResponse; +import org.apache.cloudstack.api.response.EventResponse; +import org.apache.cloudstack.api.response.ExtractResponse; +import org.apache.cloudstack.api.response.FirewallResponse; +import org.apache.cloudstack.api.response.FirewallRuleResponse; +import org.apache.cloudstack.api.response.GlobalLoadBalancerResponse; +import org.apache.cloudstack.api.response.GuestOSResponse; +import org.apache.cloudstack.api.response.GuestVlanRangeResponse; +import org.apache.cloudstack.api.response.HostForMigrationResponse; +import org.apache.cloudstack.api.response.HostResponse; +import org.apache.cloudstack.api.response.HypervisorCapabilitiesResponse; +import org.apache.cloudstack.api.response.IPAddressResponse; +import org.apache.cloudstack.api.response.InstanceGroupResponse; +import org.apache.cloudstack.api.response.InternalLoadBalancerElementResponse; +import org.apache.cloudstack.api.response.IpForwardingRuleResponse; +import org.apache.cloudstack.api.response.IsolationMethodResponse; +import org.apache.cloudstack.api.response.LBHealthCheckResponse; +import org.apache.cloudstack.api.response.LBStickinessResponse; +import org.apache.cloudstack.api.response.LDAPConfigResponse; +import org.apache.cloudstack.api.response.LoadBalancerResponse; +import org.apache.cloudstack.api.response.NetworkACLResponse; +import org.apache.cloudstack.api.response.NetworkOfferingResponse; +import org.apache.cloudstack.api.response.NetworkResponse; +import org.apache.cloudstack.api.response.NicResponse; +import org.apache.cloudstack.api.response.NicSecondaryIpResponse; +import org.apache.cloudstack.api.response.PhysicalNetworkResponse; +import org.apache.cloudstack.api.response.PodResponse; +import org.apache.cloudstack.api.response.PrivateGatewayResponse; +import org.apache.cloudstack.api.response.ProjectAccountResponse; +import org.apache.cloudstack.api.response.ProjectInvitationResponse; +import org.apache.cloudstack.api.response.ProjectResponse; +import org.apache.cloudstack.api.response.ProviderResponse; +import org.apache.cloudstack.api.response.RegionResponse; +import org.apache.cloudstack.api.response.RemoteAccessVpnResponse; +import org.apache.cloudstack.api.response.ResourceCountResponse; +import org.apache.cloudstack.api.response.ResourceLimitResponse; +import org.apache.cloudstack.api.response.ResourceTagResponse; +import org.apache.cloudstack.api.response.S3Response; +import org.apache.cloudstack.api.response.SecurityGroupResponse; +import org.apache.cloudstack.api.response.ServiceOfferingResponse; +import org.apache.cloudstack.api.response.ServiceResponse; +import org.apache.cloudstack.api.response.Site2SiteCustomerGatewayResponse; +import org.apache.cloudstack.api.response.Site2SiteVpnConnectionResponse; +import org.apache.cloudstack.api.response.Site2SiteVpnGatewayResponse; +import org.apache.cloudstack.api.response.SnapshotPolicyResponse; +import org.apache.cloudstack.api.response.SnapshotResponse; +import org.apache.cloudstack.api.response.SnapshotScheduleResponse; +import org.apache.cloudstack.api.response.StaticRouteResponse; +import org.apache.cloudstack.api.response.StorageNetworkIpRangeResponse; +import org.apache.cloudstack.api.response.StoragePoolForMigrationResponse; +import org.apache.cloudstack.api.response.StoragePoolResponse; +import org.apache.cloudstack.api.response.SwiftResponse; +import org.apache.cloudstack.api.response.SystemVmInstanceResponse; +import org.apache.cloudstack.api.response.SystemVmResponse; +import org.apache.cloudstack.api.response.TemplatePermissionsResponse; +import org.apache.cloudstack.api.response.TemplateResponse; +import org.apache.cloudstack.api.response.TrafficMonitorResponse; +import org.apache.cloudstack.api.response.TrafficTypeResponse; +import org.apache.cloudstack.api.response.UsageRecordResponse; +import org.apache.cloudstack.api.response.UserResponse; +import org.apache.cloudstack.api.response.UserVmResponse; +import org.apache.cloudstack.api.response.VMSnapshotResponse; +import org.apache.cloudstack.api.response.VirtualRouterProviderResponse; +import org.apache.cloudstack.api.response.VlanIpRangeResponse; +import org.apache.cloudstack.api.response.VolumeResponse; +import org.apache.cloudstack.api.response.VpcOfferingResponse; +import org.apache.cloudstack.api.response.VpcResponse; +import org.apache.cloudstack.api.response.VpnUsersResponse; +import org.apache.cloudstack.api.response.ZoneResponse; + import org.apache.cloudstack.api.response.*; import org.apache.cloudstack.network.lb.ApplicationLoadBalancerRule; import org.apache.cloudstack.region.Region; import org.apache.cloudstack.usage.Usage; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkCmd.java ---------------------------------------------------------------------- diff --cc api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkCmd.java index 8c0f75e,e88aca7..667c4c8 --- a/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkCmd.java @@@ -126,9 -120,9 +120,12 @@@ public class CreateNetworkCmd extends B @Parameter(name=ApiConstants.IP6_CIDR, type=CommandType.STRING, description="the CIDR of IPv6 network, must be at least /64") private String ip6Cidr; + @Parameter(name=ApiConstants.DISPLAY_NETWORK, type=CommandType.BOOLEAN, description="an optional field, whether to the display the network to the end user or not.") + private Boolean displayNetwork; + + @Parameter(name=ApiConstants.ACL_ID, type=CommandType.UUID, entityType = NetworkACLResponse.class, + description="Network ACL Id associated for the network") + private Long aclId; ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// ///////////////////////////////////////////////////// http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/client/tomcatconf/applicationContext.xml.in ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/client/tomcatconf/commands.properties.in ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/docs/en-US/gslb.xml ---------------------------------------------------------------------- diff --cc docs/en-US/gslb.xml index 2303331,8070e30..1b692df --- a/docs/en-US/gslb.xml +++ b/docs/en-US/gslb.xml @@@ -157,29 -157,15 +157,41 @@@
Configuring GSLB ++<<<<<<< HEAD + A GSLB deployment is the logical collection of GSLB virtual server, GSLB service, LB + virtual server, service, domain, and ADNS service. To create a GSLB site, you must configure + load balancing in the zone. You must create GSLB vservers and GSLB services for each site. You + must bind GSLB services to GSLB vservers. You must then create an ADNS service that provides + the IP address of the best performing site to the client's request. A GSLB vserver is an + entity that performs load balancing for the domains bound to it by returning the IP address of + the best GSLB service. A GSLB service is a representation of the load balancing/content + switching vserver. An LB vserver load balances incoming traffic by identifying the best + server, then directs traffic to the corresponding service. It can also load-balance external + DNS name servers. Services are entities that represent the servers. The domain is the domain + name for which the system is the authoritative DNS server. By creating an ADNS service, the + system can be configured as an authoritative DNS server. + To configure GSLB in your cloud environment, as a cloud administrator you must perform the + following. + To configure such a GSLB setup, you must first configure a standard load balancing setup + for each zone. This enables you to balance load across the different servers in each zone in + the region. Then, configure both NetScaler appliances that you plan to add to each zone as + authoritative DNS (ADNS) servers. Next, create a GSLB site for each zone, configure GSLB + virtual servers for each site, create GLSB services, and bind the GSLB services to the GSLB + virtual servers. Finally, bind the domain to the GSLB virtual servers. The GSLB configurations + on the two appliances at the two different sites are identical, although each sites + load-balancing configuration is specific to that site. + Perform the following as a cloud administrator. As per the above example, the ++======= + To configure a GSLB deployment, you must first configure a standard load balancing setup + for each zone. This enables you to balance load across the different servers in each zone in + the region. Then on the NetScaler side, configure both NetScaler appliances that you plan to + add to each zone as authoritative DNS (ADNS) servers. Next, create a GSLB site for each zone, + configure GSLB virtual servers for each site, create GLSB services, and bind the GSLB services + to the GSLB virtual servers. Finally, bind the domain to the GSLB virtual servers. The GSLB + configurations on the two appliances at the two different zones are identical, although each + sites load-balancing configuration is specific to that site. + Perform the following as a cloud administrator. As per the example given above, the ++>>>>>>> master administrator of xyztelco is the one who sets up GSLB: @@@ -200,7 -186,9 +212,13 @@@ >Configuring an Authoritative DNS Service. ++<<<<<<< HEAD + Configure a GSLB site with site name formed from the domain name details. ++======= + Configure a GSLB site with the site name formed from the domain name. + As per the example given above, the site names are A.xyztelco.com and + B.xyztelco.com. ++>>>>>>> master For more information, see Configuring a Basic GSLB Site. @@@ -459,7 -447,6 +477,10 @@@
Assigning Load Balancing Rules to GSLB ++<<<<<<< HEAD + ++======= ++>>>>>>> master Log in to the &PRODUCT; UI as a domain administrator or user. http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/engine/schema/src/com/cloud/network/dao/NetworkVO.java ---------------------------------------------------------------------- diff --cc engine/schema/src/com/cloud/network/dao/NetworkVO.java index 9b0eec5,ee44349..6580ea0 --- a/engine/schema/src/com/cloud/network/dao/NetworkVO.java +++ b/engine/schema/src/com/cloud/network/dao/NetworkVO.java @@@ -160,9 -160,9 +160,12 @@@ public class NetworkVO implements Netwo @Column(name="ip6_cidr") String ip6Cidr; + @Column(name="display_network", updatable=true, nullable=false) + protected boolean displayNetwork = true; + + @Column(name="network_acl_id") + Long networkACLId; + public NetworkVO() { this.uuid = UUID.randomUUID().toString(); } @@@ -541,12 -541,13 +544,22 @@@ this.ip6Gateway = ip6Gateway; } + @Override() + public boolean getDisplayNetwork() { + return displayNetwork; + } + + public void setDisplayNetwork(boolean displayNetwork) { + this.displayNetwork = displayNetwork; + } ++ + @Override + public void setNetworkACLId(Long networkACLId) { + this.networkACLId = networkACLId; + } + + @Override + public Long getNetworkACLId() { + return networkACLId; + } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java ---------------------------------------------------------------------- diff --cc engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java index 3a164c4,6f36e21..1bd9abe --- a/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java +++ b/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java @@@ -438,6 -596,6 +596,7 @@@ public class Upgrade410to420 implement } ++ private void upgradePhysicalNtwksWithInternalLbProvider(Connection conn) { PreparedStatement pstmt = null; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/server/src/com/cloud/api/ApiDBUtils.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/api/ApiDBUtils.java index fce1f71,4264c93..94c873e --- a/server/src/com/cloud/api/ApiDBUtils.java +++ b/server/src/com/cloud/api/ApiDBUtils.java @@@ -25,6 -25,20 +25,21 @@@ import java.util.Set import javax.annotation.PostConstruct; import javax.inject.Inject; ++ + import com.cloud.network.rules.LoadBalancer; + import com.cloud.network.vpc.NetworkACL; + import com.cloud.network.vpc.StaticRouteVO; + import com.cloud.network.vpc.VpcGatewayVO; + import com.cloud.network.vpc.VpcManager; + import com.cloud.network.vpc.VpcOffering; + import com.cloud.network.vpc.VpcProvisioningService; + import com.cloud.network.vpc.VpcVO; + import com.cloud.network.vpc.dao.NetworkACLDao; + import com.cloud.network.vpc.dao.StaticRouteDao; + import com.cloud.network.vpc.dao.VpcDao; + import com.cloud.network.vpc.dao.VpcGatewayDao; + import com.cloud.network.vpc.dao.VpcOfferingDao; + import com.cloud.region.ha.GlobalLoadBalancingRulesService; import org.apache.cloudstack.affinity.AffinityGroup; import org.apache.cloudstack.affinity.AffinityGroupResponse; import org.apache.cloudstack.affinity.dao.AffinityGroupDao; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/server/src/com/cloud/api/ApiResponseHelper.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/api/ApiResponseHelper.java index 39327cf,7b4c1f9..7b2bb03 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@@ -3809,7 -3823,6 +3824,7 @@@ public class ApiResponseHelper implemen } } - ++ @Override public InternalLoadBalancerElementResponse createInternalLbElementResponse(VirtualRouterProvider result) { if (result.getType() != VirtualRouterProvider.VirtualRouterProviderType.InternalLbVm) { @@@ -3827,7 -3840,6 +3842,7 @@@ return response; } - ++ @Override public IsolationMethodResponse createIsolationMethodResponse(IsolationType method) { IsolationMethodResponse response = new IsolationMethodResponse(); @@@ -3835,4 -3847,17 +3850,18 @@@ response.setObjectName("isolationmethod"); return response; } + ++ + public NetworkACLResponse createNetworkACLResponse(NetworkACL networkACL) { + NetworkACLResponse response = new NetworkACLResponse(); + response.setId(networkACL.getUuid()); + response.setName(networkACL.getName()); + response.setDescription(networkACL.getDescription()); + Vpc vpc = ApiDBUtils.findVpcById(networkACL.getVpcId()); + if(vpc != null){ + response.setVpcId(vpc.getUuid()); + } + response.setObjectName("networkacllist"); + return response; + } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/server/src/com/cloud/api/query/QueryManagerImpl.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/api/query/QueryManagerImpl.java index ebf9cac,808b1ef..54b7d7c --- a/server/src/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/com/cloud/api/query/QueryManagerImpl.java @@@ -30,8 -29,6 +30,9 @@@ import com.cloud.vm.dao.NicDetailDao import org.apache.cloudstack.affinity.AffinityGroupResponse; import org.apache.cloudstack.affinity.AffinityGroupVMMapVO; import org.apache.cloudstack.affinity.dao.AffinityGroupVMMapDao; +import com.cloud.storage.VolumeDetailVO; +import com.cloud.storage.dao.VolumeDetailsDao; ++ import org.apache.cloudstack.api.BaseListProjectAndAccountResourcesCmd; import org.apache.cloudstack.api.command.admin.host.ListHostsCmd; import org.apache.cloudstack.api.command.admin.internallb.ListInternalLBVMsCmd; @@@ -992,6 -992,6 +993,7 @@@ public class QueryManagerImpl extends M response.setResponses(routerResponses, result.second()); return response; } ++ @Override public ListResponse searchForInternalLbVms(ListInternalLBVMsCmd cmd) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/server/src/com/cloud/network/NetworkManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/server/src/com/cloud/network/NetworkServiceImpl.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/network/NetworkServiceImpl.java index addd853,92d52da..4a57321 --- a/server/src/com/cloud/network/NetworkServiceImpl.java +++ b/server/src/com/cloud/network/NetworkServiceImpl.java @@@ -42,13 -44,23 +44,26 @@@ import org.apache.cloudstack.acl.Securi import org.apache.cloudstack.acl.SecurityChecker.AccessType; import org.apache.cloudstack.api.command.admin.network.DedicateGuestVlanRangeCmd; import org.apache.cloudstack.api.command.admin.network.ListDedicatedGuestVlanRangesCmd; +import org.apache.cloudstack.api.command.admin.usage.ListTrafficTypeImplementorsCmd; +import org.apache.cloudstack.api.command.user.network.*; + import com.cloud.network.vpc.NetworkACL; + import com.cloud.network.vpc.dao.NetworkACLDao; + import org.apache.cloudstack.acl.ControlledEntity.ACLType; + import org.apache.cloudstack.acl.SecurityChecker.AccessType; + import org.apache.cloudstack.api.command.admin.usage.ListTrafficTypeImplementorsCmd; + import org.apache.cloudstack.api.command.user.network.CreateNetworkCmd; + import org.apache.cloudstack.api.command.user.network.ListNetworksCmd; + import org.apache.cloudstack.api.command.user.network.RestartNetworkCmd; import org.apache.cloudstack.api.command.user.vm.ListNicsCmd; import org.apache.cloudstack.network.element.InternalLoadBalancerElementService; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; + + import org.apache.log4j.Logger; + import org.springframework.stereotype.Component; + import org.apache.cloudstack.api.command.user.vm.ListNicsCmd; + import org.bouncycastle.util.IPAddress; + import com.cloud.configuration.Config; import com.cloud.configuration.ConfigurationManager; import com.cloud.configuration.dao.ConfigurationDao; @@@ -928,7 -942,7 +945,8 @@@ public class NetworkServiceImpl extend String endIPv6 = cmd.getEndIpv6(); String ip6Gateway = cmd.getIp6Gateway(); String ip6Cidr = cmd.getIp6Cidr(); + Boolean displayNetwork = cmd.getDisplayNetwork(); + Long aclId = cmd.getAclId(); // Validate network offering NetworkOfferingVO ntwkOff = _networkOfferingDao.findById(networkOfferingId); @@@ -1218,8 -1224,21 +1236,23 @@@ if (!_configMgr.isOfferingForVpc(ntwkOff)){ throw new InvalidParameterValueException("Network offering can't be used for VPC networks"); } + network = _vpcMgr.createVpcGuestNetwork(networkOfferingId, name, displayText, gateway, cidr, vlanId, - networkDomain, owner, sharedDomainId, pNtwk, zoneId, aclType, subdomainAccess, vpcId, caller, displayNetwork); ++ networkDomain, owner, sharedDomainId, pNtwk, zoneId, aclType, subdomainAccess, vpcId, aclId, caller, displayNetwork); + if(aclId == null){ + //Use default deny all ACL, when aclId is not specified + aclId = NetworkACL.DEFAULT_DENY; + } else { + NetworkACL acl = _networkACLDao.findById(aclId); + if(acl == null){ + throw new InvalidParameterValueException("Unable to find specified NetworkACL"); + } + + if(vpcId != acl.getVpcId()){ + throw new InvalidParameterValueException("ACL: "+aclId+" do not belong to the VPC"); + } + } + network = _vpcMgr.createVpcGuestNetwork(networkOfferingId, name, displayText, gateway, cidr, vlanId, - networkDomain, owner, sharedDomainId, pNtwk, zoneId, aclType, subdomainAccess, vpcId, aclId, caller); ++ networkDomain, owner, sharedDomainId, pNtwk, zoneId, aclType, subdomainAccess, vpcId, aclId, caller, displayNetwork); } else { if (_configMgr.isOfferingForVpc(ntwkOff)){ throw new InvalidParameterValueException("Network offering can be used for VPC networks only"); @@@ -1841,7 -1860,7 +1874,8 @@@ @DB @ActionEvent(eventType = EventTypes.EVENT_NETWORK_UPDATE, eventDescription = "updating network", async = true) public Network updateGuestNetwork(long networkId, String name, String displayText, Account callerAccount, - User callerUser, String domainSuffix, Long networkOfferingId, Boolean changeCidr, String guestVmCidr) { + User callerUser, String domainSuffix, Long networkOfferingId, Boolean changeCidr, String guestVmCidr, Boolean displayNetwork) { ++ boolean restartNetwork = false; // verify input parameters @@@ -3775,7 -3787,7 +3809,8 @@@ if (privateNetwork == null) { //create Guest network privateNetwork = _networkMgr.createGuestNetwork(ntwkOff.getId(), networkName, displayText, gateway, cidr, vlan, - null, owner, null, pNtwk, pNtwk.getDataCenterId(), ACLType.Account, null, null, null, null); + null, owner, null, pNtwk, pNtwk.getDataCenterId(), ACLType.Account, null, null, null, null, true); ++ s_logger.debug("Created private network " + privateNetwork); } else { s_logger.debug("Private network already exists: " + privateNetwork); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/server/src/com/cloud/network/vpc/VpcManager.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/network/vpc/VpcManager.java index 3fad1aa,07b9494..f3b4bbc --- a/server/src/com/cloud/network/vpc/VpcManager.java +++ b/server/src/com/cloud/network/vpc/VpcManager.java @@@ -104,9 -102,9 +104,10 @@@ public interface VpcManager extends Vpc * @throws InsufficientCapacityException * @throws ResourceAllocationException */ - Network createVpcGuestNetwork(long ntwkOffId, String name, String displayText, String gateway, String cidr, - String vlanId, String networkDomain, Account owner, Long domainId, PhysicalNetwork pNtwk, long zoneId, - ACLType aclType, Boolean subdomainAccess, long vpcId, long aclId, Account caller) + Network createVpcGuestNetwork(long ntwkOffId, String name, String displayText, String gateway, String cidr, + String vlanId, String networkDomain, Account owner, Long domainId, PhysicalNetwork pNtwk, long zoneId, - ACLType aclType, Boolean subdomainAccess, long vpcId, Account caller, Boolean displayNetworkEnabled) ++ ACLType aclType, Boolean subdomainAccess, long vpcId, Long aclId, Account caller, Boolean displayNetworkEnabled) ++ throws ConcurrentOperationException, InsufficientCapacityException, ResourceAllocationException; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/server/src/com/cloud/network/vpc/VpcManagerImpl.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/network/vpc/VpcManagerImpl.java index 552332e,9993c06..b70ede8 --- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java @@@ -1967,9 -1967,9 +1967,9 @@@ public class VpcManagerImpl extends Man @DB @Override - public Network createVpcGuestNetwork(long ntwkOffId, String name, String displayText, String gateway, - String cidr, String vlanId, String networkDomain, Account owner, Long domainId, - PhysicalNetwork pNtwk, long zoneId, ACLType aclType, Boolean subdomainAccess, long vpcId, long aclId, Account caller) + public Network createVpcGuestNetwork(long ntwkOffId, String name, String displayText, String gateway, + String cidr, String vlanId, String networkDomain, Account owner, Long domainId, - PhysicalNetwork pNtwk, long zoneId, ACLType aclType, Boolean subdomainAccess, long vpcId, Account caller, Boolean isDisplayNetworkEnabled) ++ PhysicalNetwork pNtwk, long zoneId, ACLType aclType, Boolean subdomainAccess, long vpcId, Long aclId, Account caller, Boolean isDisplayNetworkEnabled) throws ConcurrentOperationException, InsufficientCapacityException, ResourceAllocationException { Vpc vpc = getActiveVpc(vpcId); @@@ -1993,9 -1993,12 +1993,14 @@@ validateNtwkOffForNtwkInVpc(null, ntwkOffId, cidr, networkDomain, vpc, gateway, owner); //2) Create network -- Network guestNetwork = _ntwkMgr.createGuestNetwork(ntwkOffId, name, displayText, gateway, cidr, vlanId, - networkDomain, owner, domainId, pNtwk, zoneId, aclType, subdomainAccess, vpcId, null, null); ++ Network guestNetwork = _ntwkMgr.createGuestNetwork(ntwkOffId, name, displayText, gateway, cidr, vlanId, + networkDomain, owner, domainId, pNtwk, zoneId, aclType, subdomainAccess, vpcId, null, null, isDisplayNetworkEnabled); + ++ + if(guestNetwork != null){ + guestNetwork.setNetworkACLId(aclId); + _ntwkDao.update(guestNetwork.getId(), (NetworkVO)guestNetwork); + } return guestNetwork; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/server/src/com/cloud/server/ManagementServerImpl.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/server/ManagementServerImpl.java index 6018138,3c8fa29..425ecf0 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@@ -276,7 -276,20 +276,22 @@@ import org.apache.cloudstack.api.comman import org.apache.cloudstack.api.command.user.nat.DisableStaticNatCmd; import org.apache.cloudstack.api.command.user.nat.EnableStaticNatCmd; import org.apache.cloudstack.api.command.user.nat.ListIpForwardingRulesCmd; +import org.apache.cloudstack.api.command.user.network.*; ++ + import org.apache.cloudstack.api.command.user.network.CreateNetworkACLCmd; + import org.apache.cloudstack.api.command.user.network.CreateNetworkACLListCmd; + import org.apache.cloudstack.api.command.user.network.CreateNetworkCmd; + import org.apache.cloudstack.api.command.user.network.DeleteNetworkACLCmd; + import org.apache.cloudstack.api.command.user.network.DeleteNetworkACLListCmd; + import org.apache.cloudstack.api.command.user.network.DeleteNetworkCmd; + import org.apache.cloudstack.api.command.user.network.ListNetworkACLListsCmd; + import org.apache.cloudstack.api.command.user.network.ListNetworkACLsCmd; + import org.apache.cloudstack.api.command.user.network.ListNetworkOfferingsCmd; + import org.apache.cloudstack.api.command.user.network.ListNetworksCmd; + import org.apache.cloudstack.api.command.user.network.ReplaceNetworkACLListCmd; + import org.apache.cloudstack.api.command.user.network.RestartNetworkCmd; + import org.apache.cloudstack.api.command.user.network.UpdateNetworkACLItemCmd; + import org.apache.cloudstack.api.command.user.network.UpdateNetworkCmd; import org.apache.cloudstack.api.command.user.offering.ListDiskOfferingsCmd; import org.apache.cloudstack.api.command.user.offering.ListServiceOfferingsCmd; import org.apache.cloudstack.api.command.user.project.ActivateProjectCmd; @@@ -355,7 -368,15 +370,16 @@@ import org.apache.cloudstack.api.comman import org.apache.cloudstack.api.command.user.vmsnapshot.DeleteVMSnapshotCmd; import org.apache.cloudstack.api.command.user.vmsnapshot.ListVMSnapshotCmd; import org.apache.cloudstack.api.command.user.vmsnapshot.RevertToVMSnapshotCmd; +import org.apache.cloudstack.api.command.user.volume.*; + import org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd; + import org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd; + import org.apache.cloudstack.api.command.user.volume.DeleteVolumeCmd; + import org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd; + import org.apache.cloudstack.api.command.user.volume.ExtractVolumeCmd; + import org.apache.cloudstack.api.command.user.volume.ListVolumesCmd; + import org.apache.cloudstack.api.command.user.volume.MigrateVolumeCmd; + import org.apache.cloudstack.api.command.user.volume.ResizeVolumeCmd; + import org.apache.cloudstack.api.command.user.volume.UploadVolumeCmd; import org.apache.cloudstack.api.command.user.vpc.CreateStaticRouteCmd; import org.apache.cloudstack.api.command.user.vpc.CreateVPCCmd; import org.apache.cloudstack.api.command.user.vpc.DeleteStaticRouteCmd; @@@ -1609,6 -1630,6 +1633,7 @@@ public class ManagementServerImpl exten paramCountCheck++; } ++ if (paramCountCheck > 1) { throw new InvalidParameterValueException("cannot handle multiple IDs, provide only one ID corresponding to the scope"); } @@@ -2858,17 -2878,6 +2883,10 @@@ cmdList.add(ListAffinityGroupsCmd.class); cmdList.add(UpdateVMAffinityGroupCmd.class); cmdList.add(ListAffinityGroupTypesCmd.class); - cmdList.add(AddVolumeDetailCmd.class); - cmdList.add(UpdateVolumeDetailCmd.class); - cmdList.add(RemoveVolumeDetailCmd.class); - cmdList.add(ListVolumeDetailsCmd.class); - cmdList.add(AddNicDetailCmd.class); - cmdList.add(UpdateNicDetailCmd.class); - cmdList.add(RemoveNicDetailCmd.class); - cmdList.add(ListNicDetailsCmd.class); ++ + cmdList.add(AddResourceDetailCmd.class); + cmdList.add(RemoveResourceDetailCmd.class); + cmdList.add(ListResourceDetailsCmd.class); cmdList.add(StopInternalLBVMCmd.class); cmdList.add(StartInternalLBVMCmd.class); cmdList.add(ListInternalLBVMsCmd.class); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/server/src/com/cloud/tags/TaggedResourceManagerImpl.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/tags/TaggedResourceManagerImpl.java index 2385806,daffe93..f58c5d7 --- a/server/src/com/cloud/tags/TaggedResourceManagerImpl.java +++ b/server/src/com/cloud/tags/TaggedResourceManagerImpl.java @@@ -25,7 -25,7 +25,8 @@@ import javax.ejb.Local import javax.inject.Inject; import javax.naming.ConfigurationException; +import com.cloud.vm.dao.NicDao; + import com.cloud.network.vpc.NetworkACLItemDao; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; @@@ -119,8 -119,8 +120,10 @@@ public class TaggedResourceManagerImpl @Inject VMSnapshotDao _vmSnapshotDao; @Inject + NicDao _nicDao; + NetworkACLItemDao _networkACLItemDao; + + @Override public boolean configure(String name, Map params) throws ConfigurationException { _daoMap.put(TaggedResourceType.UserVm, _userVmDao); @@@ -136,8 -136,7 +139,9 @@@ _daoMap.put(TaggedResourceType.PublicIpAddress, _publicIpDao); _daoMap.put(TaggedResourceType.Project, _projectDao); _daoMap.put(TaggedResourceType.Vpc, _vpcDao); + _daoMap.put(TaggedResourceType.NetworkACL, _firewallDao); + _daoMap.put(TaggedResourceType.Nic, _nicDao); + _daoMap.put(TaggedResourceType.NetworkACL, _networkACLItemDao); _daoMap.put(TaggedResourceType.StaticRoute, _staticRouteDao); _daoMap.put(TaggedResourceType.VMSnapshot, _vmSnapshotDao); _daoMap.put(TaggedResourceType.RemoteAccessVpn, _vpnDao); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/server/test/com/cloud/network/MockNetworkManagerImpl.java ---------------------------------------------------------------------- diff --cc server/test/com/cloud/network/MockNetworkManagerImpl.java index cfd7149,eb5fc25..a0c0850 --- a/server/test/com/cloud/network/MockNetworkManagerImpl.java +++ b/server/test/com/cloud/network/MockNetworkManagerImpl.java @@@ -639,9 -635,15 +639,13 @@@ public class MockNetworkManagerImpl ext return null; } - /* (non-Javadoc) - * @see com.cloud.network.NetworkService#createPrivateNetwork(java.lang.String, java.lang.String, long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, long, java.lang.Long) - */ @Override - public Network createPrivateNetwork(String s, String s2, long l, String s3, String s4, String s5, String s6, String s7, long l2, Long aLong, Boolean aBoolean) throws ResourceAllocationException, ConcurrentOperationException, InsufficientCapacityException { - return null; //To change body of implemented methods use File | Settings | File Templates. ++ + public Network createPrivateNetwork(String networkName, String displayText, long physicalNetworkId, String vlan, + String startIp, String endIP, String gateway, String netmask, long networkOwnerId, Long vpcId, Boolean sourceNat) + throws ResourceAllocationException, ConcurrentOperationException, InsufficientCapacityException { + // TODO Auto-generated method stub + return null; } /* (non-Javadoc) http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/server/test/com/cloud/vpc/MockNetworkManagerImpl.java ---------------------------------------------------------------------- diff --cc server/test/com/cloud/vpc/MockNetworkManagerImpl.java index 5d19cf4,84ae818..52a375c --- a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java +++ b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java @@@ -84,7 -83,15 +84,10 @@@ import com.cloud.user.Account import com.cloud.user.User; import com.cloud.utils.Pair; import com.cloud.utils.component.ManagerBase; -import com.cloud.vm.Nic; -import com.cloud.vm.NicProfile; -import com.cloud.vm.NicSecondaryIp; -import com.cloud.vm.NicVO; -import com.cloud.vm.ReservationContext; -import com.cloud.vm.VMInstanceVO; -import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.Type; ++ + import com.cloud.vm.VirtualMachineProfile; ++ import org.apache.cloudstack.acl.ControlledEntity.ACLType; import org.apache.cloudstack.api.command.admin.network.DedicateGuestVlanRangeCmd; import org.apache.cloudstack.api.command.admin.network.ListDedicatedGuestVlanRangesCmd; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/server/test/com/cloud/vpc/MockVpcManagerImpl.java ---------------------------------------------------------------------- diff --cc server/test/com/cloud/vpc/MockVpcManagerImpl.java index de4169c,b4851d6..3835c2e --- a/server/test/com/cloud/vpc/MockVpcManagerImpl.java +++ b/server/test/com/cloud/vpc/MockVpcManagerImpl.java @@@ -24,6 -24,6 +24,7 @@@ import javax.ejb.Local import javax.inject.Inject; import javax.naming.ConfigurationException; ++import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.ControlledEntity.ACLType; import org.apache.cloudstack.api.command.user.vpc.ListPrivateGatewaysCmd; import org.apache.cloudstack.api.command.user.vpc.ListStaticRoutesCmd; @@@ -298,14 -298,14 +299,9 @@@ public class MockVpcManagerImpl extend } -- /* (non-Javadoc) -- * @see com.cloud.network.vpc.VpcManager#createVpcGuestNetwork(long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, com.cloud.user.Account, java.lang.Long, com.cloud.network.PhysicalNetwork, long, org.apache.cloudstack.acl.ControlledEntity.ACLType, java.lang.Boolean, long, com.cloud.user.Account) -- */ @Override -- public Network createVpcGuestNetwork(long ntwkOffId, String name, String displayText, String gateway, String cidr, String vlanId, String networkDomain, Account owner, Long domainId, PhysicalNetwork pNtwk, - long zoneId, ACLType aclType, Boolean subdomainAccess, long vpcId, Account caller, Boolean displayNetworkEnabled) throws ConcurrentOperationException, InsufficientCapacityException, ResourceAllocationException { - // TODO Auto-generated method stub - return null; - long zoneId, ACLType aclType, Boolean subdomainAccess, long vpcId, long aclId, Account caller) throws ConcurrentOperationException, InsufficientCapacityException, ResourceAllocationException { - // TODO Auto-generated method stub - return null; ++ public Network createVpcGuestNetwork(long ntwkOffId, String name, String displayText, String gateway, String cidr, String vlanId, String networkDomain, Account owner, Long domainId, PhysicalNetwork pNtwk, long zoneId, ACLType aclType, Boolean subdomainAccess, long vpcId, Long aclId, Account caller, Boolean displayNetworkEnabled) throws ConcurrentOperationException, InsufficientCapacityException, ResourceAllocationException { ++ return null; //To change body of implemented methods use File | Settings | File Templates. } /* (non-Javadoc) http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8d53b1ef/setup/db/db/schema-410to420.sql ---------------------------------------------------------------------- diff --cc setup/db/db/schema-410to420.sql index 30b96fd,6e74537..096ca33 --- a/setup/db/db/schema-410to420.sql +++ b/setup/db/db/schema-410to420.sql @@@ -1539,3 -1178,45 +1539,46 @@@ CREATE TABLE `cloud`.`account_vnet_map ALTER TABLE `cloud`.`op_dc_vnet_alloc` ADD COLUMN account_vnet_map_id bigint unsigned; ALTER TABLE `cloud`.`op_dc_vnet_alloc` ADD CONSTRAINT `fk_op_dc_vnet_alloc__account_vnet_map_id` FOREIGN KEY `fk_op_dc_vnet_alloc__account_vnet_map_id` (`account_vnet_map_id`) REFERENCES `account_vnet_map` (`id`); + + CREATE TABLE `cloud`.`network_acl` ( + `id` bigint unsigned NOT NULL auto_increment COMMENT 'id', + `name` varchar(255) NOT NULL COMMENT 'name of the network acl', + `uuid` varchar(40), + `vpc_id` bigint unsigned COMMENT 'vpc this network acl belongs to', + `description` varchar(1024), + PRIMARY KEY (`id`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + CREATE TABLE `cloud`.`network_acl_item` ( + `id` bigint unsigned NOT NULL auto_increment COMMENT 'id', + `uuid` varchar(40), + `acl_id` bigint unsigned NOT NULL COMMENT 'network acl id', + `start_port` int(10) COMMENT 'starting port of a port range', + `end_port` int(10) COMMENT 'end port of a port range', + `state` char(32) NOT NULL COMMENT 'current state of this rule', + `protocol` char(16) NOT NULL default 'TCP' COMMENT 'protocol to open these ports for', + `created` datetime COMMENT 'Date created', + `icmp_code` int(10) COMMENT 'The ICMP code (if protocol=ICMP). A value of -1 means all codes for the given ICMP type.', + `icmp_type` int(10) COMMENT 'The ICMP type (if protocol=ICMP). A value of -1 means all types.', + `traffic_type` char(32) COMMENT 'the traffic type of the rule, can be Ingress or Egress', + `cidr` varchar(255) COMMENT 'comma seperated cidr list', + `number` int(10) NOT NULL COMMENT 'priority number of the acl item', + `action` varchar(10) NOT NULL COMMENT 'rule action, allow or deny', + PRIMARY KEY (`id`), + UNIQUE KEY (`acl_id`, `number`), + CONSTRAINT `fk_network_acl_item__acl_id` FOREIGN KEY(`acl_id`) REFERENCES `network_acl`(`id`) ON DELETE CASCADE, + CONSTRAINT `uc_network_acl_item__uuid` UNIQUE (`uuid`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + ALTER TABLE `cloud`.`networks` add column `network_acl_id` bigint unsigned COMMENT 'network acl id'; + + -- Add Default ACL deny_all + INSERT INTO `cloud`.`network_acl` (id, uuid, vpc_id, description, name) values (1, UUID(), 0, "Default Network ACL Deny All", "default_deny"); + INSERT INTO `cloud`.`network_acl_item` (id, uuid, acl_id, state, protocol, created, traffic_type, cidr, number, action) values (1, UUID(), 1, "Active", "all", now(), "Ingress", "0.0.0.0/0", 1, "Deny"); + INSERT INTO `cloud`.`network_acl_item` (id, uuid, acl_id, state, protocol, created, traffic_type, cidr, number, action) values (2, UUID(), 1, "Active", "all", now(), "Egress", "0.0.0.0/0", 2, "Deny"); + + -- Add Default ACL allow_all + INSERT INTO `cloud`.`network_acl` (id, uuid, vpc_id, description, name) values (2, UUID(), 0, "Default Network ACL Allow All", "default_allow"); + INSERT INTO `cloud`.`network_acl_item` (id, uuid, acl_id, state, protocol, created, traffic_type, cidr, number, action) values (3, UUID(), 2, "Active", "all", now(), "Ingress", "0.0.0.0/0", 1, "Allow"); + INSERT INTO `cloud`.`network_acl_item` (id, uuid, acl_id, state, protocol, created, traffic_type, cidr, number, action) values (4, UUID(), 2, "Active", "all", now(), "Egress", "0.0.0.0/0", 2, "Allow"); ++>>>>>>> master