Shahar Havivi has posted comments on this change.

Change subject: core: notification to the user that a new client tools are 
available
......................................................................


Patch Set 3:

(7 comments)

http://gerrit.ovirt.org/#/c/36556/3/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java:

Line 958:     //
Line 959:     public static void refreshVmsToolsVersion(Guid poolId, 
Set<String> isoList) {
Line 960:         List<VDSGroup> clusters = 
DbFacade.getInstance().getVdsGroupDao().getAllForStoragePool(poolId);
Line 961:         for (VDSGroup cluster: clusters) {
Line 962:             List<VM> vms = 
DbFacade.getInstance().getVmDao().getAllForVdsGroup(cluster.getId());
> how about adding a query to get all VMs in data-center?
Done
Line 963:             for (VM vm : vms) {
Line 964:                 if (vm.getAppList() != null && 
vm.getAppList().toLowerCase().contains("rhev-tools")) {
Line 965:                     Matcher m = 
TOOLS_PATTERN.matcher(vm.getAppList().toLowerCase());
Line 966:                     if (m.matches() && m.groupCount() > 0) {


Line 964:                 if (vm.getAppList() != null && 
vm.getAppList().toLowerCase().contains("rhev-tools")) {
Line 965:                     Matcher m = 
TOOLS_PATTERN.matcher(vm.getAppList().toLowerCase());
Line 966:                     if (m.matches() && m.groupCount() > 0) {
Line 967:                         GuestAgentStatus oldStatus = 
vm.getGuestAgentStatus();
Line 968:                         GuestAgentStatus currStatus = 
getAgentStatus(m.group(1), isoList);
> we can retrieve the guest-agent version from the iso list only once and not
Done
Line 969:                         if (oldStatus != currStatus) {
Line 970:                             vm.setGuestAgentStatus(currStatus);
Line 971:                             
DbFacade.getInstance().getVmDynamicDao().update(vm.getDynamicData());
Line 972:                         }


Line 967:                         GuestAgentStatus oldStatus = 
vm.getGuestAgentStatus();
Line 968:                         GuestAgentStatus currStatus = 
getAgentStatus(m.group(1), isoList);
Line 969:                         if (oldStatus != currStatus) {
Line 970:                             vm.setGuestAgentStatus(currStatus);
Line 971:                             
DbFacade.getInstance().getVmDynamicDao().update(vm.getDynamicData());
> I'm concerned because of possible races like:
Done
Line 972:                         }
Line 973:                     }
Line 974:                 }
Line 975:             }


Line 985:                     String isoVersion = m.group(1).replace('_', '.');
Line 986:                     if (toolsVersion.compareTo(isoVersion) < 0) {
Line 987:                         return GuestAgentStatus.UpdateNeeded;
Line 988:                     } else {
Line 989:                         retVal = GuestAgentStatus.Exists;
> can we return 'Exists' here or is there a reason to keep looping?
no... since it can be a new version later in the iteration
but its not relevant since I am changing the logic regarding comment #2
Line 990:                     }
Line 991:                 }
Line 992:             }
Line 993:         }


Line 991:                 }
Line 992:             }
Line 993:         }
Line 994:         return retVal;
Line 995:     }
> please add unit-tests
Added unit and dao tests


http://gerrit.ovirt.org/#/c/36556/3/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/GuestAgentStatus.java
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/GuestAgentStatus.java:

Line 5: 
Line 6: public enum GuestAgentStatus {
Line 7:     DoesntExist(0),
Line 8:     Exists(1),
Line 9:     UpdateNeeded(2);
> why did you choose to use an integer and not its name? I prefer to use the 
We have a lot of status as the value,
I prefer using int value because:
1. low on memory and performance (on each vm)
2. easier to rename the 'name' without effecting the DB
Line 10: 
Line 11:     private static final Map<Integer, GuestAgentStatus> mappings = new 
HashMap<Integer, GuestAgentStatus>();
Line 12:     private int value;
Line 13: 


http://gerrit.ovirt.org/#/c/36556/3/packaging/dbscripts/upgrade/03_06_0695_add_guest_agent_status_to_vm_dynamic.sql
File 
packaging/dbscripts/upgrade/03_06_0695_add_guest_agent_status_to_vm_dynamic.sql:

Line 1: -- add guest_agent_status Enum field to vm_dynamic
Line 2: -- values can be:
Line 3: --   0 Exists
Line 4: --   1 DoesntExist
> the comment is wrong: 0 - DoesntExist, 1 - Exists so it will be clear that 
Done
Line 5: --   2 UpdateNeeded


-- 
To view, visit http://gerrit.ovirt.org/36556
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: If098422eb76295517022de1c7f716db354e7853e
Gerrit-PatchSet: 3
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Shahar Havivi <shav...@redhat.com>
Gerrit-Reviewer: Arik Hadas <aha...@redhat.com>
Gerrit-Reviewer: Eli Mesika <emes...@redhat.com>
Gerrit-Reviewer: Michal Skrivanek <michal.skriva...@redhat.com>
Gerrit-Reviewer: Shahar Havivi <shav...@redhat.com>
Gerrit-Reviewer: automat...@ovirt.org
Gerrit-Reviewer: oVirt Jenkins CI Server
Gerrit-HasComments: Yes
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to