Skip to content

Commit 17121cc

Browse files
committed
Send email when staged changes are restored back to new status
When rebuilding of staging ref fails and already staged changes are restore back to new status, now also email notification is sent. Fixes: QTQAINFRA-4329 Change-Id: Ie8a18b9c0a5ea3cc0898013f56861f4c388ef6aa Reviewed-by: Tor Arne Vestbø <[email protected]>
1 parent 87ffa94 commit 17121cc

File tree

3 files changed

+61
-31
lines changed

3 files changed

+61
-31
lines changed

src/main/java/com/googlesource/gerrit/plugins/qtcodereview/QtCommandBuildApprove.java

Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
2020
import com.google.gerrit.server.git.CodeReviewCommit;
2121
import com.google.gerrit.server.git.GitRepositoryManager;
22-
import com.google.gerrit.server.mail.send.MergedSender;
2322
import com.google.gerrit.server.notedb.ChangeNotes;
2423
import com.google.gerrit.server.permissions.PermissionBackend;
2524
import com.google.gerrit.server.permissions.PermissionBackendException;
@@ -67,10 +66,6 @@ class QtCommandBuildApprove extends SshCommand {
6766

6867
@Inject private GitRepositoryManager gitManager;
6968

70-
@Inject private MergedSender.Factory mergedSenderFactory;
71-
72-
@Inject QtBuildFailedSender.Factory qtBuildFailedSenderFactory;
73-
7469
@Inject private BatchUpdate.Factory updateFactory;
7570

7671
@Inject private PatchSetInserter.Factory patchSetInserterFactory;
@@ -81,6 +76,8 @@ class QtCommandBuildApprove extends SshCommand {
8176

8277
@Inject private QtUtil qtUtil;
8378

79+
@Inject private QtEmailSender qtEmailSender;
80+
8481
@Inject private QtChangeUpdateOp.Factory qtUpdateFactory;
8582

8683
private final ReentrantLock buildApproveLock = new ReentrantLock();
@@ -333,12 +330,12 @@ private void updateChanges(
333330
if (passed) {
334331
qtUtil.postChangeIntegrationPassEvent(change);
335332
sendMergeEvent(cd);
336-
sendMergedEmail(change.getId());
333+
qtEmailSender.sendMergedEmail(projectKey, change.getId(), user.getAccountId());
337334
logger.atInfo().log(
338335
"qtcodereview: staging-approve change %s merged into %s", change, destBranchKey);
339336
} else {
340337
qtUtil.postChangeIntegrationFailEvent(change);
341-
sendBuildFailedEmail(change.getId());
338+
qtEmailSender.sendBuildFailedEmail(projectKey, change.getId(), user.getAccountId(), message);
342339
logger.atInfo().log(
343340
"qtcodereview: staging-approve change %s rejected for %s", change, destBranchKey);
344341
}
@@ -389,27 +386,4 @@ private void readMessageParameter() throws UnloggedFailure {
389386
}
390387
}
391388

392-
private void sendMergedEmail(Change.Id changeId) {
393-
try {
394-
MergedSender mcm = mergedSenderFactory.create(projectKey, changeId);
395-
mcm.setFrom(user.getAccountId());
396-
mcm.send();
397-
} catch (Exception e) {
398-
logger.atWarning().log(
399-
"qtcodereview: staging-approve Merged notification not sent for %s %s", changeId, e);
400-
}
401-
}
402-
403-
private void sendBuildFailedEmail(Change.Id changeId) {
404-
try {
405-
QtBuildFailedSender cm = qtBuildFailedSenderFactory.create(projectKey, changeId);
406-
cm.setFrom(user.getAccountId());
407-
cm.setChangeMessage(message, TimeUtil.nowTs());
408-
cm.send();
409-
} catch (Exception e) {
410-
logger.atWarning().log(
411-
"qtcodereview: staging-approve Build Failed not sent notification for %s %s",
412-
changeId, e);
413-
}
414-
}
415389
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
//
2+
// Copyright (C) 2021 The Qt Company
3+
//
4+
5+
package com.googlesource.gerrit.plugins.qtcodereview;
6+
7+
import com.google.common.flogger.FluentLogger;
8+
import com.google.gerrit.entities.Account;
9+
import com.google.gerrit.entities.Change;
10+
import com.google.gerrit.entities.Project;
11+
import com.google.gerrit.server.mail.send.MergedSender;
12+
import com.google.gerrit.server.util.time.TimeUtil;
13+
import com.google.inject.Inject;
14+
import com.google.inject.Singleton;
15+
16+
@Singleton
17+
public class QtEmailSender {
18+
19+
@Inject private MergedSender.Factory mergedSenderFactory;
20+
21+
@Inject private QtBuildFailedSender.Factory qtBuildFailedSenderFactory;
22+
23+
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
24+
25+
public void sendMergedEmail(Project.NameKey projectKey, Change.Id changeId,
26+
Account.Id fromAccount) {
27+
try {
28+
MergedSender mcm = mergedSenderFactory.create(projectKey, changeId);
29+
mcm.setFrom(fromAccount);
30+
mcm.send();
31+
} catch (Exception e) {
32+
logger.atWarning().log("Merged notification not sent for %s %s", changeId, e);
33+
}
34+
}
35+
36+
public void sendBuildFailedEmail(Project.NameKey projectKey, Change.Id changeId,
37+
Account.Id fromAccount, String message) {
38+
try {
39+
QtBuildFailedSender cm = qtBuildFailedSenderFactory.create(projectKey, changeId);
40+
cm.setFrom(fromAccount);
41+
cm.setChangeMessage(message, TimeUtil.nowTs());
42+
cm.send();
43+
} catch (Exception e) {
44+
logger.atWarning().log("Build Failed not sent notification for %s %s", changeId, e);
45+
}
46+
}
47+
}

src/main/java/com/googlesource/gerrit/plugins/qtcodereview/QtUtil.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public class QtUtil {
9494
private final EventFactory eventFactory;
9595
private final QtCherryPickPatch qtCherryPickPatch;
9696
private final QtChangeUpdateOp.Factory qtUpdateFactory;
97+
private final QtEmailSender qtEmailSender;
9798

9899
@Inject
99100
QtUtil(
@@ -104,7 +105,8 @@ public class QtUtil {
104105
EventFactory eventFactory,
105106
DynamicItem<EventDispatcher> eventDispatcher,
106107
QtCherryPickPatch qtCherryPickPatch,
107-
QtChangeUpdateOp.Factory qtUpdateFactory) {
108+
QtChangeUpdateOp.Factory qtUpdateFactory,
109+
QtEmailSender qtEmailSender) {
108110
this.queryProvider = queryProvider;
109111
this.referenceUpdated = referenceUpdated;
110112
this.updateFactory = updateFactory;
@@ -113,6 +115,7 @@ public class QtUtil {
113115
this.eventFactory = eventFactory;
114116
this.qtCherryPickPatch = qtCherryPickPatch;
115117
this.qtUpdateFactory = qtUpdateFactory;
118+
this.qtEmailSender = qtEmailSender;
116119
}
117120

118121
public static class MergeConflictException extends Exception {
@@ -463,6 +466,12 @@ public void rebuildStagingBranch(
463466
logger.atSevere().log(
464467
"qtcodereview: staging ref rebuild. Failed to update change status %s", ex);
465468
}
469+
470+
for (ChangeData item : changes_staged) {
471+
Change change = item.change();
472+
qtEmailSender.sendBuildFailedEmail(projectKey, change.getId(), user.getAccountId(),
473+
message);
474+
}
466475
}
467476

468477
try {

0 commit comments

Comments
 (0)