This is an automated email from the ASF dual-hosted git repository. pearl11594 pushed a commit to branch netris-fixes in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit 6f9eab2c78d97b8c80ddee7044f5397a22751094 Author: Pearl Dsilva <pearl1...@gmail.com> AuthorDate: Thu Jul 31 10:45:32 2025 -0400 Fix Netris url param name and allow cidr size for routed mode vpcs --- api/src/main/java/org/apache/cloudstack/api/ApiConstants.java | 1 + .../main/java/org/apache/cloudstack/network/RoutedIpv4Manager.java | 2 +- .../java/org/apache/cloudstack/api/command/AddNetrisProviderCmd.java | 2 +- server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java | 2 +- .../java/org/apache/cloudstack/network/RoutedIpv4ManagerImpl.java | 5 +++-- server/src/test/java/com/cloud/network/vpc/VpcManagerImplTest.java | 2 +- ui/src/views/infra/zone/ZoneWizardLaunchZone.vue | 2 +- ui/src/views/infra/zone/ZoneWizardNetworkSetupStep.vue | 2 +- 8 files changed, 10 insertions(+), 8 deletions(-) diff --git a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java index 70d3763b0be..3df70e52fab 100644 --- a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java +++ b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java @@ -1269,6 +1269,7 @@ public class ApiConstants { public static final String NETRIS_DETAIL_KEY = "forNetris"; public static final String NETRIS_TAG = "netristag"; public static final String NETRIS_VXLAN_ID = "netrisvxlanid"; + public static final String NETRIS_URL = "netrisurl"; public static final String DISK_PATH = "diskpath"; public static final String IMPORT_SOURCE = "importsource"; public static final String TEMP_PATH = "temppath"; diff --git a/api/src/main/java/org/apache/cloudstack/network/RoutedIpv4Manager.java b/api/src/main/java/org/apache/cloudstack/network/RoutedIpv4Manager.java index 221a550ad63..9285331f41a 100644 --- a/api/src/main/java/org/apache/cloudstack/network/RoutedIpv4Manager.java +++ b/api/src/main/java/org/apache/cloudstack/network/RoutedIpv4Manager.java @@ -158,7 +158,7 @@ public interface RoutedIpv4Manager extends PluggableService, Configurable { boolean isRoutedVpc(Vpc vpc); - boolean isVpcVirtualRouterGateway(VpcOffering vpcOffering); + boolean isValidGateway(VpcOffering vpcOffering); BgpPeer createBgpPeer(CreateBgpPeerCmd createBgpPeerCmd); diff --git a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/api/command/AddNetrisProviderCmd.java b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/api/command/AddNetrisProviderCmd.java index 5cdecc77d3b..9bb04a9bf0d 100644 --- a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/api/command/AddNetrisProviderCmd.java +++ b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/api/command/AddNetrisProviderCmd.java @@ -53,7 +53,7 @@ public class AddNetrisProviderCmd extends BaseCmd { @Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required = true, description = "Netris provider name") private String name; - @Parameter(name = ApiConstants.URL, type = CommandType.STRING, required = true, description = "Netris provider URL") + @Parameter(name = ApiConstants.NETRIS_URL, type = CommandType.STRING, required = true, description = "Netris provider URL") private String url; @Parameter(name = ApiConstants.USERNAME, type = CommandType.STRING, required = true, description = "Username to login into Netris") 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 a96097c84f1..e4219c858da 100644 --- a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java @@ -1345,7 +1345,7 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis if (ObjectUtils.allNotNull(cidr, cidrSize)) { throw new InvalidParameterValueException("VPC cidr and cidr size are mutually exclusive"); } - if (routedIpv4Manager.isVpcVirtualRouterGateway(vpcOffering)) { + if (routedIpv4Manager.isValidGateway(vpcOffering)) { if (cidr != null) { if (!_accountMgr.isRootAdmin(caller.getId())) { throw new InvalidParameterValueException("Only root admin can set the gateway/netmask of VPC with ROUTED mode"); diff --git a/server/src/main/java/org/apache/cloudstack/network/RoutedIpv4ManagerImpl.java b/server/src/main/java/org/apache/cloudstack/network/RoutedIpv4ManagerImpl.java index 50ec8a827b4..45943e27d2b 100644 --- a/server/src/main/java/org/apache/cloudstack/network/RoutedIpv4ManagerImpl.java +++ b/server/src/main/java/org/apache/cloudstack/network/RoutedIpv4ManagerImpl.java @@ -1021,9 +1021,10 @@ public class RoutedIpv4ManagerImpl extends ComponentLifecycleBase implements Rou } @Override - public boolean isVpcVirtualRouterGateway(VpcOffering vpcOffering) { + public boolean isValidGateway(VpcOffering vpcOffering) { return NetworkOffering.NetworkMode.ROUTED.equals(vpcOffering.getNetworkMode()) - && vpcOfferingServiceMapDao.findByServiceProviderAndOfferingId(Service.Gateway.getName(), Provider.VPCVirtualRouter.getName(), vpcOffering.getId()) != null; + && (vpcOfferingServiceMapDao.findByServiceProviderAndOfferingId(Service.Gateway.getName(), Provider.VPCVirtualRouter.getName(), vpcOffering.getId()) != null + || vpcOfferingServiceMapDao.findByServiceProviderAndOfferingId(Service.Gateway.getName(), Provider.Netris.getName(), vpcOffering.getId()) != null); } @Override diff --git a/server/src/test/java/com/cloud/network/vpc/VpcManagerImplTest.java b/server/src/test/java/com/cloud/network/vpc/VpcManagerImplTest.java index 8d513619805..4f92c60e25a 100644 --- a/server/src/test/java/com/cloud/network/vpc/VpcManagerImplTest.java +++ b/server/src/test/java/com/cloud/network/vpc/VpcManagerImplTest.java @@ -551,7 +551,7 @@ public class VpcManagerImplTest { Mockito.when(vpcDao.persist(any(), anyMap())).thenReturn(vpc); Mockito.when(vpc.getUuid()).thenReturn("uuid"); doReturn(true).when(routedIpv4Manager).isRoutedVpc(any()); - doReturn(true).when(routedIpv4Manager).isVpcVirtualRouterGateway(vpcOfferingVO); + doReturn(true).when(routedIpv4Manager).isValidGateway(vpcOfferingVO); doReturn(true).when(routedIpv4Manager).isDynamicRoutedVpc(vpcOfferingVO); Ipv4GuestSubnetNetworkMap ipv4GuestSubnetNetworkMap = Mockito.mock(Ipv4GuestSubnetNetworkMap.class); doReturn(ipv4GuestSubnetNetworkMap).when(routedIpv4Manager).getOrCreateIpv4SubnetForVpc(any(), anyInt()); diff --git a/ui/src/views/infra/zone/ZoneWizardLaunchZone.vue b/ui/src/views/infra/zone/ZoneWizardLaunchZone.vue index 16d384e5288..79ee68c9124 100644 --- a/ui/src/views/infra/zone/ZoneWizardLaunchZone.vue +++ b/ui/src/views/infra/zone/ZoneWizardLaunchZone.vue @@ -1133,7 +1133,7 @@ export default { if (!this.stepData.stepMove.includes('addNetrisProvider')) { const providerParams = {} providerParams.name = this.prefillContent?.netrisName || '' - providerParams.url = this.prefillContent?.url || '' + providerParams.netrisurl = this.prefillContent?.netrisurl || '' providerParams.username = this.prefillContent?.username || '' providerParams.password = this.prefillContent?.password || '' providerParams.zoneid = this.stepData.zoneReturned.id diff --git a/ui/src/views/infra/zone/ZoneWizardNetworkSetupStep.vue b/ui/src/views/infra/zone/ZoneWizardNetworkSetupStep.vue index 74d1748976a..3f00c3c3838 100644 --- a/ui/src/views/infra/zone/ZoneWizardNetworkSetupStep.vue +++ b/ui/src/views/infra/zone/ZoneWizardNetworkSetupStep.vue @@ -485,7 +485,7 @@ export default { }, { title: 'label.netris.provider.url', - key: 'url', + key: 'netrisurl', placeHolder: 'message.installwizard.tooltip.netris.provider.url', required: true },