Java Code Examples for org.apache.mesos.Protos.TaskInfo#getDiscovery()

The following examples show how to use org.apache.mesos.Protos.TaskInfo#getDiscovery() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: OfferEvaluatorPortsTest.java    From dcos-commons with Apache License 2.0 5 votes vote down vote up
@SuppressWarnings("PMD.AvoidUsingHardCodedIP")
@Test
public void testReserveTaskNamedVIPPort() throws Exception {
    List<OfferRecommendation> recommendations = evaluator.evaluate(
            PodInstanceRequirementTestUtils.getVIPRequirement(80, 10000),
            OfferTestUtils.getCompleteOffers(ResourceTestUtils.getUnreservedPorts(10000, 10000)));

    Assert.assertEquals(6, recommendations.size());

    Operation launchOperation = recommendations.get(4).getOperation().get();
    Assert.assertFalse(recommendations.get(5).getOperation().isPresent());

    TaskInfo taskInfo = launchOperation.getLaunchGroup().getTaskGroup().getTasks(0);
    Resource fulfilledPortResource = taskInfo.getResources(0);
    Assert.assertEquals(10000, fulfilledPortResource.getRanges().getRange(0).getBegin());
    Assert.assertFalse(getResourceId(fulfilledPortResource).isEmpty());

    DiscoveryInfo discoveryInfo = taskInfo.getDiscovery();
    Assert.assertEquals(discoveryInfo.getName(), taskInfo.getName());
    Assert.assertEquals(discoveryInfo.getVisibility(), DiscoveryInfo.Visibility.CLUSTER);

    Port discoveryPort = discoveryInfo.getPorts().getPorts(0);
    Assert.assertEquals(discoveryPort.getProtocol(), "tcp");
    Assert.assertEquals(discoveryPort.getVisibility(), DiscoveryInfo.Visibility.EXTERNAL);
    Assert.assertEquals(discoveryPort.getNumber(), 10000);
    Label vipLabel = discoveryPort.getLabels().getLabels(0);
    Assert.assertTrue(vipLabel.getKey().startsWith("VIP_"));
    Assert.assertEquals(vipLabel.getValue(), TestConstants.VIP_NAME + "-10000:80");

    Map<String, Protos.Environment.Variable> envvars = EnvUtils.toMap(taskInfo.getCommand().getEnvironment());
    Assert.assertEquals(String.valueOf(10000), envvars.get(TestConstants.PORT_ENV_NAME + "_VIP_10000").getValue());
}
 
Example 2
Source File: OfferEvaluatorPortsTest.java    From dcos-commons with Apache License 2.0 5 votes vote down vote up
@SuppressWarnings("PMD.AvoidUsingHardCodedIP")
@Test
public void testReserveTaskDynamicVIPPort() throws Exception {
    List<OfferRecommendation> recommendations = evaluator.evaluate(
            PodInstanceRequirementTestUtils.getVIPRequirement(80, 0),
            OfferTestUtils.getCompleteOffers(ResourceTestUtils.getUnreservedPorts(10000, 10000)));

    Assert.assertEquals(6, recommendations.size());

    Operation launchOperation = recommendations.get(4).getOperation().get();
    Assert.assertFalse(recommendations.get(5).getOperation().isPresent());

    TaskInfo taskInfo = launchOperation.getLaunchGroup().getTaskGroup().getTasks(0);
    Resource fulfilledPortResource = taskInfo.getResources(0);
    Assert.assertEquals(10000, fulfilledPortResource.getRanges().getRange(0).getBegin());
    Assert.assertFalse(getResourceId(fulfilledPortResource).isEmpty());

    DiscoveryInfo discoveryInfo = taskInfo.getDiscovery();
    Assert.assertEquals(discoveryInfo.getName(), taskInfo.getName());
    Assert.assertEquals(discoveryInfo.getVisibility(), DiscoveryInfo.Visibility.CLUSTER);

    Port discoveryPort = discoveryInfo.getPorts().getPorts(0);
    Assert.assertEquals(discoveryPort.getProtocol(), "tcp");
    Assert.assertEquals(discoveryPort.getVisibility(), DiscoveryInfo.Visibility.EXTERNAL);
    Assert.assertEquals(discoveryPort.getNumber(), 10000);
    Label vipLabel = discoveryPort.getLabels().getLabels(0);
    Assert.assertTrue(vipLabel.getKey().startsWith("VIP_"));
    Assert.assertEquals(vipLabel.getValue(), TestConstants.VIP_NAME + "-0:80");

    Map<String, Protos.Environment.Variable> envvars = EnvUtils.toMap(taskInfo.getCommand().getEnvironment());
    Assert.assertEquals(String.valueOf(10000), envvars.get(TestConstants.PORT_ENV_NAME + "_VIP_0").getValue());
}
 
Example 3
Source File: EndpointsQueries.java    From dcos-commons with Apache License 2.0 4 votes vote down vote up
/**
 * Returns a mapping of endpoint type to host:port (or ip:port) endpoints, endpoint type.
 */
private static Map<String, JSONObject> getDiscoveryEndpoints(StateStore stateStore,
                                                             String frameworkName,
                                                             SchedulerConfig schedulerConfig)
    throws TaskException
{
  Map<String, JSONObject> endpointsByName = new TreeMap<>();
  for (TaskInfo taskInfo : stateStore.fetchTasks()) {
    if (!taskInfo.hasDiscovery()) {
      LOGGER.debug("Task lacks any discovery information, no endpoints to report: {}",
          taskInfo.getName());
      continue;
    }
    // TODO(mrb): Also extract DiscoveryInfo from executor, when executors get the ability to specify resources
    DiscoveryInfo discoveryInfo = taskInfo.getDiscovery();

    // Autoip hostname:
    String autoIpTaskName = discoveryInfo.hasName() ?
        discoveryInfo.getName() :
        taskInfo.getName();
    // Hostname of agent at offer time:
    String nativeHost = new TaskLabelReader(taskInfo).getHostname();
    // get IP address(es) from container status on the latest TaskStatus, if the latest TaskStatus has an IP
    // otherwise use the lastest TaskStatus' IP stored in the stateStore
    List<String> ipAddresses = reconcileIpAddresses(stateStore, taskInfo.getName());
    for (Port port : discoveryInfo.getPorts().getPortsList()) {
      if (port.getVisibility() != Constants.DISPLAYED_PORT_VISIBILITY) {
        LOGGER.debug(
            "Port {} in task {} has {} visibility. {} is needed to be listed in endpoints.",
            port.getName(), taskInfo.getName(), port.getVisibility(),
            Constants.DISPLAYED_PORT_VISIBILITY);
        continue;
      }
      final String hostIpString;
      switch (ipAddresses.size()) {
        case 0:
          hostIpString = nativeHost;
          break;
        case 1:
          hostIpString = ipAddresses.get(0);
          break;
        default:
          hostIpString = ipAddresses.toString();
          break;
      }
      addPortToEndpoints(
          endpointsByName,
          schedulerConfig,
          frameworkName,
          taskInfo.getName(),
          port,
          EndpointUtils.toAutoIpEndpoint(frameworkName,
              autoIpTaskName,
              port.getNumber(),
              schedulerConfig),
          EndpointUtils.toEndpoint(hostIpString, port.getNumber()));
    }
  }
  return endpointsByName;
}