summaryrefslogtreecommitdiffstats
path: root/controller-api
diff options
context:
space:
mode:
authorJon Marius Venstad <jonmv@users.noreply.github.com>2020-03-24 16:00:26 +0100
committerGitHub <noreply@github.com>2020-03-24 16:00:26 +0100
commit678383db15485b46d5d5b6aa9af57bd33a4cf740 (patch)
tree2936fa494e4e0a7fbc0263e5bfbea49c352fc1c7 /controller-api
parentf39a1c4d1d3a654e3be20d1177a7112ab1efee1d (diff)
Allow watchers for issues (#12689)
Diffstat (limited to 'controller-api')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueHandler.java9
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockIssueHandler.java11
2 files changed, 20 insertions, 0 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueHandler.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueHandler.java
index 80e23249daa..a49cee30015 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueHandler.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/IssueHandler.java
@@ -76,6 +76,15 @@ public interface IssueHandler {
boolean reassign(IssueId issueId, User assignee);
/**
+ * Reassign the issue with the given ID to the given user, and returns the outcome of this.
+ *
+ * @param issueId ID of the issue to be watched.
+ * @param watcher watcher to add to the issue.
+ * @return Whether adding the watcher was successful.
+ */
+ boolean addWatcher(IssueId issueId, String watcher);
+
+ /**
* Escalate an issue filed with the given property.
*
* @param issueId ID of the issue to escalate.
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockIssueHandler.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockIssueHandler.java
index deabbcabac8..cf0b467c790 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockIssueHandler.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MockIssueHandler.java
@@ -7,6 +7,7 @@ import java.net.URI;
import java.time.Clock;
import java.time.Duration;
import java.time.Instant;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -83,6 +84,12 @@ public class MockIssueHandler implements IssueHandler {
}
@Override
+ public boolean addWatcher(IssueId issueId, String watcher) {
+ issues.get(issueId).addWatcher(watcher);
+ return true;
+ }
+
+ @Override
public Optional<User> escalate(IssueId issueId, Contact contact) {
List<List<User>> contacts = getContactUsers(contact);
Optional<User> assignee = assigneeOf(issueId);
@@ -145,17 +152,21 @@ public class MockIssueHandler implements IssueHandler {
private Instant updated;
private boolean open;
private User assignee;
+ private List<String> watchers;
private MockIssue(Issue issue) {
this.issue = issue;
this.updated = clock.instant();
this.open = true;
this.assignee = issue.assignee().orElse(null);
+ this.watchers = new ArrayList<>();
}
public Issue issue() { return issue; }
public User assignee() { return assignee; }
public boolean isOpen() { return open; }
+ public List<String> watchers() { return List.copyOf(watchers); }
+ public void addWatcher(String watcher) { watchers.add(watcher); }
}