You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by ma...@apache.org on 2015/08/22 19:57:26 UTC

aurora git commit: Adding REVOCABLE_RESOURCES FrameworkInfo capability.

Repository: aurora
Updated Branches:
  refs/heads/master f4446a612 -> d8e948bed


Adding REVOCABLE_RESOURCES FrameworkInfo capability.

Bugs closed: AURORA-1419

Reviewed at https://reviews.apache.org/r/37663/


Project: http://git-wip-us.apache.org/repos/asf/aurora/repo
Commit: http://git-wip-us.apache.org/repos/asf/aurora/commit/d8e948be
Tree: http://git-wip-us.apache.org/repos/asf/aurora/tree/d8e948be
Diff: http://git-wip-us.apache.org/repos/asf/aurora/diff/d8e948be

Branch: refs/heads/master
Commit: d8e948bed6526a7e1ae83ada59e590ed8f09ab51
Parents: f4446a6
Author: Maxim Khutornenko <ma...@apache.org>
Authored: Sat Aug 22 10:54:31 2015 -0700
Committer: Maxim Khutornenko <ma...@apache.org>
Committed: Sat Aug 22 10:54:31 2015 -0700

----------------------------------------------------------------------
 .../mesos/CommandLineDriverSettingsModule.java  | 41 +++++++++++++++-----
 .../CommandLineDriverSettingsModuleTest.java    | 23 +++++++++++
 2 files changed, 55 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aurora/blob/d8e948be/src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java b/src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java
index 54608c8..5c150b6 100644
--- a/src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java
+++ b/src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java
@@ -36,6 +36,8 @@ import com.twitter.common.quantity.Time;
 import org.apache.mesos.Protos;
 
 import static org.apache.mesos.Protos.FrameworkInfo;
+import static org.apache.mesos.Protos.FrameworkInfo.Capability;
+import static org.apache.mesos.Protos.FrameworkInfo.Capability.Type.REVOCABLE_RESOURCES;
 
 /**
  * Creates and binds {@link DriverSettings} based on values found on the command line.
@@ -75,20 +77,22 @@ public class CommandLineDriverSettingsModule extends AbstractModule {
           + "to exist on the mesos slaves.")
   private static final Arg<String> EXECUTOR_USER = Arg.create("root");
 
+  @CmdLine(name = "receive_revocable_resources",
+      help = "Allows receiving revocable resource offers from Mesos.")
+  private static final Arg<Boolean> RECEIVE_REVOCABLE_RESOURCES = Arg.create(false);
+
   // TODO(wfarner): Figure out a way to change this without risk of fallout (MESOS-703).
   private static final String TWITTER_FRAMEWORK_NAME = "TwitterScheduler";
 
   @Override
   protected void configure() {
-    FrameworkInfo frameworkInfo = FrameworkInfo.newBuilder()
-        .setUser(EXECUTOR_USER.get())
-        .setName(TWITTER_FRAMEWORK_NAME)
-        // Require slave checkpointing.  Assumes slaves have '--checkpoint=true' arg set.
-        .setCheckpoint(true)
-        .setFailoverTimeout(FRAMEWORK_FAILOVER_TIMEOUT.get().as(Time.SECONDS))
-        .build();
-    DriverSettings settings =
-        new DriverSettings(MESOS_MASTER_ADDRESS.get(), getCredentials(), frameworkInfo);
+    DriverSettings settings = new DriverSettings(
+        MESOS_MASTER_ADDRESS.get(),
+        getCredentials(),
+        buildFrameworkInfo(
+            EXECUTOR_USER.get(),
+            FRAMEWORK_FAILOVER_TIMEOUT.get(),
+            RECEIVE_REVOCABLE_RESOURCES.get()));
     bind(DriverSettings.class).toInstance(settings);
   }
 
@@ -115,6 +119,25 @@ public class CommandLineDriverSettingsModule extends AbstractModule {
   }
 
   @VisibleForTesting
+  static FrameworkInfo buildFrameworkInfo(
+      String executorUser,
+      Amount<Long, Time> failoverTimeout,
+      boolean revocable) {
+
+    FrameworkInfo.Builder infoBuilder = FrameworkInfo.newBuilder()
+        .setUser(executorUser)
+        .setName(TWITTER_FRAMEWORK_NAME)
+            // Require slave checkpointing.  Assumes slaves have '--checkpoint=true' arg set.
+        .setCheckpoint(true)
+        .setFailoverTimeout(failoverTimeout.as(Time.SECONDS));
+
+    if (revocable) {
+      infoBuilder.addCapabilities(Capability.newBuilder().setType(REVOCABLE_RESOURCES));
+    }
+    return infoBuilder.build();
+  }
+
+  @VisibleForTesting
   static Properties parseCredentials(InputStream credentialsStream) {
     Properties properties = new Properties();
     try {

http://git-wip-us.apache.org/repos/asf/aurora/blob/d8e948be/src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java b/src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java
index 9e17688..737378f 100644
--- a/src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModuleTest.java
@@ -19,9 +19,13 @@ import java.io.IOException;
 import java.util.Properties;
 
 import com.google.common.base.Throwables;
+import com.twitter.common.quantity.Amount;
+import com.twitter.common.quantity.Time;
 
+import org.apache.mesos.Protos;
 import org.junit.Test;
 
+import static org.apache.mesos.Protos.FrameworkInfo.Capability.Type.REVOCABLE_RESOURCES;
 import static org.junit.Assert.assertEquals;
 
 public class CommandLineDriverSettingsModuleTest {
@@ -60,4 +64,23 @@ public class CommandLineDriverSettingsModuleTest {
         CommandLineDriverSettingsModule.parseCredentials(
             new ByteArrayInputStream(propertiesStream.toByteArray())));
   }
+
+  @Test
+  public void testFrameworkInfoNoRevocable() {
+    Protos.FrameworkInfo info = CommandLineDriverSettingsModule.buildFrameworkInfo(
+        "user",
+        Amount.of(1L, Time.MINUTES),
+        false);
+    assertEquals(0, info.getCapabilitiesCount());
+  }
+
+  @Test
+  public void testFrameworkInfoRevocable() {
+    Protos.FrameworkInfo info = CommandLineDriverSettingsModule.buildFrameworkInfo(
+        "user",
+        Amount.of(1L, Time.MINUTES),
+        true);
+    assertEquals(1, info.getCapabilitiesCount());
+    assertEquals(REVOCABLE_RESOURCES, info.getCapabilities(0).getType());
+  }
 }