mirror of https://github.com/apache/cloudstack.git
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 <nicovazquez90@gmail.com>
This commit is contained in:
parent
aa222a51ab
commit
554ed63440
|
|
@ -27,4 +27,5 @@ public interface NetrisProvider extends InternalIdentity, Identity {
|
|||
String getUsername();
|
||||
String getSiteName();
|
||||
String getTenantName();
|
||||
String getNetrisTag();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1149,6 +1149,7 @@ public class ApiConstants {
|
|||
public static final String HAS_RULES = "hasrules";
|
||||
public static final String NSX_DETAIL_KEY = "forNsx";
|
||||
public static final String NETRIS_DETAIL_KEY = "forNetris";
|
||||
public static final String NETRIS_TAG = "netristag";
|
||||
public static final String DISK_PATH = "diskpath";
|
||||
public static final String IMPORT_SOURCE = "importsource";
|
||||
public static final String TEMP_PATH = "temppath";
|
||||
|
|
|
|||
|
|
@ -66,6 +66,9 @@ public class NetrisProviderVO implements NetrisProvider {
|
|||
@Column(name = "tenant_name")
|
||||
private String tenantName;
|
||||
|
||||
@Column(name = "netris_tag")
|
||||
private String netrisTag;
|
||||
|
||||
@Column(name = "created")
|
||||
private Date created;
|
||||
|
||||
|
|
@ -171,6 +174,14 @@ public class NetrisProviderVO implements NetrisProvider {
|
|||
this.tenantName = tenantName;
|
||||
}
|
||||
|
||||
public String getNetrisTag() {
|
||||
return netrisTag;
|
||||
}
|
||||
|
||||
public void setNetrisTag(String netrisTag) {
|
||||
this.netrisTag = netrisTag;
|
||||
}
|
||||
|
||||
public Date getCreated() {
|
||||
return created;
|
||||
}
|
||||
|
|
@ -197,6 +208,7 @@ public class NetrisProviderVO implements NetrisProvider {
|
|||
private String password;
|
||||
private String siteName;
|
||||
private String tenantName;
|
||||
private String netrisTag;
|
||||
|
||||
public Builder() {
|
||||
// Default constructor
|
||||
|
|
@ -246,6 +258,12 @@ public class NetrisProviderVO implements NetrisProvider {
|
|||
this.tenantName = tenantName;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setNetrisTag(String netrisTag) {
|
||||
this.netrisTag = netrisTag;
|
||||
return this;
|
||||
}
|
||||
|
||||
public NetrisProviderVO build() {
|
||||
NetrisProviderVO provider = new NetrisProviderVO();
|
||||
provider.setZoneId(this.zoneId);
|
||||
|
|
@ -258,6 +276,7 @@ public class NetrisProviderVO implements NetrisProvider {
|
|||
provider.setPassword(this.password);
|
||||
provider.setSiteName(this.siteName);
|
||||
provider.setTenantName(this.tenantName);
|
||||
provider.setNetrisTag(this.netrisTag);
|
||||
provider.setCreated(new Date());
|
||||
return provider;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -439,6 +439,7 @@ CREATE TABLE `cloud`.`netris_providers` (
|
|||
`password` varchar(255) NOT NULL,
|
||||
`site_name` varchar(255) NOT NULL,
|
||||
`tenant_name` varchar(255) NOT NULL,
|
||||
`netris_tag` varchar(255) NOT NULL,
|
||||
`created` datetime NOT NULL COMMENT 'created date',
|
||||
`removed` datetime COMMENT 'removed date if not null',
|
||||
PRIMARY KEY (`id`),
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ public class CreateNetrisVnetCommand extends NetrisCommand {
|
|||
private String cidr;
|
||||
private Integer vxlanId;
|
||||
private String gateway;
|
||||
private String netrisTag;
|
||||
|
||||
public CreateNetrisVnetCommand(Long zoneId, Long accountId, Long domainId, String vpcName, Long vpcId, String vNetName, Long networkId, String cidr, String gateway, boolean isVpc) {
|
||||
super(zoneId, accountId, domainId, vNetName, networkId, isVpc);
|
||||
|
|
@ -55,4 +56,12 @@ public class CreateNetrisVnetCommand extends NetrisCommand {
|
|||
public String getGateway() {
|
||||
return gateway;
|
||||
}
|
||||
|
||||
public String getNetrisTag() {
|
||||
return netrisTag;
|
||||
}
|
||||
|
||||
public void setNetrisTag(String netrisTag) {
|
||||
this.netrisTag = netrisTag;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,6 +68,9 @@ public class AddNetrisProviderCmd extends BaseCmd {
|
|||
@Parameter(name = ApiConstants.TENANT_NAME, type = CommandType.STRING, required = true, description = "Password to login into Netris")
|
||||
private String tenantName;
|
||||
|
||||
@Parameter(name = ApiConstants.NETRIS_TAG, type = CommandType.STRING, required = true, description = "Netris tag for vNets")
|
||||
private String netrisTag;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
/////////////////// Accessors ///////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
@ -104,6 +107,10 @@ public class AddNetrisProviderCmd extends BaseCmd {
|
|||
return tenantName;
|
||||
}
|
||||
|
||||
public String getNetrisTag() {
|
||||
return netrisTag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() throws ServerApiException, ConcurrentOperationException {
|
||||
NetrisProvider provider = netrisProviderService.addProvider(this);
|
||||
|
|
|
|||
|
|
@ -57,6 +57,10 @@ public class NetrisProviderResponse extends BaseResponse {
|
|||
@Param(description = "Netris Admin tenant name")
|
||||
private String tenantName;
|
||||
|
||||
@SerializedName(ApiConstants.NETRIS_TAG)
|
||||
@Param(description = "Netris Tag for vNets")
|
||||
private String netrisTag;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
|
@ -120,4 +124,12 @@ public class NetrisProviderResponse extends BaseResponse {
|
|||
public void setTenantName(String tenantName) {
|
||||
this.tenantName = tenantName;
|
||||
}
|
||||
|
||||
public String getNetrisTag() {
|
||||
return netrisTag;
|
||||
}
|
||||
|
||||
public void setNetrisTag(String netrisTag) {
|
||||
this.netrisTag = netrisTag;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@ import org.apache.logging.log4j.Logger;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
|
@ -382,7 +383,7 @@ public class NetrisApiClientImpl implements NetrisApiClient {
|
|||
Long networkId = cmd.getId();
|
||||
String vnetCidr = cmd.getCidr();
|
||||
Integer vxlanId = cmd.getVxlanId();
|
||||
String gateway = cmd.getGateway();
|
||||
String netrisTag = cmd.getNetrisTag();
|
||||
String netmask = vnetCidr.split("/")[1];
|
||||
String netrisGateway = cmd.getGateway() + "/" + netmask;
|
||||
boolean isVpc = cmd.isVpc();
|
||||
|
|
@ -407,7 +408,7 @@ public class NetrisApiClientImpl implements NetrisApiClient {
|
|||
createIpamSubnetInternal(netrisSubnetName, vnetCidr, SubnetBody.PurposeEnum.COMMON, associatedVpc);
|
||||
logger.debug("Successfully created IPAM Subnet {} for network {} on Netris", netrisSubnetName, networkName);
|
||||
|
||||
VnetResAddBody vnetResponse = createVnetInternal(associatedVpc, netrisVnetName, netrisGateway, vxlanId);
|
||||
VnetResAddBody vnetResponse = createVnetInternal(associatedVpc, netrisVnetName, netrisGateway, vxlanId, netrisTag);
|
||||
if (vnetResponse == null || !vnetResponse.isIsSuccess()) {
|
||||
String reason = vnetResponse == null ? "Empty response" : "Operation failed on Netris";
|
||||
logger.debug("The Netris vNet creation {} failed: {}", vNetName, reason);
|
||||
|
|
@ -899,7 +900,7 @@ public class NetrisApiClientImpl implements NetrisApiClient {
|
|||
}
|
||||
}
|
||||
|
||||
VnetResAddBody createVnetInternal(VPCListing associatedVpc, String netrisVnetName, String netrisGateway, Integer vxlanId) {
|
||||
VnetResAddBody createVnetInternal(VPCListing associatedVpc, String netrisVnetName, String netrisGateway, Integer vxlanId, String netrisTag) {
|
||||
logger.debug("Creating Netris VPC vNet {} for CIDR {}", netrisVnetName, netrisGateway);
|
||||
try {
|
||||
VnetAddBody vnetBody = new VnetAddBody();
|
||||
|
|
@ -950,6 +951,8 @@ public class NetrisApiClientImpl implements NetrisApiClient {
|
|||
vpc.setId(associatedVpc.getId());
|
||||
vnetBody.setVpc(vpc);
|
||||
|
||||
vnetBody.setTags(Collections.singletonList(netrisTag));
|
||||
|
||||
VNetApi vnetApi = apiClient.getApiStubForMethod(VNetApi.class);
|
||||
return vnetApi.apiV2VnetPost(vnetBody);
|
||||
} catch (ApiException e) {
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@ public class NetrisProviderServiceImpl implements NetrisProviderService {
|
|||
final String password = cmd.getPassword();
|
||||
final String tenantName = cmd.getTenantName();
|
||||
final String siteName = cmd.getSiteName();
|
||||
final String netrisTag = cmd.getNetrisTag();
|
||||
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put("guid", UUID.randomUUID().toString());
|
||||
|
|
@ -97,6 +98,7 @@ public class NetrisProviderServiceImpl implements NetrisProviderService {
|
|||
params.put("password", password);
|
||||
params.put("siteName", siteName);
|
||||
params.put("tenantName", tenantName);
|
||||
params.put("netrisTag", netrisTag);
|
||||
|
||||
Map<String, Object> hostdetails = new HashMap<>(params);
|
||||
NetrisProvider netrisProvider;
|
||||
|
|
@ -117,6 +119,7 @@ public class NetrisProviderServiceImpl implements NetrisProviderService {
|
|||
.setPassword(password)
|
||||
.setSiteName(siteName)
|
||||
.setTenantName(tenantName)
|
||||
.setNetrisTag(netrisTag)
|
||||
.build();
|
||||
|
||||
netrisProviderDao.persist(netrisProviderVO);
|
||||
|
|
@ -190,6 +193,7 @@ public class NetrisProviderServiceImpl implements NetrisProviderService {
|
|||
response.setZoneName(zone.getName());
|
||||
response.setSiteName(provider.getSiteName());
|
||||
response.setTenantName(provider.getTenantName());
|
||||
response.setNetrisTag(provider.getNetrisTag());
|
||||
response.setObjectName("netrisProvider");
|
||||
return response;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -203,6 +203,8 @@ public class NetrisServiceImpl implements NetrisService, Configurable {
|
|||
String vxlanId = Networks.BroadcastDomainType.getValue(network.getBroadcastUri());
|
||||
CreateNetrisVnetCommand cmd = new CreateNetrisVnetCommand(zoneId, accountId, domainId, vpcName, vpcId, networkName, networkId, cidr, network.getGateway(), !Objects.isNull(vpcId));
|
||||
cmd.setVxlanId(Integer.parseInt(vxlanId));
|
||||
NetrisProviderVO netrisProvider = netrisProviderDao.findByZoneId(zoneId);
|
||||
cmd.setNetrisTag(netrisProvider.getNetrisTag());
|
||||
NetrisAnswer answer = sendNetrisCommand(cmd, zoneId);
|
||||
return answer.getResult();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4580,12 +4580,14 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
|
|||
throw new InvalidParameterValueException("Unable to find zone by id " + zoneId);
|
||||
}
|
||||
|
||||
// If external provider is provided, verify zone has that provider enabled
|
||||
// If external provider is provided, verify zone has that provider enabled and the controller added
|
||||
Provider provider = cmd.getProvider();
|
||||
if (Objects.nonNull(provider)) {
|
||||
NsxProviderVO nsxProvider = nsxProviderDao.findByZoneId(zoneId);
|
||||
NetrisProviderVO netrisProvider = netrisProviderDao.findByZoneId(zoneId);
|
||||
if (Objects.nonNull(provider) && ObjectUtils.anyNotNull(nsxProvider, netrisProvider)) {
|
||||
boolean unsupported =
|
||||
(Provider.Nsx == provider && nsxProviderDao.findByZoneId(zoneId) == null) ||
|
||||
(Provider.Netris == provider && netrisProviderDao.findByZoneId(zoneId) == null);
|
||||
(Provider.Nsx == provider && nsxProvider == null) ||
|
||||
(Provider.Netris == provider && netrisProvider == null);
|
||||
if (unsupported) {
|
||||
throw new InvalidParameterValueException(String.format("Cannot add public IP range as the zone does not support provider: %s", provider.getName()));
|
||||
}
|
||||
|
|
@ -4762,7 +4764,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
|
|||
}
|
||||
});
|
||||
|
||||
if (provider == Provider.Netris) {
|
||||
if (provider == Provider.Netris && netrisProviderDao.findByZoneId(zoneId) != null) {
|
||||
netrisService.createIPAMAllocationsForZoneLevelPublicRanges(zoneId);
|
||||
}
|
||||
messageBus.publish(_name, MESSAGE_CREATE_VLAN_IP_RANGE_EVENT, PublishScope.LOCAL, vlan);
|
||||
|
|
|
|||
|
|
@ -1485,6 +1485,7 @@
|
|||
"label.ncc": "NCC",
|
||||
"label.netmask": "Netmask",
|
||||
"label.netris": "Netris",
|
||||
"label.netristag": "Netris tag",
|
||||
"label.netris.provider": "Netris Provider",
|
||||
"label.netris.provider.name": "Netris provider name",
|
||||
"label.netris.provider.hostname": "Netris provider hostname",
|
||||
|
|
@ -1493,6 +1494,7 @@
|
|||
"label.netris.provider.password": "Netris provider password",
|
||||
"label.netris.provider.site": "Netris provider Site name",
|
||||
"label.netris.provider.tenant.name": "Netris provider Admin Tenant name",
|
||||
"label.netris.provider.tag": "Netris Tag",
|
||||
"label.netscaler": "NetScaler",
|
||||
"label.netscaler.mpx": "NetScaler MPX LoadBalancer",
|
||||
"label.netscaler.sdx": "NetScaler SDX LoadBalancer",
|
||||
|
|
@ -3228,6 +3230,7 @@
|
|||
"message.installwizard.tooltip.netris.provider.username": "Netris Provider username not provided",
|
||||
"message.installwizard.tooltip.netris.provider.password": "Netris Provider password not provided",
|
||||
"message.installwizard.tooltip.netris.provider.site": "Netris Provider Site name not provided",
|
||||
"message.installwizard.tooltip.netris.provider.tag": "Netris Tag to be assigned to vNets",
|
||||
"message.installwizard.tooltip.netris.provider.tenant.name": "Netris Provider Admin Tenant name not provided",
|
||||
"message.installwizard.tooltip.nsx.provider.hostname": "NSX Provider hostname / IP address not provided",
|
||||
"message.installwizard.tooltip.nsx.provider.username": "NSX Provider username not provided",
|
||||
|
|
|
|||
|
|
@ -1169,7 +1169,7 @@ export default {
|
|||
value: (record) => { return record.zoneid }
|
||||
}
|
||||
},
|
||||
columns: ['name', 'hostname', 'port', 'site', 'tenantname']
|
||||
columns: ['name', 'hostname', 'port', 'site', 'tenantname', 'netristag']
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1127,6 +1127,7 @@ export default {
|
|||
providerParams.zoneid = this.stepData.zoneReturned.id
|
||||
providerParams.sitename = this.prefillContent?.siteName || ''
|
||||
providerParams.tenantname = this.prefillContent?.tenantName || ''
|
||||
providerParams.netristag = this.prefillContent?.netrisTag || ''
|
||||
|
||||
await this.addNetrisProvider(providerParams)
|
||||
this.stepData.stepMove.push('addNetrisProvider')
|
||||
|
|
|
|||
|
|
@ -519,6 +519,12 @@ export default {
|
|||
key: 'tenantName',
|
||||
placeHolder: 'message.installwizard.tooltip.netris.provider.tenant.name',
|
||||
required: true
|
||||
},
|
||||
{
|
||||
title: 'label.netris.provider.tag',
|
||||
key: 'netrisTag',
|
||||
placeHolder: 'message.installwizard.tooltip.netris.provider.tag',
|
||||
required: true
|
||||
}
|
||||
]
|
||||
return fields
|
||||
|
|
|
|||
Loading…
Reference in New Issue