Ravi Nori has uploaded a new change for review. Change subject: restapi : IPv6 addresses don't appear in the guest agent information provided by RESTAPI ......................................................................
restapi : IPv6 addresses don't appear in the guest agent information provided by RESTAPI IPv6 address reported by ovirt-guest-agent is not reported in /api/vms/xxx response. Change-Id: I5d8bee11a607d4244cb4cd67007d60a56f738315 Bug-Url: https://bugzilla.redhat.com/1055556 Signed-off-by: Ravi Nori <rn...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmByVmIdQuery.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java 3 files changed, 32 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/48/23948/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmByVmIdQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmByVmIdQuery.java index 9b4069f..602d241 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmByVmIdQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmByVmIdQuery.java @@ -25,5 +25,6 @@ VmHandler.updateVmGuestAgentVersion(vm); VmHandler.updateNetworkInterfacesFromDb(vm); VmHandler.updateVmInitFromDB(vm.getStaticData(), true); + VmHandler.updateIpsFromGuestAgentInterfaces(vm, getUserID(), getParameters().isFiltered()); } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java index 7dfe9ff..8c2031b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java @@ -37,6 +37,7 @@ import org.ovirt.engine.core.common.businessentities.VmDevice; import org.ovirt.engine.core.common.businessentities.VmDeviceGeneralType; import org.ovirt.engine.core.common.businessentities.VmDynamic; +import org.ovirt.engine.core.common.businessentities.VmGuestAgentInterface; import org.ovirt.engine.core.common.businessentities.VmStatic; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.businessentities.network.VmNic; @@ -291,6 +292,26 @@ } } + /** + * Fetch the ipv6 address from GusetAgentInterface and set in VMs VmIP. + */ + public static void updateIpsFromGuestAgentInterfaces(VM vm, Guid userId, boolean filtered) { + final boolean hasIps = vm.getVmIp() != null && !vm.getVmIp().isEmpty(); + final boolean hasFqdn = vm.getVmFQDN() != null && !vm.getVmFQDN().isEmpty(); + if (hasIps || hasFqdn) { + List<VmGuestAgentInterface> guestAgentInterfaces = DbFacade.getInstance().getVmGuestAgentInterfaceDao() + .getAllForVm(vm.getId(), userId, filtered); + String DELIMITER = " "; + for (VmGuestAgentInterface guestAgentInterface : guestAgentInterfaces) { + if (guestAgentInterface.getIpv4Addresses().contains(vm.getVmIp())) { + vm.setVmIp(StringUtils.join(guestAgentInterface.getIpv4Addresses(), DELIMITER) + + DELIMITER + + StringUtils.join(guestAgentInterface.getIpv6Addresses(), DELIMITER)); + } + } + } + } + public static void addVmInitToDB(VmBase vm) { if (vm.getVmInit() != null) { vm.getVmInit().setId(vm.getId()); diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java index f6127fb..932ca33 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java @@ -7,6 +7,8 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.api.common.util.StatusUtils; @@ -402,6 +404,12 @@ final boolean hasIps = entity.getVmIp() != null && !entity.getVmIp().isEmpty(); final boolean hasFqdn = entity.getVmFQDN() != null && !entity.getVmFQDN().isEmpty(); if (hasIps || hasFqdn) { + final String PATTERN = + "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$"; + Pattern pattern = Pattern.compile(PATTERN); model.setGuestInfo(new GuestInfo()); if (hasFqdn) { @@ -414,6 +422,8 @@ if (!item.equals("")) { IP ip = new IP(); ip.setAddress(item.trim()); + Matcher matcher = pattern.matcher(ip.getAddress()); + ip.setVersion(matcher.matches() ? "ipv4" : "ipv6"); ips.getIPs().add(ip); } } -- To view, visit http://gerrit.ovirt.org/23948 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5d8bee11a607d4244cb4cd67007d60a56f738315 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Ravi Nori <rn...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches