mirror of https://github.com/apache/cloudstack.git
Pass conserve mode on create VPC Offering
This commit is contained in:
parent
3fd969bc41
commit
9e3eeb7927
|
|
@ -39,7 +39,7 @@ public interface VpcProvisioningService {
|
|||
Map serviceCapabilitystList, NetUtils.InternetProtocol internetProtocol,
|
||||
Long serviceOfferingId, String externalProvider, NetworkOffering.NetworkMode networkMode,
|
||||
List<Long> domainIds, List<Long> zoneIds, VpcOffering.State state,
|
||||
NetworkOffering.RoutingMode routingMode, boolean specifyAsNumber);
|
||||
NetworkOffering.RoutingMode routingMode, boolean specifyAsNumber, boolean conserveMode);
|
||||
|
||||
|
||||
Pair<List<? extends VpcOffering>,Integer> listVpcOfferings(ListVPCOfferingsCmd cmd);
|
||||
|
|
|
|||
|
|
@ -161,6 +161,12 @@ public class CreateVPCOfferingCmd extends BaseAsyncCreateCmd {
|
|||
description = "the routing mode for the VPC offering. Supported types are: Static or Dynamic.")
|
||||
private String routingMode;
|
||||
|
||||
@Parameter(name = ApiConstants.CONSERVE_MODE, type = CommandType.BOOLEAN,
|
||||
since = "4.23.0",
|
||||
description = "True if the VPC offering is IP conserve mode enabled, allowing public IP services to be used across multiple VPC tiers")
|
||||
private Boolean conserveMode;
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
/////////////////// Accessors ///////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
@ -311,6 +317,10 @@ public class CreateVPCOfferingCmd extends BaseAsyncCreateCmd {
|
|||
return routingMode;
|
||||
}
|
||||
|
||||
public boolean isConserveMode() {
|
||||
return BooleanUtils.toBoolean(conserveMode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void create() throws ResourceAllocationException {
|
||||
VpcOffering vpcOff = _vpcProvSvc.createVpcOffering(this);
|
||||
|
|
|
|||
|
|
@ -102,6 +102,10 @@ public class VpcOfferingResponse extends BaseResponse {
|
|||
@Param(description = "The routing mode for the network offering, supported types are Static or Dynamic.")
|
||||
private String routingMode;
|
||||
|
||||
@SerializedName(ApiConstants.CONSERVE_MODE)
|
||||
@Param(description = "True if the VPC offering is IP conserve mode enabled, allowing public IP services to be used across multiple VPC tiers.")
|
||||
private Boolean conserveMode;
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
|
@ -201,4 +205,12 @@ public class VpcOfferingResponse extends BaseResponse {
|
|||
public void setRoutingMode(String routingMode) {
|
||||
this.routingMode = routingMode;
|
||||
}
|
||||
|
||||
public Boolean getConserveMode() {
|
||||
return conserveMode;
|
||||
}
|
||||
|
||||
public void setConserveMode(Boolean conserveMode) {
|
||||
this.conserveMode = conserveMode;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -293,7 +293,7 @@ public class ContrailManagerImpl extends ManagerBase implements ContrailManager
|
|||
}
|
||||
serviceProviderMap.put(svc, providerSet);
|
||||
}
|
||||
vpcOffer = _vpcProvSvc.createVpcOffering(juniperVPCOfferingName, juniperVPCOfferingDisplayText, services, serviceProviderMap, null, null, null, null, null, null, null, VpcOffering.State.Enabled, null, false);
|
||||
vpcOffer = _vpcProvSvc.createVpcOffering(juniperVPCOfferingName, juniperVPCOfferingDisplayText, services, serviceProviderMap, null, null, null, null, null, null, null, VpcOffering.State.Enabled, null, false, false);
|
||||
long id = vpcOffer.getId();
|
||||
_vpcOffDao.update(id, (VpcOfferingVO)vpcOffer);
|
||||
return _vpcOffDao.findById(id);
|
||||
|
|
|
|||
|
|
@ -77,6 +77,7 @@ public class VpcOfferingJoinDaoImpl extends GenericDaoBase<VpcOfferingJoinVO, Lo
|
|||
if (offering.isSpecifyAsNumber() != null) {
|
||||
offeringResponse.setSpecifyAsNumber(offering.isSpecifyAsNumber());
|
||||
}
|
||||
offeringResponse.setConserveMode(offering.isConserveMode());
|
||||
if (offering instanceof VpcOfferingJoinVO) {
|
||||
VpcOfferingJoinVO offeringJoinVO = (VpcOfferingJoinVO) offering;
|
||||
offeringResponse.setDomainId(offeringJoinVO.getDomainUuid());
|
||||
|
|
|
|||
|
|
@ -388,7 +388,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
|
|||
}
|
||||
createVpcOffering(VpcOffering.defaultVPCOfferingName, VpcOffering.defaultVPCOfferingName, svcProviderMap,
|
||||
true, State.Enabled, null, false,
|
||||
false, false, null, null, false);
|
||||
false, false, null, null, false, true);
|
||||
}
|
||||
|
||||
// configure default vpc offering with Netscaler as LB Provider
|
||||
|
|
@ -408,7 +408,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
|
|||
}
|
||||
}
|
||||
createVpcOffering(VpcOffering.defaultVPCNSOfferingName, VpcOffering.defaultVPCNSOfferingName,
|
||||
svcProviderMap, false, State.Enabled, null, false, false, false, null, null, false);
|
||||
svcProviderMap, false, State.Enabled, null, false, false, false, null, null, false, false);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -429,7 +429,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
|
|||
}
|
||||
}
|
||||
createVpcOffering(VpcOffering.redundantVPCOfferingName, VpcOffering.redundantVPCOfferingName, svcProviderMap, true, State.Enabled,
|
||||
null, false, false, true, null, null, false);
|
||||
null, false, false, true, null, null, false, true);
|
||||
}
|
||||
|
||||
// configure default vpc offering with NSX as network service provider in NAT mode
|
||||
|
|
@ -446,7 +446,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
|
|||
}
|
||||
}
|
||||
createVpcOffering(VpcOffering.DEFAULT_VPC_NAT_NSX_OFFERING_NAME, VpcOffering.DEFAULT_VPC_NAT_NSX_OFFERING_NAME, svcProviderMap, false,
|
||||
State.Enabled, null, false, false, false, NetworkOffering.NetworkMode.NATTED, null, false);
|
||||
State.Enabled, null, false, false, false, NetworkOffering.NetworkMode.NATTED, null, false, false);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -464,7 +464,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
|
|||
}
|
||||
}
|
||||
createVpcOffering(VpcOffering.DEFAULT_VPC_ROUTE_NSX_OFFERING_NAME, VpcOffering.DEFAULT_VPC_ROUTE_NSX_OFFERING_NAME, svcProviderMap, false,
|
||||
State.Enabled, null, false, false, false, NetworkOffering.NetworkMode.ROUTED, null, false);
|
||||
State.Enabled, null, false, false, false, NetworkOffering.NetworkMode.ROUTED, null, false, false);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -482,7 +482,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
|
|||
}
|
||||
}
|
||||
createVpcOffering(VpcOffering.DEFAULT_VPC_ROUTE_NETRIS_OFFERING_NAME, VpcOffering.DEFAULT_VPC_ROUTE_NETRIS_OFFERING_NAME, svcProviderMap, false,
|
||||
State.Enabled, null, false, false, false, NetworkOffering.NetworkMode.ROUTED, null, false);
|
||||
State.Enabled, null, false, false, false, NetworkOffering.NetworkMode.ROUTED, null, false, false);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -500,7 +500,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
|
|||
}
|
||||
}
|
||||
createVpcOffering(VpcOffering.DEFAULT_VPC_NAT_NETRIS_OFFERING_NAME, VpcOffering.DEFAULT_VPC_NAT_NETRIS_OFFERING_NAME, svcProviderMap, false,
|
||||
State.Enabled, null, false, false, false, NetworkOffering.NetworkMode.NATTED, null, false);
|
||||
State.Enabled, null, false, false, false, NetworkOffering.NetworkMode.NATTED, null, false, false);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -586,6 +586,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
|
|||
}
|
||||
boolean specifyAsNumber = cmd.getSpecifyAsNumber();
|
||||
String routingModeString = cmd.getRoutingMode();
|
||||
boolean conserveMode = cmd.isConserveMode();
|
||||
|
||||
// check if valid domain
|
||||
if (CollectionUtils.isNotEmpty(cmd.getDomainIds())) {
|
||||
|
|
@ -624,7 +625,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
|
|||
|
||||
return createVpcOffering(vpcOfferingName, displayText, supportedServices,
|
||||
serviceProviderList, serviceCapabilityList, internetProtocol, serviceOfferingId, provider, networkMode,
|
||||
domainIds, zoneIds, (enable ? State.Enabled : State.Disabled), routingMode, specifyAsNumber);
|
||||
domainIds, zoneIds, (enable ? State.Enabled : State.Disabled), routingMode, specifyAsNumber, conserveMode);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -632,7 +633,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
|
|||
public VpcOffering createVpcOffering(final String name, final String displayText, final List<String> supportedServices, final Map<String, List<String>> serviceProviders,
|
||||
final Map serviceCapabilityList, final NetUtils.InternetProtocol internetProtocol, final Long serviceOfferingId,
|
||||
final String externalProvider, final NetworkOffering.NetworkMode networkMode, List<Long> domainIds, List<Long> zoneIds, State state,
|
||||
NetworkOffering.RoutingMode routingMode, boolean specifyAsNumber) {
|
||||
NetworkOffering.RoutingMode routingMode, boolean specifyAsNumber, boolean conserveMode) {
|
||||
|
||||
if (!Ipv6Service.Ipv6OfferingCreationEnabled.value() && !(internetProtocol == null || NetUtils.InternetProtocol.IPv4.equals(internetProtocol))) {
|
||||
throw new InvalidParameterValueException(String.format("Configuration %s needs to be enabled for creating IPv6 supported VPC offering", Ipv6Service.Ipv6OfferingCreationEnabled.key()));
|
||||
|
|
@ -727,7 +728,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
|
|||
final boolean offersRegionLevelVPC = isVpcOfferingForRegionLevelVpc(serviceCapabilityList);
|
||||
final boolean redundantRouter = isVpcOfferingRedundantRouter(serviceCapabilityList, redundantRouterService);
|
||||
final VpcOfferingVO offering = createVpcOffering(name, displayText, svcProviderMap, false, state, serviceOfferingId, supportsDistributedRouter, offersRegionLevelVPC,
|
||||
redundantRouter, networkMode, routingMode, specifyAsNumber);
|
||||
redundantRouter, networkMode, routingMode, specifyAsNumber, conserveMode);
|
||||
|
||||
if (offering != null) {
|
||||
List<VpcOfferingDetailsVO> detailsVO = new ArrayList<>();
|
||||
|
|
@ -755,7 +756,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
|
|||
@DB
|
||||
protected VpcOfferingVO createVpcOffering(final String name, final String displayText, final Map<Service, Set<Provider>> svcProviderMap,
|
||||
final boolean isDefault, final State state, final Long serviceOfferingId, final boolean supportsDistributedRouter, final boolean offersRegionLevelVPC,
|
||||
final boolean redundantRouter, NetworkOffering.NetworkMode networkMode, NetworkOffering.RoutingMode routingMode, boolean specifyAsNumber) {
|
||||
final boolean redundantRouter, NetworkOffering.NetworkMode networkMode, NetworkOffering.RoutingMode routingMode, boolean specifyAsNumber, boolean conserveMode) {
|
||||
|
||||
return Transaction.execute(new TransactionCallback<VpcOfferingVO>() {
|
||||
@Override
|
||||
|
|
@ -771,6 +772,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
|
|||
if (Objects.nonNull(routingMode)) {
|
||||
offering.setRoutingMode(routingMode);
|
||||
}
|
||||
offering.setConserveMode(conserveMode);
|
||||
|
||||
logger.debug("Adding vpc offering " + offering);
|
||||
offering = _vpcOffDao.persist(offering);
|
||||
|
|
|
|||
|
|
@ -508,7 +508,7 @@ export default {
|
|||
searchFilters: ['name', 'zoneid', 'domainid'],
|
||||
resourceType: 'VpcOffering',
|
||||
columns: ['name', 'state', 'displaytext', 'domain', 'zone', 'order'],
|
||||
details: ['name', 'id', 'displaytext', 'internetprotocol', 'distributedvpcrouter', 'tags', 'routingmode', 'specifyasnumber', 'service', 'fornsx', 'networkmode', 'domain', 'zone', 'created'],
|
||||
details: ['name', 'id', 'displaytext', 'internetprotocol', 'distributedvpcrouter', 'tags', 'routingmode', 'specifyasnumber', 'service', 'fornsx', 'networkmode', 'conservemode', 'domain', 'zone', 'created'],
|
||||
related: [{
|
||||
name: 'vpc',
|
||||
title: 'label.vpc',
|
||||
|
|
|
|||
|
|
@ -194,6 +194,14 @@
|
|||
</a-select-option>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
name="conservemode"
|
||||
ref="conservemode">
|
||||
<template #label>
|
||||
<tooltip-label :title="$t('label.conservemode')" :tooltip="apiParams.conservemode.description"/>
|
||||
</template>
|
||||
<a-switch v-model:checked="form.conservemode" />
|
||||
</a-form-item>
|
||||
<a-form-item name="ispublic" ref="ispublic" :label="$t('label.ispublic')" v-if="isAdmin()">
|
||||
<a-switch v-model:checked="form.ispublic" />
|
||||
</a-form-item>
|
||||
|
|
@ -282,7 +290,6 @@ export default {
|
|||
return {
|
||||
selectedDomains: [],
|
||||
selectedZones: [],
|
||||
isConserveMode: true,
|
||||
internetProtocolValue: 'ipv4',
|
||||
domains: [],
|
||||
domainLoading: false,
|
||||
|
|
@ -328,7 +335,8 @@ export default {
|
|||
description: 'Netris',
|
||||
enabled: true
|
||||
},
|
||||
nsxSupportedServicesMap: {}
|
||||
nsxSupportedServicesMap: {},
|
||||
conservemode: false
|
||||
}
|
||||
},
|
||||
beforeCreate () {
|
||||
|
|
@ -719,6 +727,7 @@ export default {
|
|||
params.provider = 'Netris'
|
||||
}
|
||||
params.networkmode = values.networkmode
|
||||
params.conservemode = values.conservemode
|
||||
if (!values.forVpc) {
|
||||
params.specifyasnumber = values.specifyasnumber
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue