Skip to content

Commit b6fe9f9

Browse files
Pearl1594Pearl Dsilva
andauthored
Network Offering: Allow enabling network and vpc offering during creation (#4564)
Co-authored-by: Pearl Dsilva <pearl.dsilva@shapeblue.com>
1 parent 543f982 commit b6fe9f9

10 files changed

Lines changed: 66 additions & 58 deletions

File tree

api/src/main/java/com/cloud/network/vpc/VpcProvisioningService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public interface VpcProvisioningService {
3535
VpcOffering createVpcOffering(String name, String displayText, List<String> supportedServices,
3636
Map<String, List<String>> serviceProviders,
3737
Map serviceCapabilitystList,
38-
Long serviceOfferingId, List<Long> domainIds, List<Long> zoneIds);
38+
Long serviceOfferingId, List<Long> domainIds, List<Long> zoneIds, VpcOffering.State state);
3939

4040
Pair<List<? extends VpcOffering>,Integer> listVpcOfferings(ListVPCOfferingsCmd cmd);
4141

api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,12 @@ public class CreateNetworkOfferingCmd extends BaseCmd {
158158
since = "4.13")
159159
private List<Long> zoneIds;
160160

161+
@Parameter(name = ApiConstants.ENABLE,
162+
type = CommandType.BOOLEAN,
163+
description = "set to true if the offering is to be enabled during creation. Default is false",
164+
since = "4.16")
165+
private Boolean enable;
166+
161167
/////////////////////////////////////////////////////
162168
/////////////////// Accessors ///////////////////////
163169
/////////////////////////////////////////////////////
@@ -337,6 +343,13 @@ public List<Long> getZoneIds() {
337343
return zoneIds;
338344
}
339345

346+
public Boolean getEnable() {
347+
if (enable != null) {
348+
return enable;
349+
}
350+
return false;
351+
}
352+
340353
/////////////////////////////////////////////////////
341354
/////////////// API Implementation///////////////////
342355
/////////////////////////////////////////////////////

api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmd.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,12 @@ public class CreateVPCOfferingCmd extends BaseAsyncCreateCmd {
9595
since = "4.13")
9696
private List<Long> zoneIds;
9797

98+
@Parameter(name = ApiConstants.ENABLE,
99+
type = CommandType.BOOLEAN,
100+
description = "set to true if the offering is to be enabled during creation. Default is false",
101+
since = "4.16")
102+
private Boolean enable;
103+
98104
/////////////////////////////////////////////////////
99105
/////////////////// Accessors ///////////////////////
100106
/////////////////////////////////////////////////////
@@ -165,6 +171,13 @@ public List<Long> getZoneIds() {
165171
return zoneIds;
166172
}
167173

174+
public Boolean getEnable() {
175+
if (enable != null) {
176+
return enable;
177+
}
178+
return false;
179+
}
180+
168181
@Override
169182
public void create() throws ResourceAllocationException {
170183
VpcOffering vpcOff = _vpcProvSvc.createVpcOffering(this);

engine/components-api/src/main/java/com/cloud/configuration/ConfigurationManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ DataCenterVO createZone(long userId, String zoneName, String dns1, String dns2,
214214
NetworkOfferingVO createNetworkOffering(String name, String displayText, TrafficType trafficType, String tags, boolean specifyVlan, Availability availability,
215215
Integer networkRate, Map<Service, Set<Provider>> serviceProviderMap, boolean isDefault, Network.GuestType type, boolean systemOnly, Long serviceOfferingId,
216216
boolean conserveMode, Map<Service, Map<Capability, String>> serviceCapabilityMap, boolean specifyIpRanges, boolean isPersistent,
217-
Map<NetworkOffering.Detail, String> details, boolean egressDefaultPolicy, Integer maxconn, boolean enableKeepAlive, Boolean forVpc, List<Long> domainIds, List<Long> zoneIds);
217+
Map<NetworkOffering.Detail, String> details, boolean egressDefaultPolicy, Integer maxconn, boolean enableKeepAlive, Boolean forVpc, List<Long> domainIds, List<Long> zoneIds, boolean enableOffering);
218218

219219
Vlan createVlanAndPublicIpRange(long zoneId, long networkId, long physicalNetworkId, boolean forVirtualNetwork, boolean forSystemVms, Long podId, String startIP, String endIP,
220220
String vlanGateway, String vlanNetmask, String vlanId, boolean bypassVlanOverlapCheck, Domain domain, Account vlanOwner, String startIPv6, String endIPv6, String vlanIp6Gateway, String vlanIp6Cidr)

engine/orchestration/src/main/java/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java

Lines changed: 9 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -461,47 +461,36 @@ public void doInTransactionWithoutResult(final TransactionStatus status) {
461461
if (_networkOfferingDao.findByUniqueName(NetworkOffering.QuickCloudNoServices) == null) {
462462
offering = _configMgr.createNetworkOffering(NetworkOffering.QuickCloudNoServices, "Offering for QuickCloud with no services", TrafficType.Guest, null, true,
463463
Availability.Optional, null, new HashMap<Network.Service, Set<Network.Provider>>(), true, Network.GuestType.Shared, false, null, true, null, true,
464-
false, null, false, null, true, false, null, null);
465-
offering.setState(NetworkOffering.State.Enabled);
466-
_networkOfferingDao.update(offering.getId(), offering);
464+
false, null, false, null, true, false, null, null, true);
467465
}
468466

469467
//#2 - SG enabled network offering
470468
if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultSharedNetworkOfferingWithSGService) == null) {
471469
offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultSharedNetworkOfferingWithSGService, "Offering for Shared Security group enabled networks",
472470
TrafficType.Guest, null, true, Availability.Optional, null, defaultSharedNetworkOfferingProviders, true, Network.GuestType.Shared, false, null, true,
473-
null, true, false, null, false, null, true, false, null, null);
474-
offering.setState(NetworkOffering.State.Enabled);
475-
_networkOfferingDao.update(offering.getId(), offering);
471+
null, true, false, null, false, null, true, false, null, null, true);
476472
}
477473

478474
//#3 - shared network offering with no SG service
479475
if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultSharedNetworkOffering) == null) {
480476
offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultSharedNetworkOffering, "Offering for Shared networks", TrafficType.Guest, null, true,
481477
Availability.Optional, null, defaultSharedNetworkOfferingProviders, true, Network.GuestType.Shared, false, null, true, null, true, false, null, false,
482-
null, true, false, null, null);
483-
offering.setState(NetworkOffering.State.Enabled);
484-
_networkOfferingDao.update(offering.getId(), offering);
478+
null, true, false, null, null, true);
485479
}
486480

487481
//#4 - default isolated offering with Source nat service
488482
if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultIsolatedNetworkOfferingWithSourceNatService) == null) {
489483
offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOfferingWithSourceNatService,
490484
"Offering for Isolated networks with Source Nat service enabled", TrafficType.Guest, null, false, Availability.Required, null,
491485
defaultIsolatedSourceNatEnabledNetworkOfferingProviders, true, Network.GuestType.Isolated, false, null, true, null, false, false, null, false, null,
492-
true, false, null, null);
493-
494-
offering.setState(NetworkOffering.State.Enabled);
495-
_networkOfferingDao.update(offering.getId(), offering);
486+
true, false, null, null, true);
496487
}
497488

498489
//#5 - default vpc offering with LB service
499490
if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworks) == null) {
500491
offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworks,
501492
"Offering for Isolated VPC networks with Source Nat service enabled", TrafficType.Guest, null, false, Availability.Optional, null,
502-
defaultVPCOffProviders, true, Network.GuestType.Isolated, false, null, false, null, false, false, null, false, null, true, true, null, null);
503-
offering.setState(NetworkOffering.State.Enabled);
504-
_networkOfferingDao.update(offering.getId(), offering);
493+
defaultVPCOffProviders, true, Network.GuestType.Isolated, false, null, false, null, false, false, null, false, null, true, true, null, null, true);
505494
}
506495

507496
//#6 - default vpc offering with no LB service
@@ -510,18 +499,14 @@ public void doInTransactionWithoutResult(final TransactionStatus status) {
510499
defaultVPCOffProviders.remove(Service.Lb);
511500
offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksNoLB,
512501
"Offering for Isolated VPC networks with Source Nat service enabled and LB service disabled", TrafficType.Guest, null, false, Availability.Optional,
513-
null, defaultVPCOffProviders, true, Network.GuestType.Isolated, false, null, false, null, false, false, null, false, null, true, true, null, null);
514-
offering.setState(NetworkOffering.State.Enabled);
515-
_networkOfferingDao.update(offering.getId(), offering);
502+
null, defaultVPCOffProviders, true, Network.GuestType.Isolated, false, null, false, null, false, false, null, false, null, true, true, null, null, true);
516503
}
517504

518505
//#7 - isolated offering with source nat disabled
519506
if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultIsolatedNetworkOffering) == null) {
520507
offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOffering, "Offering for Isolated networks with no Source Nat service",
521508
TrafficType.Guest, null, true, Availability.Optional, null, defaultIsolatedNetworkOfferingProviders, true, Network.GuestType.Isolated, false, null,
522-
true, null, true, false, null, false, null, true, false, null, null);
523-
offering.setState(NetworkOffering.State.Enabled);
524-
_networkOfferingDao.update(offering.getId(), offering);
509+
true, null, true, false, null, false, null, true, false, null, null, true);
525510
}
526511

527512
//#8 - network offering with internal lb service
@@ -543,8 +528,7 @@ public void doInTransactionWithoutResult(final TransactionStatus status) {
543528
if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksWithInternalLB) == null) {
544529
offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksWithInternalLB,
545530
"Offering for Isolated VPC networks with Internal Lb support", TrafficType.Guest, null, false, Availability.Optional, null, internalLbOffProviders,
546-
true, Network.GuestType.Isolated, false, null, false, null, false, false, null, false, null, true, true, null, null);
547-
offering.setState(NetworkOffering.State.Enabled);
531+
true, Network.GuestType.Isolated, false, null, false, null, false, false, null, false, null, true, true, null, null, true);
548532
offering.setInternalLb(true);
549533
offering.setPublicLb(false);
550534
_networkOfferingDao.update(offering.getId(), offering);
@@ -575,8 +559,7 @@ public void doInTransactionWithoutResult(final TransactionStatus status) {
575559
if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultSharedEIPandELBNetworkOffering) == null) {
576560
offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultSharedEIPandELBNetworkOffering,
577561
"Offering for Shared networks with Elastic IP and Elastic LB capabilities", TrafficType.Guest, null, true, Availability.Optional, null,
578-
netscalerServiceProviders, true, Network.GuestType.Shared, false, null, true, serviceCapabilityMap, true, false, null, false, null, true, false, null, null);
579-
offering.setState(NetworkOffering.State.Enabled);
562+
netscalerServiceProviders, true, Network.GuestType.Shared, false, null, true, serviceCapabilityMap, true, false, null, false, null, true, false, null, null, true);
580563
offering.setDedicatedLB(false);
581564
_networkOfferingDao.update(offering.getId(), offering);
582565
}

plugins/network-elements/juniper-contrail/src/main/java/org/apache/cloudstack/network/contrail/management/ContrailManagerImpl.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -219,9 +219,7 @@ private NetworkOffering locatePublicNetworkOffering(String offeringName,
219219
ConfigurationManager configMgr = (ConfigurationManager) _configService;
220220
NetworkOfferingVO voffer = configMgr.createNetworkOffering(offeringName, offeringDisplayText,
221221
TrafficType.Public, null, true, Availability.Optional, null, serviceProviderMap, true,
222-
Network.GuestType.Shared, false, null, false, null, true, false, null, true, null, false, false, null, null);
223-
224-
voffer.setState(NetworkOffering.State.Enabled);
222+
Network.GuestType.Shared, false, null, false, null, true, false, null, true, null, false, false, null, null, true);
225223
long id = voffer.getId();
226224
_networkOfferingDao.update(id, voffer);
227225
return _networkOfferingDao.findById(id);
@@ -256,9 +254,7 @@ private NetworkOffering locateNetworkOffering(String offeringName,
256254
ConfigurationManager configMgr = (ConfigurationManager)_configService;
257255
NetworkOfferingVO voffer =
258256
configMgr.createNetworkOffering(offeringName, offeringDisplayText, TrafficType.Guest, null, false, Availability.Optional, null, serviceProviderMap, true,
259-
Network.GuestType.Isolated, false, null, false, null, false, true, null, true, null, false, offeringName.equals(vpcRouterOfferingName), null, null);
260-
261-
voffer.setState(NetworkOffering.State.Enabled);
257+
Network.GuestType.Isolated, false, null, false, null, false, true, null, true, null, false, offeringName.equals(vpcRouterOfferingName), null, null, true);
262258
if (offeringName.equals(vpcRouterOfferingName)) {
263259
voffer.setInternalLb(true);
264260
}
@@ -299,8 +295,7 @@ private VpcOffering locateVpcOffering() {
299295
}
300296
serviceProviderMap.put(svc, providerSet);
301297
}
302-
vpcOffer = _vpcProvSvc.createVpcOffering(juniperVPCOfferingName, juniperVPCOfferingDisplayText, services, serviceProviderMap, null, null, null, null);
303-
((VpcOfferingVO)vpcOffer).setState(VpcOffering.State.Enabled);
298+
vpcOffer = _vpcProvSvc.createVpcOffering(juniperVPCOfferingName, juniperVPCOfferingDisplayText, services, serviceProviderMap, null, null, null, null, VpcOffering.State.Enabled);
304299
long id = vpcOffer.getId();
305300
_vpcOffDao.update(id, (VpcOfferingVO)vpcOffer);
306301
return _vpcOffDao.findById(id);

server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4759,7 +4759,7 @@ public NetworkOffering createNetworkOffering(final CreateNetworkOfferingCmd cmd)
47594759
String servicePackageuuid = cmd.getServicePackageId();
47604760
final List<Long> domainIds = cmd.getDomainIds();
47614761
final List<Long> zoneIds = cmd.getZoneIds();
4762-
4762+
final boolean enable = cmd.getEnable();
47634763
// check if valid domain
47644764
if (CollectionUtils.isNotEmpty(domainIds)) {
47654765
for (final Long domainId: domainIds) {
@@ -5032,8 +5032,8 @@ public NetworkOffering createNetworkOffering(final CreateNetworkOfferingCmd cmd)
50325032
forVpc = false;
50335033
}
50345034

5035-
final NetworkOffering offering = createNetworkOffering(name, displayText, trafficType, tags, specifyVlan, availability, networkRate, serviceProviderMap, false, guestType, false,
5036-
serviceOfferingId, conserveMode, serviceCapabilityMap, specifyIpRanges, isPersistent, details, egressDefaultPolicy, maxconn, enableKeepAlive, forVpc, domainIds, zoneIds);
5035+
final NetworkOfferingVO offering = createNetworkOffering(name, displayText, trafficType, tags, specifyVlan, availability, networkRate, serviceProviderMap, false, guestType, false,
5036+
serviceOfferingId, conserveMode, serviceCapabilityMap, specifyIpRanges, isPersistent, details, egressDefaultPolicy, maxconn, enableKeepAlive, forVpc, domainIds, zoneIds, enable);
50375037
CallContext.current().setEventDetails(" Id: " + offering.getId() + " Name: " + name);
50385038
return offering;
50395039
}
@@ -5171,7 +5171,7 @@ public NetworkOfferingVO createNetworkOffering(final String name, final String d
51715171
final Long serviceOfferingId,
51725172
final boolean conserveMode, final Map<Service, Map<Capability, String>> serviceCapabilityMap, final boolean specifyIpRanges, final boolean isPersistent,
51735173
final Map<Detail, String> details, final boolean egressDefaultPolicy, final Integer maxconn, final boolean enableKeepAlive, Boolean forVpc,
5174-
final List<Long> domainIds, final List<Long> zoneIds) {
5174+
final List<Long> domainIds, final List<Long> zoneIds, final boolean enableOffering) {
51755175

51765176
String servicePackageUuid;
51775177
String spDescription = null;
@@ -5341,6 +5341,10 @@ public NetworkOfferingVO createNetworkOffering(final String name, final String d
53415341
offeringFinal.setServiceOfferingId(serviceOfferingId);
53425342
}
53435343

5344+
if (enableOffering) {
5345+
offeringFinal.setState(NetworkOffering.State.Enabled);
5346+
}
5347+
53445348
//Set Service package id
53455349
offeringFinal.setServicePackage(servicePackageUuid);
53465350
// validate the details

0 commit comments

Comments
 (0)