Skip to content

Commit 0f4d801

Browse files
committed
Routed: do not show ROUTED mode when create network/vpc offering if routed is disabled
1 parent 0753d6d commit 0f4d801

File tree

4 files changed

+33
-0
lines changed

4 files changed

+33
-0
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@
106106
import org.apache.cloudstack.framework.messagebus.MessageBus;
107107
import org.apache.cloudstack.framework.messagebus.MessageSubscriber;
108108
import org.apache.cloudstack.framework.messagebus.PublishScope;
109+
import org.apache.cloudstack.network.RoutedIpv4Manager;
109110
import org.apache.cloudstack.query.QueryService;
110111
import org.apache.cloudstack.region.PortableIp;
111112
import org.apache.cloudstack.region.PortableIpDao;
@@ -6673,6 +6674,9 @@ public NetworkOfferingVO createNetworkOffering(final String name, final String d
66736674
throw new InvalidParameterValueException("networkMode should be set only for Isolated network offerings");
66746675
}
66756676
if (NetworkOffering.NetworkMode.ROUTED.equals(networkMode)) {
6677+
if (!RoutedIpv4Manager.RoutedNetworkVpcEnabled.value()) {
6678+
throw new InvalidParameterValueException(String.format("Configuration %s needs to be enabled for Routed networks", RoutedIpv4Manager.RoutedNetworkVpcEnabled.key()));
6679+
}
66766680
boolean useVirtualRouterOnly = true;
66776681
for (Service service : serviceProviderMap.keySet()) {
66786682
Set<Provider> providers = serviceProviderMap.get(service);

server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -500,6 +500,9 @@ public VpcOffering createVpcOffering(CreateVPCOfferingCmd cmd) {
500500
}
501501
networkMode = NetworkOffering.NetworkMode.valueOf(networkModeStr);
502502
}
503+
if (NetworkOffering.NetworkMode.ROUTED.equals(networkMode) && !RoutedIpv4Manager.RoutedNetworkVpcEnabled.value()) {
504+
throw new InvalidParameterValueException(String.format("Configuration %s needs to be enabled for Routed VPCs", RoutedIpv4Manager.RoutedNetworkVpcEnabled.key()));
505+
}
503506
boolean specifyAsNumber = cmd.getSpecifyAsNumber();
504507
String routingModeString = cmd.getRoutingMode();
505508

ui/src/views/offering/AddNetworkOffering.vue

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,7 @@ export default {
615615
zones: [],
616616
zoneLoading: false,
617617
ipv6NetworkOfferingEnabled: false,
618+
routedNetworkEnabled: false,
618619
loading: false,
619620
networkmode: '',
620621
networkmodes: [
@@ -704,6 +705,7 @@ export default {
704705
this.fetchSupportedServiceData()
705706
this.fetchServiceOfferingData()
706707
this.fetchIpv6NetworkOfferingConfiguration()
708+
this.fetchRoutedNetworkConfiguration()
707709
},
708710
isAdmin () {
709711
return isAdmin()
@@ -732,6 +734,17 @@ export default {
732734
this.ipv6NetworkOfferingEnabled = value === 'true'
733735
})
734736
},
737+
fetchRoutedNetworkConfiguration () {
738+
this.routedNetworkEnabled = false
739+
var params = { name: 'routed.network.vpc.enabled' }
740+
api('listConfigurations', params).then(json => {
741+
var value = json?.listconfigurationsresponse?.configuration?.[0].value || null
742+
this.routedNetworkEnabled = value === 'true'
743+
})
744+
if (!this.routedNetworkEnabled) {
745+
this.networkmodes.pop()
746+
}
747+
},
735748
fetchZoneData () {
736749
const params = {}
737750
params.showicon = true

ui/src/views/offering/AddVpcOffering.vue

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,7 @@ export default {
283283
sourceNatServiceChecked: false,
284284
selectedServiceProviderMap: {},
285285
ipv6NetworkOfferingEnabled: false,
286+
routedNetworkEnabled: false,
286287
routingMode: 'static',
287288
networkmode: '',
288289
networkmodes: [
@@ -351,6 +352,7 @@ export default {
351352
this.fetchZoneData()
352353
this.fetchSupportedServiceData()
353354
this.fetchIpv6NetworkOfferingConfiguration()
355+
this.fetchRoutedNetworkConfiguration()
354356
},
355357
isAdmin () {
356358
return isAdmin()
@@ -363,6 +365,17 @@ export default {
363365
this.ipv6NetworkOfferingEnabled = value === 'true'
364366
})
365367
},
368+
fetchRoutedNetworkConfiguration () {
369+
this.routedNetworkEnabled = false
370+
var params = { name: 'routed.network.vpc.enabled' }
371+
api('listConfigurations', params).then(json => {
372+
var value = json?.listconfigurationsresponse?.configuration?.[0].value || null
373+
this.routedNetworkEnabled = value === 'true'
374+
})
375+
if (!this.routedNetworkEnabled) {
376+
this.networkmodes.pop()
377+
}
378+
},
366379
fetchDomainData () {
367380
const params = {}
368381
params.listAll = true

0 commit comments

Comments
 (0)