This is an automated email from the ASF dual-hosted git repository. sureshanaparti pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/main by this push: new db63d2428bd Netris: Fix Netris provider parameter name and response (#11377) db63d2428bd is described below commit db63d2428bd6868764efca1f39ef42bc382ffb7e Author: Pearl Dsilva <pearl1...@gmail.com> AuthorDate: Sat Aug 2 13:03:43 2025 -0400 Netris: Fix Netris provider parameter name and response (#11377) * Fix Netris url param name and allow cidr size for routed mode vpcs * rename response parameter name --- .../org/apache/cloudstack/api/ApiConstants.java | 1 + .../cloudstack/network/RoutedIpv4Manager.java | 2 +- .../api/command/AddNetrisProviderCmd.java | 2 +- .../api/response/NetrisProviderResponse.java | 26 ++++++---------------- .../service/NetrisProviderServiceImpl.java | 2 +- .../java/com/cloud/network/vpc/VpcManagerImpl.java | 2 +- .../cloudstack/network/RoutedIpv4ManagerImpl.java | 5 +++-- .../com/cloud/network/vpc/VpcManagerImplTest.java | 2 +- ui/public/locales/en.json | 1 + ui/src/views/infra/network/ServiceProvidersTab.vue | 2 +- ui/src/views/infra/zone/ZoneWizardLaunchZone.vue | 2 +- .../infra/zone/ZoneWizardNetworkSetupStep.vue | 2 +- 12 files changed, 20 insertions(+), 29 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 f77f8495190..32de3db80f1 100644 --- a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java +++ b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java @@ -1272,6 +1272,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/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/api/response/NetrisProviderResponse.java b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/api/response/NetrisProviderResponse.java index d130c3a7372..4dc9b6b3030 100644 --- a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/api/response/NetrisProviderResponse.java +++ b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/api/response/NetrisProviderResponse.java @@ -41,13 +41,9 @@ public class NetrisProviderResponse extends BaseResponse { @Param(description = "Zone name to which the Netris Provider is associated with") private String zoneName; - @SerializedName(ApiConstants.HOST_NAME) - @Param(description = "Netris Provider hostname or IP address") - private String hostname; - - @SerializedName(ApiConstants.PORT) - @Param(description = "Netris Provider port") - private String port; + @SerializedName(ApiConstants.NETRIS_URL) + @Param(description = "Netris Provider URL") + private String netrisUrl; @SerializedName(ApiConstants.SITE_NAME) @Param(description = "Netris Provider site") @@ -93,20 +89,12 @@ public class NetrisProviderResponse extends BaseResponse { this.zoneName = zoneName; } - public String getHostname() { - return hostname; - } - - public void setHostname(String hostname) { - this.hostname = hostname; - } - - public String getPort() { - return port; + public String getNetrisUrl() { + return netrisUrl; } - public void setPort(String port) { - this.port = port; + public void setNetrisUrl(String netrisUrl) { + this.netrisUrl = netrisUrl; } public String getSiteName() { diff --git a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisProviderServiceImpl.java b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisProviderServiceImpl.java index 14a845e1c3a..57714e4787c 100644 --- a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisProviderServiceImpl.java +++ b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisProviderServiceImpl.java @@ -184,7 +184,7 @@ public class NetrisProviderServiceImpl implements NetrisProviderService { NetrisProviderResponse response = new NetrisProviderResponse(); response.setName(provider.getName()); response.setUuid(provider.getUuid()); - response.setHostname(provider.getUrl()); + response.setNetrisUrl(provider.getUrl()); response.setZoneId(zone.getUuid()); response.setZoneName(zone.getName()); response.setSiteName(provider.getSiteName()); 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/public/locales/en.json b/ui/public/locales/en.json index 4eace1c810e..a23090066fc 100644 --- a/ui/public/locales/en.json +++ b/ui/public/locales/en.json @@ -1611,6 +1611,7 @@ "label.netmask": "Netmask", "label.netris": "Netris", "label.netristag": "Netris tag", +"label.netrisurl": "Netris URL", "label.netris.provider": "Netris Provider", "label.netris.provider.name": "Netris provider name", "label.netris.provider.username": "Netris provider username", diff --git a/ui/src/views/infra/network/ServiceProvidersTab.vue b/ui/src/views/infra/network/ServiceProvidersTab.vue index f446ee26333..1aff9db5f32 100644 --- a/ui/src/views/infra/network/ServiceProvidersTab.vue +++ b/ui/src/views/infra/network/ServiceProvidersTab.vue @@ -1169,7 +1169,7 @@ export default { value: (record) => { return record.zoneid } } }, - columns: ['name', 'hostname', 'port', 'site', 'tenantname', 'netristag'] + columns: ['name', 'netrisurl', 'site', 'tenantname', 'netristag'] } ] } 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 },