Skip to content

Commit 04f1182

Browse files
committed
Pass network gateway instead of network CIDR for Netris vNet creation (#21)
1 parent f1f3450 commit 04f1182

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

plugins/network-elements/netris/src/main/java/org/apache/cloudstack/agent/api/CreateNetrisVnetCommand.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@ public class CreateNetrisVnetCommand extends NetrisCommand {
2121
private Long vpcId;
2222
private String cidr;
2323
private Integer vxlanId;
24+
private String gateway;
2425

25-
public CreateNetrisVnetCommand(Long zoneId, Long accountId, Long domainId, String vpcName, Long vpcId, String vNetName, Long networkId, String cidr, boolean isVpc) {
26+
public CreateNetrisVnetCommand(Long zoneId, Long accountId, Long domainId, String vpcName, Long vpcId, String vNetName, Long networkId, String cidr, String gateway, boolean isVpc) {
2627
super(zoneId, accountId, domainId, vNetName, networkId, isVpc);
2728
this.vpcId = vpcId;
2829
this.vpcName = vpcName;
2930
this.cidr = cidr;
31+
this.gateway = gateway;
3032
}
3133

3234

@@ -49,4 +51,8 @@ public Integer getVxlanId() {
4951
public void setVxlanId(Integer vxlanId) {
5052
this.vxlanId = vxlanId;
5153
}
54+
55+
public String getGateway() {
56+
return gateway;
57+
}
5258
}

plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisApiClientImpl.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,9 @@ public boolean createVnet(CreateNetrisVnetCommand cmd) {
320320
Long networkId = cmd.getId();
321321
String vnetCidr = cmd.getCidr();
322322
Integer vxlanId = cmd.getVxlanId();
323+
String gateway = cmd.getGateway();
324+
String netmask = vnetCidr.split("/")[1];
325+
String netrisGateway = cmd.getGateway() + "/" + netmask;
323326
boolean isVpc = cmd.isVpc();
324327

325328
String suffix = getNetrisVpcNameSuffix(vpcId, vpcName, networkId, networkName, isVpc);
@@ -342,7 +345,7 @@ public boolean createVnet(CreateNetrisVnetCommand cmd) {
342345
createIpamSubnetInternal(netrisSubnetName, vnetCidr, SubnetBody.PurposeEnum.COMMON, associatedVpc);
343346
logger.debug("Successfully created IPAM Subnet {} for network {} on Netris", netrisSubnetName, networkName);
344347

345-
VnetResAddBody vnetResponse = createVnetInternal(associatedVpc, netrisVnetName, vnetCidr, vxlanId);
348+
VnetResAddBody vnetResponse = createVnetInternal(associatedVpc, netrisVnetName, netrisGateway, vxlanId);
346349
if (vnetResponse == null || !vnetResponse.isIsSuccess()) {
347350
String reason = vnetResponse == null ? "Empty response" : "Operation failed on Netris";
348351
logger.debug("The Netris vNet creation {} failed: {}", vNetName, reason);
@@ -536,15 +539,15 @@ private InlineResponse2004Data createIpamSubnetInternal(String subnetName, Strin
536539
}
537540
}
538541

539-
VnetResAddBody createVnetInternal(VPCListing associatedVpc, String netrisVnetName, String vNetCidr, Integer vxlanId) {
540-
logger.debug("Creating Netris VPC vNet {} for CIDR {}", netrisVnetName, vNetCidr);
542+
VnetResAddBody createVnetInternal(VPCListing associatedVpc, String netrisVnetName, String netrisGateway, Integer vxlanId) {
543+
logger.debug("Creating Netris VPC vNet {} for CIDR {}", netrisVnetName, netrisGateway);
541544
try {
542545
VnetAddBody vnetBody = new VnetAddBody();
543546

544547
vnetBody.setCustomAnycastMac("");
545548

546549
VnetAddBodyGateways gateways = new VnetAddBodyGateways();
547-
gateways.prefix(vNetCidr);
550+
gateways.prefix(netrisGateway);
548551
gateways.setDhcpEnabled(false);
549552
VnetAddBodyDhcp dhcp = new VnetAddBodyDhcp();
550553
dhcp.setEnd("");

plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public boolean deleteVpcResource(long zoneId, long accountId, long domainId, Vpc
9898
public boolean createVnetResource(Long zoneId, long accountId, long domainId, String vpcName, Long vpcId, String networkName, Long networkId, String cidr) {
9999
NetworkVO network = networkDao.findById(networkId);
100100
String vxlanId = Networks.BroadcastDomainType.getValue(network.getBroadcastUri());
101-
CreateNetrisVnetCommand cmd = new CreateNetrisVnetCommand(zoneId, accountId, domainId, vpcName, vpcId, networkName, networkId, cidr, !Objects.isNull(vpcId));
101+
CreateNetrisVnetCommand cmd = new CreateNetrisVnetCommand(zoneId, accountId, domainId, vpcName, vpcId, networkName, networkId, cidr, network.getGateway(), !Objects.isNull(vpcId));
102102
cmd.setVxlanId(Integer.parseInt(vxlanId));
103103
NetrisAnswer answer = sendNetrisCommand(cmd, zoneId);
104104
return answer.getResult();

0 commit comments

Comments
 (0)