diff options
author | Jon Bratseth <jonbratseth@yahoo.com> | 2017-09-15 15:45:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-15 15:45:31 +0200 |
commit | 147b113228e8df694e1bc37bed082fa90cd9df1f (patch) | |
tree | b2ece2302f1aecd81cef6d87b6afc43088e39e82 | |
parent | 368e3f9f4ec82ce31015e0cb8de5aa8e5f9fd30f (diff) | |
parent | b2e303e8dde55fb2285a9be77afb7078505ca3a0 (diff) |
Merge pull request #3425 from vespa-engine/jvenstad/support-initial-assignee
Add support for initial assignee for issues
2 files changed, 17 insertions, 10 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/Issues.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/Issues.java index 6b7464b9ed0..8f24b4e3ede 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/Issues.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/Issues.java @@ -55,32 +55,36 @@ public interface Issues { private final String queue; private final String component; private final String label; + private final String assignee; - public Classification(String queue, String component, String label) { + public Classification(String queue, String component, String label, String assignee) { if (queue.isEmpty()) throw new IllegalArgumentException("Queue can not be empty!"); this.queue = queue; this.component = component; this.label = label; + this.assignee = assignee; } public Classification(String queue) { - this(queue, null, null); + this(queue, null, null, null); } - public Classification withComponent(String component) { return new Classification(queue, component, label); } - public Classification withLabel(String label) { return new Classification(queue, component, label); } + public Classification withComponent(String component) { return new Classification(queue, component, label, assignee); } + public Classification withLabel(String label) { return new Classification(queue, component, label, assignee); } + public Classification withAssignee(String assignee) { return new Classification(queue, component, label, assignee); } public String queue() { return queue; } public Optional<String> component() { return Optional.ofNullable(component); } public Optional<String> label() { return Optional.ofNullable(label); } + public Optional<String> assignee() { return Optional.ofNullable(assignee); } @Override public String toString() { - return - "Queue : " + queue() + "\n" + + return "Queue : " + queue() + "\n" + "Component : " + component() + "\n" + - "Label : " + label() + "\n"; + "Label : " + label() + "\n" + + "Assignee : " + assignee() + "\n"; } } diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporter.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporter.java index 11d259962d2..b2f010eeb79 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporter.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporter.java @@ -5,6 +5,7 @@ import com.yahoo.config.provision.ApplicationId; import com.yahoo.vespa.hosted.controller.Application; import com.yahoo.vespa.hosted.controller.Controller; import com.yahoo.vespa.hosted.controller.api.Tenant; +import com.yahoo.vespa.hosted.controller.api.application.v4.model.TenantType; import com.yahoo.vespa.hosted.controller.api.identifiers.PropertyId; import com.yahoo.vespa.hosted.controller.api.identifiers.TenantId; import com.yahoo.vespa.hosted.controller.api.integration.Contacts; @@ -40,7 +41,7 @@ public class DeploymentIssueReporter extends Maintainer { static final Duration maxFailureAge = Duration.ofDays(2); static final Duration maxInactivityAge = Duration.ofDays(4); static final String deploymentFailureLabel = "vespaDeploymentFailure"; - static final Classification vespaOps = new Classification("VESPA", "Services", deploymentFailureLabel); + static final Classification vespaOps = new Classification("VESPA", "Services", deploymentFailureLabel, null); static final UserContact terminalUser = new UserContact("frodelu", "Frode Lundgren", admin); private final Contacts contacts; @@ -85,7 +86,9 @@ public class DeploymentIssueReporter extends Maintainer { Classification applicationOwner = null; try { applicationTenant= ownerOf(application); - applicationOwner = jiraClassificationOf(applicationTenant); + applicationOwner = applicationTenant.tenantType() == TenantType.USER + ? vespaOps.withAssignee(applicationTenant.getId().id().replaceFirst("by-", "")) + : jiraClassificationOf(applicationTenant); fileFor(application, deploymentIssue.with(applicationOwner)); } catch (RuntimeException e) { // Catch errors due to inconsistent or missing data in Sherpa, OpsDB, JIRA, and send to ourselves. @@ -98,7 +101,7 @@ public class DeploymentIssueReporter extends Maintainer { applicationTenant.getPropertyId().get() + "&action=view] for your property was rejected by JIRA. Please check your spelling.")); else - fileFor(application, deploymentIssue.append(e.getMessage() + "\n\nAddressee:\n" + applicationOwner)); + fileFor(application, deploymentIssue.with(vespaOps).append(e.getMessage() + "\n\nAddressee:\n" + applicationOwner)); } } } |