Support for dislike warnings option
This options allows to either post -1 or 0 on patchset that has
warnings about files no longer being part of their component
Change-Id: Icc8e1933eb1d0b1eaf3de5ddc96f69baffbbccb4
Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
diff --git a/README.md b/README.md
index b328169..a080e7b 100644
--- a/README.md
+++ b/README.md
@@ -20,4 +20,5 @@
- autoaddreviewers = true - if true, automaticaly matchses pachset files under their component based of maintainers file configuration
- allowmaintainersubmit = true - if true, automaticaly post +2 on patch after all respective component maintainers have added +1
- autosubmit = true - if true, after previous step automaticaly submits patch
+ - dislikewarnings = true - if true, if any warnings are present, -1 review is posted on patch, no review otherwise
diff --git a/src/main/java/io/fd/maintainer/plugin/events/OnCommittersToBeAddedListener.java b/src/main/java/io/fd/maintainer/plugin/events/OnCommittersToBeAddedListener.java
index d0a2e90..a0df89f 100644
--- a/src/main/java/io/fd/maintainer/plugin/events/OnCommittersToBeAddedListener.java
+++ b/src/main/java/io/fd/maintainer/plugin/events/OnCommittersToBeAddedListener.java
@@ -125,7 +125,7 @@
final Set<WarningGenerator.ComponentChangeWarning> warnings =
generateComponentChangeWarnings(index, renamedEntryToComponentsIndex);
- warningPusher.sendWarnings(warnings, change, mostCurrentPatchSet, settings.getPluginUserName());
+ warningPusher.sendWarnings(warnings, change, mostCurrentPatchSet, settings);
LOG.info("Warnings for change {} successfully added", change.getId());
} catch (OrmException e) {
throw new IllegalStateException("Unable to open review DB", e);
diff --git a/src/main/java/io/fd/maintainer/plugin/service/SettingsProvider.java b/src/main/java/io/fd/maintainer/plugin/service/SettingsProvider.java
index 052874b..9c3f6fd 100644
--- a/src/main/java/io/fd/maintainer/plugin/service/SettingsProvider.java
+++ b/src/main/java/io/fd/maintainer/plugin/service/SettingsProvider.java
@@ -56,6 +56,9 @@
private static final String AUTO_SUBMIT = "autosubmit";
private static final boolean DEFAULT_AUTO_SUBMIT = false;
+ private static final String DISLIKE_WARNINGS = "dislikewarnings";
+ private static final boolean DEFAULT_DISLIKE_WARNINGS = false;
+
@Inject
private PluginConfigFactory cfg;
@@ -77,6 +80,7 @@
.setAllowMaintainersSubmit(allowMaintainersSubmitOrDefault(branchName, closestBranch))
.setAutoAddReviewers(autoAddReviewersOrDefault(branchName, closestBranch))
.setAutoSubmit(autoSubmitOrDefault(branchName, closestBranch))
+ .setDislikeWarnings(dislikeWarningsOrDefault(branchName, closestBranch))
.setBranch(globalPluginConfig().getSubsections(BRANCH_SECTION)
.stream()
.filter(subSection -> subSection.equals(branchName))
@@ -97,6 +101,10 @@
return getKey(branch, closesBranch, ALLOW_SUBMIT, DEFAULT_ALLOW_SUBMIT, Boolean::valueOf);
}
+ private Boolean dislikeWarningsOrDefault(final String branch, final String closesBranch){
+ return getKey(branch, closesBranch, DISLIKE_WARNINGS, DEFAULT_DISLIKE_WARNINGS, Boolean::valueOf);
+ }
+
private String fileNameRefOrDefault(final String branch, final String closesBranch) {
return getKey(branch, closesBranch, MAINTAINERS_FILE_REF, DEFAULT_MAINTAINERS_FILE_REF, String::valueOf);
}
diff --git a/src/main/java/io/fd/maintainer/plugin/service/dto/PluginBranchSpecificSettings.java b/src/main/java/io/fd/maintainer/plugin/service/dto/PluginBranchSpecificSettings.java
index 49960ab..4005a27 100644
--- a/src/main/java/io/fd/maintainer/plugin/service/dto/PluginBranchSpecificSettings.java
+++ b/src/main/java/io/fd/maintainer/plugin/service/dto/PluginBranchSpecificSettings.java
@@ -29,6 +29,7 @@
private final boolean allowMaintainersSubmit;
private final boolean autoAddReviewers;
private final boolean autoSubmit;
+ private final boolean dislikeWarnings;
private PluginBranchSpecificSettings(final String pluginUserName,
final String branch,
@@ -36,7 +37,8 @@
final String localFilePath,
final boolean allowMaintainersSubmit,
final boolean autoAddReviewers,
- final boolean autoSubmit) {
+ final boolean autoSubmit,
+ final boolean dislikeWarnings) {
this.pluginUserName = pluginUserName;
this.branch = branch;
this.fileRef = fileRef;
@@ -44,10 +46,7 @@
this.allowMaintainersSubmit = allowMaintainersSubmit;
this.autoAddReviewers = autoAddReviewers;
this.autoSubmit = autoSubmit;
- }
-
- public String getFileRef() {
- return fileRef;
+ this.dislikeWarnings = dislikeWarnings;
}
public String getLocalFilePath() {
@@ -74,14 +73,21 @@
return pluginUserName;
}
+ public boolean isDislikeWarnings() {
+ return dislikeWarnings;
+ }
+
@Override
public String toString() {
return "PluginBranchSpecificSettings{" +
- "branch='" + branch + '\'' +
+ "pluginUserName='" + pluginUserName + '\'' +
+ ", branch='" + branch + '\'' +
", fileRef='" + fileRef + '\'' +
", localFilePath='" + localFilePath + '\'' +
", allowMaintainersSubmit=" + allowMaintainersSubmit +
", autoAddReviewers=" + autoAddReviewers +
+ ", autoSubmit=" + autoSubmit +
+ ", dislikeWarnings=" + dislikeWarnings +
'}';
}
@@ -93,6 +99,7 @@
private boolean allowMaintainersSubmit;
private boolean autoAddReviewers;
private boolean autoSubmit;
+ private boolean dislikeWarnings;
private static String reduceWildcard(String input) {
return input.contains("*")
@@ -142,9 +149,14 @@
return this;
}
+ public PluginSettingsBuilder setDislikeWarnings(final boolean dislikeWarnings) {
+ this.dislikeWarnings = dislikeWarnings;
+ return this;
+ }
+
public PluginBranchSpecificSettings createPluginSettings() {
return new PluginBranchSpecificSettings(pluginUserName, branch, fileRef, localFilePath,
- allowMaintainersSubmit, autoAddReviewers, autoSubmit);
+ allowMaintainersSubmit, autoAddReviewers, autoSubmit, dislikeWarnings);
}
}
}
diff --git a/src/main/java/io/fd/maintainer/plugin/service/push/WarningPusher.java b/src/main/java/io/fd/maintainer/plugin/service/push/WarningPusher.java
index 464a016..e194988 100644
--- a/src/main/java/io/fd/maintainer/plugin/service/push/WarningPusher.java
+++ b/src/main/java/io/fd/maintainer/plugin/service/push/WarningPusher.java
@@ -33,6 +33,7 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
+import io.fd.maintainer.plugin.service.dto.PluginBranchSpecificSettings;
import io.fd.maintainer.plugin.util.CommonTasks;
import io.fd.maintainer.plugin.util.WarningGenerator;
import java.io.IOException;
@@ -71,7 +72,7 @@
public void sendWarnings(@Nonnull final Set<ComponentChangeWarning> comments,
@Nonnull final Change change,
@Nonnull final PatchSet patchSet,
- @Nonnull final String onBehalfOf) throws OrmException {
+ @Nonnull final PluginBranchSpecificSettings settings) throws OrmException {
if (comments.isEmpty()) {
LOG.warn("No warnings");
return;
@@ -81,9 +82,15 @@
ChangeResource changeResource = changesCollection.parse(change.getId());
final RevisionResource revisionResource = revisions.parse(changeResource, IdString.fromUrl("current"));
- ReviewInput review = ReviewInput.dislike()
- .message(formatComments(comments));// review -1
- review.onBehalfOf = onBehalfOf;
+ ReviewInput review;
+ if (settings.isDislikeWarnings()) {
+ review = ReviewInput.dislike();// review -1
+ } else {
+ review = ReviewInput.noScore();// review 0
+ }
+
+ review.message(formatComments(comments));
+ review.onBehalfOf = settings.getPluginUserName();
reviewProvider.get().apply(revisionResource, review);
} catch (IOException | RestApiException | UpdateException e) {