use of com.yahoo.vespa.hosted.controller.api.Tenant in project vespa by vespa-engine.
the class ApplicationApiHandler method toSlime.
private void toSlime(Cursor response, DeploymentId deploymentId, Deployment deployment, HttpRequest request) {
Cursor serviceUrlArray = response.setArray("serviceUrls");
controller.applications().getDeploymentEndpoints(deploymentId).ifPresent(endpoints -> endpoints.forEach(endpoint -> serviceUrlArray.addString(endpoint.toString())));
response.setString("nodes", withPath("/zone/v2/" + deploymentId.zoneId().environment() + "/" + deploymentId.zoneId().region() + "/nodes/v2/node/?&recursive=true&application=" + deploymentId.applicationId().tenant() + "." + deploymentId.applicationId().application() + "." + deploymentId.applicationId().instance(), request.getUri()).toString());
controller.zoneRegistry().getLogServerUri(deploymentId).ifPresent(elkUrl -> response.setString("elkUrl", elkUrl.toString()));
response.setString("yamasUrl", monitoringSystemUri(deploymentId).toString());
response.setString("version", deployment.version().toFullString());
response.setString("revision", deployment.applicationVersion().id());
response.setLong("deployTimeEpochMs", deployment.at().toEpochMilli());
controller.zoneRegistry().getDeploymentTimeToLive(deploymentId.zoneId()).ifPresent(deploymentTimeToLive -> response.setLong("expiryTimeEpochMs", deployment.at().plus(deploymentTimeToLive).toEpochMilli()));
controller.applications().get(deploymentId.applicationId()).flatMap(application -> application.deploymentJobs().projectId()).ifPresent(i -> response.setString("screwdriverId", String.valueOf(i)));
sourceRevisionToSlime(deployment.applicationVersion().source(), response);
// Cost
DeploymentCost appCost = deployment.calculateCost();
Cursor costObject = response.setObject("cost");
toSlime(appCost, costObject);
// Metrics
DeploymentMetrics metrics = deployment.metrics();
Cursor metricsObject = response.setObject("metrics");
metricsObject.setDouble("queriesPerSecond", metrics.queriesPerSecond());
metricsObject.setDouble("writesPerSecond", metrics.writesPerSecond());
metricsObject.setDouble("documentCount", metrics.documentCount());
metricsObject.setDouble("queryLatencyMillis", metrics.queryLatencyMillis());
metricsObject.setDouble("writeLatencyMillis", metrics.writeLatencyMillis());
}
use of com.yahoo.vespa.hosted.controller.api.Tenant in project vespa by vespa-engine.
the class TenantController method createUserTenant.
public Tenant createUserTenant(String userName) {
TenantId userTenantId = new UserId(userName).toTenantId();
try (Lock lock = lock(userTenantId)) {
Tenant tenant = Tenant.createUserTenant(userTenantId);
internalCreateTenant(tenant, Optional.empty());
return tenant;
}
}
use of com.yahoo.vespa.hosted.controller.api.Tenant in project vespa by vespa-engine.
the class TenantController method updateAthenzDomain.
private void updateAthenzDomain(Tenant updatedTenant, Optional<NToken> token) {
Tenant existingTenant = tenant(updatedTenant.getId()).get();
if (!existingTenant.isAthensTenant())
return;
AthenzDomain existingDomain = existingTenant.getAthensDomain().get();
AthenzDomain newDomain = updatedTenant.getAthensDomain().get();
if (existingDomain.equals(newDomain))
return;
Optional<Tenant> existingTenantWithNewDomain = tenantHaving(newDomain);
if (existingTenantWithNewDomain.isPresent())
throw new IllegalArgumentException("Could not set domain of " + updatedTenant + " to '" + newDomain + "':" + existingTenantWithNewDomain.get() + " already has this domain");
ZmsClient zmsClient = athenzClientFactory.createZmsClientWithAuthorizedServiceToken(token.get());
zmsClient.createTenant(newDomain);
List<Application> applications = controller.applications().asList(TenantName.from(existingTenant.getId().id()));
applications.forEach(a -> zmsClient.addApplication(newDomain, new com.yahoo.vespa.hosted.controller.api.identifiers.ApplicationId(a.id().application().value())));
applications.forEach(a -> zmsClient.deleteApplication(existingDomain, new com.yahoo.vespa.hosted.controller.api.identifiers.ApplicationId(a.id().application().value())));
zmsClient.deleteTenant(existingDomain);
log.info("Updated Athens domain for " + updatedTenant + " from " + existingDomain + " to " + newDomain);
}
Aggregations