new JsonObject() ); SchedulableTask schedulableTask= new SchedulableTask(clusterTask, taskConfig); provisionerQueues.add(tenantId, new Element(clusterTask.getTaskId(), gson.toJson(schedulableTask))); Assert.assertEquals(clusterTask.getTaskId(), task.getTaskId());
task.getConfig().getClusterConfig()); if (i > 0) { Assert.assertEquals("111.222.333." + (i - 1), task.getConfig().getNodeProperties().getIPAddress("access")); Assert.assertEquals("444.555.666." + (i - 1), task.getConfig().getNodeProperties().getIPAddress("bind")); actions.add(task.getTaskName()); statuses.add(Node.Status.IN_PROGRESS.name()); verifyNode(task.getNodeId(), actions, statuses); ); FinishTaskRequest finishRequest = new FinishTaskRequest("workerX", PROVISIONER_ID, tenantId, task.getTaskId(), null, null, 0, null, ipAddresses, result); verifyNode(task.getNodeId(), actions, statuses);
LOG.debug("Submitting task {}", task.getTaskId()); LOG.trace("Task {}", task); SchedulableTask schedulableTask = new SchedulableTask(task, taskConfig); LOG.trace("Schedulable task {}", schedulableTask);
} else { SchedulableTask taskObject = gson.fromJson(task.getValue(), SchedulableTask.class); TaskConfig taskConfig = taskObject.getConfig();
Assert.assertEquals("CREATE", task.getTaskName()); new FinishTaskRequest("workerX", PROVISIONER_ID, tenantId, task.getTaskId(), null, null, 0, null, null, result); Assert.assertEquals("CONFIRM", task.getTaskName()); task.getTaskId(), null, null, 1, null, null, result); TestHelper.finishTask(getBaseUrlInternalAPI(), finishRequest); assertResponseStatus(response, HttpResponseStatus.OK); Assert.assertEquals("DELETE", task.getTaskName()); task.getTaskId(), null, null, 0, null, null, result);
verifyNode(task.getNodeId(), ImmutableList.of("DELETE"), ImmutableList.of(Node.Status.IN_PROGRESS.name())); new FinishTaskRequest("workerX", PROVISIONER_ID, tenantId, task.getTaskId(), null, null, 0, null, null, null); verifyNode(task.getNodeId(), ImmutableList.of("DELETE"), ImmutableList.of(Node.Status.COMPLETE.name()));
private void testCallbacks(boolean failJob) throws Exception { ClusterScheduler clusterScheduler = injector.getInstance(ClusterScheduler.class); String tenantId = cluster.getAccount().getTenantId(); clusterQueues.add(tenantId, new Element(cluster.getId(), ClusterAction.CLUSTER_CREATE.name())); clusterScheduler.run(); CallbackScheduler callbackScheduler = injector.getInstance(CallbackScheduler.class); // should be no job in the queue until the start callback runs Assert.assertEquals(0, jobQueues.size(tenantId)); waitForCallback(callbackScheduler); Assert.assertEquals(CallbackData.Type.START, mockClusterCallback.getReceivedCallbacks().get(0).getType()); JobScheduler jobScheduler = injector.getInstance(JobScheduler.class); jobScheduler.run(); // take tasks until there are no more TakeTaskRequest takeRequest = new TakeTaskRequest("consumer1", PROVISIONER_ID, tenantId); SchedulableTask task = TestHelper.takeTask(getInternalServerUrl(), takeRequest); while (task != null) { FinishTaskRequest finishRequest = new FinishTaskRequest("consumer1", PROVISIONER_ID, tenantId, task.getTaskId(), null, null, failJob ? 1 : 0, null, null, null); TestHelper.finishTask(getInternalServerUrl(), finishRequest); jobScheduler.run(); jobScheduler.run(); task = TestHelper.takeTask(getInternalServerUrl(), takeRequest); } jobScheduler.run(); waitForCallback(callbackScheduler); // at this point, the failure callback should have run Assert.assertEquals(failJob ? CallbackData.Type.FAILURE : CallbackData.Type.SUCCESS, mockClusterCallback.getReceivedCallbacks().get(1).getType()); }
private TakeTaskRequest getRequest() throws IOException { String tenantId = USER1_ACCOUNT.getTenantId(); ClusterTask clusterTask = new ClusterTask( ProvisionerAction.CREATE, TaskId.fromString("1-1-1"), "node_id", "service", ClusterAction.CLUSTER_CREATE, "test", USER1_ACCOUNT); clusterStore.writeClusterTask(clusterTask); ClusterJob clusterJob = new ClusterJob(JobId.fromString("1-1"), ClusterAction.CLUSTER_CREATE); clusterStore.writeClusterJob(clusterJob); TaskConfig taskConfig = new TaskConfig( NodeProperties.builder().build(), Entities.ProviderExample.JOYENT, ImmutableMap.<String, NodeProperties>of(), new TaskServiceAction("svcA", new ServiceAction("shell", ImmutableMap.<String, String>of())), new JsonObject(), new JsonObject() ); SchedulableTask schedulableTask= new SchedulableTask(clusterTask, taskConfig); provisionerQueues.add(tenantId, new Element(clusterTask.getTaskId(), gson.toJson(schedulableTask))); return new TakeTaskRequest("worker1", PROVISIONER_ID, TENANT_ID); }
Assert.assertEquals(userConfig, task.getConfig().getClusterConfig());
Map<String, String> ipAddresses = ImmutableMap.of("access", "123.456.789.123"); FinishTaskRequest finishRequest = new FinishTaskRequest("consumer1", PROVISIONER_ID, tenantId, task.getTaskId(), null, null, 0, null, ipAddresses, result); TestHelper.finishTask(getInternalServerUrl(), finishRequest); ipAddresses = ImmutableMap.of("access", "456.789.123.123"); finishRequest = new FinishTaskRequest("consumer1", PROVISIONER_ID, tenantId, task.getTaskId(), null, null, 0, null, ipAddresses, result); TestHelper.finishTask(getInternalServerUrl(), finishRequest);
new JsonObject() ); SchedulableTask schedulableTask= new SchedulableTask(clusterTask, taskConfig); provisionerQueues.add(tenantId, new Element(clusterTask.getTaskId(), gson.toJson(schedulableTask))); Assert.assertEquals(clusterTask.getTaskId(), task.getTaskId());
@Test public void testTakeTask() throws Exception { String tenantId = USER1_ACCOUNT.getTenantId(); ClusterTask clusterTask = new ClusterTask( ProvisionerAction.CREATE, TaskId.fromString("1-1-1"), "node_id", "service", ClusterAction.CLUSTER_CREATE, "test", USER1_ACCOUNT); clusterStore.writeClusterTask(clusterTask); ClusterJob clusterJob = new ClusterJob(JobId.fromString("1-1"), ClusterAction.CLUSTER_CREATE); clusterStore.writeClusterJob(clusterJob); TaskConfig taskConfig = new TaskConfig( NodeProperties.builder().build(), Entities.ProviderExample.JOYENT, ImmutableMap.<String, NodeProperties>of(), new TaskServiceAction("svcA", new ServiceAction("shell", ImmutableMap.<String, String>of())), new JsonObject(), new JsonObject() ); SchedulableTask schedulableTask= new SchedulableTask(clusterTask, taskConfig); provisionerQueues.add(tenantId, new Element(clusterTask.getTaskId(), gson.toJson(schedulableTask))); TakeTaskRequest takeRequest = new TakeTaskRequest("worker1", PROVISIONER_ID, TENANT_ID); HttpResponse response = doPostInternalAPI("/tasks/take", gson.toJson(takeRequest)); assertResponseStatus(response, HttpResponseStatus.OK); JsonObject responseJson = getResponseJson(response); Assert.assertEquals(clusterTask.getTaskId(), responseJson.get("taskId").getAsString()); }
Map<String, String> ipAddresses = ImmutableMap.of("access", "123.456.789.123"); FinishTaskRequest finishRequest = new FinishTaskRequest("consumer1", PROVISIONER_ID, tenantId, task.getTaskId(), null, null, 0, null, ipAddresses, result); TestHelper.finishTask(getInternalServerUrl(), finishRequest); ipAddresses = ImmutableMap.of("access", "456.789.123.123"); finishRequest = new FinishTaskRequest("consumer1", PROVISIONER_ID, tenantId, task.getTaskId(), null, null, 0, null, ipAddresses, result); TestHelper.finishTask(getInternalServerUrl(), finishRequest); task = TestHelper.takeTask(getInternalServerUrl(), takeRequest); finishRequest = new FinishTaskRequest("consumer1", PROVISIONER_ID, tenantId, task.getTaskId(), null, null, 0, null, null, null); TestHelper.finishTask(getInternalServerUrl(), finishRequest); jobScheduler.run();
@Test public void testQueuedTaskMissingFromStoreIsRemovedFromQueue() { ClusterCleanup clusterCleanup = new ClusterCleanup(clusterStore, clusterService, nodeService, taskService, jobQueues, provisionerQueues, -10, 1, 1); String queueName = account.getTenantId(); ClusterTask task = new ClusterTask(ProvisionerAction.CREATE, TaskId.fromString("3-1-1"), "node1", "service", ClusterAction.CLUSTER_CREATE, "test", account); task.setStatus(ClusterTask.Status.IN_PROGRESS); Cluster cluster = Entities.ClusterExample.createCluster(); TaskConfig taskConfig = TaskConfig.from(cluster, Entities.ClusterExample.NODE1, Entities.ServiceExample.NAMENODE, cluster.getConfig(), ProvisionerAction.START, null); SchedulableTask schedulableTask = new SchedulableTask(task, taskConfig); // add a task to the queue without storing it.x provisionerQueues.add(queueName, new Element(task.getTaskId(), gson.toJson(schedulableTask))); provisionerQueues.takeIterator("0").next(); clusterCleanup.run(); Assert.assertEquals(0, Iterators.size(provisionerQueues.getBeingConsumed(queueName))); }
result.addProperty("ipaddress", "111.222.333." + i); FinishTaskRequest finishRequest = new FinishTaskRequest("workerX", PROVISIONER_ID, tenantId, task.getTaskId(), null, null, 1, null, null, result);
FinishTaskRequest finishRequest = new FinishTaskRequest("workerX", PROVISIONER_ID, tenantId, task.getTaskId(), null, null, 0, null, null, result);
FinishTaskRequest finishRequest = new FinishTaskRequest("workerX", PROVISIONER_ID, tenantId, task.getTaskId(), null, null, 0, null, null, result);