Skip to content

Commit bac8653

Browse files
Pearl1594nvazquez
andcommitted
Add Netris Tag parameter to the Network provider and fix zone creation wizard (#33)
* Add Netris Tag parameter to the Network provider * remove unused import * Fix public IP ranges creation on zone creation (#34) * use single quotes --------- Co-authored-by: Nicolas Vazquez <[email protected]>
1 parent 4956cd8 commit bac8653

File tree

15 files changed

+80
-9
lines changed

15 files changed

+80
-9
lines changed

api/src/main/java/com/cloud/network/netris/NetrisProvider.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,5 @@ public interface NetrisProvider extends InternalIdentity, Identity {
2727
String getUsername();
2828
String getSiteName();
2929
String getTenantName();
30+
String getNetrisTag();
3031
}

api/src/main/java/org/apache/cloudstack/api/ApiConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,6 +1162,7 @@ public class ApiConstants {
11621162
public static final String HAS_RULES = "hasrules";
11631163
public static final String NSX_DETAIL_KEY = "forNsx";
11641164
public static final String NETRIS_DETAIL_KEY = "forNetris";
1165+
public static final String NETRIS_TAG = "netristag";
11651166
public static final String DISK_PATH = "diskpath";
11661167
public static final String IMPORT_SOURCE = "importsource";
11671168
public static final String TEMP_PATH = "temppath";

engine/schema/src/main/java/com/cloud/network/element/NetrisProviderVO.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ public class NetrisProviderVO implements NetrisProvider {
6666
@Column(name = "tenant_name")
6767
private String tenantName;
6868

69+
@Column(name = "netris_tag")
70+
private String netrisTag;
71+
6972
@Column(name = "created")
7073
private Date created;
7174

@@ -171,6 +174,14 @@ public void setTenantName(String tenantName) {
171174
this.tenantName = tenantName;
172175
}
173176

177+
public String getNetrisTag() {
178+
return netrisTag;
179+
}
180+
181+
public void setNetrisTag(String netrisTag) {
182+
this.netrisTag = netrisTag;
183+
}
184+
174185
public Date getCreated() {
175186
return created;
176187
}
@@ -197,6 +208,7 @@ public static final class Builder {
197208
private String password;
198209
private String siteName;
199210
private String tenantName;
211+
private String netrisTag;
200212

201213
public Builder() {
202214
// Default constructor
@@ -246,6 +258,12 @@ public Builder setTenantName(String tenantName) {
246258
this.tenantName = tenantName;
247259
return this;
248260
}
261+
262+
public Builder setNetrisTag(String netrisTag) {
263+
this.netrisTag = netrisTag;
264+
return this;
265+
}
266+
249267
public NetrisProviderVO build() {
250268
NetrisProviderVO provider = new NetrisProviderVO();
251269
provider.setZoneId(this.zoneId);
@@ -258,6 +276,7 @@ public NetrisProviderVO build() {
258276
provider.setPassword(this.password);
259277
provider.setSiteName(this.siteName);
260278
provider.setTenantName(this.tenantName);
279+
provider.setNetrisTag(this.netrisTag);
261280
provider.setCreated(new Date());
262281
return provider;
263282
}

engine/schema/src/main/resources/META-INF/db/schema-41910to42000.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,7 @@ CREATE TABLE `cloud`.`netris_providers` (
439439
`password` varchar(255) NOT NULL,
440440
`site_name` varchar(255) NOT NULL,
441441
`tenant_name` varchar(255) NOT NULL,
442+
`netris_tag` varchar(255) NOT NULL,
442443
`created` datetime NOT NULL COMMENT 'created date',
443444
`removed` datetime COMMENT 'removed date if not null',
444445
PRIMARY KEY (`id`),

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class CreateNetrisVnetCommand extends NetrisCommand {
2222
private String cidr;
2323
private Integer vxlanId;
2424
private String gateway;
25+
private String netrisTag;
2526

2627
public CreateNetrisVnetCommand(Long zoneId, Long accountId, Long domainId, String vpcName, Long vpcId, String vNetName, Long networkId, String cidr, String gateway, boolean isVpc) {
2728
super(zoneId, accountId, domainId, vNetName, networkId, isVpc);
@@ -55,4 +56,12 @@ public void setVxlanId(Integer vxlanId) {
5556
public String getGateway() {
5657
return gateway;
5758
}
59+
60+
public String getNetrisTag() {
61+
return netrisTag;
62+
}
63+
64+
public void setNetrisTag(String netrisTag) {
65+
this.netrisTag = netrisTag;
66+
}
5867
}

plugins/network-elements/netris/src/main/java/org/apache/cloudstack/api/command/AddNetrisProviderCmd.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ public class AddNetrisProviderCmd extends BaseCmd {
6868
@Parameter(name = ApiConstants.TENANT_NAME, type = CommandType.STRING, required = true, description = "Password to login into Netris")
6969
private String tenantName;
7070

71+
@Parameter(name = ApiConstants.NETRIS_TAG, type = CommandType.STRING, required = true, description = "Netris tag for vNets")
72+
private String netrisTag;
73+
7174
/////////////////////////////////////////////////////
7275
/////////////////// Accessors ///////////////////////
7376
/////////////////////////////////////////////////////
@@ -104,6 +107,10 @@ public String getTenantName() {
104107
return tenantName;
105108
}
106109

110+
public String getNetrisTag() {
111+
return netrisTag;
112+
}
113+
107114
@Override
108115
public void execute() throws ServerApiException, ConcurrentOperationException {
109116
NetrisProvider provider = netrisProviderService.addProvider(this);

plugins/network-elements/netris/src/main/java/org/apache/cloudstack/api/response/NetrisProviderResponse.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ public class NetrisProviderResponse extends BaseResponse {
5757
@Param(description = "Netris Admin tenant name")
5858
private String tenantName;
5959

60+
@SerializedName(ApiConstants.NETRIS_TAG)
61+
@Param(description = "Netris Tag for vNets")
62+
private String netrisTag;
63+
6064
public String getName() {
6165
return name;
6266
}
@@ -120,4 +124,12 @@ public String getTenantName() {
120124
public void setTenantName(String tenantName) {
121125
this.tenantName = tenantName;
122126
}
127+
128+
public String getNetrisTag() {
129+
return netrisTag;
130+
}
131+
132+
public void setNetrisTag(String netrisTag) {
133+
this.netrisTag = netrisTag;
134+
}
123135
}

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686

8787
import java.math.BigDecimal;
8888
import java.util.ArrayList;
89+
import java.util.Collections;
8990
import java.util.List;
9091
import java.util.Objects;
9192
import java.util.stream.Collectors;
@@ -382,7 +383,7 @@ public boolean createVnet(CreateNetrisVnetCommand cmd) {
382383
Long networkId = cmd.getId();
383384
String vnetCidr = cmd.getCidr();
384385
Integer vxlanId = cmd.getVxlanId();
385-
String gateway = cmd.getGateway();
386+
String netrisTag = cmd.getNetrisTag();
386387
String netmask = vnetCidr.split("/")[1];
387388
String netrisGateway = cmd.getGateway() + "/" + netmask;
388389
boolean isVpc = cmd.isVpc();
@@ -407,7 +408,7 @@ public boolean createVnet(CreateNetrisVnetCommand cmd) {
407408
createIpamSubnetInternal(netrisSubnetName, vnetCidr, SubnetBody.PurposeEnum.COMMON, associatedVpc);
408409
logger.debug("Successfully created IPAM Subnet {} for network {} on Netris", netrisSubnetName, networkName);
409410

410-
VnetResAddBody vnetResponse = createVnetInternal(associatedVpc, netrisVnetName, netrisGateway, vxlanId);
411+
VnetResAddBody vnetResponse = createVnetInternal(associatedVpc, netrisVnetName, netrisGateway, vxlanId, netrisTag);
411412
if (vnetResponse == null || !vnetResponse.isIsSuccess()) {
412413
String reason = vnetResponse == null ? "Empty response" : "Operation failed on Netris";
413414
logger.debug("The Netris vNet creation {} failed: {}", vNetName, reason);
@@ -899,7 +900,7 @@ private InlineResponse2004Data createIpamSubnetInternal(String subnetName, Strin
899900
}
900901
}
901902

902-
VnetResAddBody createVnetInternal(VPCListing associatedVpc, String netrisVnetName, String netrisGateway, Integer vxlanId) {
903+
VnetResAddBody createVnetInternal(VPCListing associatedVpc, String netrisVnetName, String netrisGateway, Integer vxlanId, String netrisTag) {
903904
logger.debug("Creating Netris VPC vNet {} for CIDR {}", netrisVnetName, netrisGateway);
904905
try {
905906
VnetAddBody vnetBody = new VnetAddBody();
@@ -950,6 +951,8 @@ VnetResAddBody createVnetInternal(VPCListing associatedVpc, String netrisVnetNam
950951
vpc.setId(associatedVpc.getId());
951952
vnetBody.setVpc(vpc);
952953

954+
vnetBody.setTags(Collections.singletonList(netrisTag));
955+
953956
VNetApi vnetApi = apiClient.getApiStubForMethod(VNetApi.class);
954957
return vnetApi.apiV2VnetPost(vnetBody);
955958
} catch (ApiException e) {

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ public NetrisProvider addProvider(AddNetrisProviderCmd cmd) {
8686
final String password = cmd.getPassword();
8787
final String tenantName = cmd.getTenantName();
8888
final String siteName = cmd.getSiteName();
89+
final String netrisTag = cmd.getNetrisTag();
8990

9091
Map<String, String> params = new HashMap<>();
9192
params.put("guid", UUID.randomUUID().toString());
@@ -97,6 +98,7 @@ public NetrisProvider addProvider(AddNetrisProviderCmd cmd) {
9798
params.put("password", password);
9899
params.put("siteName", siteName);
99100
params.put("tenantName", tenantName);
101+
params.put("netrisTag", netrisTag);
100102

101103
Map<String, Object> hostdetails = new HashMap<>(params);
102104
NetrisProvider netrisProvider;
@@ -117,6 +119,7 @@ public NetrisProvider addProvider(AddNetrisProviderCmd cmd) {
117119
.setPassword(password)
118120
.setSiteName(siteName)
119121
.setTenantName(tenantName)
122+
.setNetrisTag(netrisTag)
120123
.build();
121124

122125
netrisProviderDao.persist(netrisProviderVO);
@@ -190,6 +193,7 @@ public NetrisProviderResponse createNetrisProviderResponse(NetrisProvider provid
190193
response.setZoneName(zone.getName());
191194
response.setSiteName(provider.getSiteName());
192195
response.setTenantName(provider.getTenantName());
196+
response.setNetrisTag(provider.getNetrisTag());
193197
response.setObjectName("netrisProvider");
194198
return response;
195199
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,8 @@ public boolean createVnetResource(Long zoneId, long accountId, long domainId, St
203203
String vxlanId = Networks.BroadcastDomainType.getValue(network.getBroadcastUri());
204204
CreateNetrisVnetCommand cmd = new CreateNetrisVnetCommand(zoneId, accountId, domainId, vpcName, vpcId, networkName, networkId, cidr, network.getGateway(), !Objects.isNull(vpcId));
205205
cmd.setVxlanId(Integer.parseInt(vxlanId));
206+
NetrisProviderVO netrisProvider = netrisProviderDao.findByZoneId(zoneId);
207+
cmd.setNetrisTag(netrisProvider.getNetrisTag());
206208
NetrisAnswer answer = sendNetrisCommand(cmd, zoneId);
207209
return answer.getResult();
208210
}

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4667,12 +4667,14 @@ public Vlan createVlanAndPublicIpRange(final CreateVlanIpRangeCmd cmd) throws In
46674667
throw new InvalidParameterValueException("Unable to find zone by id " + zoneId);
46684668
}
46694669

4670-
// If external provider is provided, verify zone has that provider enabled
4670+
// If external provider is provided, verify zone has that provider enabled and the controller added
46714671
Provider provider = cmd.getProvider();
4672-
if (Objects.nonNull(provider)) {
4672+
NsxProviderVO nsxProvider = nsxProviderDao.findByZoneId(zoneId);
4673+
NetrisProviderVO netrisProvider = netrisProviderDao.findByZoneId(zoneId);
4674+
if (Objects.nonNull(provider) && ObjectUtils.anyNotNull(nsxProvider, netrisProvider)) {
46734675
boolean unsupported =
4674-
(Provider.Nsx == provider && nsxProviderDao.findByZoneId(zoneId) == null) ||
4675-
(Provider.Netris == provider && netrisProviderDao.findByZoneId(zoneId) == null);
4676+
(Provider.Nsx == provider && nsxProvider == null) ||
4677+
(Provider.Netris == provider && netrisProvider == null);
46764678
if (unsupported) {
46774679
throw new InvalidParameterValueException(String.format("Cannot add public IP range as the zone does not support provider: %s", provider.getName()));
46784680
}
@@ -4847,7 +4849,7 @@ public Vlan doInTransaction(final TransactionStatus status) {
48474849
}
48484850
});
48494851

4850-
if (provider == Provider.Netris) {
4852+
if (provider == Provider.Netris && netrisProviderDao.findByZoneId(zoneId) != null) {
48514853
netrisService.createIPAMAllocationsForZoneLevelPublicRanges(zoneId);
48524854
}
48534855
messageBus.publish(_name, MESSAGE_CREATE_VLAN_IP_RANGE_EVENT, PublishScope.LOCAL, vlan);

ui/public/locales/en.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1493,6 +1493,7 @@
14931493
"label.ncc": "NCC",
14941494
"label.netmask": "Netmask",
14951495
"label.netris": "Netris",
1496+
"label.netristag": "Netris tag",
14961497
"label.netris.provider": "Netris Provider",
14971498
"label.netris.provider.name": "Netris provider name",
14981499
"label.netris.provider.hostname": "Netris provider hostname",
@@ -1501,6 +1502,7 @@
15011502
"label.netris.provider.password": "Netris provider password",
15021503
"label.netris.provider.site": "Netris provider Site name",
15031504
"label.netris.provider.tenant.name": "Netris provider Admin Tenant name",
1505+
"label.netris.provider.tag": "Netris Tag",
15041506
"label.netscaler": "NetScaler",
15051507
"label.netscaler.mpx": "NetScaler MPX LoadBalancer",
15061508
"label.netscaler.sdx": "NetScaler SDX LoadBalancer",
@@ -3251,6 +3253,7 @@
32513253
"message.installwizard.tooltip.netris.provider.username": "Netris Provider username not provided",
32523254
"message.installwizard.tooltip.netris.provider.password": "Netris Provider password not provided",
32533255
"message.installwizard.tooltip.netris.provider.site": "Netris Provider Site name not provided",
3256+
"message.installwizard.tooltip.netris.provider.tag": "Netris Tag to be assigned to vNets",
32543257
"message.installwizard.tooltip.netris.provider.tenant.name": "Netris Provider Admin Tenant name not provided",
32553258
"message.installwizard.tooltip.nsx.provider.hostname": "NSX Provider hostname / IP address not provided",
32563259
"message.installwizard.tooltip.nsx.provider.username": "NSX Provider username not provided",

ui/src/views/infra/network/ServiceProvidersTab.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1169,7 +1169,7 @@ export default {
11691169
value: (record) => { return record.zoneid }
11701170
}
11711171
},
1172-
columns: ['name', 'hostname', 'port', 'site', 'tenantname']
1172+
columns: ['name', 'hostname', 'port', 'site', 'tenantname', 'netristag']
11731173
}
11741174
]
11751175
}

ui/src/views/infra/zone/ZoneWizardLaunchZone.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1127,6 +1127,7 @@ export default {
11271127
providerParams.zoneid = this.stepData.zoneReturned.id
11281128
providerParams.sitename = this.prefillContent?.siteName || ''
11291129
providerParams.tenantname = this.prefillContent?.tenantName || ''
1130+
providerParams.netristag = this.prefillContent?.netrisTag || ''
11301131
11311132
await this.addNetrisProvider(providerParams)
11321133
this.stepData.stepMove.push('addNetrisProvider')

ui/src/views/infra/zone/ZoneWizardNetworkSetupStep.vue

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,12 @@ export default {
519519
key: 'tenantName',
520520
placeHolder: 'message.installwizard.tooltip.netris.provider.tenant.name',
521521
required: true
522+
},
523+
{
524+
title: 'label.netris.provider.tag',
525+
key: 'netrisTag',
526+
placeHolder: 'message.installwizard.tooltip.netris.provider.tag',
527+
required: true
522528
}
523529
]
524530
return fields

0 commit comments

Comments
 (0)