diff options
Diffstat (limited to 'controller-api')
8 files changed, 88 insertions, 6 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java index fe7beb538da..68ebc5e86aa 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/configserver/NodeRepoStats.java @@ -20,6 +20,6 @@ public class NodeRepoStats { public Load load() { return load; } public Load activeLoad() { return activeLoad; } - public List<ApplicationStats> applicationStats() { return applicationStats; } + public List<ApplicationStats> applicationStats() { return applicationStats; } } 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..dc8b22ac32d 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 @@ -100,4 +100,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/MailerException.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MailerException.java new file mode 100644 index 00000000000..0febc296fc8 --- /dev/null +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/organization/MailerException.java @@ -0,0 +1,14 @@ +// 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; + +/** + * MailerException wrap all possible Mailer implementation exceptions + * + * @author enygaard + */ +public class MailerException extends RuntimeException { + + public MailerException(Throwable ex) { + super(ex); + } +} 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 diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockMailer.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockMailer.java index 6050f238da7..cb2b76d845c 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockMailer.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockMailer.java @@ -12,9 +12,25 @@ import java.util.Map; public class MockMailer implements Mailer { public final Map<String, List<Mail>> mails = new HashMap<>(); + public final boolean blackhole; + + public MockMailer() { + this(false); + } + + MockMailer(boolean blackhole) { + this.blackhole = blackhole; + } + + public static MockMailer blackhole() { + return new MockMailer(true); + } @Override public void send(Mail mail) { + if (blackhole) { + return; + } for (String recipient : mail.recipients()) { mails.putIfAbsent(recipient, new ArrayList<>()); mails.get(recipient).add(mail); @@ -33,7 +49,10 @@ public class MockMailer implements Mailer { /** Returns the list of mails sent to the given recipient. Modifications affect the set of mails stored in this. */ public List<Mail> inbox(String recipient) { - return mails.get(recipient); + return mails.getOrDefault(recipient, List.of()); } + public void reset() { + mails.clear(); + } } diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java index 30a086a59a0..cc667175316 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java @@ -238,11 +238,11 @@ enum PathGroup { horizonProxy("/horizon/v1/{*}"), /** Paths used to list and request access to tenant resources */ - accessRequests(Matcher.tenant, "/application/v4/tenant/{tenant}/access/request/{*}"), + accessRequests(Matcher.tenant, "/application/v4/tenant/{tenant}/access/request/operator"), /** Paths used to approve requests to access tenant resources */ - accessRequestApproval(Matcher.tenant, "/application/v4/tenant/{tenant}/access/approve/{*}", - "/application/v4/tenant/{tenant}/access/managed/{*}"); + accessRequestApproval(Matcher.tenant, "/application/v4/tenant/{tenant}/access/approve/operator", + "/application/v4/tenant/{tenant}/access/managed/operator"); final List<String> pathSpecs; final List<Matcher> matchers; diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/Policy.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/Policy.java index 4d9a16c34f0..afecbf9d2e3 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/Policy.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/Policy.java @@ -190,7 +190,7 @@ enum Policy { accessRequests(Privilege.grant(Action.all()) .on(PathGroup.accessRequests, PathGroup.accessRequestApproval) - .in(SystemName.PublicCd)), + .in(SystemName.PublicCd, SystemName.Public)), /** Invoice management */ hostedAccountant(Privilege.grant(Action.all()) |