use of com.yahoo.vespa.applicationmodel.ApplicationInstanceReference in project vespa by vespa-engine.
the class OrchestratorImplTest method testGetHost.
@Test
public void testGetHost() throws Exception {
ClusterControllerClientFactory clusterControllerClientFactory = mock(ClusterControllerClientFactory.class);
StatusService statusService = mock(StatusService.class);
InstanceLookupService lookupService = mock(InstanceLookupService.class);
orchestrator = new OrchestratorImpl(clusterControllerClientFactory, statusService, new OrchestratorConfig(new OrchestratorConfig.Builder()), lookupService);
HostName hostName = new HostName("host.yahoo.com");
TenantId tenantId = new TenantId("tenant");
ApplicationInstanceId applicationInstanceId = new ApplicationInstanceId("applicationInstanceId");
ApplicationInstanceReference reference = new ApplicationInstanceReference(tenantId, applicationInstanceId);
ApplicationInstance applicationInstance = new ApplicationInstance(tenantId, applicationInstanceId, Stream.of(new ServiceCluster(new ClusterId("clusterId"), new ServiceType("serviceType"), Stream.of(new ServiceInstance(new ConfigId("configId1"), hostName, ServiceStatus.UP), new ServiceInstance(new ConfigId("configId2"), hostName, ServiceStatus.NOT_CHECKED)).collect(Collectors.toSet()))).collect(Collectors.toSet()));
when(lookupService.findInstanceByHost(hostName)).thenReturn(Optional.of(applicationInstance));
ReadOnlyStatusRegistry readOnlyStatusRegistry = mock(ReadOnlyStatusRegistry.class);
when(statusService.forApplicationInstance(reference)).thenReturn(readOnlyStatusRegistry);
when(readOnlyStatusRegistry.getHostStatus(hostName)).thenReturn(HostStatus.ALLOWED_TO_BE_DOWN);
Host host = orchestrator.getHost(hostName);
assertEquals(reference, host.getApplicationInstanceReference());
assertEquals(hostName, host.getHostName());
assertEquals(HostStatus.ALLOWED_TO_BE_DOWN, host.getHostStatus());
assertEquals(2, host.getServiceInstances().size());
}
use of com.yahoo.vespa.applicationmodel.ApplicationInstanceReference in project vespa by vespa-engine.
the class ModelGenerator method toServiceModel.
/**
* Create service model based primarily on super model.
*
* If the configServerhosts is non-empty, a config server application is added.
*/
ServiceModel toServiceModel(SuperModel superModel, Zone zone, List<String> configServerHosts, ServiceStatusProvider serviceStatusProvider) {
Map<ApplicationInstanceReference, ApplicationInstance> applicationInstances = new HashMap<>();
for (ApplicationInfo applicationInfo : superModel.getAllApplicationInfos()) {
ApplicationInstance applicationInstance = toApplicationInstance(applicationInfo, zone, serviceStatusProvider);
applicationInstances.put(applicationInstance.reference(), applicationInstance);
}
// The config server is part of the service model (but not super model)
if (!configServerHosts.isEmpty()) {
ConfigServerApplication configServerApplication = new ConfigServerApplication();
ApplicationInstance configServerApplicationInstance = configServerApplication.toApplicationInstance(configServerHosts);
applicationInstances.put(configServerApplicationInstance.reference(), configServerApplicationInstance);
}
return new ServiceModel(applicationInstances);
}
use of com.yahoo.vespa.applicationmodel.ApplicationInstanceReference in project vespa by vespa-engine.
the class OrchestratorUtil method parseAppInstanceReference.
/**
* Returns an ApplicationInstanceReference constructed from the serialized format used in the REST API.
*/
public static ApplicationInstanceReference parseAppInstanceReference(String restFormat) {
if (restFormat == null) {
throw new IllegalArgumentException("Could not construct instance id from null string");
}
Matcher matcher = APPLICATION_INSTANCE_REFERENCE_REST_FORMAT_PATTERN.matcher(restFormat);
if (!matcher.matches()) {
throw new IllegalArgumentException("Could not construct instance id from string \"" + restFormat + "\"");
}
TenantId tenantId = new TenantId(matcher.group(1));
ApplicationInstanceId applicationInstanceId = new ApplicationInstanceId(matcher.group(2));
return new ApplicationInstanceReference(tenantId, applicationInstanceId);
}
use of com.yahoo.vespa.applicationmodel.ApplicationInstanceReference in project vespa by vespa-engine.
the class ZookeeperStatusService method getAllSuspendedApplications.
@Override
public Set<ApplicationInstanceReference> getAllSuspendedApplications() {
try {
Set<ApplicationInstanceReference> resultSet = new HashSet<>();
// Return empty set if the base path does not exist
Stat stat = curator.framework().checkExists().forPath(APPLICATION_STATUS_BASE_PATH);
if (stat == null)
return resultSet;
// The path exist and we may have children
for (String appRefStr : curator.framework().getChildren().forPath(APPLICATION_STATUS_BASE_PATH)) {
ApplicationInstanceReference appRef = OrchestratorUtil.parseAppInstanceReference(appRefStr);
resultSet.add(appRef);
}
return resultSet;
} catch (Exception e) {
log.log(LogLevel.DEBUG, "Something went wrong while listing out applications in suspend.", e);
throw new RuntimeException(e);
}
}
use of com.yahoo.vespa.applicationmodel.ApplicationInstanceReference in project vespa by vespa-engine.
the class ServiceMonitorStub method getAllApplicationInstances.
@Override
public Map<ApplicationInstanceReference, ApplicationInstance> getAllApplicationInstances() {
// Convert apps information to the response payload to return
Map<ApplicationInstanceReference, ApplicationInstance> status = new HashMap<>();
for (Map.Entry<ApplicationId, MockDeployer.ApplicationContext> app : apps.entrySet()) {
Set<ServiceInstance> serviceInstances = new HashSet<>();
for (Node node : nodeRepository.getNodes(app.getValue().id(), Node.State.active)) {
serviceInstances.add(new ServiceInstance(new ConfigId("configid"), new HostName(node.hostname()), getHostStatus(node.hostname())));
}
Set<ServiceCluster> serviceClusters = new HashSet<>();
serviceClusters.add(new ServiceCluster(new ClusterId(app.getValue().clusterContexts().get(0).cluster().id().value()), new ServiceType("serviceType"), serviceInstances));
TenantId tenantId = new TenantId(app.getKey().tenant().value());
ApplicationInstanceId applicationInstanceId = new ApplicationInstanceId(app.getKey().application().value());
status.put(new ApplicationInstanceReference(tenantId, applicationInstanceId), new ApplicationInstance(tenantId, applicationInstanceId, serviceClusters));
}
return status;
}
Aggregations