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

Reply via email to