Skip to content

Commit 647ea6e

Browse files
author
Alena Prokharchyk
committed
listNics API: added optional networkId parameter allowing to list nics by network id for the specific vm
1 parent 89a20d3 commit 647ea6e

7 files changed

Lines changed: 162 additions & 174 deletions

File tree

api/src/org/apache/cloudstack/api/command/user/vm/ListNicsCmd.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
import java.util.ArrayList;
2020
import java.util.List;
2121

22-
import org.apache.log4j.Logger;
23-
2422
import org.apache.cloudstack.api.APICommand;
2523
import org.apache.cloudstack.api.ApiCommandJobType;
2624
import org.apache.cloudstack.api.ApiConstants;
@@ -29,9 +27,11 @@
2927
import org.apache.cloudstack.api.Parameter;
3028
import org.apache.cloudstack.api.ServerApiException;
3129
import org.apache.cloudstack.api.response.ListResponse;
30+
import org.apache.cloudstack.api.response.NetworkResponse;
3231
import org.apache.cloudstack.api.response.NicResponse;
3332
import org.apache.cloudstack.api.response.UserVmResponse;
3433
import org.apache.cloudstack.context.CallContext;
34+
import org.apache.log4j.Logger;
3535

3636
import com.cloud.exception.ConcurrentOperationException;
3737
import com.cloud.exception.InsufficientCapacityException;
@@ -55,6 +55,9 @@ public class ListNicsCmd extends BaseListCmd {
5555
@Parameter(name = ApiConstants.VIRTUAL_MACHINE_ID, type = CommandType.UUID, entityType = UserVmResponse.class, required = true, description = "the ID of the vm")
5656
private Long vmId;
5757

58+
@Parameter(name = ApiConstants.NETWORK_ID, type = CommandType.UUID, entityType = NetworkResponse.class, description = "list nic of the specific vm's network")
59+
private Long networkId;
60+
5861
/////////////////////////////////////////////////////
5962
/////////////////// Accessors ///////////////////////
6063
/////////////////////////////////////////////////////
@@ -79,6 +82,10 @@ public Long getVmId() {
7982
return vmId;
8083
}
8184

85+
public Long getNetworkId() {
86+
return networkId;
87+
}
88+
8289
@Override
8390
public long getEntityOwnerId() {
8491
Account caller = CallContext.current().getCallingAccount();

engine/api/src/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ void implementNetworkElementsAndResources(DeployDestination dest, ReservationCon
208208

209209
boolean isSecondaryIpSetForNic(long nicId);
210210

211-
List<? extends Nic> listVmNics(Long vmId, Long nicId);
211+
List<? extends Nic> listVmNics(long vmId, Long nicId, Long networkId);
212212

213213
Nic savePlaceholderNic(Network network, String ip4Address, String ip6Address, Type vmType);
214214

engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java

Lines changed: 137 additions & 164 deletions
Large diffs are not rendered by default.

engine/schema/src/com/cloud/vm/dao/NicDao.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public interface NicDao extends GenericDao<NicVO, Long> {
6161

6262
NicVO findByIp4AddressAndNetworkIdAndInstanceId(long networkId, long instanceId, String ip4Address);
6363

64-
List<NicVO> listByVmIdAndNicId(Long vmId, Long nicId);
64+
List<NicVO> listByVmIdAndNicIdAndNtwkId(long vmId, Long nicId, Long networkId);
6565

6666
NicVO findByIp4AddressAndVmId(String ip4Address, long instance);
6767

engine/schema/src/com/cloud/vm/dao/NicDaoImpl.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,10 +244,17 @@ public NicVO findByIp4AddressAndNetworkIdAndInstanceId(long networkId, long inst
244244
}
245245

246246
@Override
247-
public List<NicVO> listByVmIdAndNicId(Long vmId, Long nicId) {
247+
public List<NicVO> listByVmIdAndNicIdAndNtwkId(long vmId, Long nicId, Long networkId) {
248248
SearchCriteria<NicVO> sc = AllFieldsSearch.create();
249249
sc.setParameters("instance", vmId);
250-
sc.setParameters("nicid", nicId);
250+
251+
if (nicId != null) {
252+
sc.setParameters("nicid", nicId);
253+
}
254+
255+
if (networkId != null) {
256+
sc.setParameters("network", networkId);
257+
}
251258
return listBy(sc);
252259
}
253260

server/src/com/cloud/network/NetworkServiceImpl.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3988,17 +3988,18 @@ public Network getNetwork(String networkUuid) {
39883988
public List<? extends Nic> listNics(ListNicsCmd cmd) {
39893989
Account caller = CallContext.current().getCallingAccount();
39903990
Long nicId = cmd.getNicId();
3991-
Long vmId = cmd.getVmId();
3991+
long vmId = cmd.getVmId();
3992+
Long networkId = cmd.getNetworkId();
39923993

39933994
UserVmVO userVm = _userVmDao.findById(vmId);
39943995

39953996
if (userVm == null) {
39963997
InvalidParameterValueException ex = new InvalidParameterValueException("Virtual mahine id does not exist");
3997-
ex.addProxyObject(vmId.toString(), "vmId");
3998+
ex.addProxyObject(Long.valueOf(vmId).toString(), "vmId");
39983999
throw ex;
39994000
}
40004001
_accountMgr.checkAccess(caller, null, true, userVm);
4001-
return _networkMgr.listVmNics(vmId, nicId);
4002+
return _networkMgr.listVmNics(vmId, nicId, networkId);
40024003
}
40034004

40044005
public List<NetworkGuru> getNetworkGurus() {

server/test/com/cloud/vpc/MockNetworkManagerImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -803,7 +803,7 @@ public boolean releaseSecondaryIpFromNic(long ipAddressId) {
803803
}
804804

805805
@Override
806-
public List<? extends Nic> listVmNics(Long vmId, Long nicId) {
806+
public List<? extends Nic> listVmNics(long vmId, Long nicId, Long networkId) {
807807
// TODO Auto-generated method stub
808808
return null;
809809
}

0 commit comments

Comments
 (0)