mirror of https://github.com/apache/cloudstack.git
modify NSX resource naming convention
This commit is contained in:
parent
8337486fdc
commit
9fe5b3bddf
|
|
@ -1484,12 +1484,24 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
|
|||
Account acc = accountDao.findById(networkVO.getAccountId());
|
||||
Domain domain = domainDao.findById(networkVO.getDomainId());
|
||||
DataCenter zone = _dcDao.findById(vm.getDataCenterId());
|
||||
String networkName = domain.getName() + "-" + acc.getAccountName() + "-" + zone.getName() + "-";
|
||||
if (Objects.isNull(zone)) {
|
||||
throw new CloudRuntimeException(String.format("Failed to find zone with ID: %s", vm.getDataCenterId()));
|
||||
}
|
||||
if (Objects.isNull(acc)) {
|
||||
throw new CloudRuntimeException(String.format("Failed to find account with ID: %s", networkVO.getAccountId()));
|
||||
}
|
||||
if (Objects.isNull(domain)) {
|
||||
throw new CloudRuntimeException(String.format("Failed to find domain with ID: %s", networkVO.getDomainId()));
|
||||
}
|
||||
String networkName = String.format("D%s-A%s-Z%s", domain.getId(), acc.getId(), zone.getId());
|
||||
if (Objects.isNull(networkVO.getVpcId())) {
|
||||
networkName += networkVO.getName();
|
||||
networkName += "-S"+networkVO.getId();
|
||||
} else {
|
||||
VpcVO vpc = vpcDao.findById(networkVO.getVpcId());
|
||||
networkName += (vpc.getName() + "-" + networkVO.getName());
|
||||
if (Objects.isNull(vpc)) {
|
||||
throw new CloudRuntimeException(String.format("Failed to find VPC with ID: %s", networkVO.getVpcId()));
|
||||
}
|
||||
networkName = String.format("%s-V%s-S%s", networkName, vpc.getId(), networkVO.getId());
|
||||
}
|
||||
networkToNetworkNameMap.put(networkVO.getId(), networkName);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,12 +39,14 @@ import com.cloud.agent.api.to.VirtualMachineTO;
|
|||
import com.cloud.api.query.vo.UserVmJoinVO;
|
||||
import com.cloud.dc.DataCenterVO;
|
||||
import com.cloud.dc.dao.DataCenterDao;
|
||||
import com.cloud.domain.Domain;
|
||||
import com.cloud.domain.DomainVO;
|
||||
import com.cloud.domain.dao.DomainDao;
|
||||
import com.cloud.network.dao.NetworkDao;
|
||||
import com.cloud.network.dao.NetworkVO;
|
||||
import com.cloud.network.vpc.VpcVO;
|
||||
import com.cloud.network.vpc.dao.VpcDao;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.AccountVO;
|
||||
import com.cloud.user.dao.AccountDao;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator;
|
||||
|
|
@ -926,12 +928,12 @@ public class VirtualMachineManagerImplTest {
|
|||
|
||||
VirtualMachineTO vmTO = new VirtualMachineTO() {};
|
||||
UserVmJoinVO userVm = new UserVmJoinVO();
|
||||
NetworkVO networkVO = new NetworkVO();
|
||||
AccountVO accountVO = new AccountVO();
|
||||
DomainVO domainVO = new DomainVO();
|
||||
NetworkVO networkVO = mock(NetworkVO.class);
|
||||
AccountVO accountVO = mock(AccountVO.class);
|
||||
DomainVO domainVO = mock(DomainVO.class);
|
||||
domainVO.setName("testDomain");
|
||||
DataCenterVO dataCenterVO = mock(DataCenterVO.class);
|
||||
VpcVO vpcVO = new VpcVO();
|
||||
VpcVO vpcVO = mock(VpcVO.class);
|
||||
|
||||
networkVO.setAccountId(1L);
|
||||
networkVO.setName("testNet");
|
||||
|
|
@ -949,9 +951,13 @@ public class VirtualMachineManagerImplTest {
|
|||
Mockito.when(domainDao.findById(anyLong())).thenReturn(domainVO);
|
||||
Mockito.when(dcDao.findById(anyLong())).thenReturn(dataCenterVO);
|
||||
Mockito.when(vpcDao.findById(anyLong())).thenReturn(vpcVO);
|
||||
Mockito.when(dataCenterVO.getName()).thenReturn("testZone");
|
||||
Mockito.when(dataCenterVO.getId()).thenReturn(1L);
|
||||
when(accountVO.getId()).thenReturn(2L);
|
||||
Mockito.when(domainVO.getId()).thenReturn(3L);
|
||||
Mockito.when(vpcVO.getId()).thenReturn(4L);
|
||||
Mockito.when(networkVO.getId()).thenReturn(5L);
|
||||
virtualMachineManagerImpl.setVmNetworkDetails(vm, vmTO);
|
||||
assertEquals(vmTO.getNetworkIdToNetworkNameMap().size(), 1);
|
||||
assertEquals(vmTO.getNetworkIdToNetworkNameMap().get(0L), "testDomain-testAcc-testZone-VPC1-testNet");
|
||||
assertEquals(vmTO.getNetworkIdToNetworkNameMap().get(5L), "D3-A2-Z1-V4-S5");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,22 +20,35 @@ import java.util.List;
|
|||
|
||||
public class CreateNsxDhcpRelayConfigCommand extends NsxCommand {
|
||||
|
||||
private Long vpcId;
|
||||
private String vpcName;
|
||||
private long networkId;
|
||||
private String networkName;
|
||||
private List<String> addresses;
|
||||
|
||||
public CreateNsxDhcpRelayConfigCommand(String domainName, String accountName, String zoneName,
|
||||
String vpcName, String networkName, List<String> addresses) {
|
||||
super(domainName, accountName, zoneName);
|
||||
public CreateNsxDhcpRelayConfigCommand(long domainId, long accountId, long zoneId,
|
||||
Long vpcId, String vpcName, long networkId, String networkName,
|
||||
List<String> addresses) {
|
||||
super(domainId, accountId, zoneId);
|
||||
this.vpcId = vpcId;
|
||||
this.vpcName = vpcName;
|
||||
this.networkId = networkId;
|
||||
this.networkName = networkName;
|
||||
this.addresses = addresses;
|
||||
}
|
||||
|
||||
public Long getVpcId() {
|
||||
return vpcId;
|
||||
}
|
||||
|
||||
public String getVpcName() {
|
||||
return vpcName;
|
||||
}
|
||||
|
||||
public long getNetworkId() {
|
||||
return networkId;
|
||||
}
|
||||
|
||||
public String getNetworkName() {
|
||||
return networkName;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,24 +20,37 @@ import java.util.Objects;
|
|||
|
||||
public class CreateNsxSegmentCommand extends NsxCommand {
|
||||
|
||||
private Long vpcId;
|
||||
private String vpcName;
|
||||
private long networkId;
|
||||
private String networkName;
|
||||
private String networkGateway;
|
||||
private String networkCidr;
|
||||
|
||||
public CreateNsxSegmentCommand(String domainName, String accountName, String zoneName,
|
||||
String vpcName, String networkName, String networkGateway, String networkCidr) {
|
||||
super(domainName, accountName, zoneName);
|
||||
public CreateNsxSegmentCommand(long domainId, long accountId, long zoneId,
|
||||
Long vpcId, String vpcName, long networkId, String networkName,
|
||||
String networkGateway, String networkCidr) {
|
||||
super(domainId, accountId, zoneId);
|
||||
this.vpcId = vpcId;
|
||||
this.vpcName = vpcName;
|
||||
this.networkId = networkId;
|
||||
this.networkName = networkName;
|
||||
this.networkGateway = networkGateway;
|
||||
this.networkCidr = networkCidr;
|
||||
}
|
||||
|
||||
public Long getVpcId() {
|
||||
return vpcId;
|
||||
}
|
||||
|
||||
public String getVpcName() {
|
||||
return vpcName;
|
||||
}
|
||||
|
||||
public long getNetworkId() {
|
||||
return networkId;
|
||||
}
|
||||
|
||||
public String getNetworkName() {
|
||||
return networkName;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,13 +19,19 @@ package org.apache.cloudstack.agent.api;
|
|||
import java.util.Objects;
|
||||
|
||||
public class CreateNsxTier1GatewayCommand extends NsxCommand {
|
||||
private long vpcId;
|
||||
private String vpcName;
|
||||
|
||||
public CreateNsxTier1GatewayCommand(String domainName, String accountName, String zoneName, String vpcName) {
|
||||
super(domainName, accountName, zoneName);
|
||||
public CreateNsxTier1GatewayCommand(long domainId, long accountId, long zoneId, long vpcId, String vpcName) {
|
||||
super(domainId, accountId, zoneId);
|
||||
this.vpcId = vpcId;
|
||||
this.vpcName = vpcName;
|
||||
}
|
||||
|
||||
public long getVpcId() {
|
||||
return vpcId;
|
||||
}
|
||||
|
||||
public String getVpcName() {
|
||||
return vpcName;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,19 +18,33 @@ package org.apache.cloudstack.agent.api;
|
|||
|
||||
public class DeleteNsxSegmentCommand extends NsxCommand {
|
||||
|
||||
private Long vpcId;
|
||||
private String vpcName;
|
||||
|
||||
private long networkId;
|
||||
private String networkName;
|
||||
|
||||
public DeleteNsxSegmentCommand(String domainName, String accountName, String zoneName, String vpcName, String networkName) {
|
||||
super(domainName, accountName, zoneName);
|
||||
public DeleteNsxSegmentCommand(long domainId, long accountId, long zoneId, Long vpcId,
|
||||
String vpcName, long networkId, String networkName) {
|
||||
super(domainId, accountId, zoneId);
|
||||
this.vpcId = vpcId;
|
||||
this.vpcName = vpcName;
|
||||
this.networkId = networkId;
|
||||
this.networkName = networkName;
|
||||
}
|
||||
|
||||
public Long getVpcId() {
|
||||
return vpcId;
|
||||
}
|
||||
|
||||
public String getVpcName() {
|
||||
return vpcName;
|
||||
}
|
||||
|
||||
public long getNetworkId() {
|
||||
return networkId;
|
||||
}
|
||||
|
||||
public String getNetworkName() {
|
||||
return networkName;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,13 +18,19 @@ package org.apache.cloudstack.agent.api;
|
|||
|
||||
public class DeleteNsxTier1GatewayCommand extends NsxCommand {
|
||||
|
||||
private Long vpcId;
|
||||
private String vpcName;
|
||||
|
||||
public DeleteNsxTier1GatewayCommand(String domainName, String accountName, String zoneName, String vpcName) {
|
||||
super(domainName, accountName, zoneName);
|
||||
public DeleteNsxTier1GatewayCommand(long domainId, long accountId, long zoneId, Long vpcId, String vpcName) {
|
||||
super(domainId, accountId, zoneId);
|
||||
this.vpcId = vpcId;
|
||||
this.vpcName = vpcName;
|
||||
}
|
||||
|
||||
public Long getVpcId() {
|
||||
return vpcId;
|
||||
}
|
||||
|
||||
public String getVpcName() {
|
||||
return vpcName;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,29 +21,29 @@ import com.cloud.agent.api.Command;
|
|||
import java.util.Objects;
|
||||
|
||||
public class NsxCommand extends Command {
|
||||
private String zoneName;
|
||||
private String accountName;
|
||||
private String domainName;
|
||||
private long zoneId;
|
||||
private long accountId;
|
||||
private long domainId;
|
||||
|
||||
public NsxCommand() {
|
||||
}
|
||||
|
||||
public NsxCommand(String domainName, String accountName, String zoneName) {
|
||||
this.zoneName = zoneName;
|
||||
this.accountName = accountName;
|
||||
this.domainName = domainName;
|
||||
public NsxCommand(long domainId, long accountId, long zoneId) {
|
||||
this.zoneId = zoneId;
|
||||
this.accountId = accountId;
|
||||
this.domainId = domainId;
|
||||
}
|
||||
|
||||
public String getZoneName() {
|
||||
return zoneName;
|
||||
public long getZoneId() {
|
||||
return zoneId;
|
||||
}
|
||||
|
||||
public String getAccountName() {
|
||||
return accountName;
|
||||
public long getAccountId() {
|
||||
return accountId;
|
||||
}
|
||||
|
||||
public String getDomainName() {
|
||||
return domainName;
|
||||
public long getDomainId() {
|
||||
return domainId;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -57,11 +57,11 @@ public class NsxCommand extends Command {
|
|||
if (o == null || getClass() != o.getClass()) return false;
|
||||
if (!super.equals(o)) return false;
|
||||
NsxCommand that = (NsxCommand) o;
|
||||
return Objects.equals(zoneName, that.zoneName) && Objects.equals(accountName, that.accountName) && Objects.equals(domainName, that.domainName);
|
||||
return Objects.equals(zoneId, that.zoneId) && Objects.equals(accountId, that.accountId) && Objects.equals(domainId, that.domainId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(super.hashCode(), zoneName, accountName, domainName);
|
||||
return Objects.hash(super.hashCode(), zoneId, accountId, domainId);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -210,14 +210,16 @@ public class NsxResource implements ServerResource {
|
|||
}
|
||||
|
||||
private Answer executeRequest(CreateNsxDhcpRelayConfigCommand cmd) {
|
||||
String zoneName = cmd.getZoneName();
|
||||
String domainName = cmd.getDomainName();
|
||||
String accountName = cmd.getAccountName();
|
||||
long zoneId = cmd.getZoneId();
|
||||
long domainId = cmd.getDomainId();
|
||||
long accountId = cmd.getAccountId();
|
||||
long vpcId = cmd.getVpcId();
|
||||
long networkId = cmd.getNetworkId();
|
||||
String vpcName = cmd.getVpcName();
|
||||
String networkName = cmd.getNetworkName();
|
||||
List<String> addresses = cmd.getAddresses();
|
||||
|
||||
String dhcpRelayConfigName = NsxControllerUtils.getNsxDhcpRelayConfigId(zoneName, domainName, accountName, vpcName, networkName);
|
||||
String dhcpRelayConfigName = NsxControllerUtils.getNsxDhcpRelayConfigId(zoneId, domainId, accountId, vpcId, networkId);
|
||||
|
||||
String msg = String.format("Creating DHCP relay config with name %s on network %s of VPC %s",
|
||||
dhcpRelayConfigName, networkName, vpcName);
|
||||
|
|
@ -231,7 +233,7 @@ public class NsxResource implements ServerResource {
|
|||
return new NsxAnswer(cmd, e);
|
||||
}
|
||||
|
||||
String segmentName = NsxControllerUtils.getNsxSegmentId(domainName, accountName, zoneName, vpcName, networkName);
|
||||
String segmentName = NsxControllerUtils.getNsxSegmentId(domainId, accountId, zoneId, vpcId, networkId);
|
||||
String dhcpConfigPath = String.format("%s/%s", DHCP_RELAY_CONFIGS_PATH_PREFIX, dhcpRelayConfigName);
|
||||
try {
|
||||
Segment segment = nsxApiClient.getSegmentById(segmentName);
|
||||
|
|
@ -251,18 +253,18 @@ public class NsxResource implements ServerResource {
|
|||
}
|
||||
|
||||
private Answer executeRequest(CreateNsxTier1GatewayCommand cmd) {
|
||||
String name = NsxControllerUtils.getTier1GatewayName(cmd.getDomainName(), cmd.getAccountName(), cmd.getZoneName(), cmd.getVpcName());
|
||||
String name = NsxControllerUtils.getTier1GatewayName(cmd.getDomainId(), cmd.getAccountId(), cmd.getZoneId(), cmd.getVpcId());
|
||||
try {
|
||||
nsxApiClient.createTier1Gateway(name, tier0Gateway, edgeCluster);
|
||||
return new NsxAnswer(cmd, true, "");
|
||||
} catch (CloudRuntimeException e) {
|
||||
LOGGER.error(String.format("Cannot create tier 1 gateway %s: %s", name, e.getMessage()));
|
||||
LOGGER.error(String.format("Cannot create tier 1 gateway %s (VPC: %s): %s", name, cmd.getVpcName(), e.getMessage()));
|
||||
return new NsxAnswer(cmd, e);
|
||||
}
|
||||
}
|
||||
|
||||
private Answer executeRequest(DeleteNsxTier1GatewayCommand cmd) {
|
||||
String tier1Id = NsxControllerUtils.getTier1GatewayName(cmd.getDomainName(), cmd.getAccountName(), cmd.getZoneName(), cmd.getVpcName());
|
||||
String tier1Id = NsxControllerUtils.getTier1GatewayName(cmd.getDomainId(), cmd.getAccountId(), cmd.getZoneId(), cmd.getVpcId());
|
||||
try {
|
||||
nsxApiClient.deleteTier1Gateway(tier1Id);
|
||||
} catch (Exception e) {
|
||||
|
|
@ -304,10 +306,10 @@ public class NsxResource implements ServerResource {
|
|||
return new NsxAnswer(cmd, new CloudRuntimeException(errorMsg));
|
||||
}
|
||||
|
||||
String segmentName = NsxControllerUtils.getNsxSegmentId(cmd.getDomainName(), cmd.getAccountName(), cmd.getZoneName(), cmd.getVpcName(), networkName);
|
||||
String segmentName = NsxControllerUtils.getNsxSegmentId(cmd.getDomainId(), cmd.getAccountId(), cmd.getZoneId(), cmd.getVpcId(), cmd.getNetworkId());
|
||||
String gatewayAddress = cmd.getNetworkGateway() + "/" + cmd.getNetworkCidr().split("/")[1];
|
||||
|
||||
nsxApiClient.createSegment(cmd.getZoneName(), cmd.getDomainName(), cmd.getAccountName(), cmd.getVpcName(),
|
||||
nsxApiClient.createSegment(cmd.getZoneId(), cmd.getDomainId(), cmd.getAccountId(), cmd.getVpcId(),
|
||||
segmentName, gatewayAddress, tier0Gateway, enforcementPointPath, transportZones);
|
||||
} catch (Exception e) {
|
||||
LOGGER.error(String.format("Failed to create network: %s", cmd.getNetworkName()));
|
||||
|
|
@ -317,10 +319,11 @@ public class NsxResource implements ServerResource {
|
|||
}
|
||||
|
||||
private NsxAnswer executeRequest(DeleteNsxSegmentCommand cmd) {
|
||||
String segmentName = NsxControllerUtils.getNsxSegmentId(cmd.getDomainName(), cmd.getAccountName(), cmd.getZoneName(), cmd.getVpcName(), cmd.getNetworkName());
|
||||
String segmentName = NsxControllerUtils.getNsxSegmentId(cmd.getDomainId(), cmd.getAccountId(), cmd.getZoneId(),
|
||||
cmd.getVpcId(), cmd.getNetworkId());
|
||||
try {
|
||||
Thread.sleep(30*1000);
|
||||
nsxApiClient.deleteSegment(cmd.getZoneName(), cmd.getDomainName(), cmd.getAccountName(), cmd.getVpcName(), cmd.getNetworkName(), segmentName);
|
||||
nsxApiClient.deleteSegment(cmd.getZoneId(), cmd.getDomainId(), cmd.getAccountId(), cmd.getVpcId(), cmd.getNetworkId(), segmentName);
|
||||
} catch (Exception e) {
|
||||
LOGGER.error(String.format("Failed to delete NSX segment: %s", segmentName));
|
||||
return new NsxAnswer(cmd, new CloudRuntimeException(e.getMessage()));
|
||||
|
|
|
|||
|
|
@ -249,7 +249,7 @@ public class NsxApiClient {
|
|||
}
|
||||
}
|
||||
|
||||
public void createSegment(String zoneName, String domainName, String accountName, String vpcName, String segmentName, String gatewayAddress, String tier0Gateway, String enforcementPointPath, List<TransportZone> transportZones) {
|
||||
public void createSegment(long zoneId, long domainId, long accountId, Long vpcId, String segmentName, String gatewayAddress, String tier0Gateway, String enforcementPointPath, List<TransportZone> transportZones) {
|
||||
try {
|
||||
Segments segmentService = (Segments) nsxService.apply(Segments.class);
|
||||
SegmentSubnet subnet = new SegmentSubnet.Builder()
|
||||
|
|
@ -259,8 +259,8 @@ public class NsxApiClient {
|
|||
.setResourceType(SEGMENT_RESOURCE_TYPE)
|
||||
.setId(segmentName)
|
||||
.setDisplayName(segmentName)
|
||||
.setConnectivityPath(isNull(vpcName) ? TIER_0_GATEWAY_PATH_PREFIX + tier0Gateway
|
||||
: TIER_1_GATEWAY_PATH_PREFIX + NsxControllerUtils.getTier1GatewayName(domainName, accountName, zoneName, vpcName))
|
||||
.setConnectivityPath(isNull(vpcId) ? TIER_0_GATEWAY_PATH_PREFIX + tier0Gateway
|
||||
: TIER_1_GATEWAY_PATH_PREFIX + NsxControllerUtils.getTier1GatewayName(domainId, accountId, zoneId, vpcId))
|
||||
.setAdminState(AdminState.UP.name())
|
||||
.setSubnets(List.of(subnet))
|
||||
.setTransportZonePath(enforcementPointPath + "/transport-zones/" + transportZones.get(0).getId())
|
||||
|
|
@ -274,13 +274,13 @@ public class NsxApiClient {
|
|||
}
|
||||
}
|
||||
|
||||
public void deleteSegment(String zoneName, String domainName, String accountName, String vpcName, String networkName, String segmentName) {
|
||||
public void deleteSegment(long zoneId, long domainId, long accountId, long vpcId, long networkId, String segmentName) {
|
||||
try {
|
||||
Segments segmentService = (Segments) nsxService.apply(Segments.class);
|
||||
LOGGER.debug(String.format("Removing the segment with ID %s", segmentName));
|
||||
segmentService.delete(segmentName);
|
||||
DhcpRelayConfigs dhcpRelayConfig = (DhcpRelayConfigs) nsxService.apply(DhcpRelayConfigs.class);
|
||||
String dhcpRelayConfigId = NsxControllerUtils.getNsxDhcpRelayConfigId(zoneName, domainName, accountName, vpcName, networkName);
|
||||
String dhcpRelayConfigId = NsxControllerUtils.getNsxDhcpRelayConfigId(zoneId, domainId, accountId, vpcId, networkId);
|
||||
LOGGER.debug(String.format("Removing the DHCP relay config with ID %s", dhcpRelayConfigId));
|
||||
dhcpRelayConfig.delete(dhcpRelayConfigId);
|
||||
} catch (Error error) {
|
||||
|
|
|
|||
|
|
@ -202,11 +202,11 @@ public class NsxElement extends AdapterBase implements DhcpServiceProvider, DnsS
|
|||
DataCenterVO zone = dataCenterDao.findById(network.getDataCenterId());
|
||||
DomainVO domain = domainDao.findById(account.getDomainId());
|
||||
if (Objects.isNull(zone)) {
|
||||
String msg = String.format("Cannot fing zone with ID %s", network.getDataCenterId());
|
||||
String msg = String.format("Cannot find zone with ID %s", network.getDataCenterId());
|
||||
LOGGER.error(msg);
|
||||
throw new CloudRuntimeException(msg);
|
||||
}
|
||||
return nsxService.deleteNetwork(zone.getName(), account.getAccountName(), domain.getName(), networkVO);
|
||||
return nsxService.deleteNetwork(zone.getId(), account.getId(), domain.getId(), networkVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -287,7 +287,7 @@ public class NsxElement extends AdapterBase implements DhcpServiceProvider, DnsS
|
|||
}
|
||||
Account account = isNsxAndAccount.second();
|
||||
DomainVO domain = getDomainFromAccount(account);
|
||||
return nsxService.createVpcNetwork(vpc.getZoneId(), zone.getName(), account.getName(), domain.getName(), vpc.getName());
|
||||
return nsxService.createVpcNetwork(vpc.getZoneId(), account.getId(), domain.getId(), vpc.getId(), vpc.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -302,7 +302,7 @@ public class NsxElement extends AdapterBase implements DhcpServiceProvider, DnsS
|
|||
}
|
||||
Account account = isNsxAndAccount.second();
|
||||
DomainVO domain = getDomainFromAccount(account);
|
||||
return nsxService.deleteVpcNetwork(vpc.getZoneId(), zone.getName(), account.getName(), domain.getName(), vpc.getName());
|
||||
return nsxService.deleteVpcNetwork(vpc.getZoneId(), account.getId(), domain.getId(), vpc.getId(), vpc.getName());
|
||||
}
|
||||
|
||||
private Pair<Boolean, Account> validateVpcConfigurationAndGetAccount(DataCenterVO zone, Vpc vpc) {
|
||||
|
|
|
|||
|
|
@ -34,27 +34,28 @@ public class NsxServiceImpl implements NsxService {
|
|||
@Inject
|
||||
VpcDao vpcDao;
|
||||
|
||||
public boolean createVpcNetwork(Long zoneId, String zoneName, String accountName, String domainName, String vpcName) {
|
||||
public boolean createVpcNetwork(Long zoneId, long accountId, long domainId, long vpcId, String vpcName) {
|
||||
CreateNsxTier1GatewayCommand createNsxTier1GatewayCommand =
|
||||
new CreateNsxTier1GatewayCommand(domainName, accountName, zoneName, vpcName);
|
||||
new CreateNsxTier1GatewayCommand(domainId, accountId, zoneId, vpcId, vpcName);
|
||||
NsxAnswer result = nsxControllerUtils.sendNsxCommand(createNsxTier1GatewayCommand, zoneId);
|
||||
return result.getResult();
|
||||
}
|
||||
|
||||
public boolean deleteVpcNetwork(Long zoneId, String zoneName, String accountName, String domainName, String vpcName) {
|
||||
public boolean deleteVpcNetwork(Long zoneId, long accountId, long domainId, Long vpcId, String vpcName) {
|
||||
DeleteNsxTier1GatewayCommand deleteNsxTier1GatewayCommand =
|
||||
new DeleteNsxTier1GatewayCommand(domainName, accountName, zoneName, vpcName);
|
||||
new DeleteNsxTier1GatewayCommand(domainId, accountId, zoneId, vpcId, vpcName);
|
||||
NsxAnswer result = nsxControllerUtils.sendNsxCommand(deleteNsxTier1GatewayCommand, zoneId);
|
||||
return result.getResult();
|
||||
}
|
||||
|
||||
public boolean deleteNetwork(String zoneName, String accountName, String domainName, NetworkVO network) {
|
||||
public boolean deleteNetwork(long zoneId, long accountId, long domainId, NetworkVO network) {
|
||||
String vpcName = null;
|
||||
if (Objects.nonNull(network.getVpcId())) {
|
||||
VpcVO vpc = vpcDao.findById(network.getVpcId());
|
||||
vpcName = Objects.nonNull(vpc) ? vpc.getName() : null;
|
||||
}
|
||||
DeleteNsxSegmentCommand deleteNsxSegmentCommand = new DeleteNsxSegmentCommand(domainName, accountName, zoneName, vpcName, network.getName());
|
||||
DeleteNsxSegmentCommand deleteNsxSegmentCommand = new DeleteNsxSegmentCommand(domainId, accountId, zoneId,
|
||||
network.getVpcId(), vpcName, network.getId(), network.getName());
|
||||
NsxAnswer result = nsxControllerUtils.sendNsxCommand(deleteNsxSegmentCommand, network.getDataCenterId());
|
||||
return result.getResult();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,23 +56,23 @@ public class NsxControllerUtils {
|
|||
return (NsxAnswer) answer;
|
||||
}
|
||||
|
||||
public static String getTier1GatewayName(String domainName, String accountName, String zoneName, String vpcName) {
|
||||
return String.format("%s-%s-%s-%s", domainName, accountName, zoneName, vpcName);
|
||||
public static String getTier1GatewayName(long domainId, long accountId, long zoneId, long vpcId) {
|
||||
return String.format("D%s-A%s-Z%s-V%s", domainId, accountId, zoneId, vpcId);
|
||||
}
|
||||
|
||||
public static String getNsxSegmentId(String domainName, String accountName, String zoneName, String vpcName, String tierNetworkName) {
|
||||
String segmentName = String.format("%s-%s-%s-", domainName, accountName, zoneName);
|
||||
if (isNull(vpcName)) {
|
||||
return segmentName + tierNetworkName;
|
||||
public static String getNsxSegmentId(long domainId, long accountId, long zoneId, Long vpcId, long networkId) {
|
||||
String segmentName = String.format("D%s-A%s-Z%s", domainId, accountId, zoneId);
|
||||
if (isNull(vpcId)) {
|
||||
return String.format("%s-S%s", segmentName, networkId);
|
||||
}
|
||||
return segmentName + vpcName + "-" + tierNetworkName;
|
||||
return String.format("%s-V%s-S%s",segmentName, vpcId, networkId);
|
||||
}
|
||||
|
||||
public static String getNsxDhcpRelayConfigId(String zoneName, String domainName, String accountName, String vpcName, String networkName) {
|
||||
String suffix = "-Relay";
|
||||
if (isNull(vpcName)) {
|
||||
return domainName + "-" + accountName + "-" + zoneName + "-" +networkName + suffix;
|
||||
public static String getNsxDhcpRelayConfigId(long zoneId, long domainId, long accountId, Long vpcId, long networkId) {
|
||||
String suffix = "Relay";
|
||||
if (isNull(vpcId)) {
|
||||
return String.format("D%s-A%s-Z%s-S%s-%s", domainId, accountId, zoneId, networkId, suffix);
|
||||
}
|
||||
return String.format("%s-%s-%s-%s-%s%s", domainName, accountName, zoneName, vpcName, networkName, suffix);
|
||||
return String.format("D%s-A%s-Z%s-V%s-S%s-%s", domainId, accountId, zoneId, vpcId, networkId, suffix);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,12 +30,12 @@ import java.util.List;
|
|||
public class NsxHelper {
|
||||
|
||||
public static CreateNsxDhcpRelayConfigCommand createNsxDhcpRelayConfigCommand(DomainVO domain, Account account, DataCenter zone, VpcVO vpc, Network network, List<String> addresses) {
|
||||
return new CreateNsxDhcpRelayConfigCommand(domain.getName(), account.getAccountName(), zone.getName(),
|
||||
vpc.getName(), network.getName(), addresses);
|
||||
return new CreateNsxDhcpRelayConfigCommand(domain.getId(), account.getId(), zone.getId(),
|
||||
vpc.getId(), vpc.getName(), network.getId(), network.getName(), addresses);
|
||||
}
|
||||
|
||||
public static CreateNsxSegmentCommand createNsxSegmentCommand(DomainVO domain, Account account, DataCenter zone, String vpcName, NetworkVO networkVO) {
|
||||
return new CreateNsxSegmentCommand(domain.getName(), account.getAccountName(), zone.getName(),
|
||||
vpcName, networkVO.getName(), networkVO.getGateway(), networkVO.getCidr());
|
||||
return new CreateNsxSegmentCommand(domain.getId(), account.getId(), zone.getId(),
|
||||
networkVO.getVpcId(), vpcName, networkVO.getId(), networkVO.getName(), networkVO.getGateway(), networkVO.getCidr());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,8 +105,8 @@ public class NsxResourceTest {
|
|||
|
||||
@Test
|
||||
public void testCreateNsxTier1Gateway() {
|
||||
NsxCommand command = new CreateNsxTier1GatewayCommand("testDomain", "testAcc",
|
||||
"ZoneNSX", "VPC01");
|
||||
NsxCommand command = new CreateNsxTier1GatewayCommand(1L, 2L,
|
||||
1L, 3L, "VPC01");
|
||||
|
||||
NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(command);
|
||||
assertTrue(answer.getResult());
|
||||
|
|
@ -114,8 +114,8 @@ public class NsxResourceTest {
|
|||
|
||||
@Test
|
||||
public void testDeleteTier1Gateway() {
|
||||
NsxCommand command = new DeleteNsxTier1GatewayCommand("testDomain", "testAcc",
|
||||
"ZoneNSX", "VPC01");
|
||||
NsxCommand command = new DeleteNsxTier1GatewayCommand(1L, 1L,
|
||||
1L, 2L, "VPC01");
|
||||
|
||||
NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(command);
|
||||
assertTrue(answer.getResult());
|
||||
|
|
@ -133,8 +133,8 @@ public class NsxResourceTest {
|
|||
List<EnforcementPoint> enforcementPointList = List.of(enforcementPoint);
|
||||
List<TransportZone> transportZoneList = List.of(new TransportZone.Builder().setDisplayName("Overlay").build());
|
||||
|
||||
NsxCommand command = new CreateNsxSegmentCommand("testDomain", "testAcc",
|
||||
"ZoneNSX", "VPC01", "Web", "10.10.10.1", "10.10.10.0/24");
|
||||
NsxCommand command = new CreateNsxSegmentCommand(1L, 1L,
|
||||
1L, 2L, "VPC01", 3L, "Web", "10.10.10.1", "10.10.10.0/24");
|
||||
|
||||
when(nsxApi.getSites()).thenReturn(siteListResult);
|
||||
when(siteListResult.getResults()).thenReturn(siteList);
|
||||
|
|
@ -155,7 +155,7 @@ public class NsxResourceTest {
|
|||
public void testDeleteNsxSegment() {
|
||||
NetworkVO tierNetwork = new NetworkVO();
|
||||
tierNetwork.setName("tier1");
|
||||
DeleteNsxSegmentCommand command = new DeleteNsxSegmentCommand("testDomain", "testAcc", "ZoneA", "VPC01", "Web");
|
||||
DeleteNsxSegmentCommand command = new DeleteNsxSegmentCommand(1L, 1L, 1L, 3L, "VPC01", 2L, "Web");
|
||||
|
||||
NsxAnswer answer = (NsxAnswer) nsxResource.executeRequest(command);
|
||||
assertTrue(answer.getResult());
|
||||
|
|
|
|||
|
|
@ -99,14 +99,11 @@ public class NsxElementTest {
|
|||
when(vpc.getZoneId()).thenReturn(1L);
|
||||
when(vpc.getAccountId()).thenReturn(2L);
|
||||
when(dataCenterVO.getId()).thenReturn(1L);
|
||||
when(dataCenterVO.getName()).thenReturn("zoneNSX");
|
||||
when(account.getName()).thenReturn("testAcc");
|
||||
when(vpc.getName()).thenReturn("VPC01");
|
||||
when(accountManager.getAccount(2L)).thenReturn(account);
|
||||
when(dataCenterDao.findById(anyLong())).thenReturn(dataCenterVO);
|
||||
when(domainDao.findById(anyLong())).thenReturn(domain);
|
||||
when(vpc.getZoneId()).thenReturn(1L);
|
||||
when(domain.getName()).thenReturn("testDomain");
|
||||
when(vpc.getName()).thenReturn("testVPC");
|
||||
|
||||
PhysicalNetworkVO physicalNetworkVO = new PhysicalNetworkVO();
|
||||
|
|
@ -118,14 +115,14 @@ public class NsxElementTest {
|
|||
|
||||
@Test
|
||||
public void testImplementVpc() throws ResourceUnavailableException, InsufficientCapacityException {
|
||||
when(nsxService.createVpcNetwork(anyLong(), anyString(), anyString(), anyString(), anyString())).thenReturn(true);
|
||||
when(nsxService.createVpcNetwork(anyLong(), anyLong(), anyLong(), anyLong(), anyString())).thenReturn(true);
|
||||
|
||||
assertTrue(nsxElement.implementVpc(vpc, deployDestination, reservationContext));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShutdownVpc() {
|
||||
when(nsxService.deleteVpcNetwork(anyLong(), anyString(), anyString(), anyString(), anyString())).thenReturn(true);
|
||||
when(nsxService.deleteVpcNetwork(anyLong(), anyLong(), anyLong(), anyLong(), anyString())).thenReturn(true);
|
||||
|
||||
assertTrue(nsxElement.shutdownVpc(vpc, reservationContext));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ public class NsxServiceImplTest {
|
|||
when(nsxControllerUtils.sendNsxCommand(any(CreateNsxTier1GatewayCommand.class), anyLong())).thenReturn(createNsxTier1GatewayAnswer);
|
||||
when(createNsxTier1GatewayAnswer.getResult()).thenReturn(true);
|
||||
|
||||
assertTrue(nsxService.createVpcNetwork(1L, "ZoneNSX", "testAcc", "testAcc", "VPC01"));
|
||||
assertTrue(nsxService.createVpcNetwork(1L, 3L, 2L, 5L, "VPC01"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -76,7 +76,7 @@ public class NsxServiceImplTest {
|
|||
when(nsxControllerUtils.sendNsxCommand(any(DeleteNsxTier1GatewayCommand.class), anyLong())).thenReturn(deleteNsxTier1GatewayAnswer);
|
||||
when(deleteNsxTier1GatewayAnswer.getResult()).thenReturn(true);
|
||||
|
||||
assertTrue(nsxService.deleteVpcNetwork(1L, "ZoneNSX", "testAcc", "testAcc", "VPC01"));
|
||||
assertTrue(nsxService.deleteVpcNetwork(1L, 2L, 3L, 10L, "VPC01"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -89,6 +89,6 @@ public class NsxServiceImplTest {
|
|||
when(nsxControllerUtils.sendNsxCommand(any(DeleteNsxSegmentCommand.class), anyLong())).thenReturn(deleteNsxSegmentAnswer);
|
||||
when(deleteNsxSegmentAnswer.getResult()).thenReturn(true);
|
||||
|
||||
assertTrue(nsxService.deleteNetwork("ZoneNSX", "testAcc", "testDomain", network));
|
||||
assertTrue(nsxService.deleteNetwork(1L, 3L, 5L, network));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ import com.cloud.network.vpc.VpcVO;
|
|||
import com.cloud.network.vpc.dao.VpcDao;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.AccountManager;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import org.apache.cloudstack.api.ApiConstants;
|
||||
import org.apache.cloudstack.backup.Backup;
|
||||
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
|
||||
|
|
@ -170,11 +171,20 @@ public abstract class HypervisorGuruBase extends AdapterBase implements Hypervis
|
|||
Account account = accountManager.getAccount(network.getAccountId());
|
||||
Domain domain = domainDao.findById(network.getDomainId());
|
||||
DataCenter zone = dcDao.findById(network.getDataCenterId());
|
||||
if (Objects.isNull(zone)) {
|
||||
throw new CloudRuntimeException(String.format("Failed to find zone with ID: %s", network.getDataCenterId()));
|
||||
}
|
||||
if (Objects.isNull(account)) {
|
||||
throw new CloudRuntimeException(String.format("Failed to find account with ID: %s", network.getAccountId()));
|
||||
}
|
||||
if (Objects.isNull(domain)) {
|
||||
throw new CloudRuntimeException(String.format("Failed to find domain with ID: %s", network.getDomainId()));
|
||||
}
|
||||
VpcVO vpc = null;
|
||||
if (Objects.nonNull(network) && Objects.nonNull(network.getVpcId())) {
|
||||
vpc = vpcDao.findById(network.getVpcId());
|
||||
}
|
||||
to.setNetworkSegmentName(getNetworkName(zone.getName(), domain.getName(), account.getAccountName(), vpc, network.getName()));
|
||||
to.setNetworkSegmentName(getNetworkName(zone.getId(), domain.getId(), account.getId(), vpc, network.getId()));
|
||||
|
||||
// Workaround to make sure the TO has the UUID we need for Nicira integration
|
||||
NicVO nicVO = nicDao.findById(profile.getId());
|
||||
|
|
@ -203,12 +213,12 @@ public abstract class HypervisorGuruBase extends AdapterBase implements Hypervis
|
|||
return to;
|
||||
}
|
||||
|
||||
private String getNetworkName(String zoneName, String domainName, String accountName, VpcVO vpc, String networkName) {
|
||||
String prefix = String.format("%s-%s-%s", domainName, accountName, zoneName);
|
||||
private String getNetworkName(long zoneId, long domainId, long accountId, VpcVO vpc, long networkId) {
|
||||
String prefix = String.format("D%s-A%s-Z%s", domainId, accountId, zoneId);
|
||||
if (Objects.isNull(vpc)) {
|
||||
return prefix + "-" + networkName;
|
||||
return prefix + "-S" + networkId;
|
||||
}
|
||||
return prefix + "-" + vpc.getName() + "-" + networkName;
|
||||
return prefix + "-V" + vpc.getId() + "-S" + networkId;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -974,7 +974,7 @@ public class HypervisorHostHelperTest {
|
|||
|
||||
@Test
|
||||
public void testPrepareNetwork() throws Exception {
|
||||
String networkName = "testAcc-VPC1-tier1";
|
||||
String networkName = "D1-A2-Z2-V8-S3";
|
||||
DynamicProperty property = new DynamicProperty();
|
||||
property.setVal(networkName);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue