Sahina Bose has posted comments on this change.

Change subject: engine:Sync gluster hooks
......................................................................


Patch Set 4: (21 inline comments)

Thanks Shireesh for the detailed review and comments. Have modified and tested 
code, patchset to follow

....................................................
File backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql
Line 142: select 
fn_db_add_config_value('GlusterVolumeOptionGroupVirtValue','virt','general');
Line 143: select 
fn_db_add_config_value('GlusterVolumeOptionOwnerUserVirtValue','36','general');
Line 144: select 
fn_db_add_config_value('GlusterVolumeOptionOwnerGroupVirtValue','36','general');
Line 145: select fn_db_add_config_value('GlusterRefreshRateHooks', '600', 
'general');
Line 146: select fn_db_add_config_value('GlusterHooksEnabled', 'true', '3.3');
Done
Line 147: select 
fn_db_add_config_value('GuestToolsSetupIsoPrefix','RHEV-toolsSetup_','general');
Line 148: select fn_db_add_config_value('HardwareInfoEnabled','false','3.0');
Line 149: select fn_db_add_config_value('HardwareInfoEnabled','false','3.1');
Line 150: select fn_db_add_config_value('HardwareInfoEnabled','true','3.2');


Line 142: select 
fn_db_add_config_value('GlusterVolumeOptionGroupVirtValue','virt','general');
Line 143: select 
fn_db_add_config_value('GlusterVolumeOptionOwnerUserVirtValue','36','general');
Line 144: select 
fn_db_add_config_value('GlusterVolumeOptionOwnerGroupVirtValue','36','general');
Line 145: select fn_db_add_config_value('GlusterRefreshRateHooks', '600', 
'general');
Line 146: select fn_db_add_config_value('GlusterHooksEnabled', 'true', '3.3');
Done.
Line 147: select 
fn_db_add_config_value('GuestToolsSetupIsoPrefix','RHEV-toolsSetup_','general');
Line 148: select fn_db_add_config_value('HardwareInfoEnabled','false','3.0');
Line 149: select fn_db_add_config_value('HardwareInfoEnabled','false','3.1');
Line 150: select fn_db_add_config_value('HardwareInfoEnabled','true','3.2');


....................................................
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterHookSyncJob.java
Line 40:         log.debug("Refreshing hooks list");
Line 41:         List<VDSGroup> clusters = getClusterDao().getAll();
Line 42: 
Line 43:         for (VDSGroup cluster : clusters) {
Line 44:             if (!cluster.supportsGlusterService() && 
GlusterFeatureSupported.glusterHooks(cluster.getcompatibility_version()))
Sure - will change
Line 45:             {
Line 46:                 break;
Line 47:             }
Line 48: 


Line 42: 
Line 43:         for (VDSGroup cluster : clusters) {
Line 44:             if (!cluster.supportsGlusterService() && 
GlusterFeatureSupported.glusterHooks(cluster.getcompatibility_version()))
Line 45:             {
Line 46:                 break;
Yes. my bad!
Line 47:             }
Line 48: 
Line 49:             List<VDS> upServers = 
getClusterUtils().getAllUpServers(cluster.getId());
Line 50: 


Line 44:             if (!cluster.supportsGlusterService() && 
GlusterFeatureSupported.glusterHooks(cluster.getcompatibility_version()))
Line 45:             {
Line 46:                 break;
Line 47:             }
Line 48: 
Done
Line 49:             List<VDS> upServers = 
getClusterUtils().getAllUpServers(cluster.getId());
Line 50: 
Line 51:             List<Callable<Pair<VDS, VDSReturnValue>>> taskList = new 
ArrayList<Callable<Pair<VDS, VDSReturnValue>>>();
Line 52:             for (final VDS upServer : upServers) {


Line 80: 
Line 81:         for (Pair<VDS, VDSReturnValue> pairResult : pairResults) {
Line 82:             VDS server = pairResult.getFirst();
Line 83:             if (!pairResult.getSecond().getSucceeded()) {
Line 84:                 log.infoFormat("Failed to get hooklist from server {0} 
with error {1} ", server, pairResult.getSecond().getVdsError());
Done
Line 85:                 logUtil.logServerMessage(server, 
AuditLogType.GLUSTER_HOOK_LIST_FAILED);
Line 86:                 break;
Line 87:             }
Line 88:             List<GlusterHookEntity> returnedHooks = 
(List<GlusterHookEntity>) pairResult.getSecond().getReturnValue();


Line 82:             VDS server = pairResult.getFirst();
Line 83:             if (!pairResult.getSecond().getSucceeded()) {
Line 84:                 log.infoFormat("Failed to get hooklist from server {0} 
with error {1} ", server, pairResult.getSecond().getVdsError());
Line 85:                 logUtil.logServerMessage(server, 
AuditLogType.GLUSTER_HOOK_LIST_FAILED);
Line 86:                 break;
Done
Line 87:             }
Line 88:             List<GlusterHookEntity> returnedHooks = 
(List<GlusterHookEntity>) pairResult.getSecond().getReturnValue();
Line 89: 
Line 90:             for (GlusterHookEntity retHook: returnedHooks) {


Line 84:                 log.infoFormat("Failed to get hooklist from server {0} 
with error {1} ", server, pairResult.getSecond().getVdsError());
Line 85:                 logUtil.logServerMessage(server, 
AuditLogType.GLUSTER_HOOK_LIST_FAILED);
Line 86:                 break;
Line 87:             }
Line 88:             List<GlusterHookEntity> returnedHooks = 
(List<GlusterHookEntity>) pairResult.getSecond().getReturnValue();
Done
Line 89: 
Line 90:             for (GlusterHookEntity retHook: returnedHooks) {
Line 91:                 HookKey key= 
HookKey.valueOf(retHook.getGlusterCommand(),retHook.getStage(),retHook.getName());
Line 92:                 GlusterHookEntity existingHook = 
existingHookMap.get(key);


Line 87:             }
Line 88:             List<GlusterHookEntity> returnedHooks = 
(List<GlusterHookEntity>) pairResult.getSecond().getReturnValue();
Line 89: 
Line 90:             for (GlusterHookEntity retHook: returnedHooks) {
Line 91:                 HookKey key= 
HookKey.valueOf(retHook.getGlusterCommand(),retHook.getStage(),retHook.getName());
When I initially started I had envisaged using HookKey class differently - 
thought I would need to retrieve command/stage from it too. But now what you 
are saying makes things much simpler. Thanks!
Line 92:                 GlusterHookEntity existingHook = 
existingHookMap.get(key);
Line 93: 
Line 94:                 addToReturnedHookKeyList(returnedHookKeyList, retHook);
Line 95: 


Line 90:             for (GlusterHookEntity retHook: returnedHooks) {
Line 91:                 HookKey key= 
HookKey.valueOf(retHook.getGlusterCommand(),retHook.getStage(),retHook.getName());
Line 92:                 GlusterHookEntity existingHook = 
existingHookMap.get(key);
Line 93: 
Line 94:                 addToReturnedHookKeyList(returnedHookKeyList, retHook);
Done
Line 95: 
Line 96:                 if (existingHook != null) {
Line 97:                     GlusterServerHook serverHook = 
getServerHookForServer(existingHook, server);
Line 98:                     // if null, insert serverhook


Line 97:                     GlusterServerHook serverHook = 
getServerHookForServer(existingHook, server);
Line 98:                     // if null, insert serverhook
Line 99:                     if (serverHook == null) {
Line 100:                         log.infoFormat("Adding new server hook {0} in 
server {1} ", key,server);
Line 101:                         
newServerHooks.add(buildServerHook(server.getId(), existingHook.getId(), 
retHook));
Adding ServerHook in DB for each server makes it easier to manage if we have to 
show list of server hooks. But as per discussion, we will only show conflicting 
hooks. So changing this
Line 102:                     } else {
Line 103:                     // if not null, compare to see if update required
Line 104:                         if 
(!(serverHook.getChecksum().equals(retHook.getChecksum()) && 
serverHook.getContentType().equals(retHook.getContentType())
Line 105:                              && 
serverHook.getStatus().equals(retHook.getStatus()))) {


Line 99:                     if (serverHook == null) {
Line 100:                         log.infoFormat("Adding new server hook {0} in 
server {1} ", key,server);
Line 101:                         
newServerHooks.add(buildServerHook(server.getId(), existingHook.getId(), 
retHook));
Line 102:                     } else {
Line 103:                     // if not null, compare to see if update required
Done
Line 104:                         if 
(!(serverHook.getChecksum().equals(retHook.getChecksum()) && 
serverHook.getContentType().equals(retHook.getContentType())
Line 105:                              && 
serverHook.getStatus().equals(retHook.getStatus()))) {
Line 106:                             
serverHook.setChecksum(retHook.getChecksum());
Line 107:                             
serverHook.setContentType(retHook.getContentType());


Line 100:                         log.infoFormat("Adding new server hook {0} in 
server {1} ", key,server);
Line 101:                         
newServerHooks.add(buildServerHook(server.getId(), existingHook.getId(), 
retHook));
Line 102:                     } else {
Line 103:                     // if not null, compare to see if update required
Line 104:                         if 
(!(serverHook.getChecksum().equals(retHook.getChecksum()) && 
serverHook.getContentType().equals(retHook.getContentType())
I will keep this for now. If needed will refactor later.
Line 105:                              && 
serverHook.getStatus().equals(retHook.getStatus()))) {
Line 106:                             
serverHook.setChecksum(retHook.getChecksum());
Line 107:                             
serverHook.setContentType(retHook.getContentType());
Line 108:                             serverHook.setStatus(retHook.getStatus());


Line 107:                             
serverHook.setContentType(retHook.getContentType());
Line 108:                             serverHook.setStatus(retHook.getStatus());
Line 109:                             updatedServerHooks.add(serverHook);
Line 110:                         }
Line 111: 
Done
Line 112:                     }
Line 113:                     Integer oldConflictValue = 
existingHook.getConflictStatus();
Line 114:                     existingHook = setConflict(existingHook, retHook);
Line 115:                     if 
(!oldConflictValue.equals(existingHook.getConflictStatus())) {


Line 120:                         hooksWithConflictChanges.put(key, 
existingHook);
Line 121:                     }
Line 122:                 } else {
Line 123:                     log.infoFormat("Adding new hook {0} in server {1} 
", key,server);
Line 124:                     existingHook = newHookMap.get(key);
Done
Line 125:                     if (existingHook == null) {
Line 126:                         existingHook = retHook;
Line 127:                         existingHook.setId(Guid.NewGuid());
Line 128:                     }


Line 200:     }
Line 201: 
Line 202:     private GlusterServerHook 
getServerHookForServer(GlusterHookEntity hook, VDS server) {
Line 203:         if (hook.getServerHooks() == null) {
Line 204:             
hook.setServerHooks(getHooksDao().getGlusterServerHooks(hook.getId()));
Yes, removing this method to use the dao call. Initially added this to avoid 
multiple db calls, but not sure if there's significant gain with only conflict 
hooks being stored.
Line 205:         }
Line 206:         for (GlusterServerHook serverHook: hook.getServerHooks()) {
Line 207:             if (serverHook.getServerId().equals(server.getId())) {
Line 208:                 return serverHook;


....................................................
File 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterJobsManager.java
Line 44:                 "refreshHooks",
Line 45:                 new Class[0],
Line 46:                 new Object[0],
Line 47:                 getGlusterRefreshRateHooks(),
Line 48:                 getGlusterRefreshRateHooks(),
Done
Line 49:                 TimeUnit.SECONDS);
Line 50: 
Line 51:     }
Line 52: 


....................................................
File 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterHookSyncJobTest.java
Line 157:         return cluster;
Line 158:     }
Line 159: 
Line 160:     @Test
Line 161:     public void syncHooks() {
Yes. will add
Line 162:         initMocks();
Line 163:         hookManager.refreshHooks();
Line 164:         Mockito.verify(hooksDao, 
times(1)).save(any(GlusterHookEntity.class));
Line 165:         //Mockito.verify(hooksDao, 
times(1)).saveGlusterServerHook(any(GlusterServerHook.class));


....................................................
File 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/ConfigValues.java
Line 1358: 
Line 1359: 
Line 1360:     @TypeConverterAttribute(Integer.class)
Line 1361:     @DefaultValueAttribute("600")
Line 1362:     GlusterRefreshRateHooks(503),
Done
Line 1363: 
Line 1364:     @TypeConverterAttribute(Boolean.class)
Line 1365:     @DefaultValueAttribute("false")
Line 1366:     GlusterHooksEnabled(504),


....................................................
File 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
Line 106:         severities.put(AuditLogType.GLUSTER_HOOK_ENABLE_FAILED, 
AuditLogSeverity.ERROR);
Line 107:         severities.put(AuditLogType.GLUSTER_HOOK_DISABLE, 
AuditLogSeverity.NORMAL);
Line 108:         severities.put(AuditLogType.GLUSTER_HOOK_DISABLE_PARTIAL, 
AuditLogSeverity.WARNING);
Line 109:         severities.put(AuditLogType.GLUSTER_HOOK_DISABLE_FAILED, 
AuditLogSeverity.ERROR);
Line 110:         severities.put(AuditLogType.GLUSTER_HOOK_LIST_FAILED, 
AuditLogSeverity.ERROR);
Done
Line 111:     }
Line 112: 
Line 113:     private static void initDefaultSeverities() {
Line 114:         severities.put(AuditLogType.UNASSIGNED, 
AuditLogSeverity.NORMAL);


....................................................
File 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/gluster/GlusterHooksDaoDbFacadeImpl.java
Line 74:                         .addValue("includeContent", false));
Line 75:         return glusterHook;
Line 76:     }
Line 77: 
Line 78:     public List<GlusterServerHook> getGlusterServerHooks(Guid hookId) {
Removing this method as not required any more
Line 79:         List<GlusterServerHook> serverHooks = 
getCallsHandler().executeReadList("GetGlusterServerHooksById", 
glusterServerHookRowMapper,
Line 80:                 createIdParameterMapper(hookId));
Line 81:         return serverHooks;
Line 82:     }


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

Gerrit-MessageType: comment
Gerrit-Change-Id: I2766edd4e810677a200cf5c45d334cabef5f2924
Gerrit-PatchSet: 4
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Sahina Bose <sab...@redhat.com>
Gerrit-Reviewer: Kanagaraj M <kmayi...@redhat.com>
Gerrit-Reviewer: Sahina Bose <sab...@redhat.com>
Gerrit-Reviewer: Shireesh Anjal <san...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to