summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <jonbratseth@yahoo.com>2017-09-15 15:45:31 +0200
committerGitHub <noreply@github.com>2017-09-15 15:45:31 +0200
commit147b113228e8df694e1bc37bed082fa90cd9df1f (patch)
treeb2ece2302f1aecd81cef6d87b6afc43088e39e82
parent368e3f9f4ec82ce31015e0cb8de5aa8e5f9fd30f (diff)
parentb2e303e8dde55fb2285a9be77afb7078505ca3a0 (diff)
Merge pull request #3425 from vespa-engine/jvenstad/support-initial-assignee
Add support for initial assignee for issues
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/Issues.java18
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentIssueReporter.java9
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));
}
}
}