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:12 UTC

[5/50] [abbrv] Merge branch 'master' into regions

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/89779cce/api/src/com/cloud/api/ApiConstants.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/api/ApiConstants.java
index 16c33c5,067ddf7..e311fcc
--- a/api/src/com/cloud/api/ApiConstants.java
+++ b/api/src/com/cloud/api/ApiConstants.java
@@@ -357,9 -360,10 +360,13 @@@ 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 static final String REGION_ID = "regionid";
 +	public static final String IS_PROPAGATE = "ispropagate";
+     public static final String VPC_OFF_ID = "vpcofferingid";
+     public static final String NETWORK = "network";
+     public static final String VPC_ID = "vpcid";
+     public static final String GATEWAY_ID = "gatewayid";
      public static final String CAN_USE_FOR_DEPLOY = "canusefordeploy";
      public static final String RESOURCE_IDS = "resourceids";
      public static final String RESOURCE_ID = "resourceid";

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/89779cce/api/src/com/cloud/api/BaseCmd.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/api/BaseCmd.java
index de9af9b,91c2035..0fb0e7b
--- a/api/src/com/cloud/api/BaseCmd.java
+++ b/api/src/com/cloud/api/BaseCmd.java
@@@ -44,10 -47,11 +47,12 @@@ import com.cloud.network.firewall.Netwo
  import com.cloud.network.lb.LoadBalancingRulesService;
  import com.cloud.network.rules.RulesService;
  import com.cloud.network.security.SecurityGroupService;
+ import com.cloud.network.vpc.VpcService;
  import com.cloud.network.vpn.RemoteAccessVpnService;
+ import com.cloud.network.vpn.Site2SiteVpnService;
  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.server.TaggedResourceService;
@@@ -130,8 -134,10 +135,11 @@@ public abstract class BaseCmd 
      public static ResourceLimitService _resourceLimitService;
      public static IdentityService _identityService;
      public static StorageNetworkService _storageNetworkService;
 +    public static RegionService _regionService;
      public static TaggedResourceService _taggedResourceService;
+     public static VpcService _vpcService;
+     public static NetworkACLService _networkACLService;
+     public static Site2SiteVpnService _s2sVpnService;
  
      static void setComponents(ResponseGenerator generator) {
          ComponentLocator locator = ComponentLocator.getLocator(ManagementService.Name);
@@@ -159,8 -165,10 +167,11 @@@
          _resourceLimitService = locator.getManager(ResourceLimitService.class);
          _identityService = locator.getManager(IdentityService.class);
          _storageNetworkService = locator.getManager(StorageNetworkService.class);
 +        _regionService = locator.getManager(RegionService.class);
          _taggedResourceService = locator.getManager(TaggedResourceService.class);
+         _vpcService = locator.getManager(VpcService.class);
+         _networkACLService = locator.getManager(NetworkACLService.class);
+         _s2sVpnService = locator.getManager(Site2SiteVpnService.class);
      }
  
      public abstract void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/89779cce/api/src/com/cloud/api/ResponseGenerator.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/89779cce/api/src/com/cloud/user/AccountService.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/89779cce/client/tomcatconf/commands.properties.in
----------------------------------------------------------------------
diff --cc client/tomcatconf/commands.properties.in
index cb96b1e,e233694..5ee333c
--- a/client/tomcatconf/commands.properties.in
+++ b/client/tomcatconf/commands.properties.in
@@@ -333,13 -351,53 +351,62 @@@ addNetworkDevice=com.cloud.api.commands
  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
 +
+ ### Network Devices commands
+ addNetworkDevice=com.cloud.api.commands.AddNetworkDeviceCmd;1
+ listNetworkDevice=com.cloud.api.commands.ListNetworkDeviceCmd;1
+ deleteNetworkDevice=com.cloud.api.commands.DeleteNetworkDeviceCmd;1
+ 
+ ### VPC commands
+ createVPC=com.cloud.api.commands.CreateVPCCmd;15
+ listVPCs=com.cloud.api.commands.ListVPCsCmd;15
+ deleteVPC=com.cloud.api.commands.DeleteVPCCmd;15
+ updateVPC=com.cloud.api.commands.UpdateVPCCmd;15
+ restartVPC=com.cloud.api.commands.RestartVPCCmd;15
+ 
+ #### VPC offering commands
+ createVPCOffering=com.cloud.api.commands.CreateVPCOfferingCmd;1
+ updateVPCOffering=com.cloud.api.commands.UpdateVPCOfferingCmd;1
+ deleteVPCOffering=com.cloud.api.commands.DeleteVPCOfferingCmd;1
+ listVPCOfferings=com.cloud.api.commands.ListVPCOfferingsCmd;15
+ 
+ #### Private gateway commands
+ createPrivateGateway=com.cloud.api.commands.CreatePrivateGatewayCmd;1
+ listPrivateGateways=com.cloud.api.commands.ListPrivateGatewaysCmd;15
+ deletePrivateGateway=com.cloud.api.commands.DeletePrivateGatewayCmd;1
+ 
+ #### Network ACL commands
+ createNetworkACL=com.cloud.api.commands.CreateNetworkACLCmd;15
+ deleteNetworkACL=com.cloud.api.commands.DeleteNetworkACLCmd;15
+ listNetworkACLs=com.cloud.api.commands.ListNetworkACLsCmd;15
+ 
+ #### Static route commands
+ createStaticRoute=com.cloud.api.commands.CreateStaticRouteCmd;15
+ deleteStaticRoute=com.cloud.api.commands.DeleteStaticRouteCmd;15
+ listStaticRoutes=com.cloud.api.commands.ListStaticRoutesCmd;15
+ 
  #### Tags commands
  createTags=com.cloud.api.commands.CreateTagsCmd;15
  deleteTags=com.cloud.api.commands.DeleteTagsCmd;15
  listTags=com.cloud.api.commands.ListTagsCmd;15
++<<<<<<< HEAD
++=======
+ 
+ ### Site-to-site VPN commands
+ createVpnCustomerGateway=com.cloud.api.commands.CreateVpnCustomerGatewayCmd;15
+ createVpnGateway=com.cloud.api.commands.CreateVpnGatewayCmd;15
+ createVpnConnection=com.cloud.api.commands.CreateVpnConnectionCmd;15
+ deleteVpnCustomerGateway=com.cloud.api.commands.DeleteVpnCustomerGatewayCmd;15
+ deleteVpnGateway=com.cloud.api.commands.DeleteVpnGatewayCmd;15
+ deleteVpnConnection=com.cloud.api.commands.DeleteVpnConnectionCmd;15
+ updateVpnCustomerGateway=com.cloud.api.commands.UpdateVpnCustomerGatewayCmd;15
+ resetVpnConnection=com.cloud.api.commands.ResetVpnConnectionCmd;15
+ listVpnCustomerGateways=com.cloud.api.commands.ListVpnCustomerGatewaysCmd;15
+ listVpnGateways=com.cloud.api.commands.ListVpnGatewaysCmd;15
+ listVpnConnections=com.cloud.api.commands.ListVpnConnectionsCmd;15
++>>>>>>> master

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/89779cce/core/src/com/cloud/user/UserVO.java
----------------------------------------------------------------------
diff --cc core/src/com/cloud/user/UserVO.java
index 99a89b5,f5fd5da..f227f31
--- a/core/src/com/cloud/user/UserVO.java
+++ b/core/src/com/cloud/user/UserVO.java
@@@ -93,19 -92,16 +92,19 @@@ public class UserVO implements User, Id
      @Column(name="uuid")
      private String uuid;
  
 +    @Column(name="region_id")
 +    private long regionId;
 +    
      public UserVO() {
-     	this.uuid = UUID.randomUUID().toString();
+         this.uuid = UUID.randomUUID().toString();
      }
-     
+ 
      public UserVO(long id) {
          this.id = id;
-     	this.uuid = UUID.randomUUID().toString();
+         this.uuid = UUID.randomUUID().toString();
      }
 -
 -    public UserVO(long accountId, String username, String password, String firstName, String lastName, String email, String timezone) {
 +    
 +    public UserVO(long accountId, String username, String password, String firstName, String lastName, String email, String timezone, String uuid, long regionId) {
          this.accountId = accountId;
          this.username = username;
          this.password = password;
@@@ -256,21 -251,13 +255,21 @@@
      public String toString() {
          return new StringBuilder("User[").append(id).append("-").append(username).append("]").toString();
      }
-     
+ 
      @Override
      public String getUuid() {
-     	return this.uuid;
+         return this.uuid;
      }
-     
+ 
      public void setUuid(String uuid) {
-     	this.uuid = 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/89779cce/server/src/com/cloud/api/ApiResponseHelper.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/api/ApiResponseHelper.java
index 6ced205,b20aede..f66480e
--- a/server/src/com/cloud/api/ApiResponseHelper.java
+++ b/server/src/com/cloud/api/ApiResponseHelper.java
@@@ -156,9 -172,9 +173,10 @@@ 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.server.ResourceTag;
+ import com.cloud.server.ResourceTag.TaggedResourceType;
  import com.cloud.storage.DiskOfferingVO;
  import com.cloud.storage.GuestOS;
  import com.cloud.storage.GuestOSCategoryVO;
@@@ -3408,19 -3653,9 +3655,19 @@@ public class ApiResponseHelper implemen
      public Long getIdentiyId(String tableName, String token) {
          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;
 +	}
 +
      @Override
-     public ResourceTagResponse createResourceTagResponse(ResourceTag resourceTag) {
+     public ResourceTagResponse createResourceTagResponse(ResourceTag resourceTag, boolean keyValueOnly) {
          ResourceTagResponse response = new ResourceTagResponse();
          response.setKey(resourceTag.getKey());
          response.setValue(resourceTag.getValue());

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/89779cce/server/src/com/cloud/configuration/DefaultComponentLibrary.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/configuration/DefaultComponentLibrary.java
index 61fdef3,4edd402..2e39c13
--- a/server/src/com/cloud/configuration/DefaultComponentLibrary.java
+++ b/server/src/com/cloud/configuration/DefaultComponentLibrary.java
@@@ -317,8 -327,16 +329,17 @@@ public class DefaultComponentLibrary ex
          addDao("NetworkServiceMapDao", NetworkServiceMapDaoImpl.class);
          addDao("StorageNetworkIpAddressDao", StorageNetworkIpAddressDaoImpl.class);
          addDao("StorageNetworkIpRangeDao", StorageNetworkIpRangeDaoImpl.class);
 +        addDao("RegionDao", RegionDaoImpl.class);
+         addDao("VpcDao", VpcDaoImpl.class);
+         addDao("VpcOfferingDao", VpcOfferingDaoImpl.class);
+         addDao("VpcOfferingServiceMapDao", VpcOfferingServiceMapDaoImpl.class);
+         addDao("PrivateIpDao", PrivateIpDaoImpl.class);
+         addDao("VpcGatewayDao", VpcGatewayDaoImpl.class);
+         addDao("StaticRouteDao", StaticRouteDaoImpl.class);
          addDao("TagsDao", ResourceTagsDaoImpl.class);
+         addDao("Site2SiteVpnGatewayDao", Site2SiteVpnGatewayDaoImpl.class);
+         addDao("Site2SiteCustomerGatewayDao", Site2SiteCustomerGatewayDaoImpl.class);
+         addDao("Site2SiteVpnConnnectionDao", Site2SiteVpnConnectionDaoImpl.class);
      }
  
      @Override
@@@ -373,8 -390,11 +393,12 @@@
          addManager("StorageNetworkManager", StorageNetworkManagerImpl.class);
          addManager("ExternalLoadBalancerUsageManager", ExternalLoadBalancerUsageManagerImpl.class);
          addManager("HA Manager", HighAvailabilityManagerImpl.class);
 +        addManager("Region Manager", RegionManagerImpl.class);
+         addManager("VPC Manager", VpcManagerImpl.class);
+         addManager("VpcVirtualRouterManager", VpcVirtualNetworkApplianceManagerImpl.class);
+         addManager("NetworkACLManager", NetworkACLManagerImpl.class);
          addManager("TaggedResourcesManager", TaggedResourceManagerImpl.class);
+         addManager("Site2SiteVpnManager", Site2SiteVpnManagerImpl.class);
      }
  
      @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/89779cce/server/src/com/cloud/projects/ProjectManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/89779cce/server/src/com/cloud/user/AccountManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/user/AccountManagerImpl.java
index 0d085f5,a79251b..b58c417
--- a/server/src/com/cloud/user/AccountManagerImpl.java
+++ b/server/src/com/cloud/user/AccountManagerImpl.java
@@@ -206,8 -214,12 +216,14 @@@ public class AccountManagerImpl impleme
      @Inject
      private IPAddressDao _ipAddressDao;
      @Inject
 +    private RegionManager _regionMgr;
 +    
+     private VpcManager _vpcMgr;
+     @Inject
+     private DomainRouterDao _routerDao;
+     @Inject
+     Site2SiteVpnManager _vpnMgr;
+ 
      private Adapters<UserAuthenticator> _userAuthenticators;
  
      private final ScheduledExecutorService _executor = Executors.newScheduledThreadPool(1, new NamedThreadFactory("AccountChecker"));

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/89779cce/server/src/com/cloud/user/dao/UserDaoImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/89779cce/setup/db/create-schema.sql
----------------------------------------------------------------------
diff --cc setup/db/create-schema.sql
index f5f7387,5b6dc04..bdaecb0
--- a/setup/db/create-schema.sql
+++ b/setup/db/create-schema.sql
@@@ -137,7 -141,11 +141,12 @@@ DROP TABLE IF EXISTS `cloud`.`op_dc_sto
  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`;
+ DROP TABLE IF EXISTS `cloud`.`s2s_customer_gateway`;
+ DROP TABLE IF EXISTS `cloud`.`s2s_vpn_gateway`;
+ DROP TABLE IF EXISTS `cloud`.`s2s_vpn_connection`;
+ DROP TABLE IF EXISTS `cloud`,`external_nicira_nvp_devices`;
+ DROP TABLE IF EXISTS `cloud`,`nicira_nvp_nic_map`;
  
  CREATE TABLE `cloud`.`version` (
    `id` bigint unsigned NOT NULL UNIQUE AUTO_INCREMENT COMMENT 'id',
@@@ -875,7 -890,7 +891,8 @@@ 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,
+   `incorrect_login_attempts` integer unsigned NOT NULL DEFAULT 0,
    PRIMARY KEY  (`id`),
    INDEX `i_user__removed`(`removed`),
    INDEX `i_user__secret_key_removed`(`secret_key`, `removed`),
@@@ -2137,15 -2209,128 +2213,137 @@@ CREATE TABLE  `cloud`.`netscaler_pod_re
  ) 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;
 +
+ CREATE TABLE `cloud`.`vpc` (
+   `id` bigint unsigned NOT NULL auto_increment COMMENT 'id',
+   `uuid` varchar(40) NOT NULL,
+   `name` varchar(255) COMMENT 'vpc name',
+   `display_text` varchar(255) COMMENT 'vpc display text',
+   `cidr` varchar(18) COMMENT 'vpc cidr',
+   `vpc_offering_id` bigint unsigned NOT NULL COMMENT 'vpc offering id that this vpc is created from',
+   `zone_id` bigint unsigned NOT NULL COMMENT 'the id of the zone this Vpc belongs to',
+   `state` varchar(32) NOT NULL COMMENT 'state of the VP (can be Enabled and Disabled)',
+   `domain_id` bigint unsigned NOT NULL COMMENT 'domain the vpc belongs to',
+   `account_id` bigint unsigned NOT NULL COMMENT 'owner of this vpc',
+   `network_domain` varchar(255) COMMENT 'network domain',
+   `removed` datetime COMMENT 'date removed if not null',
+   `created` datetime NOT NULL COMMENT 'date created',
+   `restart_required` int(1) unsigned NOT NULL DEFAULT 0 COMMENT '1 if restart is required for the VPC',
+   PRIMARY KEY  (`id`),
+   INDEX `i_vpc__removed`(`removed`),
+   CONSTRAINT `fk_vpc__zone_id` FOREIGN KEY `fk_vpc__zone_id` (`zone_id`) REFERENCES `data_center` (`id`) ON DELETE CASCADE,
+   CONSTRAINT `fk_vpc__vpc_offering_id` FOREIGN KEY (`vpc_offering_id`) REFERENCES `vpc_offerings`(`id`), 
+   CONSTRAINT `fk_vpc__account_id` FOREIGN KEY `fk_vpc__account_id` (`account_id`) REFERENCES `account`(`id`) ON DELETE CASCADE,
+   CONSTRAINT `fk_vpc__domain_id` FOREIGN KEY `fk_vpc__domain_id` (`domain_id`) REFERENCES `domain`(`id`) ON DELETE CASCADE
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ 
+ 
+ CREATE TABLE `cloud`.`vpc_offerings` (
+   `id` bigint unsigned NOT NULL auto_increment COMMENT 'id',
+   `uuid` varchar(40) NOT NULL,
+   `unique_name` varchar(64) UNIQUE COMMENT 'unique name of the vpc offering',
+   `name` varchar(255) COMMENT 'vpc name',
+   `display_text` varchar(255) COMMENT 'display text',
+   `state` char(32) COMMENT 'state of the vpc offering that has Disabled value by default',
+   `default` int(1) unsigned NOT NULL DEFAULT 0 COMMENT '1 if vpc offering is default',
+   `removed` datetime COMMENT 'date removed if not null',
+   `created` datetime NOT NULL COMMENT 'date created',
+   `service_offering_id` bigint unsigned COMMENT 'service offering id that virtual router is tied to',
+   PRIMARY KEY  (`id`),
+   INDEX `i_vpc__removed`(`removed`),
+   CONSTRAINT `fk_vpc_offerings__service_offering_id` FOREIGN KEY `fk_vpc_offerings__service_offering_id` (`service_offering_id`) REFERENCES `service_offering`(`id`) ON DELETE CASCADE
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ 
+ CREATE TABLE  `cloud`.`vpc_offering_service_map` (
+   `id` bigint unsigned NOT NULL auto_increment,
+   `vpc_offering_id` bigint unsigned NOT NULL COMMENT 'vpc_offering_id',
+   `service` varchar(255) NOT NULL COMMENT 'service',
+   `provider` varchar(255) COMMENT 'service provider',
+   `created` datetime COMMENT 'date created',
+   PRIMARY KEY (`id`),
+   CONSTRAINT `fk_vpc_offering_service_map__vpc_offering_id` FOREIGN KEY(`vpc_offering_id`) REFERENCES `vpc_offerings`(`id`) ON DELETE CASCADE,
+   UNIQUE (`vpc_offering_id`, `service`, `provider`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ 
+ 
+ CREATE TABLE `cloud`.`router_network_ref` (
+   `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
+   `router_id` bigint unsigned NOT NULL COMMENT 'router id',
+   `network_id` bigint unsigned NOT NULL COMMENT 'network id',
+   `guest_type` char(32) COMMENT 'type of guest network that can be shared or isolated',
+   PRIMARY KEY (`id`),
+   CONSTRAINT `fk_router_network_ref__router_id` FOREIGN KEY (`router_id`) REFERENCES `domain_router`(`id`) ON DELETE CASCADE,
+   CONSTRAINT `fk_router_network_ref__networks_id` FOREIGN KEY (`network_id`) REFERENCES `networks`(`id`) ON DELETE CASCADE,
+   UNIQUE `i_router_network_ref__router_id__network_id`(`router_id`, `network_id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ 
+ 
+ CREATE TABLE `cloud`.`vpc_gateways` (
+   `id` bigint unsigned NOT NULL UNIQUE AUTO_INCREMENT COMMENT 'id',
+   `uuid` varchar(40),
+   `ip4_address` char(40) COMMENT 'ip4 address of the gateway',
+   `netmask` varchar(15) COMMENT 'netmask of the gateway',
+   `gateway` varchar(15) COMMENT 'gateway',
+   `vlan_tag` varchar(255),
+   `type` varchar(32) COMMENT 'type of gateway; can be Public/Private/Vpn',
+   `network_id` bigint unsigned NOT NULL COMMENT 'network id vpc gateway belongs to',
+   `vpc_id` bigint unsigned NOT NULL COMMENT 'id of the vpc the gateway belongs to',
+   `zone_id` bigint unsigned NOT NULL COMMENT 'id of the zone the gateway belongs to',
+   `created` datetime COMMENT 'date created',
+   `account_id` bigint unsigned NOT NULL COMMENT 'owner id',
+   `domain_id` bigint unsigned NOT NULL COMMENT 'domain id',
+   `state` varchar(32) NOT NULL COMMENT 'what state the vpc gateway in',
+   `removed` datetime COMMENT 'date removed if not null',
+   PRIMARY KEY (`id`),
+   CONSTRAINT `fk_vpc_gateways__network_id` FOREIGN KEY `fk_vpc_gateways__network_id`(`network_id`) REFERENCES `networks`(`id`),
+   CONSTRAINT `fk_vpc_gateways__vpc_id` FOREIGN KEY `fk_vpc_gateways__vpc_id`(`vpc_id`) REFERENCES `vpc`(`id`),
+   CONSTRAINT `fk_vpc_gateways__zone_id` FOREIGN KEY `fk_vpc_gateways__zone_id`(`zone_id`) REFERENCES `data_center`(`id`),
+   CONSTRAINT `fk_vpc_gateways__account_id` FOREIGN KEY(`account_id`) REFERENCES `account`(`id`) ON DELETE CASCADE,
+   CONSTRAINT `fk_vpc_gateways__domain_id` FOREIGN KEY(`domain_id`) REFERENCES `domain`(`id`) ON DELETE CASCADE,
+   CONSTRAINT `uc_vpc_gateways__uuid` UNIQUE (`uuid`),
+   INDEX `i_vpc_gateways__removed`(`removed`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ 
+ CREATE TABLE `cloud`.`private_ip_address` (
+   `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
+   `ip_address` char(40) NOT NULL COMMENT 'ip address',
+   `network_id` bigint unsigned NOT NULL COMMENT 'id of the network ip belongs to',
+   `reservation_id` char(40) COMMENT 'reservation id',
+   `mac_address` varchar(17) COMMENT 'mac address',
+   `vpc_id` bigint unsigned COMMENT 'vpc this ip belongs to',
+   `taken` datetime COMMENT 'Date taken',
+   PRIMARY KEY (`id`),
+   CONSTRAINT `fk_private_ip_address__vpc_id` FOREIGN KEY `fk_private_ip_address__vpc_id`(`vpc_id`) REFERENCES `vpc`(`id`),
+   CONSTRAINT `fk_private_ip_address__network_id` FOREIGN KEY (`network_id`) REFERENCES `networks` (`id`) ON DELETE CASCADE
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ 
+ 
+ CREATE TABLE `cloud`.`static_routes` (
+   `id` bigint unsigned NOT NULL auto_increment COMMENT 'id',
+   `uuid` varchar(40),
+   `vpc_gateway_id` bigint unsigned COMMENT 'id of the corresponding ip address',
+   `cidr` varchar(18) COMMENT 'cidr for the static route', 
+   `state` char(32) NOT NULL COMMENT 'current state of this rule',
+   `vpc_id` bigint unsigned COMMENT 'vpc the firewall rule is associated with',
+   `account_id` bigint unsigned NOT NULL COMMENT 'owner id',
+   `domain_id` bigint unsigned NOT NULL COMMENT 'domain id',
+   `created` datetime COMMENT 'Date created',
+   PRIMARY KEY  (`id`),
+   CONSTRAINT `fk_static_routes__vpc_gateway_id` FOREIGN KEY(`vpc_gateway_id`) REFERENCES `vpc_gateways`(`id`) ON DELETE CASCADE,
+   CONSTRAINT `fk_static_routes__vpc_id` FOREIGN KEY (`vpc_id`) REFERENCES `vpc`(`id`) ON DELETE CASCADE,
+   CONSTRAINT `fk_static_routes__account_id` FOREIGN KEY(`account_id`) REFERENCES `account`(`id`) ON DELETE CASCADE,
+   CONSTRAINT `fk_static_routes__domain_id` FOREIGN KEY(`domain_id`) REFERENCES `domain`(`id`) ON DELETE CASCADE,
+   CONSTRAINT `uc_static_routes__uuid` UNIQUE (`uuid`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ 
  CREATE TABLE `cloud`.`resource_tags` (
    `id` bigint unsigned NOT NULL auto_increment COMMENT 'id',
    `uuid` varchar(40),