http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0a7faa98/server/src/com/cloud/vm/dao/NicDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/dao/NicDaoImpl.java b/server/src/com/cloud/vm/dao/NicDaoImpl.java index 1e3d6e0..09786ca 100644 --- a/server/src/com/cloud/vm/dao/NicDaoImpl.java +++ b/server/src/com/cloud/vm/dao/NicDaoImpl.java @@ -22,6 +22,8 @@ import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.SearchCriteria.Func; import com.cloud.utils.db.SearchCriteria.Op; +import com.cloud.vm.Nic.State; +import com.cloud.vm.Nic; import com.cloud.vm.NicVO; import com.cloud.vm.VirtualMachine; @@ -29,6 +31,7 @@ import com.cloud.vm.VirtualMachine; public class NicDaoImpl extends GenericDaoBase<NicVO, Long> implements NicDao { private final SearchBuilder<NicVO> AllFieldsSearch; private final GenericSearchBuilder<NicVO, String> IpSearch; + private final SearchBuilder<NicVO> NonReleasedSearch; protected NicDaoImpl() { super(); @@ -46,6 +49,12 @@ public class NicDaoImpl extends GenericDaoBase<NicVO, Long> implements NicDao { IpSearch.and("network", IpSearch.entity().getNetworkId(), Op.EQ); IpSearch.and("address", IpSearch.entity().getIp4Address(), Op.NNULL); IpSearch.done(); + + NonReleasedSearch = createSearchBuilder(); + NonReleasedSearch.and("instance", NonReleasedSearch.entity().getInstanceId(), Op.EQ); + NonReleasedSearch.and("network", NonReleasedSearch.entity().getNetworkId(), Op.EQ); + NonReleasedSearch.and("state", NonReleasedSearch.entity().getState(), Op.NOTIN); + NonReleasedSearch.done(); } @Override @@ -123,4 +132,22 @@ public class NicDaoImpl extends GenericDaoBase<NicVO, Long> implements NicDao { sc.setParameters("isDefault", 1); return findOneBy(sc); } + + @Override + public NicVO findNonReleasedByInstanceIdAndNetworkId(long networkId, long instanceId) { + SearchCriteria<NicVO> sc = NonReleasedSearch.create(); + sc.setParameters("network", networkId); + sc.setParameters("instance", instanceId); + sc.setParameters("state", State.Releasing, Nic.State.Deallocating); + return findOneBy(sc); + } + + @Override + public String getIpAddress(long networkId, long instanceId) { + SearchCriteria<NicVO> sc = AllFieldsSearch.create(); + sc.setParameters("network", networkId); + sc.setParameters("instance", instanceId); + return findOneBy(sc).getIp4Address(); + } + }
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0a7faa98/server/test/com/cloud/vm/MockVirtualMachineManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/test/com/cloud/vm/MockVirtualMachineManagerImpl.java b/server/test/com/cloud/vm/MockVirtualMachineManagerImpl.java index f72e7e8..f2e69bc 100755 --- a/server/test/com/cloud/vm/MockVirtualMachineManagerImpl.java +++ b/server/test/com/cloud/vm/MockVirtualMachineManagerImpl.java @@ -240,7 +240,7 @@ public class MockVirtualMachineManagerImpl implements VirtualMachineManager { * @see com.cloud.vm.VirtualMachineManager#addVmToNetwork(com.cloud.vm.VirtualMachine, com.cloud.network.Network) */ @Override - public boolean addVmToNetwork(VirtualMachine vm, Network network) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException { + public NicProfile addVmToNetwork(VirtualMachine vm, Network network) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException { // TODO Auto-generated method stub return false; } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0a7faa98/setup/db/create-schema.sql ---------------------------------------------------------------------- diff --git a/setup/db/create-schema.sql b/setup/db/create-schema.sql index a7bcd08..ff77121 100755 --- a/setup/db/create-schema.sql +++ b/setup/db/create-schema.sql @@ -2201,5 +2201,34 @@ CREATE TABLE `cloud`.`router_network_ref` ( ) 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', + `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 NOT NULL COMMENT 'date created', + `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 `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', + `taken` datetime COMMENT 'Date taken', + PRIMARY KEY (`id`), + CONSTRAINT `fk_private_ip_address__network_id` FOREIGN KEY (`network_id`) REFERENCES `networks` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + SET foreign_key_checks = 1; http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/0a7faa98/wscript ---------------------------------------------------------------------- diff --git a/wscript b/wscript index 921cc37..2a518e3 100644 --- a/wscript +++ b/wscript @@ -3,7 +3,11 @@ # the following two variables are used by the target "waf dist" # if you change 'em here, you need to change it also in cloud.spec, add a %changelog entry there, and add an entry in debian/changelog +<<<<<<< HEAD VERSION = '3.0.3.2012-06-04T23:35:51Z' +======= +VERSION = '3.0.3.2012-06-04T21:10:12Z' +>>>>>>> Support for adding private network APPNAME = 'cloud' import shutil,os
