use of com.yahoo.vespa.applicationmodel.ApplicationInstance in project vespa by vespa-engine.
the class ApplicationApiImplTest method testGetUpStorageNodesInGroupInClusterOrder.
@Test
public void testGetUpStorageNodesInGroupInClusterOrder() {
HostName hostName1 = new HostName("host1");
HostName hostName2 = new HostName("host2");
HostName hostName3 = new HostName("host3");
HostName hostName4 = new HostName("host4");
HostName hostName5 = new HostName("host5");
HostName hostName6 = new HostName("host6");
HostName hostName7 = new HostName("host7");
ApplicationInstance applicationInstance = modelUtils.createApplicationInstance(Arrays.asList(modelUtils.createServiceCluster("cluster-3", VespaModelUtil.STORAGENODE_SERVICE_TYPE, Arrays.asList(modelUtils.createServiceInstance("config-id-30", hostName1, ServiceStatus.UP), modelUtils.createServiceInstance("config-id-31", hostName2, ServiceStatus.UP))), modelUtils.createServiceCluster("cluster-1", VespaModelUtil.STORAGENODE_SERVICE_TYPE, Arrays.asList(modelUtils.createServiceInstance("config-id-10", hostName3, ServiceStatus.DOWN), modelUtils.createServiceInstance("config-id-11", hostName4, ServiceStatus.UP))), modelUtils.createServiceCluster("cluster-4", new ServiceType("service-type-4"), Arrays.asList(modelUtils.createServiceInstance("config-id-40", hostName1, ServiceStatus.UP), modelUtils.createServiceInstance("config-id-41", hostName2, ServiceStatus.UP), modelUtils.createServiceInstance("config-id-42", hostName3, ServiceStatus.UP), modelUtils.createServiceInstance("config-id-43", hostName5, ServiceStatus.UP))), modelUtils.createServiceCluster("cluster-2", VespaModelUtil.STORAGENODE_SERVICE_TYPE, Arrays.asList(modelUtils.createServiceInstance("config-id-20", hostName6, ServiceStatus.DOWN), modelUtils.createServiceInstance("config-id-21", hostName7, ServiceStatus.UP)))));
verifyUpStorageNodesInOrder(modelUtils.createApplicationApiImpl(applicationInstance, hostName1), hostName1);
verifyUpStorageNodesInOrder(modelUtils.createApplicationApiImpl(applicationInstance, hostName2), hostName2);
// host3 is DOWN
verifyUpStorageNodesInOrder(modelUtils.createApplicationApiImpl(applicationInstance, hostName3));
verifyUpStorageNodesInOrder(modelUtils.createApplicationApiImpl(applicationInstance, hostName4), hostName4);
// not a storage cluster
verifyUpStorageNodesInOrder(modelUtils.createApplicationApiImpl(applicationInstance, hostName5));
verifyUpStorageNodesInOrder(modelUtils.createApplicationApiImpl(applicationInstance, hostName1, hostName3), hostName1);
// For the node group (host1, host4), they both have an up storage node (service instance)
// with clusters (cluster-3, cluster-1) respectively, and so the order of the hosts are reversed
// (host4, host1) when sorted by the clusters.
verifyUpStorageNodesInOrder(modelUtils.createApplicationApiImpl(applicationInstance, hostName1, hostName4), hostName4, hostName1);
verifyUpStorageNodesInOrder(modelUtils.createApplicationApiImpl(applicationInstance, hostName1, hostName4, hostName5), hostName4, hostName1);
verifyUpStorageNodesInOrder(modelUtils.createApplicationApiImpl(applicationInstance, hostName1, hostName4, hostName5, hostName6), hostName4, hostName1);
verifyUpStorageNodesInOrder(modelUtils.createApplicationApiImpl(applicationInstance, hostName1, hostName4, hostName5, hostName7), hostName4, hostName7, hostName1);
}
use of com.yahoo.vespa.applicationmodel.ApplicationInstance in project vespa by vespa-engine.
the class ApplicationApiImplTest method testGetStorageNodesAllowedToBeDownInGroupInReverseClusterOrder.
@Test
public void testGetStorageNodesAllowedToBeDownInGroupInReverseClusterOrder() {
HostName allowedToBeDownHost1 = modelUtils.createNode("host1", HostStatus.ALLOWED_TO_BE_DOWN);
HostName noRemarksHost2 = modelUtils.createNode("host2", HostStatus.NO_REMARKS);
HostName allowedToBeDownHost3 = modelUtils.createNode("host3", HostStatus.ALLOWED_TO_BE_DOWN);
HostName allowedToBeDownHost4 = modelUtils.createNode("host4", HostStatus.ALLOWED_TO_BE_DOWN);
HostName noRemarksHost5 = modelUtils.createNode("host5", HostStatus.ALLOWED_TO_BE_DOWN);
HostName noRemarksHost6 = modelUtils.createNode("host6", HostStatus.NO_REMARKS);
HostName allowedToBeDownHost7 = modelUtils.createNode("host7", HostStatus.ALLOWED_TO_BE_DOWN);
ApplicationInstance applicationInstance = modelUtils.createApplicationInstance(Arrays.asList(modelUtils.createServiceCluster("cluster-4", VespaModelUtil.STORAGENODE_SERVICE_TYPE, Arrays.asList(modelUtils.createServiceInstance("config-id-40", allowedToBeDownHost1, ServiceStatus.UP), modelUtils.createServiceInstance("config-id-41", noRemarksHost2, ServiceStatus.DOWN))), modelUtils.createServiceCluster("cluster-1", new ServiceType("service-type-1"), Arrays.asList(modelUtils.createServiceInstance("config-id-10", allowedToBeDownHost1, ServiceStatus.UP), modelUtils.createServiceInstance("config-id-11", allowedToBeDownHost3, ServiceStatus.UP))), modelUtils.createServiceCluster("cluster-3", VespaModelUtil.STORAGENODE_SERVICE_TYPE, Arrays.asList(modelUtils.createServiceInstance("config-id-30", allowedToBeDownHost4, ServiceStatus.UP), modelUtils.createServiceInstance("config-id-31", noRemarksHost5, ServiceStatus.UP))), modelUtils.createServiceCluster("cluster-2", VespaModelUtil.STORAGENODE_SERVICE_TYPE, Arrays.asList(modelUtils.createServiceInstance("config-id-20", noRemarksHost6, ServiceStatus.UP), modelUtils.createServiceInstance("config-id-21", allowedToBeDownHost7, ServiceStatus.UP)))));
verifyStorageNodesAllowedToBeDown(modelUtils.createApplicationApiImpl(applicationInstance, allowedToBeDownHost1), allowedToBeDownHost1);
verifyStorageNodesAllowedToBeDown(modelUtils.createApplicationApiImpl(applicationInstance, noRemarksHost2));
verifyStorageNodesAllowedToBeDown(modelUtils.createApplicationApiImpl(applicationInstance, allowedToBeDownHost3));
verifyStorageNodesAllowedToBeDown(modelUtils.createApplicationApiImpl(applicationInstance, allowedToBeDownHost1, noRemarksHost6), allowedToBeDownHost1);
// allowedToBeDownHost4 is in cluster-3, while allowedToBeDownHost1 is in cluster-4, so allowedToBeDownHost4 should be ordered
// before allowedToBeDownHost1.
verifyStorageNodesAllowedToBeDown(modelUtils.createApplicationApiImpl(applicationInstance, allowedToBeDownHost1, noRemarksHost6, allowedToBeDownHost4), allowedToBeDownHost4, allowedToBeDownHost1);
verifyStorageNodesAllowedToBeDown(modelUtils.createApplicationApiImpl(applicationInstance, allowedToBeDownHost1, allowedToBeDownHost4, allowedToBeDownHost7), allowedToBeDownHost7, allowedToBeDownHost4, allowedToBeDownHost1);
verifyStorageNodesAllowedToBeDown(modelUtils.createApplicationApiImpl(applicationInstance, allowedToBeDownHost4, allowedToBeDownHost1, allowedToBeDownHost7), allowedToBeDownHost7, allowedToBeDownHost4, allowedToBeDownHost1);
}
use of com.yahoo.vespa.applicationmodel.ApplicationInstance in project vespa by vespa-engine.
the class InstanceResource method getInstance.
@GET
@Path("/{instanceId}")
@Produces(MediaType.APPLICATION_JSON)
public InstanceStatusResponse getInstance(@PathParam("instanceId") String instanceIdString) {
ApplicationInstanceReference instanceId = parseInstanceId(instanceIdString);
ApplicationInstance applicationInstance = instanceLookupService.findInstanceById(instanceId).orElseThrow(() -> new WebApplicationException(Response.status(Response.Status.NOT_FOUND).build()));
Set<HostName> hostsUsedByApplicationInstance = getHostsUsedByApplicationInstance(applicationInstance);
Map<HostName, HostStatus> hostStatusMap = getHostStatusMap(hostsUsedByApplicationInstance, statusService.forApplicationInstance(instanceId));
Map<HostName, String> hostStatusStringMap = OrchestratorUtil.mapValues(hostStatusMap, HostStatus::name);
return InstanceStatusResponse.create(applicationInstance, hostStatusStringMap);
}
use of com.yahoo.vespa.applicationmodel.ApplicationInstance in project vespa by vespa-engine.
the class OrchestratorImplTest method setUp.
@Before
public void setUp() throws Exception {
// Extract applications and hosts from dummy instance lookup service
Iterator<ApplicationInstance> iterator = DummyInstanceLookupService.getApplications().iterator();
ApplicationInstanceReference app1_ref = iterator.next().reference();
app1 = OrchestratorUtil.toApplicationId(app1_ref);
app1_host1 = DummyInstanceLookupService.getContentHosts(app1_ref).iterator().next();
app2 = OrchestratorUtil.toApplicationId(iterator.next().reference());
clustercontroller = new ClusterControllerClientFactoryMock();
orchestrator = new OrchestratorImpl(clustercontroller, new InMemoryStatusService(), new OrchestratorConfig(new OrchestratorConfig.Builder()), new DummyInstanceLookupService());
clustercontroller.setAllDummyNodesAsUp();
}
Aggregations