/** * Construct a range resource. */ public static Protos.Resource ranges(String name, String role, Protos.Value.Range... ranges) { checkNotNull(name); checkNotNull(role); checkNotNull(ranges); return Protos.Resource.newBuilder() .setName(name) .setType(Protos.Value.Type.RANGES) .setRanges(Protos.Value.Ranges.newBuilder().addAllRange(Arrays.asList(ranges)).build()) .setRole(role) .build(); }
private Protos.Value.Ranges portRanges(final Resource portResource) { final Protos.Value.Ranges.Builder rangeBuilder = Protos.Value.Ranges.newBuilder(); final List<Integer> reservedPorts = new ArrayList<Integer>(); //Bottom end of any port range is 0 + 1. We add it manually to get things started. reservedPorts.add(0); for (final String port : portResource.getStringSetValue()) { reservedPorts.add(Integer.valueOf(port)); } // We need the list of reserved ports sorted to properly turn them into the Mesos expected port ranges. Collections.sort(reservedPorts); for (int i = 0; i < reservedPorts.size(); i++) { Integer realStart = reservedPorts.get(i) + 1; // Don't allow port usage past the maximum Integer realEnd = AWS_ECS_MAX_PORT; if (i + 1 < reservedPorts.size()) { realEnd = Math.min(reservedPorts.get(i + 1) - 1, realEnd); } if (realEnd >= realStart) { rangeBuilder.addRange( Protos.Value.Range.newBuilder() .setBegin(realStart.longValue()) .setEnd(realEnd.longValue()) .build() ); } } return rangeBuilder.build(); } }
public static Value getZero(Value.Type type) { switch (type) { case SCALAR: Value.Scalar scalar = Value.Scalar.newBuilder().setValue(0).build(); return Value.newBuilder().setType(type).setScalar(scalar).build(); case RANGES: Value.Ranges ranges = Value.Ranges.newBuilder().addAllRange(Collections.emptyList()).build(); return Value.newBuilder().setType(type).setRanges(ranges).build(); default: throw new IllegalArgumentException( String.format("Unsupported type %s for zero value", type)); } } }
private Resource createMesosRangeResource(ResourceType resourceType, RangeResourceEntry rangeResourceEntry) { Ranges.Builder rangesBuilder = Ranges.newBuilder(); Range rangeBuilder = Range.newBuilder() .setBegin(rangeResourceEntry.getBegin()) .setEnd(rangeResourceEntry.getEnd()).build(); rangesBuilder.addRange(rangeBuilder); Resource.Builder resourceBuilder = Resource.newBuilder() .setName(resourceType.toString()) .setType(Protos.Value.Type.RANGES) .setRanges(rangesBuilder.build()); if (rangeResourceEntry.getReservationType() != null && rangeResourceEntry.getReservationType().equals(ReservationType.STATIC)) { resourceBuilder.setRole(MesosCommon.getRole(mesosStormConf)); } return resourceBuilder.build(); }
public static Protos.Value.Ranges fromRangeList(List<Range> ranges) { return Protos.Value.Ranges.newBuilder().addAllRange(ranges).build(); }
private static Value.Ranges subtract(Value.Ranges ranges1, Value.Ranges ranges2) { List<Range> list1 = ranges1.getRangeList(); List<Range> list2 = ranges2.getRangeList(); List<Range> list = RangeUtils.subtractRanges(list1, list2); return Value.Ranges.newBuilder().addAllRange(list).build(); }
private static Value.Ranges add(Value.Ranges ranges1, Value.Ranges ranges2) { List<Range> list1 = ranges1.getRangeList(); List<Range> list2 = ranges2.getRangeList(); List<Range> list = RangeUtils.mergeRanges(list1, list2); return Value.Ranges.newBuilder().addAllRange(list).build(); }