From a8ffd0ea069627a74f2d9cd719b590acb776f506 Mon Sep 17 00:00:00 2001 From: prachi Date: Tue, 22 Nov 2011 13:10:34 -0800 Subject: [PATCH] Added unique constraint on providername <-> physical network mapping. --- server/src/com/cloud/network/NetworkManagerImpl.java | 4 ++++ setup/db/create-schema.sql | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 1d14c7a449d..807359355e5 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -4143,6 +4143,10 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag throw new InvalidParameterValueException("Invalid Network Service Provider=" + providerName); } } + + if(_pNSPDao.findByServiceProvider(physicalNetworkId, providerName) != null){ + throw new CloudRuntimeException("The '"+ providerName +"' provider already exists on physical network : "+physicalNetworkId); + } //check if services can be turned off NetworkElement element = getElementImplementingProvider(providerName); diff --git a/setup/db/create-schema.sql b/setup/db/create-schema.sql index 07c66389ab2..817dfe95254 100755 --- a/setup/db/create-schema.sql +++ b/setup/db/create-schema.sql @@ -1937,7 +1937,8 @@ CREATE TABLE `cloud`.`physical_network_service_providers` ( `security_group_service_provided` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT 'Is SG service provided', PRIMARY KEY (`id`), CONSTRAINT `fk_pnetwork_service_providers__physical_network_id` FOREIGN KEY (`physical_network_id`) REFERENCES `physical_network`(`id`) ON DELETE CASCADE, - CONSTRAINT `uc_service_providers__uuid` UNIQUE (`uuid`) + CONSTRAINT `uc_service_providers__uuid` UNIQUE (`uuid`), + UNIQUE KEY(`physical_network_id`, `provider_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `cloud`.`external_load_balancer_devices` (