mooli tayer has uploaded a new change for review. Change subject: tools: remove auxiliary email address from EventSender interface ......................................................................
tools: remove auxiliary email address from EventSender interface Change-Id: Ic69ff7541fca8347fb7cb85665934ca704fa9d06 Signed-off-by: Mooli Tayer <mta...@redhat.com> --- M backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/NotificationService.java M backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/utils/sender/EventSender.java M backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/utils/sender/mail/EventSenderMailImpl.java M packaging/dbscripts/create_views.sql 4 files changed, 43 insertions(+), 71 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/06/23106/1 diff --git a/backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/NotificationService.java b/backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/NotificationService.java index 2ef0400..aae8f58 100644 --- a/backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/NotificationService.java +++ b/backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/NotificationService.java @@ -85,7 +85,7 @@ int deletedRecords; try { connection = ds.getConnection(); - deleteStmt = connection.prepareStatement("delete from event_notification_hist where sent_at < ?"); + deleteStmt = connection.prepareStatement("DELETE FROM event_notification_hist WHERE sent_at < ?"); deleteStmt.setTimestamp(1, startDeleteFrom); deletedRecords = deleteStmt.executeUpdate(); } finally { @@ -113,16 +113,15 @@ try { connection = ds.getConnection(); statement = connection.prepareStatement( - "update audit_log set " + - "processed = 'true' " + - "where " + - "processed = 'false' " + - "and log_time < ?" + "UPDATE audit_log SET " + + "processed = 'true' " + + "WHERE " + + "processed = 'false' " + + "AND log_time < ?" ); statement.setTimestamp(1, ts); updatedRecords = statement.executeUpdate(); - } - finally { + } finally { DbUtils.closeQuietly(statement, connection); } @@ -144,8 +143,7 @@ // all of them: try { markOldEventsAsProcessed(); - } - catch (SQLException exception) { + } catch (SQLException exception) { throw new NotificationServiceException("Failed mark old events as processed.", exception); } } @@ -154,7 +152,7 @@ Connection connection = null; PreparedStatement ps = null; ResultSet rs = null; - List<EventAuditLogSubscriber> eventSubscribers = new ArrayList<>(); + List<EventAuditLogSubscriber> eventSubscribers = new ArrayList<>(); try { connection = ds.getConnection(); ps = @@ -169,33 +167,29 @@ } } catch (SQLException e) { - if (isConnectionException(e)){ + if (isConnectionException(e)) { handleQueryFailure(); } throw e; } finally { DbUtils.closeQuietly(rs, ps, connection); } - DbUser dbUser = null; - for (EventAuditLogSubscriber eventSubscriber:eventSubscribers) { - dbUser = getUserByUserId(eventSubscriber.getsubscriber_id()); - if (dbUser != null) { - EventSender method = - notificationMethodsMapper.getEventSender(eventSubscriber.getEventNotificationMethod()); - EventSenderResult sendResult = null; - try { - sendResult = method.send(eventSubscriber, dbUser.getEmail()); - } catch (Exception e) { - log.error("Failed to dispatch message", e); - sendResult = new EventSenderResult(); - sendResult.setSent(false); - sendResult.setReason(e.getMessage()); - } - addEventNotificationHistory(geteventNotificationHist(eventSubscriber, - sendResult.isSent(), - sendResult.getReason())); - updateAuditLogEventProcessed(eventSubscriber); + for (EventAuditLogSubscriber eventSubscriber : eventSubscribers) { + EventSender method = + notificationMethodsMapper.getEventSender(eventSubscriber.getEventNotificationMethod()); + EventSenderResult sendResult = null; + try { + sendResult = method.send(eventSubscriber); + } catch (Exception e) { + log.error("Failed to dispatch message", e); + sendResult = new EventSenderResult(); + sendResult.setSent(false); + sendResult.setReason(e.getMessage()); } + addEventNotificationHistory(geteventNotificationHist(eventSubscriber, + sendResult.isSent(), + sendResult.getReason())); + updateAuditLogEventProcessed(eventSubscriber); } } @@ -206,10 +200,10 @@ private void handleQueryFailure() { if (failedQueries == 0) { try { - for( EventAuditLogSubscriber failedQueriesEventSubscriber:failedQueriesEventSubscribers){ + for (EventAuditLogSubscriber failedQueriesEventSubscriber : failedQueriesEventSubscribers) { failedQueriesEventSubscriber.setlog_time(new Date()); failedQueriesEventSender. - send(failedQueriesEventSubscriber, failedQueriesEventSubscriber.getmethod_address()); + send(failedQueriesEventSubscriber); } } catch (Exception e) { log.error("Failed to dispatch query failure email message", e); @@ -229,7 +223,7 @@ PreparedStatement ps = null; try { connection = ds.getConnection(); - ps = connection.prepareStatement("update audit_log set processed = 'true' where audit_log_id = ?"); + ps = connection.prepareStatement("UPDATE audit_log SET processed = 'true' WHERE audit_log_id = ?"); ps.setLong(1, eventSubscriber.getaudit_log_id()); int updated = ps.executeUpdate(); if (updated != 1) { @@ -263,8 +257,8 @@ } private event_notification_hist geteventNotificationHist(EventAuditLogSubscriber eals, - boolean isNotified, - String reason) { + boolean isNotified, + String reason) { event_notification_hist eventHistory = new event_notification_hist(); eventHistory.setaudit_log_id(eals.getaudit_log_id()); eventHistory.setevent_name(eals.getevent_up_name()); @@ -276,37 +270,17 @@ return eventHistory; } - private DbUser getUserByUserId(Guid userId) throws SQLException { - // Using preparedStatement instead of STP GetUserByUserId to skip handling supporting dialects - // for MSSQL and PG. PG doesn't support parameter name which matches a column name. This is supported - // by the backend, since using a plan JDBC, bypassing this issue by prepared statement. - // in additional, required only partial email field of the DbUser - Connection connection = null; - Statement ps = null; - ResultSet rs = null; - DbUser dbUser = null; - try { - connection = ds.getConnection(); - ps = connection.createStatement(); - rs = ps.executeQuery(String.format("SELECT email FROM users WHERE user_id = '%s'", userId.toString())); - if (rs.next()) { - dbUser = new DbUser(); - dbUser.setId(userId); - dbUser.setEmail(rs.getString("email")); - } - } finally { - DbUtils.closeQuietly(rs, ps, connection); - } - return dbUser; - } - private EventAuditLogSubscriber getEventAuditLogSubscriber(ResultSet rs) throws SQLException { EventAuditLogSubscriber eals = new EventAuditLogSubscriber(); eals.setevent_type(rs.getInt("event_type")); eals.setsubscriber_id(Guid.createGuidFromStringDefaultEmpty(rs.getString("subscriber_id"))); eals.setevent_up_name(rs.getString("event_up_name")); eals.setEventNotificationMethod(EventNotificationMethod.valueOf(rs.getString("notification_method"))); - eals.setmethod_address(rs.getString("method_address")); + String methodAddress = rs.getString("method_address"); + if (methodAddress == null) { + + } + eals.setmethod_address(methodAddress); eals.settag_name(rs.getString("tag_name")); eals.setaudit_log_id(rs.getLong("audit_log_id")); eals.setuser_id(Guid.createGuidFromString(rs.getString("user_id"))); @@ -333,7 +307,7 @@ return; } List<EventAuditLogSubscriber> failedQueriesEventSubscribers = new LinkedList<>(); - for (String email:emailRecipients.split(",")){ + for (String email : emailRecipients.split(",")) { EventAuditLogSubscriber eals = new EventAuditLogSubscriber(); eals.setevent_type(MessageHelper.MessageType.alertMessage.getEventType()); eals.setevent_up_name("DATABASE_UNREACHABLE"); diff --git a/backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/utils/sender/EventSender.java b/backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/utils/sender/EventSender.java index dbaffcc..23f2632 100644 --- a/backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/utils/sender/EventSender.java +++ b/backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/utils/sender/EventSender.java @@ -10,10 +10,9 @@ * Sends a message which constructed by the implementing class to be send as a notification to the subscriber * @param eventData * contains data required for constructing a message - * @param methodAddress - * an alternate method address if not provided by {@link event_audit_log_subscriber.getmethod_address()} + * * @return the result of the notification send action */ - public EventSenderResult send(EventAuditLogSubscriber eventData, String methodAddress); + public EventSenderResult send(EventAuditLogSubscriber eventData); } diff --git a/backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/utils/sender/mail/EventSenderMailImpl.java b/backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/utils/sender/mail/EventSenderMailImpl.java index d2d8839..058d9b3 100644 --- a/backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/utils/sender/mail/EventSenderMailImpl.java +++ b/backend/manager/tools/src/main/java/org/ovirt/engine/core/notifier/utils/sender/mail/EventSenderMailImpl.java @@ -51,15 +51,12 @@ /** * {@link #EventSender} */ - public EventSenderResult send(EventAuditLogSubscriber eventData, String methodAddress) { + public EventSenderResult send(EventAuditLogSubscriber eventData) { EventSenderResult result = new EventSenderResult(); EventMessageContent message = new EventMessageContent(); message.prepareMessage(hostName, eventData, isBodyHtml); String recipient = eventData.getmethod_address(); - if (StringUtils.isEmpty(recipient)) { - recipient = methodAddress; - } if ( StringUtils.isEmpty(recipient) ) { log.error("Email recipient is not known, please check user table ( email ) or event_subscriber ( method_address ), unable to send email for subscriber " + eventData.getsubscriber_id() + ", message was " + message.getMessageSubject() + ":" + message.getMessageBody()); diff --git a/packaging/dbscripts/create_views.sql b/packaging/dbscripts/create_views.sql index 196a49b..839f658 100644 --- a/packaging/dbscripts/create_views.sql +++ b/packaging/dbscripts/create_views.sql @@ -910,22 +910,24 @@ AS SELECT 1 as event_type, event_subscriber_1.subscriber_id as subscriber_id, event_subscriber_1.event_up_name as event_up_name, event_subscriber_1.notification_method as notification_method, - event_subscriber_1.method_address as method_address, event_subscriber_1.tag_name as tag_name, audit_log_1.audit_log_id as audit_log_id, audit_log_1.user_id as user_id, audit_log_1.user_name as user_name, + event_subscriber_1.method_address as method_address, event_subscriber_1.tag_name as tag_name, users.email as email, audit_log_1.audit_log_id as audit_log_id, audit_log_1.user_id as user_id, audit_log_1.user_name as user_name, audit_log_1.vm_id as vm_id, audit_log_1.vm_name as vm_name, audit_log_1.vm_template_id as vm_template_id, audit_log_1.vm_template_name as vm_template_name, audit_log_1.vds_id as vds_id, audit_log_1.vds_name as vds_name, audit_log_1.storage_pool_id as storage_pool_id, audit_log_1.storage_pool_name as storage_pool_name, audit_log_1.storage_domain_id as storage_domain_id, audit_log_1.storage_domain_name as storage_domain_name, audit_log_1.log_time as log_time, audit_log_1.severity as severity, audit_log_1.message as message FROM audit_log AS audit_log_1 INNER JOIN event_subscriber AS event_subscriber_1 ON audit_log_1.log_type_name = event_subscriber_1.event_up_name +INNER JOIN users ON event_subscriber_1.subscriber_id = users.user_id WHERE (audit_log_1.processed = false) UNION SELECT distinct 0 as event_type, event_subscriber.subscriber_id as subscriber_id, audit_log.log_type_name as event_up_name, event_subscriber.notification_method as notification_method, event_subscriber.method_address as method_address, - event_subscriber.tag_name as tag_name, audit_log.audit_log_id as audit_log_id, audit_log.user_id as user_id, audit_log.user_name as user_name, audit_log.vm_id as vm_id, audit_log.vm_name as vm_name, + event_subscriber.tag_name as tag_name, users_1.email as email, audit_log.audit_log_id as audit_log_id, audit_log.user_id as user_id, audit_log.user_name as user_name, audit_log.vm_id as vm_id, audit_log.vm_name as vm_name, audit_log.vm_template_id as vm_template_id, audit_log.vm_template_name as vm_template_name, audit_log.vds_id as vds_id, audit_log.vds_name as vds_name, audit_log.storage_pool_id as storage_pool_id, audit_log.storage_pool_name as storage_pool_name, audit_log.storage_domain_id as storage_domain_id, audit_log.storage_domain_name as storage_domain_name, audit_log.log_time as log_time, audit_log.severity as severity, audit_log.message as message FROM audit_log AS audit_log INNER JOIN event_map ON audit_log.log_type_name = event_map.event_down_name INNER JOIN event_subscriber AS event_subscriber ON event_subscriber.event_up_name = event_map.event_up_name +INNER JOIN users AS users_1 ON event_subscriber.subscriber_id = users_1.user_id WHERE (audit_log.processed = false); -- To view, visit http://gerrit.ovirt.org/23106 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic69ff7541fca8347fb7cb85665934ca704fa9d06 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: mooli tayer <mta...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches