This is an automated email from the ASF dual-hosted git repository.
pearl11594 pushed a commit to branch nsx-integration
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/nsx-integration by this push:
new 3179a3e574b add default VPC offering and update upgrade path
3179a3e574b is described below
commit 3179a3e574bde7654935b0a73efde24e9a2a3e2e
Author: Pearl Dsilva <[email protected]>
AuthorDate: Fri Aug 18 14:12:46 2023 -0400
add default VPC offering and update upgrade path
---
.../java/com/cloud/network/vpc/VpcOffering.java | 1 +
.../cloud/configuration/ConfigurationManager.java | 30 +++-----
.../engine/orchestration/NetworkOrchestrator.java | 24 +++---
.../resources/META-INF/db/schema-41810to41900.sql | 88 +++++++++++++++++++++-
.../contrail/management/ContrailManagerImpl.java | 4 +-
.../configuration/ConfigurationManagerImpl.java | 15 ++--
.../java/com/cloud/network/vpc/VpcManagerImpl.java | 19 ++++-
.../com/cloud/server/ConfigurationServerImpl.java | 2 +-
.../cloud/vpc/MockConfigurationManagerImpl.java | 2 +-
.../networkoffering/CreateNetworkOfferingTest.java | 20 ++---
10 files changed, 152 insertions(+), 53 deletions(-)
diff --git a/api/src/main/java/com/cloud/network/vpc/VpcOffering.java
b/api/src/main/java/com/cloud/network/vpc/VpcOffering.java
index b4df8e38dba..0d6f958776b 100644
--- a/api/src/main/java/com/cloud/network/vpc/VpcOffering.java
+++ b/api/src/main/java/com/cloud/network/vpc/VpcOffering.java
@@ -29,6 +29,7 @@ public interface VpcOffering extends InternalIdentity,
Identity {
public static final String defaultVPCOfferingName = "Default VPC offering";
public static final String defaultVPCNSOfferingName = "Default VPC
offering with Netscaler";
public static final String redundantVPCOfferingName = "Redundant VPC
offering";
+ public static final String defaultVPCNSXSOfferingName = "VPC offering with
NSX";
/**
*
diff --git
a/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java
b/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java
index 5343fb632b5..40b0c1f61fb 100644
---
a/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java
+++
b/engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java
@@ -197,30 +197,24 @@ public interface ConfigurationManager {
/**
* Creates a new network offering
+ *
* @param name
* @param displayText
* @param trafficType
* @param tags
* @param specifyVlan
- * @param networkRate
- * TODO
- * @param serviceProviderMap
- * TODO
- * @param isDefault
- * TODO
- * @param type
- * TODO
- * @param systemOnly
- * TODO
+ * @param networkRate TODO
+ * @param serviceProviderMap TODO
+ * @param isDefault TODO
+ * @param type TODO
+ * @param systemOnly TODO
* @param serviceOfferingId
- * @param conserveMode
- * ;
- * @param specifyIpRanges
- * TODO
- * @param isPersistent
- * ;
- * @param details TODO
+ * @param conserveMode ;
+ * @param specifyIpRanges TODO
+ * @param isPersistent ;
+ * @param details TODO
* @param forVpc
+ * @param forNsx
* @param domainIds
* @param zoneIds
* @return network offering object
@@ -230,7 +224,7 @@ public interface ConfigurationManager {
Integer networkRate, Map<Service,
Set<Provider>> serviceProviderMap, boolean isDefault, Network.GuestType type,
boolean systemOnly, Long serviceOfferingId,
boolean conserveMode, Map<Service,
Map<Capability, String>> serviceCapabilityMap, boolean specifyIpRanges, boolean
isPersistent,
Map<NetworkOffering.Detail,
String> details, boolean egressDefaultPolicy, Integer maxconn, boolean
enableKeepAlive, Boolean forVpc,
- Boolean forTungsten, List<Long>
domainIds, List<Long> zoneIds, boolean enableOffering, final
NetUtils.InternetProtocol internetProtocol);
+ Boolean forTungsten, boolean
forNsx, List<Long> domainIds, List<Long> zoneIds, boolean enableOffering, final
NetUtils.InternetProtocol internetProtocol);
Vlan createVlanAndPublicIpRange(long zoneId, long networkId, long
physicalNetworkId, boolean forVirtualNetwork, boolean forSystemVms, Long podId,
String startIP, String endIP,
String vlanGateway, String vlanNetmask, String vlanId, boolean
bypassVlanOverlapCheck, Domain domain, Account vlanOwner, String startIPv6,
String endIPv6, String vlanIp6Gateway, String vlanIp6Cidr)
diff --git
a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
index 77b14d31387..211125227e7 100644
---
a/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
+++
b/engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
@@ -508,6 +508,8 @@ public class NetworkOrchestrator extends ManagerBase
implements NetworkOrchestra
defaultNSXEnabledNetworkOfferingProviders.put(Service.Connectivity,
nsxProvider);
defaultNSXEnabledNetworkOfferingProviders.put(Service.Dhcp,
nsxProvider);
defaultNSXEnabledNetworkOfferingProviders.put(Service.Dns,
nsxProvider);
+ defaultNSXEnabledNetworkOfferingProviders.put(Service.SourceNat,
nsxProvider);
+ defaultNSXEnabledNetworkOfferingProviders.put(Service.UserData,
defaultProviders);
final Map<Network.Service, Set<Network.Provider>>
defaultIsolatedSourceNatEnabledNetworkOfferingProviders = new
HashMap<Network.Service, Set<Network.Provider>>();
defaultProviders.clear();
@@ -545,27 +547,27 @@ public class NetworkOrchestrator extends ManagerBase
implements NetworkOrchestra
if
(_networkOfferingDao.findByUniqueName(NetworkOffering.QuickCloudNoServices) ==
null) {
offering =
_configMgr.createNetworkOffering(NetworkOffering.QuickCloudNoServices,
"Offering for QuickCloud with no services", TrafficType.Guest, null, true,
Availability.Optional, null, new
HashMap<Network.Service, Set<Network.Provider>>(), true,
Network.GuestType.Shared, false, null, true, null, true,
- false, null, false, null, true, false, false,
null, null, true, null);
+ false, null, false, null, true, false, false,
false, null, null, true, null);
}
//#2 - SG enabled network offering
if
(_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultSharedNetworkOfferingWithSGService)
== null) {
offering =
_configMgr.createNetworkOffering(NetworkOffering.DefaultSharedNetworkOfferingWithSGService,
"Offering for Shared Security group enabled networks",
TrafficType.Guest, null, true,
Availability.Optional, null, defaultSharedNetworkOfferingProviders, true,
Network.GuestType.Shared, false, null, true,
- null, true, false, null, false, null, true, false,
false, null, null, true, null);
+ null, true, false, null, false, null, true, false,
false, false, null, null, true, null);
}
//#3 - shared network offering with no SG service
if
(_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultSharedNetworkOffering)
== null) {
offering =
_configMgr.createNetworkOffering(NetworkOffering.DefaultSharedNetworkOffering,
"Offering for Shared networks", TrafficType.Guest, null, true,
Availability.Optional, null,
defaultSharedNetworkOfferingProviders, true, Network.GuestType.Shared, false,
null, true, null, true, false, null, false,
- null, true, false, false, null, null, true, null);
+ null, true, false, false, false, null, null, true,
null);
}
if
(_networkOfferingDao.findByUniqueName(NetworkOffering.DEFAULT_TUNGSTEN_SHARED_NETWORK_OFFERING_WITH_SGSERVICE)
== null) {
offering =
_configMgr.createNetworkOffering(NetworkOffering.DEFAULT_TUNGSTEN_SHARED_NETWORK_OFFERING_WITH_SGSERVICE,
"Offering for Tungsten Shared Security group enabled networks",
TrafficType.Guest, null, true,
Availability.Optional, null,
defaultTungstenSharedSGEnabledNetworkOfferingProviders, true,
Network.GuestType.Shared, false, null, true,
- null, true, false, null, false, null, true, false,
true,null, null, true, null);
+ null, true, false, null, false, null, true, false,
true, false, null, null, true, null);
offering.setState(NetworkOffering.State.Enabled);
_networkOfferingDao.update(offering.getId(), offering);
}
@@ -575,20 +577,20 @@ public class NetworkOrchestrator extends ManagerBase
implements NetworkOrchestra
offering =
_configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOfferingWithSourceNatService,
"Offering for Isolated networks with Source Nat
service enabled", TrafficType.Guest, null, false, Availability.Required, null,
defaultIsolatedSourceNatEnabledNetworkOfferingProviders, true,
Network.GuestType.Isolated, false, null, true, null, false, false, null, false,
null,
- true, false, false, null, null, true, null);
+ true, false, false, false, null, null, true, null);
}
//#5 - default vpc offering with LB service
if
(_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworks)
== null) {
offering =
_configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworks,
"Offering for Isolated VPC networks with Source
Nat service enabled", TrafficType.Guest, null, false, Availability.Optional,
null,
- defaultVPCOffProviders, true,
Network.GuestType.Isolated, false, null, false, null, false, false, null,
false, null, true, true, false, null, null, true, null);
+ defaultVPCOffProviders, true,
Network.GuestType.Isolated, false, null, false, null, false, false, null,
false, null, true, true, false, false, null, null, true, null);
}
if
(_networkOfferingDao.findByUniqueName(NetworkOffering.DEFAULT_NSX_OFFERING) ==
null) {
offering =
_configMgr.createNetworkOffering(NetworkOffering.DEFAULT_NSX_OFFERING,
"Offering for Nsx networks",
TrafficType.Guest, null, false,
Availability.Optional, null,
- defaultNSXEnabledNetworkOfferingProviders, true,
Network.GuestType.Isolated, false, null, false, null, false, false, null,
false, null, true, true, false, null, null, true, null);
+ defaultNSXEnabledNetworkOfferingProviders, true,
Network.GuestType.Isolated, false, null, false, null, false, false, null,
false, null, true, true, false, true, null, null, true, null);
offering.setState(NetworkOffering.State.Enabled);
_networkOfferingDao.update(offering.getId(), offering);
}
@@ -599,14 +601,14 @@ public class NetworkOrchestrator extends ManagerBase
implements NetworkOrchestra
defaultVPCOffProviders.remove(Service.Lb);
offering =
_configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksNoLB,
"Offering for Isolated VPC networks with Source
Nat service enabled and LB service disabled", TrafficType.Guest, null, false,
Availability.Optional,
- null, defaultVPCOffProviders, true,
Network.GuestType.Isolated, false, null, false, null, false, false, null,
false, null, true, true, false, null, null, true, null);
+ null, defaultVPCOffProviders, true,
Network.GuestType.Isolated, false, null, false, null, false, false, null,
false, null, true, true, false, false, null, null, true, null);
}
//#7 - isolated offering with source nat disabled
if
(_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultIsolatedNetworkOffering)
== null) {
offering =
_configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOffering,
"Offering for Isolated networks with no Source Nat service",
TrafficType.Guest, null, true,
Availability.Optional, null, defaultIsolatedNetworkOfferingProviders, true,
Network.GuestType.Isolated, false, null,
- true, null, true, false, null, false, null, true,
false, false, null, null, true, null);
+ true, null, true, false, null, false, null, true,
false, false, false, null, null, true, null);
}
//#8 - network offering with internal lb service
@@ -628,7 +630,7 @@ public class NetworkOrchestrator extends ManagerBase
implements NetworkOrchestra
if
(_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksWithInternalLB)
== null) {
offering =
_configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksWithInternalLB,
"Offering for Isolated VPC networks with Internal
Lb support", TrafficType.Guest, null, false, Availability.Optional, null,
internalLbOffProviders,
- true, Network.GuestType.Isolated, false, null,
false, null, false, false, null, false, null, true, true, false, null, null,
true, null);
+ true, Network.GuestType.Isolated, false, null,
false, null, false, false, null, false, null, true, true, false, false, null,
null, true, null);
offering.setInternalLb(true);
offering.setPublicLb(false);
_networkOfferingDao.update(offering.getId(), offering);
@@ -659,7 +661,7 @@ public class NetworkOrchestrator extends ManagerBase
implements NetworkOrchestra
if
(_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultSharedEIPandELBNetworkOffering)
== null) {
offering =
_configMgr.createNetworkOffering(NetworkOffering.DefaultSharedEIPandELBNetworkOffering,
"Offering for Shared networks with Elastic IP and
Elastic LB capabilities", TrafficType.Guest, null, true, Availability.Optional,
null,
- netscalerServiceProviders, true,
Network.GuestType.Shared, false, null, true, serviceCapabilityMap, true, false,
null, false, null, true, false, false, null, null, true, null);
+ netscalerServiceProviders, true,
Network.GuestType.Shared, false, null, true, serviceCapabilityMap, true, false,
null, false, null, true, false, false, false, null, null, true, null);
offering.setDedicatedLB(false);
_networkOfferingDao.update(offering.getId(), offering);
}
diff --git
a/engine/schema/src/main/resources/META-INF/db/schema-41810to41900.sql
b/engine/schema/src/main/resources/META-INF/db/schema-41810to41900.sql
index fdef959b47b..1ed82472402 100644
--- a/engine/schema/src/main/resources/META-INF/db/schema-41810to41900.sql
+++ b/engine/schema/src/main/resources/META-INF/db/schema-41810to41900.sql
@@ -190,5 +190,89 @@ CREATE TABLE `cloud`.`nsx_providers` (
`username` varchar(255) NOT NULL ,
`password` varchar(255) NOT NULL,
`tier0_gateway` varchar(255),
- `edge_cluster` varchar(255)
-)
\ No newline at end of file
+ `edge_cluster` varchar(255),
+ PRIMARY KEY (`id`),
+ CONSTRAINT `fk_nsx_providers_zone_id` FOREIGN KEY (`zone_id`) REFERENCES
`data_center`(`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+
+-- Idempotent ADD COLUMN
+DROP PROCEDURE IF EXISTS `cloud`.`IDEMPOTENT_ADD_COLUMN`;
+CREATE PROCEDURE `cloud`.`IDEMPOTENT_ADD_COLUMN` (
+ IN in_table_name VARCHAR(200)
+, IN in_column_name VARCHAR(200)
+, IN in_column_definition VARCHAR(1000)
+)
+BEGIN
+ DECLARE CONTINUE HANDLER FOR 1060 BEGIN END; SET @ddl = CONCAT('ALTER
TABLE ', in_table_name); SET @ddl = CONCAT(@ddl, ' ', 'ADD COLUMN') ; SET @ddl
= CONCAT(@ddl, ' ', in_column_name); SET @ddl = CONCAT(@ddl, ' ',
in_column_definition); PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE
stmt; END;
+
+-- NSX Plugin --
+CALL `cloud`.`IDEMPOTENT_ADD_COLUMN`('cloud.network_offerings','for_nsx',
'int(1) unsigned DEFAULT "0" COMMENT "is nsx enabled for the resource"');
+
+-- Network offering with multi-domains and multi-zones
+DROP VIEW IF EXISTS `cloud`.`network_offering_view`;
+CREATE VIEW `cloud`.`network_offering_view` AS
+SELECT
+ `network_offerings`.`id` AS `id`,
+ `network_offerings`.`uuid` AS `uuid`,
+ `network_offerings`.`name` AS `name`,
+ `network_offerings`.`unique_name` AS `unique_name`,
+ `network_offerings`.`display_text` AS `display_text`,
+ `network_offerings`.`nw_rate` AS `nw_rate`,
+ `network_offerings`.`mc_rate` AS `mc_rate`,
+ `network_offerings`.`traffic_type` AS `traffic_type`,
+ `network_offerings`.`tags` AS `tags`,
+ `network_offerings`.`system_only` AS `system_only`,
+ `network_offerings`.`specify_vlan` AS `specify_vlan`,
+ `network_offerings`.`service_offering_id` AS `service_offering_id`,
+ `network_offerings`.`conserve_mode` AS `conserve_mode`,
+ `network_offerings`.`created` AS `created`,
+ `network_offerings`.`removed` AS `removed`,
+ `network_offerings`.`default` AS `default`,
+ `network_offerings`.`availability` AS `availability`,
+ `network_offerings`.`dedicated_lb_service` AS `dedicated_lb_service`,
+ `network_offerings`.`shared_source_nat_service` AS
`shared_source_nat_service`,
+ `network_offerings`.`sort_key` AS `sort_key`,
+ `network_offerings`.`redundant_router_service` AS
`redundant_router_service`,
+ `network_offerings`.`state` AS `state`,
+ `network_offerings`.`guest_type` AS `guest_type`,
+ `network_offerings`.`elastic_ip_service` AS `elastic_ip_service`,
+ `network_offerings`.`eip_associate_public_ip` AS `eip_associate_public_ip`,
+ `network_offerings`.`elastic_lb_service` AS `elastic_lb_service`,
+ `network_offerings`.`specify_ip_ranges` AS `specify_ip_ranges`,
+ `network_offerings`.`inline` AS `inline`,
+ `network_offerings`.`is_persistent` AS `is_persistent`,
+ `network_offerings`.`internal_lb` AS `internal_lb`,
+ `network_offerings`.`public_lb` AS `public_lb`,
+ `network_offerings`.`egress_default_policy` AS `egress_default_policy`,
+ `network_offerings`.`concurrent_connections` AS `concurrent_connections`,
+ `network_offerings`.`keep_alive_enabled` AS `keep_alive_enabled`,
+ `network_offerings`.`supports_streched_l2` AS `supports_streched_l2`,
+ `network_offerings`.`supports_public_access` AS `supports_public_access`,
+ `network_offerings`.`supports_vm_autoscaling` AS `supports_vm_autoscaling`,
+ `network_offerings`.`for_vpc` AS `for_vpc`,
+ `network_offerings`.`for_tungsten` AS `for_tungsten`,
+ `network_offerings`.`for_nsx` AS `for_nsx`,
+ `network_offerings`.`service_package_id` AS `service_package_id`,
+ GROUP_CONCAT(DISTINCT(domain.id)) AS domain_id,
+ GROUP_CONCAT(DISTINCT(domain.uuid)) AS domain_uuid,
+ GROUP_CONCAT(DISTINCT(domain.name)) AS domain_name,
+ GROUP_CONCAT(DISTINCT(domain.path)) AS domain_path,
+ GROUP_CONCAT(DISTINCT(zone.id)) AS zone_id,
+ GROUP_CONCAT(DISTINCT(zone.uuid)) AS zone_uuid,
+ GROUP_CONCAT(DISTINCT(zone.name)) AS zone_name,
+ `offering_details`.value AS internet_protocol
+FROM
+ `cloud`.`network_offerings`
+ LEFT JOIN
+ `cloud`.`network_offering_details` AS `domain_details` ON
`domain_details`.`network_offering_id` = `network_offerings`.`id` AND
`domain_details`.`name`='domainid'
+ LEFT JOIN
+ `cloud`.`domain` AS `domain` ON FIND_IN_SET(`domain`.`id`,
`domain_details`.`value`)
+ LEFT JOIN
+ `cloud`.`network_offering_details` AS `zone_details` ON
`zone_details`.`network_offering_id` = `network_offerings`.`id` AND
`zone_details`.`name`='zoneid'
+ LEFT JOIN
+ `cloud`.`data_center` AS `zone` ON FIND_IN_SET(`zone`.`id`,
`zone_details`.`value`)
+ LEFT JOIN
+ `cloud`.`network_offering_details` AS `offering_details` ON
`offering_details`.`network_offering_id` = `network_offerings`.`id` AND
`offering_details`.`name`='internetProtocol'
+GROUP BY
+ `network_offerings`.`id`;
\ No newline at end of file
diff --git
a/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ContrailManagerImpl.java
b/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ContrailManagerImpl.java
index 7021b9ac235..372e268a2ff 100644
---
a/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ContrailManagerImpl.java
+++
b/plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ContrailManagerImpl.java
@@ -219,7 +219,7 @@ public class ContrailManagerImpl extends ManagerBase
implements ContrailManager
ConfigurationManager configMgr = (ConfigurationManager) _configService;
NetworkOfferingVO voffer =
configMgr.createNetworkOffering(offeringName, offeringDisplayText,
TrafficType.Public, null, true, Availability.Optional, null,
serviceProviderMap, true,
- Network.GuestType.Shared, false, null, false, null, true,
false, null, true, null, false, false, false, null, null, true, null);
+ Network.GuestType.Shared, false, null, false, null, true,
false, null, true, null, false, false, false, false, null, null, true, null);
long id = voffer.getId();
_networkOfferingDao.update(id, voffer);
return _networkOfferingDao.findById(id);
@@ -254,7 +254,7 @@ public class ContrailManagerImpl extends ManagerBase
implements ContrailManager
ConfigurationManager configMgr = (ConfigurationManager)_configService;
NetworkOfferingVO voffer =
configMgr.createNetworkOffering(offeringName,
offeringDisplayText, TrafficType.Guest, null, false, Availability.Optional,
null, serviceProviderMap, true,
- Network.GuestType.Isolated, false, null, false, null,
false, true, null, true, null, false,
offeringName.equals(vpcRouterOfferingName), false, null, null, true, null);
+ Network.GuestType.Isolated, false, null, false, null,
false, true, null, true, null, false,
offeringName.equals(vpcRouterOfferingName), false, false, null, null, true,
null);
if (offeringName.equals(vpcRouterOfferingName)) {
voffer.setInternalLb(true);
}
diff --git
a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java
b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java
index 890fb1195e2..705b8627899 100644
--- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -6178,7 +6178,7 @@ public class ConfigurationManagerImpl extends ManagerBase
implements Configurati
}
final NetworkOfferingVO offering = createNetworkOffering(name,
displayText, trafficType, tags, specifyVlan, availability, networkRate,
serviceProviderMap, false, guestType, false,
- serviceOfferingId, conserveMode, serviceCapabilityMap,
specifyIpRanges, isPersistent, details, egressDefaultPolicy, maxconn,
enableKeepAlive, forVpc, forTungsten, domainIds, zoneIds, enable,
internetProtocol);
+ serviceOfferingId, conserveMode, serviceCapabilityMap,
specifyIpRanges, isPersistent, details, egressDefaultPolicy, maxconn,
enableKeepAlive, forVpc, forTungsten, false, domainIds, zoneIds, enable,
internetProtocol);
CallContext.current().setEventDetails(" Id: " + offering.getId() + "
Name: " + name);
CallContext.current().putContextParameter(NetworkOffering.class,
offering.getId());
return offering;
@@ -6318,12 +6318,12 @@ public class ConfigurationManagerImpl extends
ManagerBase implements Configurati
@Override
@DB
public NetworkOfferingVO createNetworkOffering(final String name, final
String displayText, final TrafficType trafficType, String tags, final boolean
specifyVlan,
- final Availability availability,
- final Integer networkRate, final Map<Service, Set<Provider>>
serviceProviderMap, final boolean isDefault, final GuestType type, final
boolean systemOnly,
- final Long serviceOfferingId,
- final boolean conserveMode, final Map<Service, Map<Capability,
String>> serviceCapabilityMap, final boolean specifyIpRanges, final boolean
isPersistent,
- final Map<Detail, String> details, final boolean
egressDefaultPolicy, final Integer maxconn, final boolean enableKeepAlive,
Boolean forVpc,
- Boolean forTungsten, final List<Long> domainIds, final List<Long>
zoneIds, final boolean enableOffering, final NetUtils.InternetProtocol
internetProtocol) {
+ final Availability
availability,
+ final Integer networkRate,
final Map<Service, Set<Provider>> serviceProviderMap, final boolean isDefault,
final GuestType type, final boolean systemOnly,
+ final Long
serviceOfferingId,
+ final boolean conserveMode,
final Map<Service, Map<Capability, String>> serviceCapabilityMap, final boolean
specifyIpRanges, final boolean isPersistent,
+ final Map<Detail, String>
details, final boolean egressDefaultPolicy, final Integer maxconn, final
boolean enableKeepAlive, Boolean forVpc,
+ Boolean forTungsten,
boolean forNsx, final List<Long> domainIds, final List<Long> zoneIds, final
boolean enableOffering, final NetUtils.InternetProtocol internetProtocol) {
String servicePackageUuid;
String spDescription = null;
@@ -6484,6 +6484,7 @@ public class ConfigurationManagerImpl extends ManagerBase
implements Configurati
}
offeringFinal.setForTungsten(Objects.requireNonNullElse(forTungsten,
false));
+ offeringFinal.setForNsx(Objects.requireNonNullElse(forTungsten,
false));
if (enableOffering) {
offeringFinal.setState(NetworkOffering.State.Enabled);
diff --git a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
index 4456f10b546..1bc23ce7730 100644
--- a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
@@ -271,7 +271,7 @@ public class VpcManagerImpl extends ManagerBase implements
VpcManager, VpcProvis
private List<VpcProvider> vpcElements = null;
private final List<Service> nonSupportedServices =
Arrays.asList(Service.SecurityGroup, Service.Firewall);
private final List<Provider> supportedProviders =
Arrays.asList(Provider.VPCVirtualRouter, Provider.NiciraNvp,
Provider.InternalLbVm, Provider.Netscaler,
- Provider.JuniperContrailVpcRouter, Provider.Ovs,
Provider.BigSwitchBcf, Provider.ConfigDrive);
+ Provider.JuniperContrailVpcRouter, Provider.Ovs,
Provider.BigSwitchBcf, Provider.ConfigDrive, Provider.Nsx);
int _cleanupInterval;
int _maxNetworks;
@@ -366,6 +366,23 @@ public class VpcManagerImpl extends ManagerBase implements
VpcManager, VpcProvis
}
createVpcOffering(VpcOffering.redundantVPCOfferingName,
VpcOffering.redundantVPCOfferingName, svcProviderMap, true, State.Enabled,
null, false, false, true);
}
+
+ // configure default vpc offering with NSX as network service
provider
+ if
(_vpcOffDao.findByUniqueName(VpcOffering.defaultVPCNSXSOfferingName) == null) {
+ s_logger.debug("Creating default VPC offering with NSX as
network service provider" + VpcOffering.defaultVPCNSXSOfferingName);
+ final Map<Service, Set<Provider>> svcProviderMap = new
HashMap<Service, Set<Provider>>();
+ final Set<Provider> defaultProviders =
Set.of(Provider.Nsx);
+ for (final Service svc : getSupportedServices()) {
+ if (svc == Service.UserData) {
+ final Set<Provider> userDataProvider =
Set.of(Provider.VPCVirtualRouter);
+ svcProviderMap.put(svc, userDataProvider);
+ } else {
+ svcProviderMap.put(svc, defaultProviders);
+ }
+ }
+ createVpcOffering(VpcOffering.defaultVPCNSXSOfferingName,
VpcOffering.defaultVPCNSXSOfferingName, svcProviderMap, false, State.Enabled,
null, false, false, false);
+
+ }
}
});
diff --git a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
index 1b318f6b5f0..01bfdfccc46 100644
--- a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
+++ b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
@@ -1211,7 +1211,7 @@ public class ConfigurationServerImpl extends ManagerBase
implements Configuratio
TrafficType.Guest, false, true, null, null,
true, Availability.Optional, null, GuestType.Isolated, true, true, false,
false, false, false);
defaultNSXNetworkOffering.setState(NetworkOffering.State.Enabled);
- defaultNSXNetworkOffering =
_networkOfferingDao.persistDefaultNetworkOffering(defaultTungstenSharedSGNetworkOffering);
+ defaultNSXNetworkOffering =
_networkOfferingDao.persistDefaultNetworkOffering(defaultNSXNetworkOffering);
for (Map.Entry<Network.Service, Network.Provider> service :
defaultNSXNetworkOfferingProviders.entrySet()) {
NetworkOfferingServiceMapVO offService =
diff --git
a/server/src/test/java/com/cloud/vpc/MockConfigurationManagerImpl.java
b/server/src/test/java/com/cloud/vpc/MockConfigurationManagerImpl.java
index 96dc8277a91..041d8c03dbe 100644
--- a/server/src/test/java/com/cloud/vpc/MockConfigurationManagerImpl.java
+++ b/server/src/test/java/com/cloud/vpc/MockConfigurationManagerImpl.java
@@ -548,7 +548,7 @@ public class MockConfigurationManagerImpl extends
ManagerBase implements Configu
Integer networkRate,
Map<Service, Set<Provider>> serviceProviderMap, boolean isDefault, GuestType
type, boolean systemOnly, Long serviceOfferingId,
boolean conserveMode,
Map<Service, Map<Capability, String>> serviceCapabilityMap, boolean
specifyIpRanges, boolean isPersistent,
Map<NetworkOffering.Detail,
String> details, boolean egressDefaultPolicy, Integer maxconn, boolean
enableKeepAlive, Boolean forVpc,
- Boolean forTungsten,
List<Long> domainIds, List<Long> zoneIds, boolean enableOffering,
NetUtils.InternetProtocol internetProtocol) {
+ Boolean forTungsten,
boolean forNsx, List<Long> domainIds, List<Long> zoneIds, boolean
enableOffering, NetUtils.InternetProtocol internetProtocol) {
// TODO Auto-generated method stub
return null;
}
diff --git
a/server/src/test/java/org/apache/cloudstack/networkoffering/CreateNetworkOfferingTest.java
b/server/src/test/java/org/apache/cloudstack/networkoffering/CreateNetworkOfferingTest.java
index a37b3afea31..8f59c5a58a2 100644
---
a/server/src/test/java/org/apache/cloudstack/networkoffering/CreateNetworkOfferingTest.java
+++
b/server/src/test/java/org/apache/cloudstack/networkoffering/CreateNetworkOfferingTest.java
@@ -132,7 +132,7 @@ public class CreateNetworkOfferingTest extends TestCase {
public void createSharedNtwkOffWithVlan() {
NetworkOfferingVO off =
configMgr.createNetworkOffering("shared", "shared",
TrafficType.Guest, null, true, Availability.Optional, 200, null, false,
Network.GuestType.Shared, false,
- null, false, null, true, false, null, false, null, true,
false, false, null, null, false, null);
+ null, false, null, true, false, null, false, null, true,
false, false, false, null, null, false, null);
assertNotNull("Shared network offering with specifyVlan=true failed to
create ", off);
}
@@ -140,7 +140,7 @@ public class CreateNetworkOfferingTest extends TestCase {
public void createSharedNtwkOffWithNoVlan() {
NetworkOfferingVO off =
configMgr.createNetworkOffering("shared", "shared",
TrafficType.Guest, null, false, Availability.Optional, 200, null, false,
Network.GuestType.Shared,
- false, null, false, null, true, false, null, false, null,
true, false, false, null, null, false, null);
+ false, null, false, null, true, false, null, false, null,
true, false, false, false, null, null, false, null);
assertNotNull("Shared network offering with specifyVlan=false was
created", off);
}
@@ -148,7 +148,7 @@ public class CreateNetworkOfferingTest extends TestCase {
public void createSharedNtwkOffWithSpecifyIpRanges() {
NetworkOfferingVO off =
configMgr.createNetworkOffering("shared", "shared",
TrafficType.Guest, null, true, Availability.Optional, 200, null, false,
Network.GuestType.Shared, false,
- null, false, null, true, false, null, false, null, true,
false, false, null, null, false, null);
+ null, false, null, true, false, null, false, null, true,
false, false, false, null, null, false, null);
assertNotNull("Shared network offering with specifyIpRanges=true
failed to create ", off);
}
@@ -157,7 +157,7 @@ public class CreateNetworkOfferingTest extends TestCase {
public void createSharedNtwkOffWithoutSpecifyIpRanges() {
NetworkOfferingVO off =
configMgr.createNetworkOffering("shared", "shared",
TrafficType.Guest, null, true, Availability.Optional, 200, null, false,
Network.GuestType.Shared,
- false, null, false, null, false, false, null, false,
null, true, false, false, null, null, false, null);
+ false, null, false, null, false, false, null, false,
null, true, false, false, false, null, null, false, null);
assertNull("Shared network offering with specifyIpRanges=false was
created", off);
}
@@ -170,7 +170,7 @@ public class CreateNetworkOfferingTest extends TestCase {
serviceProviderMap.put(Network.Service.SourceNat, vrProvider);
NetworkOfferingVO off =
configMgr.createNetworkOffering("isolated", "isolated",
TrafficType.Guest, null, false, Availability.Optional, 200, serviceProviderMap,
false,
- Network.GuestType.Isolated, false, null, false, null, false,
false, null, false, null, true, false, false, null, null, false, null);
+ Network.GuestType.Isolated, false, null, false, null, false,
false, null, false, null, true, false, false, false, null, null, false, null);
assertNotNull("Isolated network offering with specifyIpRanges=false
failed to create ", off);
}
@@ -183,7 +183,7 @@ public class CreateNetworkOfferingTest extends TestCase {
serviceProviderMap.put(Network.Service.SourceNat, vrProvider);
NetworkOfferingVO off =
configMgr.createNetworkOffering("isolated", "isolated",
TrafficType.Guest, null, true, Availability.Optional, 200, serviceProviderMap,
false,
- Network.GuestType.Isolated, false, null, false, null, false,
false, null, false, null, true, false, false, null, null, false, null);
+ Network.GuestType.Isolated, false, null, false, null, false,
false, null, false, null, true, false, false, false, null, null, false, null);
assertNotNull("Isolated network offering with specifyVlan=true wasn't
created", off);
}
@@ -196,7 +196,7 @@ public class CreateNetworkOfferingTest extends TestCase {
serviceProviderMap.put(Network.Service.SourceNat, vrProvider);
NetworkOfferingVO off =
configMgr.createNetworkOffering("isolated", "isolated",
TrafficType.Guest, null, false, Availability.Optional, 200, serviceProviderMap,
false,
- Network.GuestType.Isolated, false, null, false, null,
true, false, null, false, null, true, false, false, null, null, false, null);
+ Network.GuestType.Isolated, false, null, false, null,
true, false, null, false, null, true, false, false, false, null, null, false,
null);
assertNull("Isolated network offering with specifyIpRanges=true and
source nat service enabled, was created", off);
}
@@ -207,7 +207,7 @@ public class CreateNetworkOfferingTest extends TestCase {
Set<Network.Provider> vrProvider = new HashSet<Network.Provider>();
NetworkOfferingVO off =
configMgr.createNetworkOffering("isolated", "isolated",
TrafficType.Guest, null, false, Availability.Optional, 200, serviceProviderMap,
false,
- Network.GuestType.Isolated, false, null, false, null, true,
false, null, false, null, true, false, false, null, null, false, null);
+ Network.GuestType.Isolated, false, null, false, null, true,
false, null, false, null, true, false, false, false, null, null, false, null);
assertNotNull("Isolated network offering with specifyIpRanges=true and
with no sourceNatService, failed to create", off);
}
@@ -225,7 +225,7 @@ public class CreateNetworkOfferingTest extends TestCase {
serviceProviderMap.put(Network.Service.Lb, vrProvider);
NetworkOfferingVO off =
configMgr.createNetworkOffering("isolated", "isolated",
TrafficType.Guest, null, true, Availability.Optional, 200, serviceProviderMap,
false,
- Network.GuestType.Isolated, false, null, false, null, false,
false, null, false, null, true, true, false, null, null, false, null);
+ Network.GuestType.Isolated, false, null, false, null, false,
false, null, false, null, true, true, false, false, null, null, false, null);
// System.out.println("Creating Vpc Network Offering");
assertNotNull("Vpc Isolated network offering with Vpc provider ", off);
}
@@ -245,7 +245,7 @@ public class CreateNetworkOfferingTest extends TestCase {
serviceProviderMap.put(Network.Service.Lb, lbProvider);
NetworkOfferingVO off =
configMgr.createNetworkOffering("isolated", "isolated",
TrafficType.Guest, null, true, Availability.Optional, 200, serviceProviderMap,
false,
- Network.GuestType.Isolated, false, null, false, null, false,
false, null, false, null, true, true, false, null, null, false, null);
+ Network.GuestType.Isolated, false, null, false, null, false,
false, null, false, null, true, true, false, false, null, null, false, null);
// System.out.println("Creating Vpc Network Offering");
assertNotNull("Vpc Isolated network offering with Vpc and Netscaler
provider ", off);
}