From 8e6d8a1cf35655523a34f0a3a0266981b447f194 Mon Sep 17 00:00:00 2001 From: dahn Date: Thu, 21 Dec 2017 12:21:45 +0000 Subject: [PATCH] CLOUDSTACK-9542: make listNics and ListUserVms return uniform NIC data (#2208) Makes listNics and ListUserVms return uniform NICs. --- .../src/com/cloud/api/ApiResponseHelper.java | 76 +++++++++++++------ .../api/query/dao/UserVmJoinDaoImpl.java | 55 ++++++++++---- 2 files changed, 93 insertions(+), 38 deletions(-) diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index e714acfdb40..19730d0fc9c 100644 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -3594,6 +3594,10 @@ public class ApiResponseHelper implements ResponseGenerator { return response; } + /** + * The resulting Response attempts to be in line with what is returned from + * @see com.cloud.api.query.dao.UserVmJoinDaoImpl#setUserVmResponse(ResponseView, UserVmResponse, UserVmJoinVO) + */ @Override public NicResponse createNicResponse(Nic result) { NicResponse response = new NicResponse(); @@ -3602,30 +3606,63 @@ public class ApiResponseHelper implements ResponseGenerator { UserVmJoinVO userVm = _entityMgr.findById(UserVmJoinVO.class, result.getInstanceId()); List nicExtraDhcpOptionVOs = _nicExtraDhcpOptionDao.listByNicId(result.getId()); + // The numbered comments are to keep track of the data returned from here and UserVmJoinDaoImpl.setUserVmResponse() + // the data can't be identical but some tidying up/unifying might be possible + /*1: nicUuid*/ response.setId(result.getUuid()); + /*2: networkUuid*/ response.setNetworkid(network.getUuid()); - + /*3: vmId*/ if (vm != null) { response.setVmId(vm.getUuid()); } if (userVm != null){ if (userVm.getTrafficType() != null) { + /*4: trafficType*/ response.setTrafficType(userVm.getTrafficType().toString()); } if (userVm.getGuestType() != null) { + /*5: guestType*/ response.setType(userVm.getGuestType().toString()); } } + /*6: ipAddress*/ response.setIpaddress(result.getIPv4Address()); - - List nicExtraDhcpOptionResponses = nicExtraDhcpOptionVOs - .stream() - .map(vo -> new NicExtraDhcpOptionResponse(Dhcp.DhcpOptionCode.valueOfInt(vo.getCode()).getName(), vo.getCode(), vo.getValue())) - .collect(Collectors.toList()); - - response.setExtraDhcpOptions(nicExtraDhcpOptionResponses); - + /*7: gateway*/ + response.setGateway(result.getIPv4Gateway()); + /*8: netmask*/ + response.setNetmask(result.getIPv4Netmask()); + /*9: networkName*/ + if(userVm != null && userVm.getNetworkName() != null) { + response.setNetworkName(userVm.getNetworkName()); + } + /*10: macAddress*/ + response.setMacAddress(result.getMacAddress()); + /*11: IPv6Address*/ + if (result.getIPv6Address() != null) { + response.setIp6Address(result.getIPv6Address()); + } + /*12: IPv6Gateway*/ + if (result.getIPv6Gateway() != null) { + response.setIp6Gateway(result.getIPv6Gateway()); + } + /*13: IPv6Cidr*/ + if (result.getIPv6Cidr() != null) { + response.setIp6Cidr(result.getIPv6Cidr()); + } + /*14: deviceId*/ + response.setDeviceId(String.valueOf(result.getDeviceId())); + /*15: broadcastURI*/ + if (result.getBroadcastUri() != null) { + response.setBroadcastUri(result.getBroadcastUri().toString()); + } + /*16: isolationURI*/ + if (result.getIsolationUri() != null) { + response.setIsolationUri(result.getIsolationUri().toString()); + } + /*17: default*/ + response.setIsDefault(result.isDefaultNic()); if (result.getSecondaryIp()) { List secondaryIps = ApiDBUtils.findNicSecondaryIps(result.getId()); if (secondaryIps != null) { @@ -3639,22 +3676,13 @@ public class ApiResponseHelper implements ResponseGenerator { response.setSecondaryIps(ipList); } } + /*18: extra dhcp options */ + List nicExtraDhcpOptionResponses = nicExtraDhcpOptionVOs + .stream() + .map(vo -> new NicExtraDhcpOptionResponse(Dhcp.DhcpOptionCode.valueOfInt(vo.getCode()).getName(), vo.getCode(), vo.getValue())) + .collect(Collectors.toList()); - response.setGateway(result.getIPv4Gateway()); - response.setNetmask(result.getIPv4Netmask()); - response.setMacAddress(result.getMacAddress()); - - if (result.getIPv6Address() != null) { - response.setIp6Address(result.getIPv6Address()); - } - - if (result.getIPv6Cidr() != null) { - response.setIp6Cidr(result.getIPv6Cidr()); - } - - response.setDeviceId(String.valueOf(result.getDeviceId())); - - response.setIsDefault(result.isDefaultNic()); + response.setExtraDhcpOptions(nicExtraDhcpOptionResponses); if (result instanceof NicVO){ if (((NicVO)result).getNsxLogicalSwitchUuid() != null){ diff --git a/server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java index c0eb222be16..f0a0a56e3c6 100644 --- a/server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java +++ b/server/src/com/cloud/api/query/dao/UserVmJoinDaoImpl.java @@ -324,6 +324,10 @@ public class UserVmJoinDaoImpl extends GenericDaoBaseWithTagInformation 0) { NicResponse nicResponse = new NicResponse(); + // The numbered comments are to keep track of the data returned from here and ApiResponseHelper.createNicResponse() + // the data can't be identical but some tidying up/unifying might be possible + /*1: nicUuid*/ nicResponse.setId(uvo.getNicUuid()); - nicResponse.setIpaddress(uvo.getIpAddress()); - nicResponse.setGateway(uvo.getGateway()); - nicResponse.setNetmask(uvo.getNetmask()); + /*2: networkUuid*/ nicResponse.setNetworkid(uvo.getNetworkUuid()); - nicResponse.setNetworkName(uvo.getNetworkName()); - nicResponse.setMacAddress(uvo.getMacAddress()); - nicResponse.setIp6Address(uvo.getIp6Address()); - nicResponse.setIp6Gateway(uvo.getIp6Gateway()); - nicResponse.setIp6Cidr(uvo.getIp6Cidr()); - if (uvo.getBroadcastUri() != null) { - nicResponse.setBroadcastUri(uvo.getBroadcastUri().toString()); - } - if (uvo.getIsolationUri() != null) { - nicResponse.setIsolationUri(uvo.getIsolationUri().toString()); - } + /*3: vmId makes no sense on a nested nic object so it is ommited here */ + if (uvo.getTrafficType() != null) { + /*4: trafficType*/ nicResponse.setTrafficType(uvo.getTrafficType().toString()); } if (uvo.getGuestType() != null) { + /*5: guestType*/ nicResponse.setType(uvo.getGuestType().toString()); } + /*6: ipAddress*/ + nicResponse.setIpaddress(uvo.getIpAddress()); + /*7: gateway*/ + nicResponse.setGateway(uvo.getGateway()); + /*8: netmask*/ + nicResponse.setNetmask(uvo.getNetmask()); + /*9: networkName*/ + nicResponse.setNetworkName(uvo.getNetworkName()); + /*10: macAddress*/ + nicResponse.setMacAddress(uvo.getMacAddress()); + /*11: IPv6Address*/ + nicResponse.setIp6Address(uvo.getIp6Address()); + /*12: IPv6Gateway*/ + nicResponse.setIp6Gateway(uvo.getIp6Gateway()); + /*13: IPv6Cidr*/ + nicResponse.setIp6Cidr(uvo.getIp6Cidr()); + /*14: deviceId*/ +// where do we find nicResponse.setDeviceId( +// this is probably not String.valueOf(uvo.getNicId())); as this is a db-id + /*15: broadcastURI*/ + if (uvo.getBroadcastUri() != null) { + nicResponse.setBroadcastUri(uvo.getBroadcastUri().toString()); + } + /*16: isolationURI*/ + if (uvo.getIsolationUri() != null) { + nicResponse.setIsolationUri(uvo.getIsolationUri().toString()); + } + /*17: default*/ nicResponse.setIsDefault(uvo.isDefaultNic()); List secondaryIps = ApiDBUtils.findNicSecondaryIps(uvo.getNicId()); if (secondaryIps != null) { @@ -380,6 +406,7 @@ public class UserVmJoinDaoImpl extends GenericDaoBaseWithTagInformation nicExtraDhcpOptionResponses = _nicExtraDhcpOptionDao.listByNicId(nic_id) .stream()