diff options
author | Morten Tokle <mortent@yahooinc.com> | 2022-03-22 11:57:12 +0100 |
---|---|---|
committer | Morten Tokle <mortent@yahooinc.com> | 2022-03-22 11:57:12 +0100 |
commit | d0f72ba7b5a9dc1b798d4fd5d10edb1389e74d33 (patch) | |
tree | 75ea3c1e5ce739070df739f4e77f9764f7c72bab /controller-api/src/main/java | |
parent | 37925e563d403bdc2535a971757a6592bcb708d2 (diff) |
support project info
Diffstat (limited to 'controller-api/src/main/java')
3 files changed, 51 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 6ee5b5a314f..7dcfaf533d3 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 @@ -2,6 +2,8 @@ package com.yahoo.vespa.hosted.controller.api.integration.organization; +import com.yahoo.slime.Inspector; + import java.time.Duration; import java.util.Optional; @@ -100,4 +102,12 @@ public interface IssueHandler { */ boolean issueExists(Issue issue); + /** + * Returns information about project identified by the project key + * + * @param projectKey The project key to find information for + * @return Project info for project + * @throws RuntimeException exception if project not found + */ + ProjectInfo projectInfo(String projectKey); } 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 021f05f4d1f..257d2ff5e67 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 @@ -24,6 +24,7 @@ public class MockIssueHandler implements IssueHandler { private final Clock clock; private final AtomicLong counter = new AtomicLong(); private final Map<IssueId, MockIssue> issues = new HashMap<>(); + private final Map<String, ProjectInfo> projects = new HashMap<>(); @Inject @SuppressWarnings("unused") @@ -112,6 +113,11 @@ public class MockIssueHandler implements IssueHandler { return issues.values().stream().anyMatch(i -> i.issue.summary().equals(issue.summary())); } + @Override + public ProjectInfo projectInfo(String projectKey) { + return projects.get(projectKey); + } + public MockIssueHandler close(IssueId issueId) { issues.get(issueId).open = false; touch(issueId); @@ -137,6 +143,10 @@ public class MockIssueHandler implements IssueHandler { issues.get(issueId).updated = clock.instant(); } + public void addProject(String projectKey, ProjectInfo projectInfo) { + projects.put(projectKey, projectInfo); + } + private static class PropertyInfo { private List<List<User>> contacts = Collections.emptyList(); diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/ProjectInfo.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/ProjectInfo.java new file mode 100644 index 00000000000..8bf2ebfd092 --- /dev/null +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/ProjectInfo.java @@ -0,0 +1,31 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.hosted.controller.api.integration.organization; + +import java.util.Map; + +/** + * @author jvenstad + * @author mortent + */ +public class ProjectInfo { + + private final String id; + private final Map<String, String> componentIds; + + public ProjectInfo(String id, Map<String, String> componentIds) { + this.id = id; + this.componentIds = componentIds; + } + + public boolean hasComponent(String component) { + return componentIds.containsKey(component); + } + + public String id() { + return id; + } + + public Map<String, String> componentIds() { + return componentIds; + } +}
\ No newline at end of file |