Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Merge branch 'nsx-integration' of https://github.com/apache/cloudstack …
…into nsx-refactor-update-offering
  • Loading branch information
Pearl1594 committed Oct 13, 2023
commit b564fdbd7ed2c631d004c08c2eed70cc73aed4ed
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@
import javax.naming.ConfigurationException;
import javax.persistence.EntityExistsException;

import com.cloud.domain.Domain;
import com.cloud.domain.dao.DomainDao;
import com.cloud.network.vpc.VpcVO;
import com.cloud.network.vpc.dao.VpcDao;
import com.cloud.user.dao.AccountDao;
Expand Down Expand Up @@ -392,6 +394,8 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
private AccountDao accountDao;
@Inject
private VpcDao vpcDao;
@Inject
private DomainDao domainDao;

VmWorkJobHandlerProxy _jobHandlerProxy = new VmWorkJobHandlerProxy(this);

Expand Down Expand Up @@ -1470,15 +1474,17 @@ public void orchestrateStart(final String vmUuid, final Map<VirtualMachineProfil
}
}

private void setVmNetworkDetails(VMInstanceVO vm, VirtualMachineTO vmTO) {
public void setVmNetworkDetails(VMInstanceVO vm, VirtualMachineTO vmTO) {
if (VirtualMachine.Type.User.equals(vm.getType())) {
List<UserVmJoinVO> userVmJoinVOs = userVmJoinDao.searchByIds(vm.getId());
Map<Long, String> networkToNetworkNameMap = new HashMap<>();
if (userVmJoinVOs != null && !userVmJoinVOs.isEmpty()) {
for (UserVmJoinVO userVmJoinVO : userVmJoinVOs) {
NetworkVO networkVO = _networkDao.findById(userVmJoinVO.getNetworkId());
Account acc = accountDao.findById(networkVO.getAccountId());
String networkName = acc.getAccountName() + "-" ;
Domain domain = domainDao.findById(networkVO.getDomainId());
DataCenter zone = _dcDao.findById(vm.getDataCenterId());
String networkName = domain.getName() + "-" + acc.getAccountName() + "-" + zone.getName() + "-";
if (Objects.isNull(networkVO.getVpcId())) {
networkName += networkVO.getName();
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,18 @@
import java.util.Random;
import java.util.stream.Collectors;

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.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.AccountVO;
import com.cloud.user.dao.AccountDao;
import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator;
import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
Expand Down Expand Up @@ -155,6 +167,16 @@ public class VirtualMachineManagerImplTest {
private UserVmDao userVmDaoMock;
@Mock
private UserVmVO userVmMock;
@Mock
private NetworkDao networkDao;
@Mock
private AccountDao accountDao;
@Mock
private DomainDao domainDao;
@Mock
private DataCenterDao dcDao;
@Mock
private VpcDao vpcDao;

@Before
public void setup() {
Expand Down Expand Up @@ -895,4 +917,41 @@ public void checkAndAttemptMigrateVmAcrossClusterNonValid() {
map.put(Mockito.mock(Volume.class), pool2);
virtualMachineManagerImpl.checkAndAttemptMigrateVmAcrossCluster(vm, destinationClusterId, map);
}

@Test
public void checkIfVmNetworkDetailsReturnedIsCorrect() {
VMInstanceVO vm = new VMInstanceVO(1L, 1L, "VM1", "i-2-2-VM",
VirtualMachine.Type.User, 1L, HypervisorType.KVM, 1L, 1L, 1L,
1L, false, false);

VirtualMachineTO vmTO = new VirtualMachineTO() {};
UserVmJoinVO userVm = new UserVmJoinVO();
NetworkVO networkVO = new NetworkVO();
AccountVO accountVO = new AccountVO();
DomainVO domainVO = new DomainVO();
domainVO.setName("testDomain");
DataCenterVO dataCenterVO = mock(DataCenterVO.class);
VpcVO vpcVO = new VpcVO();

networkVO.setAccountId(1L);
networkVO.setName("testNet");
networkVO.setVpcId(1L);

accountVO.setAccountName("testAcc");

vpcVO.setName("VPC1");


List<UserVmJoinVO> userVms = List.of(userVm);
Mockito.when(userVmJoinDaoMock.searchByIds(anyLong())).thenReturn(userVms);
Mockito.when(networkDao.findById(anyLong())).thenReturn(networkVO);
Mockito.when(accountDao.findById(anyLong())).thenReturn(accountVO);
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");
virtualMachineManagerImpl.setVmNetworkDetails(vm, vmTO);
assertEquals(vmTO.getNetworkIdToNetworkNameMap().size(), 1);
assertEquals(vmTO.getNetworkIdToNetworkNameMap().get(0L), "testDomain-testAcc-testZone-VPC1-testNet");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ public class CreateNsxDhcpRelayConfigCommand extends NsxCommand {
private String networkName;
private List<String> addresses;

public CreateNsxDhcpRelayConfigCommand(String zoneName, Long zoneId, String accountName, Long accountId,
public CreateNsxDhcpRelayConfigCommand(String domainName, String accountName, String zoneName,
String vpcName, String networkName, List<String> addresses) {
super(zoneName, zoneId, accountName, accountId);
super(domainName, accountName, zoneName);
this.vpcName = vpcName;
this.networkName = networkName;
this.addresses = addresses;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,38 @@
// under the License.
package org.apache.cloudstack.agent.api;

import com.cloud.network.dao.NetworkVO;

import java.util.Objects;

public class CreateNsxSegmentCommand extends CreateNsxTier1GatewayCommand {
private NetworkVO tierNetwork;
public CreateNsxSegmentCommand(String zoneName, Long zoneId, String accountName, Long accountId, String vpcName, NetworkVO tierNetwork) {
super(zoneName, zoneId, accountName, accountId, vpcName);
this.tierNetwork = tierNetwork;
public class CreateNsxSegmentCommand extends NsxCommand {

private String vpcName;
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);
this.vpcName = vpcName;
this.networkName = networkName;
this.networkGateway = networkGateway;
this.networkCidr = networkCidr;
}

public String getVpcName() {
return vpcName;
}

public String getNetworkName() {
return networkName;
}

public NetworkVO getTierNetwork() {
return tierNetwork;
public String getNetworkGateway() {
return networkGateway;
}

public void setTierNetwork(NetworkVO tierNetwork) {
this.tierNetwork = tierNetwork;
public String getNetworkCidr() {
return networkCidr;
}

@Override
Expand All @@ -41,11 +56,11 @@ public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
if (!super.equals(o)) return false;
CreateNsxSegmentCommand command = (CreateNsxSegmentCommand) o;
return Objects.equals(tierNetwork, command.tierNetwork);
return Objects.equals(networkName, command.networkName);
}

@Override
public int hashCode() {
return Objects.hash(super.hashCode(), tierNetwork);
return Objects.hash(super.hashCode(), networkName);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,15 @@
public class CreateNsxTier1GatewayCommand extends NsxCommand {
private String vpcName;

public CreateNsxTier1GatewayCommand(String zoneName, Long zoneId, String accountName, Long accountId, String vpcName) {
super(zoneName, zoneId, accountName, accountId);
public CreateNsxTier1GatewayCommand(String domainName, String accountName, String zoneName, String vpcName) {
super(domainName, accountName, zoneName);
this.vpcName = vpcName;
}

public String getVpcName() {
return vpcName;
}

public void setVpcName(String vpcName) {
this.vpcName = vpcName;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,22 @@
// under the License.
package org.apache.cloudstack.agent.api;

import com.cloud.network.dao.NetworkVO;
public class DeleteNsxSegmentCommand extends NsxCommand {

public class DeleteNsxSegmentCommand extends CreateNsxSegmentCommand {
public DeleteNsxSegmentCommand(String accountName, String vpcName, NetworkVO network) {
super(null, network.getDataCenterId(), accountName, network.getAccountId(), vpcName, network);
private String vpcName;
private String networkName;

public DeleteNsxSegmentCommand(String domainName, String accountName, String zoneName, String vpcName, String networkName) {
super(domainName, accountName, zoneName);
this.vpcName = vpcName;
this.networkName = networkName;
}

public String getVpcName() {
return vpcName;
}

public String getNetworkName() {
return networkName;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,16 @@
// under the License.
package org.apache.cloudstack.agent.api;

public class DeleteNsxTier1GatewayCommand extends CreateNsxTier1GatewayCommand {
public class DeleteNsxTier1GatewayCommand extends NsxCommand {

public DeleteNsxTier1GatewayCommand(String zoneName, Long zoneId, String accountName, Long accountId, String vpcName) {
super(zoneName, zoneId, accountName, accountId, vpcName);
private String vpcName;

public DeleteNsxTier1GatewayCommand(String domainName, String accountName, String zoneName, String vpcName) {
super(domainName, accountName, zoneName);
this.vpcName = vpcName;
}

public String getVpcName() {
return vpcName;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,48 +22,30 @@

public class NsxCommand extends Command {
private String zoneName;
private Long zoneId;
private String accountName;
private Long accountId;
private String domainName;

public NsxCommand(String zoneName, Long zoneId, String accountName, Long accountId) {
public NsxCommand() {
}

public NsxCommand(String domainName, String accountName, String zoneName) {
this.zoneName = zoneName;
this.zoneId = zoneId;
this.accountName = accountName;
this.accountId = accountId;
this.domainName = domainName;
}

public String getZoneName() {
return zoneName;
}

public void setZoneName(String zoneName) {
this.zoneName = zoneName;
}

public Long getZoneId() {
return zoneId;
}

public void setZoneId(Long zoneId) {
this.zoneId = zoneId;
}

public String getAccountName() {
return accountName;
}

public void setAccountName(String accountName) {
this.accountName = accountName;
}

public Long getAccountId() {
return accountId;
public String getDomainName() {
return domainName;
}

public void setAccountId(Long accountId) {
this.accountId = accountId;
}
@Override
public boolean executeInSequence() {
return false;
Expand All @@ -75,11 +57,11 @@ public boolean equals(Object o) {
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(zoneId, that.zoneId) && Objects.equals(accountName, that.accountName) && Objects.equals(accountId, that.accountId);
return Objects.equals(zoneName, that.zoneName) && Objects.equals(accountName, that.accountName) && Objects.equals(domainName, that.domainName);
}

@Override
public int hashCode() {
return Objects.hash(super.hashCode(), zoneName, zoneId, accountName, accountId);
return Objects.hash(super.hashCode(), zoneName, accountName, domainName);
}
}
Loading
You are viewing a condensed version of this merge commit. You can view the full changes here.