com.yahoo.vespa.hosted.controller.api.integration.archive.ArchiveService Maven / Gradle / Ivy
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.integration.archive;
import com.yahoo.component.Version;
import com.yahoo.config.provision.CloudAccount;
import com.yahoo.config.provision.TenantName;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.tenant.ArchiveAccess;
import java.net.URI;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Stream;
/**
* Service that manages archive storage URIs for tenant nodes.
*
* @author freva
* @author andreer
*/
public interface ArchiveService {
VespaManagedArchiveBucket createArchiveBucketFor(ZoneId zoneId);
void updatePolicies(ZoneId zoneId, Set buckets, Map authorizeAccessByTenantName);
boolean canAddTenantToBucket(ZoneId zoneId, VespaManagedArchiveBucket bucket);
Optional findEnclaveArchiveBucket(ZoneId zoneId, CloudAccount cloudAccount);
URI bucketURI(ZoneId zoneId, String bucketName);
/**
* @return the version of the template that was used during the last apply for the given cloud account,
* or {@link Version#emptyVersion} if the version tag was not present or invalid,
* or {@link Optional#empty()} if the we have no access to the cloud account (template probably not applied yet)
*/
Optional getEnclaveTemplateVersion(CloudAccount cloudAccount);
static Stream parseVersion(String versionString) {
try {
return Stream.of(Version.fromString(versionString));
} catch (IllegalArgumentException e) {
return Stream.empty();
}
}
}