modify NSX resource naming convention

This commit is contained in:
Pearl Dsilva 2023-10-13 14:08:35 -04:00
parent 8337486fdc
commit 9fe5b3bddf
19 changed files with 181 additions and 100 deletions

View File

@ -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);
}

View File

@ -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");
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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()));

View File

@ -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) {

View File

@ -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) {

View File

@ -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();
}

View File

@ -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);
}
}

View File

@ -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());
}
}

View File

@ -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());

View File

@ -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));
}

View File

@ -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));
}
}

View File

@ -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;
}

View File

@ -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);