final ch.qos.logback.classic.Logger taskLog = taskBuilder.buildTaskLogger(taskId, taskInfo.getExecutor().getExecutorId().getValue()); final SingularityExecutorTask task = taskBuilder.buildTask(taskId, executorDriver, taskInfo, taskLog);
/** * Invoked once the executor driver has been able to successfully * connect with Mesos. In particular, a scheduler can pass some * data to it's executors through the FrameworkInfo.ExecutorInfo's * data field. */ @Override public void registered(ExecutorDriver executorDriver, Protos.ExecutorInfo executorInfo, Protos.FrameworkInfo frameworkInfo, Protos.SlaveInfo slaveInfo) { LOG.debug("Registered {} with Mesos slave {} for framework {}", executorInfo.getExecutorId().getValue(), slaveInfo.getId().getValue(), frameworkInfo.getId().getValue()); LOG.trace("Registered {} with Mesos slave {} for framework {}", MesosUtils.formatForLogging(executorInfo), MesosUtils.formatForLogging(slaveInfo), MesosUtils.formatForLogging(frameworkInfo)); }
public Map<String, Map<String, Map<String, Object>>> updateYaml(Map<String, Map<String, Map<String, Object>>> yamlMap, TaskInfo taskInfo, ExecutorInfo executorInfo) { log.debug(" ############ STARTING updateYaml ################"); if (yamlMap == null || yamlMap.isEmpty()) { return null; } Map<String, Map<String, Map<String, Object>>> resultantContainerMap = new HashMap<String, Map<String, Map<String, Object>>>(); resultantContainerMap.putAll(yamlMap); String taskId = taskInfo.getTaskId().getValue(); Iterator<Long> portIterator = getPortMappingIterator(taskInfo); String executorId = executorInfo.getExecutorId().getValue(); log.debug(" executorId: " + executorId); Map<String, Map<String, Object>> services = yamlMap.get(SERVICES); log.debug(" services map: " + services.toString()); Map<String, Map<String, Object>> resultantServicesMap = new HashMap<String, Map<String, Object>>(); for (Map.Entry<String, Map<String, Object>> containerEntry : services.entrySet()) { String key = containerEntry.getKey(); Map<String, Object> containerValue = containerEntry.getValue(); Map<String, Object> updatedContainerValues = updateContainerValue(executorId, taskInfo, containerValue, portIterator); String updatedKey = prefixTaskId(taskId, key); resultantServicesMap.put(updatedKey, updatedContainerValues); } resultantContainerMap.put(SERVICES, resultantServicesMap); return resultantContainerMap; }
.addExecutorIds(formatTaskToReoffer.getExecutor().getExecutorId()) .build(); recommendations = evaluator.evaluate(nodePodInstanceRequirement, Arrays.asList(offer));
.setState(Protos.TaskState.TASK_FAILED) .setSlaveId(info.getSlaveId()) .setExecutorId(info.getExecutor().getExecutorId()) .setTaskId(info.getTaskId()) .setMessage(String.format("Task not implemented: type = %s", cassandraTask.getType()))
case LAUNCH_GROUP: { Protos.ExecutorInfo executor = operation.getLaunchGroup().getExecutor(); executorsById.put(executor.getExecutorId().getValue(), executor);
.map(e -> e.getExecutorId()) .collect(Collectors.toList()));
String executorIdString = executorInfo.getExecutorId().getValue(); Optional<Protos.ExecutorID> executorID = executorIdString.isEmpty() ? Optional.empty() : Optional.of(executorInfo.getExecutorId());
taskInfo.getTaskId(), taskInfo.getSlaveId(), taskInfo.getExecutor().getExecutorId(), ex.getMessage()); driver.abort();
new ExecutorEvaluationStage(TestConstants.SERVICE_NAME, Optional.of(taskInfo.getExecutor().getExecutorId())); EvaluationOutcome outcome = executorEvaluationStage.evaluate(
.addExecutorIds(taskInfo.getExecutor().getExecutorId()) .build(); MesosResourcePool resources = new MesosResourcePool(offer, Optional.of(Constants.ANY_ROLE)); new ExecutorEvaluationStage(TestConstants.SERVICE_NAME, Optional.of(taskInfo.getExecutor().getExecutorId())); PodInfoBuilder podInfoBuilder = new PodInfoBuilder( taskInfo.getExecutor().getExecutorId(), launchExecutorId);
.setState(Protos.TaskState.TASK_STAGING); if (taskInfo.hasExecutor()) { taskStatusBuilder.setExecutorId(taskInfo.getExecutor().getExecutorId());
@Test public void testReserveLaunchScalar() throws Exception { PodInstanceRequirement podInstanceRequirement = PodInstanceRequirementTestUtils.getCpuRequirement(1.0); Protos.Resource offeredResource = ResourceTestUtils.getUnreservedCpus(2.0); List<OfferRecommendation> recommendations = evaluator.evaluate( podInstanceRequirement, Arrays.asList(OfferTestUtils.getCompleteOffer(offeredResource))); Assert.assertEquals(6, recommendations.size()); // Validate RESERVE Operation Protos.Offer.Operation reserveOperation = recommendations.get(3).getOperation().get(); Protos.Resource reserveResource = reserveOperation.getReserve().getResources(0); Protos.Resource.ReservationInfo reservation = ResourceUtils.getReservation(reserveResource).get(); Assert.assertEquals(Protos.Offer.Operation.Type.RESERVE, reserveOperation.getType()); Assert.assertEquals(1.0, reserveResource.getScalar().getValue(), 0.0); validateRole(reserveResource); Assert.assertEquals(TestConstants.ROLE, ResourceUtils.getRole(reserveResource)); Assert.assertEquals(TestConstants.PRINCIPAL, reservation.getPrincipal()); Assert.assertEquals(36, getResourceId(reserveResource).length()); Assert.assertFalse(reserveResource.hasDisk()); // Validate LAUNCH Operation Protos.Offer.Operation launchOperation = recommendations.get(4).getOperation().get(); Protos.Resource launchResource = launchOperation.getLaunchGroup().getTaskGroup().getTasks(0).getResources(0); Assert.assertEquals(Protos.Offer.Operation.Type.LAUNCH_GROUP, launchOperation.getType()); Assert.assertEquals(getResourceId(reserveResource), getResourceId(launchResource)); Protos.ExecutorID executorId = launchOperation.getLaunchGroup().getExecutor().getExecutorId(); Assert.assertEquals(TestConstants.POD_TYPE, CommonIdUtils.toExecutorName(executorId)); }
private static void checkNamespace( ServiceTestResult result, String sanitizedServiceName, String resourceNamespace, String persisterPrefix) throws Exception { Collection<String> taskNames = Arrays.asList("hello-0-server", "world-0-server", "world-1-server"); // Persister: everything under a specified prefix (or no prefix). Assert.assertEquals(new TreeSet<>(taskNames), result.getPersister().getChildren(persisterPrefix + "/Tasks")); Assert.assertEquals(1, result.getPersister().getChildren(persisterPrefix + "/Configurations").size()); for (String taskName : taskNames) { LaunchedTask launchedTask = result.getClusterState().getLastLaunchedTask(taskName); // Each task should have a taskId and executorId containing the service name, regardless of namespacing: Assert.assertEquals(sanitizedServiceName, CommonIdUtils.toSanitizedServiceName(launchedTask.getExecutor().getExecutorId()).get()); Assert.assertEquals(sanitizedServiceName, CommonIdUtils.toSanitizedServiceName(launchedTask.getTask().getTaskId()).get()); if (resourceNamespace != null) { // All task+executor resources should have a 'namespace' label for (Protos.Resource resource : ResourceUtils.getAllResources(launchedTask.getTask())) { Assert.assertEquals(resourceNamespace, ResourceUtils.getNamespace(resource).get()); } } else { // All task+executor resources should NOT have a 'namespace' label for (Protos.Resource resource : ResourceUtils.getAllResources(launchedTask.getTask())) { Assert.assertFalse(ResourceUtils.getNamespace(resource).isPresent()); } } } }
/** * Gets the task's status. * * @return The status associated with the task. */ public Protos.TaskStatus.Builder getStatusBuilder( final Protos.TaskState state, final Optional<String> message ) { Protos.TaskStatus.Builder builder = Protos.TaskStatus.newBuilder() .setSlaveId(info.getSlaveId()) .setTaskId(info.getTaskId()) .setState(state) .setData(getData().withState(state).getBytes()) .setExecutorId(info.getExecutor().getExecutorId()) .setSource(Protos.TaskStatus.Source.SOURCE_EXECUTOR); message.map(builder::setMessage); return builder; }
/** * Pretty-print mesos protobuf TaskInfo. * <p/> * XXX(erikdw): not including command, container (+data), nor health_check. */ public static String taskInfoToString(TaskInfo task) { Map<String, String> map = new LinkedHashMap<>(); map.put("task_id", task.getTaskId().getValue()); map.put("slave_id", task.getSlaveId().getValue()); map.putAll(resourcesToOrderedMap(task.getResourcesList())); map.put("executor_id", task.getExecutor().getExecutorId().getValue()); return JSONValue.toJSONString(map); }
protected Protos.TaskStatus.Builder getStatusBuilder() { return Protos.TaskStatus.newBuilder() .setTaskId(getTaskInfo().getTaskId()) .setSlaveId(getTaskInfo().getSlaveId()) .setExecutorId(getTaskInfo().getExecutor().getExecutorId()) .setSource(Protos.TaskStatus.Source.SOURCE_EXECUTOR); }
/** * Gets the executors id. * * @return The universally unique identifier for the executor. */ public String getId() { return info.getExecutorId().getValue(); }
@Override public void registered(ExecutorDriver driver, ExecutorInfo executorInfo, FrameworkInfo frameworkInfo, SlaveInfo slaveInfo) { LOG.info("Received executor data <{}>", executorInfo.getData().toStringUtf8()); Map ids = (Map) JSONValue.parse(executorInfo.getData().toStringUtf8()); _executorId = executorInfo.getExecutorId().getValue(); _supervisorId = (String) ids.get(MesosCommon.SUPERVISOR_ID); _assignmentId = (String) ids.get(MesosCommon.ASSIGNMENT_ID); LOG.info("Registered supervisor with Mesos: {}, {} ", _supervisorId, _assignmentId); // Completed registration, let anything waiting for us to do so continue _registeredLatch.countDown(); }