Protos.Value.Range takenRange = availableRange.toBuilder().setEnd(availableRange.getBegin() + amountToTake - 1).build(); amount -= amountToTake; takenRanges.add(takenRange);
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(); } }
private static List<Range> intervalsToRanges(List<Interval> intervals) { List<Range> ranges = new ArrayList<Range>(); for (Interval interval : intervals) { ranges.add(Range.newBuilder().setBegin(interval.a).setEnd(interval.b).build()); } return ranges; }
portValueBuilder.getRangesBuilder().addRangeBuilder() .setBegin(rawPort.getPort()) .setEnd(rawPort.getPort()); portsValueBuilder.mergeRanges(portValueBuilder.getRanges());
portValueBuilder.getRangesBuilder().addRangeBuilder() .setBegin(80) .setEnd(80);
testPrincipal); Protos.Value.Range range = Protos.Value.Range.newBuilder().setBegin(testPortBegin).setEnd(testPortEnd).build(); Protos.Resource ports = ResourceUtils.getExpectedRanges( "ports",
@Test public void testSetGetOfferAttributes() { Protos.Offer.Builder offerBuilder = Protos.Offer.newBuilder() .setId(TestConstants.OFFER_ID) .setFrameworkId(TestConstants.FRAMEWORK_ID) .setSlaveId(TestConstants.AGENT_ID) .setHostname(TestConstants.HOSTNAME); Protos.Attribute.Builder attrBuilder = offerBuilder.addAttributesBuilder().setName("1").setType(Protos.Value.Type.RANGES); attrBuilder.getRangesBuilder().addRangeBuilder().setBegin(5).setEnd(6); attrBuilder.getRangesBuilder().addRangeBuilder().setBegin(10).setEnd(12); attrBuilder = offerBuilder.addAttributesBuilder().setName("2").setType(Protos.Value.Type.SCALAR); attrBuilder.getScalarBuilder().setValue(123.4567); attrBuilder = offerBuilder.addAttributesBuilder().setName("3").setType(Protos.Value.Type.SET); attrBuilder.getSetBuilder().addItem("foo").addItem("bar").addItem("baz"); attrBuilder = offerBuilder.addAttributesBuilder().setName("4").setType(Protos.Value.Type.RANGES); attrBuilder.getRangesBuilder().addRangeBuilder().setBegin(7).setEnd(8); attrBuilder.getRangesBuilder().addRangeBuilder().setBegin(10).setEnd(12); Assert.assertTrue(new TaskLabelReader(getTestTaskInfo()).getOfferAttributeStrings().isEmpty()); Protos.TaskInfo.Builder tb = getTestTaskInfo().toBuilder(); tb.setLabels(new TaskLabelWriter(tb).setOfferAttributes(offerBuilder.build()).toProto()); List<String> expectedStrings = new ArrayList<>(); expectedStrings.add("1:[5-6,10-12]"); expectedStrings.add("2:123.457"); expectedStrings.add("3:{foo,bar,baz}"); expectedStrings.add("4:[7-8,10-12]"); Assert.assertEquals(expectedStrings, new TaskLabelReader(tb).getOfferAttributeStrings()); tb.setLabels(new TaskLabelWriter(tb).setOfferAttributes(offerBuilder.clearAttributes().build()).toProto()); Assert.assertTrue(new TaskLabelReader(tb.build()).getOfferAttributeStrings().isEmpty()); }
private static ResourceSet getVIPResourceSet(Map<Integer, Integer> vipPorts) { DefaultResourceSet.Builder builder = DefaultResourceSet.newBuilder(TestConstants.ROLE, Constants.ANY_ROLE, TestConstants.PRINCIPAL) .id(TestConstants.RESOURCE_SET_ID); for (Map.Entry<Integer, Integer> entry : vipPorts.entrySet()) { int taskPort = entry.getValue(); Protos.Value.Builder valueBuilder = Protos.Value.newBuilder() .setType(Protos.Value.Type.RANGES); valueBuilder.getRangesBuilder().addRangeBuilder() .setBegin(taskPort) .setEnd(taskPort); NamedVIPSpec.Builder vipBuilder = NamedVIPSpec.newBuilder() .protocol("tcp") .vipName(TestConstants.VIP_NAME + "-" + taskPort) .vipPort(entry.getKey()); vipBuilder .envKey(TestConstants.PORT_ENV_NAME + "_VIP_" + taskPort) .portName(TestConstants.VIP_NAME + "-" + taskPort) .visibility(TestConstants.PORT_VISIBILITY) .networkNames(Collections.emptyList()); vipBuilder .value(valueBuilder.build()) .role(TestConstants.ROLE) .preReservedRole(Constants.ANY_ROLE) .principal(TestConstants.PRINCIPAL); builder.addResource(vipBuilder.build()); } return builder.build(); }
@Test public void testRangeAttributeString() { Attribute.Builder attr = Attribute.newBuilder().setType(Type.RANGES).setName("ram"); attr.getRangesBuilder().addRangeBuilder().setBegin(1).setEnd(2); assertEquals("ram:[1-2]", AttributeStringUtils.toString(attr.build())); attr = Attribute.newBuilder().setType(Type.RANGES).setName("ports"); attr.getRangesBuilder().addRangeBuilder().setBegin(1).setEnd(2); attr.getRangesBuilder().addRangeBuilder().setBegin(-321).setEnd(-123); attr.getRangesBuilder().addRangeBuilder().setBegin(21000).setEnd(24000); attr.getRangesBuilder().addRangeBuilder().setBegin(0).setEnd(0); attr.getRangesBuilder().addRangeBuilder().setBegin(30000).setEnd(34000); attr.getRangesBuilder().addRangeBuilder().setBegin(321).setEnd(123); assertEquals("ports:[1-2,-321--123,21000-24000,0-0,30000-34000,321-123]", AttributeStringUtils.toString(attr.build())); attr = Attribute.newBuilder().setType(Type.RANGES).setName("ram"); attr.getRangesBuilder().addRangeBuilder().setBegin(0).setEnd(0); assertEquals("ram:[0-0]", AttributeStringUtils.toString(attr.build())); attr = Attribute.newBuilder().setType(Type.RANGES).setName("disk"); attr.getRangesBuilder().addRangeBuilder().setBegin(-321).setEnd(-123); assertEquals("disk:[-321--123]", AttributeStringUtils.toString(attr.build())); attr = Attribute.newBuilder().setType(Type.RANGES).setName(""); attr.getRangesBuilder().addRangeBuilder().setBegin(-321).setEnd(-123); assertEquals(":[-321--123]", AttributeStringUtils.toString(attr.build())); attr = Attribute.newBuilder().setType(Type.RANGES).setName("empty"); assertEquals("empty:[]", AttributeStringUtils.toString(attr.build())); attr = Attribute.newBuilder().setType(Type.RANGES).setName(""); assertEquals(":[]", AttributeStringUtils.toString(attr.build())); }
private static NamedVIPSpec getNamedVIPSpec(int taskPort, Collection<String> networkNames) { Protos.Value.Builder valueBuilder = Protos.Value.newBuilder() .setType(Protos.Value.Type.RANGES); valueBuilder.getRangesBuilder().addRangeBuilder() .setBegin(taskPort) .setEnd(taskPort); NamedVIPSpec.Builder builder = NamedVIPSpec.newBuilder() .protocol("sctp") .vipName("test-vip") .vipPort(80); builder .envKey(TestConstants.PORT_ENV_NAME + "_VIP_" + taskPort) .portName(TestConstants.VIP_NAME + "-" + taskPort) .visibility(DiscoveryInfo.Visibility.EXTERNAL) .networkNames(networkNames); builder .value(valueBuilder.build()) .role(TestConstants.ROLE) .preReservedRole(Constants.ANY_ROLE) .principal(TestConstants.PRINCIPAL); return builder.build(); }
private static ResourceSet getPortsResourceSet(Map<String, Integer> envPorts) { DefaultResourceSet.Builder builder = DefaultResourceSet.newBuilder(TestConstants.ROLE, Constants.ANY_ROLE, TestConstants.PRINCIPAL) .id(TestConstants.RESOURCE_SET_ID); for (Map.Entry<String, Integer> envPort : envPorts.entrySet()) { Protos.Value.Builder valueBuilder = Protos.Value.newBuilder() .setType(Protos.Value.Type.RANGES); valueBuilder.getRangesBuilder().addRangeBuilder() .setBegin(envPort.getValue()) .setEnd(envPort.getValue()); PortSpec.Builder portBuilder = PortSpec.newBuilder() .envKey(envPort.getKey()) .portName(String.format("test-port-%s", envPort.getKey())) .visibility(TestConstants.PORT_VISIBILITY) .networkNames(Collections.emptyList()); portBuilder .value(valueBuilder.build()) .role(TestConstants.ROLE) .preReservedRole(Constants.ANY_ROLE) .principal(TestConstants.PRINCIPAL); builder.addResource(portBuilder.build()); } return builder.build(); }
@Test public void testMixedAttributeStrings() { List<Attribute> attrs = new ArrayList<>(); assertEquals("", AttributeStringUtils.toString(attrs)); Attribute.Builder attr = Attribute.newBuilder().setType(Type.TEXT).setName("ram"); attr.getTextBuilder().setValue(""); attrs.add(attr.build()); assertEquals("ram:", AttributeStringUtils.toString(attrs)); attr = Attribute.newBuilder().setType(Type.SET).setName("ports"); attr.getSetBuilder().addItem("a").addItem("b").addItem("c"); attrs.add(attr.build()); assertEquals("ram:;ports:{a,b,c}", AttributeStringUtils.toString(attrs)); attr = Attribute.newBuilder().setType(Type.SCALAR).setName("roundup1"); attr.getScalarBuilder().setValue(1.99999); attrs.add(attr.build()); assertEquals("ram:;ports:{a,b,c};roundup1:2.000", AttributeStringUtils.toString(attrs)); attr = Attribute.newBuilder().setType(Type.RANGES).setName("disk"); attr.getRangesBuilder().addRangeBuilder().setBegin(-321).setEnd(-123); attrs.add(attr.build()); assertEquals("ram:;ports:{a,b,c};roundup1:2.000;disk:[-321--123]", AttributeStringUtils.toString(attrs)); }
public static Protos.Offer generateOffer( String frameworkId, double cpu, int memory, int disk, String slaveId, String offerUUID) { return Protos.Offer .newBuilder() .setId(Protos.OfferID.newBuilder().setValue(offerUUID)) .setFrameworkId(Protos.FrameworkID.newBuilder().setValue(frameworkId)) .setSlaveId(Protos.SlaveID.newBuilder().setValue(slaveId)) .setHostname("127.0.0.1") .addResources(ResourceUtils.getUnreservedScalar("cpus", cpu)) .addResources(ResourceUtils.getUnreservedScalar("mem", memory)) .addResources(ResourceUtils.getUnreservedScalar("disk", disk)) .addResources(ResourceUtils.getUnreservedRanges( "ports", Arrays.asList(Protos.Value.Range.newBuilder().setBegin(5000).setEnd(40000).build()))) .build(); }
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(); }
Protos.Value.Range toRange() { return Protos.Value.Range.newBuilder().setBegin(offeredPort).setEnd(offeredPort).build(); }
private static Range getRange(int begin, int end) { Range.Builder builder = Range.newBuilder(); builder.setBegin(begin); builder.setEnd(end); return builder.build(); } }
private Protos.Value getPort(int port) { return Protos.Value.newBuilder() .setType(Protos.Value.Type.RANGES) .setRanges(Protos.Value.Ranges.newBuilder() .addRange(Protos.Value.Range.newBuilder() .setBegin(port) .setEnd(port))) .build(); }
public static Protos.Resource getPrereservedPort(long begin, long end, String preReservedRole) { Protos.Value.Builder builder = Protos.Value.newBuilder() .setType(Protos.Value.Type.RANGES); builder.getRangesBuilder().addRangeBuilder() .setBegin(begin) .setEnd(end); return getUnreservedResource(Constants.PORTS_RESOURCE_TYPE, builder.build(), preReservedRole); }
public static Protos.Resource getUnreservedPorts(long begin, long end) { Protos.Value.Builder builder = Protos.Value.newBuilder() .setType(Protos.Value.Type.RANGES); builder.getRangesBuilder().addRangeBuilder() .setBegin(begin) .setEnd(end); return getUnreservedResource(Constants.PORTS_RESOURCE_TYPE, builder.build(), Constants.ANY_ROLE); }
/** * Construct a range value. */ public static Protos.Value.Range range(long begin, long end) { return Protos.Value.Range.newBuilder().setBegin(begin).setEnd(end).build(); }