private static Resource newRange(String name, long begin, long end) { return Resource.newBuilder().setName(name).setType(Type.RANGES).setRanges(Ranges.newBuilder().addRange(Range.newBuilder().setBegin(begin).setEnd(end).build()).build()).build(); }
private Offer buildOffer(String... ranges) { Offer.Builder offer = Offer.newBuilder() .setId(OfferID.newBuilder().setValue("offerid").build()) .setFrameworkId(FrameworkID.newBuilder().setValue("frameworkid").build()) .setHostname("hostname") .setAgentId(AgentID.newBuilder().setValue("slaveid").build()); offer.addResources(buildPortRanges(ranges)); return offer.build(); }
private static Resource newScalar(String name, double value, Optional<String> role) { Resource.Builder builder = Resource.newBuilder().setName(name).setType(Type.SCALAR).setScalar(Scalar.newBuilder().setValue(value).build()); if (role.isPresent()) { builder.setRole(role.get()); } return builder.build(); }
protected MesosTaskStatusObject buildTaskStatus(SingularityTask task) { return mesosProtosUtils.taskStatusFromProtos(TaskStatus.newBuilder().setTaskId(TaskID.newBuilder().setValue(task.getTaskId().getId())).setState(TaskState.TASK_RUNNING).build()); }
public static FrameworkID toFrameworkId(MesosStringValue stringValue) { return FrameworkID.newBuilder().setValue(stringValue.getValue()).build(); }
public static TaskID toTaskId(MesosStringValue stringValue) { return TaskID.newBuilder().setValue(stringValue.getValue()).build(); }
public static AgentID toAgentId(MesosStringValue stringValue) { return AgentID.newBuilder().setValue(stringValue.getValue()).build(); }
public static ExecutorID toExecutorId(MesosStringValue stringValue) { return ExecutorID.newBuilder().setValue(stringValue.getValue()).build(); }
private void setEnv(Environment.Builder envBldr, String key, Object value) { if (value == null) { return; } envBldr.addVariables(Variable.newBuilder().setName(key).setValue(value.toString())); }
private void prepareMesosUriDownloads(List<SingularityMesosArtifact> extraArtifacts, CommandInfo.Builder commandBldr) { for (SingularityMesosArtifact artifact : extraArtifacts) { CommandInfo.URI.Builder uriBldr = URI.newBuilder() .setValue(artifact.getUri()) .setCache(artifact.isCache()) .setExecutable(artifact.isExecutable()) .setExtract(artifact.isExtract()); if (artifact.getOutputFile().isPresent()) { uriBldr.setOutputFile(artifact.getOutputFile().get()); } commandBldr.addUris(uriBldr.build()); } }
private static Ranges getRanges(List<Resource> resources, String name) { for (Resource r : resources) { if (r.hasName() && r.getName().equals(name) && r.hasRanges()) { return r.getRanges(); } } return Ranges.getDefaultInstance(); }
public static Set<String> getRoles(Offer offer) { Set<String> roles = Sets.newHashSet(); for (Resource r : offer.getResourcesList()) { roles.add(r.getRole()); } return roles; }
public static long[] getPorts(Resource portsResource, int numPorts) { long[] ports = new long[numPorts]; if (numPorts == 0) { return ports; } int idx = 0; for (Range r : portsResource.getRanges().getRangeList()) { for (long port = r.getBegin(); port <= r.getEnd(); port++) { ports[idx++] = port; if (idx >= numPorts) { return ports; } } } return ports; }
public Optional<String> getRackId(Offer offer) { for (Attribute attribute : offer.getAttributesList()) { if (attribute.getName().equals(rackIdAttributeKey)) { return Optional.of(attribute.getText().getValue()); } } return Optional.absent(); }
private synchronized void handleCompletedTaskState(TaskStatus status, SingularityTaskId taskIdObj, ExtendedTaskState taskState, SingularityCreateResult taskHistoryUpdateCreateResult, Optional<SingularityTask> task, long timestamp, boolean isActiveTask) { // Method synchronized to prevent race condition where two tasks complete at the same time but the leader cache holding the state // doesn't get updated between each task completion. If this were to happen, then slaves would never transition from DECOMMISSIONING to // DECOMMISSIONED because each task state check thinks the other task is still running. slaveAndRackManager.checkStateAfterFinishedTask(taskIdObj, status.getAgentId().getValue(), leaderCache); scheduler.handleCompletedTask(task, taskIdObj, isActiveTask, timestamp, taskState, taskHistoryUpdateCreateResult, status); }
private static int getNumRanges(List<Resource> resources, String name) { int totalRanges = 0; for (Range range : getRanges(resources, name).getRangeList()) { totalRanges += (range.getEnd() - range.getBegin()) + 1; } return totalRanges; }
private List<Resource> createResources(int cpus, int memory, String... ranges) { List<Resource> resources = Lists.newArrayList(); if (cpus > 0) { resources.add(Resource.newBuilder().setType(Type.SCALAR).setName(MesosUtils.CPUS).setScalar(Scalar.newBuilder().setValue(cpus).build()).build()); } if (memory > 0) { resources.add(Resource.newBuilder().setType(Type.SCALAR).setName(MesosUtils.MEMORY).setScalar(Scalar.newBuilder().setValue(memory).build()).build()); } if (ranges.length > 0) { resources.add(buildPortRanges(ranges)); } return resources; }
public static Resource buildPortRanges(String... ranges) { Resource.Builder resources = Resource.newBuilder() .setType(Type.RANGES) .setName(MesosUtils.PORTS); Ranges.Builder rangesBuilder = Ranges.newBuilder(); for (String range : ranges) { String[] split = range.split("\\:"); rangesBuilder.addRange( Range.newBuilder() .setBegin(Long.parseLong(split[0])) .setEnd(Long.parseLong(split[1]))); } resources.setRanges(rangesBuilder); return resources.build(); }