You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by vi...@apache.org on 2013/07/25 00:55:19 UTC

[1/2] git commit: Moved Jenkins MesosCloud configuration options into advanced section.

Updated Branches:
  refs/heads/master 77db3cb32 -> 3fe79a867


Moved Jenkins MesosCloud configuration options into advanced section.

Review: https://reviews.apache.org/r/12927


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

Branch: refs/heads/master
Commit: 3fe79a86750448fd393f3608b422f7ac6a95aa02
Parents: 572f9e8
Author: Vinod Kone <vi...@twitter.com>
Authored: Wed Jul 24 15:12:57 2013 -0700
Committer: Vinod Kone <vi...@twitter.com>
Committed: Wed Jul 24 15:54:45 2013 -0700

----------------------------------------------------------------------
 .../org/jenkinsci/plugins/mesos/MesosCloud.java | 15 +++---
 .../plugins/mesos/MesosCloud/config.jelly       | 48 ++++++++++----------
 .../plugins/mesos/MesosCloud/help-master.html   |  2 +-
 3 files changed, 34 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/3fe79a86/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosCloud.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosCloud.java b/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosCloud.java
index e5f219f..29dbea5 100644
--- a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosCloud.java
+++ b/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosCloud.java
@@ -40,13 +40,14 @@ public class MesosCloud extends Cloud {
   private String master;
   private String description;
 
-  // TODO(vinod): Let the default values in MesosCloud/confg.jelly be inherited from here.
-  private int slaveCpus = 1;
-  private int slaveMem = 512; // MB.
-  private int executorCpus = 1;
-  private int maxExecutors = 2;
-  private int executorMem = 128; // MB.
-  private int idleTerminationMinutes = 3;
+  // Find the default values for these variables in
+  // src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/config.jelly.
+  private final int slaveCpus;
+  private final int slaveMem; // MB.
+  private final int executorCpus;
+  private final int maxExecutors;
+  private final int executorMem; // MB.
+  private final int idleTerminationMinutes;
 
   private final String labelString = "mesos";
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/3fe79a86/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/config.jelly
----------------------------------------------------------------------
diff --git a/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/config.jelly b/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/config.jelly
index 593e1eb..e12283a 100644
--- a/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/config.jelly
+++ b/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/config.jelly
@@ -8,29 +8,31 @@
         <f:textbox field="description" />
     </f:entry>
 
-    <f:entry title="${%Jenkins Slave CPUs}">
-        <f:number field="slaveCpus" clazz="required positive-number"  value="1"/>
-    </f:entry>
-
-    <f:entry title="${%Jenkins Slave Memory in MB}">
-        <f:number field="slaveMem" clazz="required positive-number" value="512"/>
-    </f:entry>
-
-    <f:entry title="${% Maximum number of Executors per Slave}">
-        <f:number field="maxExecutors" clazz="required number" value="2"/>
-    </f:entry>
-
-    <f:entry title="${%Jenkins Executor CPUs}">
-        <f:number field="executorCpus" clazz="required number" value="1"/>
-    </f:entry>
-
-    <f:entry title="${%Jenkins Executor Memory in MB}">
-        <f:number field="executorMem" clazz="required positive-number" value="128"/>
-    </f:entry>
-
-   <f:entry title="${%Idle Termination Minutes}">
-        <f:number field="idleTerminationMinutes" clazz="required positive-number" value="3"/>
-    </f:entry>
+    <f:advanced>
+        <f:entry title="${%Jenkins Slave CPUs}">
+            <f:number field="slaveCpus" clazz="required positive-number"  value="1"/>
+        </f:entry>
+
+        <f:entry title="${%Jenkins Slave Memory in MB}">
+            <f:number field="slaveMem" clazz="required positive-number" value="512"/>
+        </f:entry>
+
+        <f:entry title="${% Maximum number of Executors per Slave}">
+            <f:number field="maxExecutors" clazz="required number" value="2"/>
+        </f:entry>
+
+        <f:entry title="${%Jenkins Executor CPUs}">
+            <f:number field="executorCpus" clazz="required number" value="1"/>
+        </f:entry>
+
+        <f:entry title="${%Jenkins Executor Memory in MB}">
+            <f:number field="executorMem" clazz="required positive-number" value="128"/>
+        </f:entry>
+
+        <f:entry title="${%Idle Termination Minutes}">
+            <f:number field="idleTerminationMinutes" clazz="required positive-number" value="3"/>
+        </f:entry>
+    </f:advanced>
 
     <f:validateButton title="${%Test Connection}" progress="${%Testing...}" method="testConnection" with="master"/>
 </j:jelly>

http://git-wip-us.apache.org/repos/asf/mesos/blob/3fe79a86/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/help-master.html
----------------------------------------------------------------------
diff --git a/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/help-master.html b/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/help-master.html
index dc218be..ecf60cc 100644
--- a/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/help-master.html
+++ b/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/help-master.html
@@ -1,3 +1,3 @@
 <div>
     Specifies the hostname:port of the Mesos master.
-</div>
\ No newline at end of file
+</div>


[2/2] git commit: Fixed Jenkins to customize the maximum number of executors per slave.

Posted by vi...@apache.org.
Fixed Jenkins to customize the maximum number of executors per slave.

Review: https://reviews.apache.org/r/12914


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

Branch: refs/heads/master
Commit: 572f9e84ea0de1f2284947df4e71218db1598025
Parents: 77db3cb
Author: Vinod Kone <vi...@twitter.com>
Authored: Wed Jul 24 13:01:51 2013 -0700
Committer: Vinod Kone <vi...@twitter.com>
Committed: Wed Jul 24 15:54:45 2013 -0700

----------------------------------------------------------------------
 .../org/jenkinsci/plugins/mesos/MesosCloud.java | 30 +++++++++++---------
 .../plugins/mesos/MesosCloud/config.jelly       |  4 +++
 2 files changed, 21 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/572f9e84/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosCloud.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosCloud.java b/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosCloud.java
index a096b12..e5f219f 100644
--- a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosCloud.java
+++ b/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosCloud.java
@@ -44,6 +44,7 @@ public class MesosCloud extends Cloud {
   private int slaveCpus = 1;
   private int slaveMem = 512; // MB.
   private int executorCpus = 1;
+  private int maxExecutors = 2;
   private int executorMem = 128; // MB.
   private int idleTerminationMinutes = 3;
 
@@ -55,7 +56,7 @@ public class MesosCloud extends Cloud {
 
   @DataBoundConstructor
   public MesosCloud(String master, String description, int slaveCpus,
-      int slaveMem, int executorCpus, int executorMem, int idleTerminationMinutes)
+      int slaveMem, int maxExecutors, int executorCpus, int executorMem, int idleTerminationMinutes)
           throws NumberFormatException {
     super("MesosCloud");
 
@@ -63,6 +64,7 @@ public class MesosCloud extends Cloud {
     this.description = description;
     this.slaveCpus = slaveCpus;
     this.slaveMem = slaveMem;
+    this.maxExecutors = maxExecutors;
     this.executorCpus = executorCpus;
     this.executorMem = executorMem;
     this.idleTerminationMinutes = idleTerminationMinutes;
@@ -87,19 +89,21 @@ public class MesosCloud extends Cloud {
   @Override
   public Collection<PlannedNode> provision(Label label, int excessWorkload) {
     List<PlannedNode> list = new ArrayList<PlannedNode>();
-    final int numExecutors = excessWorkload;
     try {
-      list.add(new PlannedNode(this.getDisplayName(), Computer.threadPoolForRemoting
-          .submit(new Callable<Node>() {
-            public Node call() throws Exception {
-              // TODO(vinod): Instead of launching one slave with 'excessWorkload' executors,
-              // launch multiple slaves with fewer executors per slave.
-              MesosSlave s = doProvision(numExecutors);
-              Hudson.getInstance().addNode(s);
-              return s;
-            }
-          }), numExecutors));
-
+      while (excessWorkload > 0) {
+        final int numExecutors = Math.min(excessWorkload, maxExecutors);
+        excessWorkload -= numExecutors;
+        LOGGER.info("Provisioning Jenkins Slave on Mesos with " + numExecutors +
+                    " executors. Remaining excess workload: " + excessWorkload + " executors)");
+        list.add(new PlannedNode(this.getDisplayName(), Computer.threadPoolForRemoting
+            .submit(new Callable<Node>() {
+              public Node call() throws Exception {
+                MesosSlave s = doProvision(numExecutors);
+                Hudson.getInstance().addNode(s);
+                return s;
+              }
+            }), numExecutors));
+      }
     } catch (Exception e) {
       LOGGER.log(Level.WARNING, "Failed to create instances on Mesos", e);
       return Collections.emptyList();

http://git-wip-us.apache.org/repos/asf/mesos/blob/572f9e84/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/config.jelly
----------------------------------------------------------------------
diff --git a/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/config.jelly b/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/config.jelly
index 0e2a6cb..593e1eb 100644
--- a/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/config.jelly
+++ b/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/config.jelly
@@ -16,6 +16,10 @@
         <f:number field="slaveMem" clazz="required positive-number" value="512"/>
     </f:entry>
 
+    <f:entry title="${% Maximum number of Executors per Slave}">
+        <f:number field="maxExecutors" clazz="required number" value="2"/>
+    </f:entry>
+
     <f:entry title="${%Jenkins Executor CPUs}">
         <f:number field="executorCpus" clazz="required number" value="1"/>
     </f:entry>