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/09/20 09:36:16 UTC

git commit: Moved Jenkins out of the repo to https://github.com/jenkinsci/mesos-plugin.

Updated Branches:
  refs/heads/master 4cb7b74d1 -> e54a79529


Moved Jenkins out of the repo to
https://github.com/jenkinsci/mesos-plugin.


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

Branch: refs/heads/master
Commit: e54a7952959fa458fbbee97d25d7a10797172d73
Parents: 4cb7b74
Author: Vinod Kone <vi...@twitter.com>
Authored: Fri Sep 20 00:34:31 2013 -0700
Committer: Vinod Kone <vi...@twitter.com>
Committed: Fri Sep 20 00:34:31 2013 -0700

----------------------------------------------------------------------
 jenkins/Makefile.am                             |  69 ----
 jenkins/README.md                               |  53 ---
 jenkins/pom.xml.in                              |  80 -----
 .../plugins/mesos/JenkinsScheduler.java         | 355 -------------------
 .../java/org/jenkinsci/plugins/mesos/Mesos.java | 105 ------
 .../org/jenkinsci/plugins/mesos/MesosCloud.java | 215 -----------
 .../jenkinsci/plugins/mesos/MesosComputer.java  |  28 --
 .../plugins/mesos/MesosComputerLauncher.java    | 111 ------
 .../plugins/mesos/MesosRetentionStrategy.java   |  84 -----
 .../org/jenkinsci/plugins/mesos/MesosSlave.java | 103 ------
 jenkins/src/main/resources/index.jelly          |   7 -
 .../plugins/mesos/MesosCloud/config.jelly       |  38 --
 .../plugins/mesos/MesosCloud/help-master.html   |   3 -
 .../mesos/MesosSlave/configure-entries.jelly    |  15 -
 14 files changed, 1266 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/e54a7952/jenkins/Makefile.am
----------------------------------------------------------------------
diff --git a/jenkins/Makefile.am b/jenkins/Makefile.am
deleted file mode 100644
index 6b89e75..0000000
--- a/jenkins/Makefile.am
+++ /dev/null
@@ -1,69 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License
-
-EXTRA_DIST = README.md										\
-	pom.xml											\
-	src/main/java/org/jenkinsci/plugins/mesos/JenkinsScheduler.java				\
-	src/main/java/org/jenkinsci/plugins/mesos/Mesos.java					\
-	src/main/java/org/jenkinsci/plugins/mesos/MesosCloud.java				\
-	src/main/java/org/jenkinsci/plugins/mesos/MesosComputer.java				\
-	src/main/java/org/jenkinsci/plugins/mesos/MesosComputerLauncher.java			\
-	src/main/java/org/jenkinsci/plugins/mesos/MesosRetentionStrategy.java			\
-	src/main/java/org/jenkinsci/plugins/mesos/MesosSlave.java				\
-	src/main/resources/index.jelly								\
-	src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/config.jelly			\
-	src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/help-master.html		\
-	src/main/resources/org/jenkinsci/plugins/mesos/MesosSlave/configure-entries.jelly
-
-
-if OS_LINUX
-  MESOS_LIBRARY = libmesos.so
-else
-  MESOS_LIBRARY = libmesos.dylib
-endif
-TARGET_LIBS_DIR = src/main/webapp
-
-
-$(MESOS_LIBRARY):
-	@cd $(abs_top_builddir) && $(MAKE) $(AM_MAKEFLAGS);
-
-
-MESOS_JAR = mesos-$(PACKAGE_VERSION).jar
-
-
-$(MESOS_JAR):
-	@cd $(abs_top_builddir)/src && $(MAKE) $(AM_MAKEFLAGS) maven-install;
-
-
-# Defines a target to build the Jenkins plugin for Mesos.
-# This will create ./target/mesos.hpi that you can deploy to Jenkins.
-jenkins: $(MESOS_LIBRARY) $(MESOS_JAR)
-	if test "$(top_srcdir)" != "$(top_builddir)"; then			\
-          cp -rp $(srcdir)/src .;						\
-        fi
-	mkdir -p $(TARGET_LIBS_DIR) &&						\
-	cp $(abs_top_builddir)/src/.libs/$(MESOS_LIBRARY) $(TARGET_LIBS_DIR) && \
-	mvn package
-
-
-clean-local:
-	if test "$(top_srcdir)" != "$(top_builddir)"; then		\
-          rm -rf src;							\
-        fi
-	rm -rf target work;
-
-
-.PHONY: jenkins

http://git-wip-us.apache.org/repos/asf/mesos/blob/e54a7952/jenkins/README.md
----------------------------------------------------------------------
diff --git a/jenkins/README.md b/jenkins/README.md
deleted file mode 100644
index 4d6e154..0000000
--- a/jenkins/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-Jenkins on Mesos
-----------------
-
-This Jenkins plugin allows Jenkins to dynamically launch Jenkins slaves on a
-Mesos cluster depending on the workload!
-
-### Building the plugin ###
-
-First configure the jenkins target:
-
-        $ ./bootstrap
-        $ mkdir -p build && cd build
-        $ ../configure
-
-Now build the plugin:
-
-        $ cd jenkins
-        $ make jenkins
-
-This should build the Mesos plugin (mesos.hpi) in the 'target' folder.
-
-
-### Installing the plugin ###
-
-Go to 'Manage Plugins' page in Jenkins Web UI and manually upload and
-install the plugin.
-
-Alternatively, you can just copy the plugin to your Jenkins plugins directory
-(this might need a restart of Jenkins).
-
-        $ cp target/mesos.hpi ${JENKINS_HOME}/plugins
-
-
-### Configuring the plugin ###
-
-Now go to 'Configure' page in Jenkins. If the plugin is successfully installed
-you should see an option to 'Add a new cloud' at the bottom of the page. Add
-the 'Mesos Cloud' and give it the address (HOST:PORT) of a running Mesos master.
-Click 'Save' for the plugin to connect to Mesos.
-
-Login to the Mesos master's Web UI to verify that the plugin is registered as
-'Jenkins Framework'.
-
-
-### Configuring Jenkins jobs ###
-
-Finally, just add 'mesos' label to the jobs that you want to be run on a
-Jenkins slave launched on Mesos.
-
-Thats it!
-
-
-_Please email user@mesos.apache.org with questions!_

http://git-wip-us.apache.org/repos/asf/mesos/blob/e54a7952/jenkins/pom.xml.in
----------------------------------------------------------------------
diff --git a/jenkins/pom.xml.in b/jenkins/pom.xml.in
deleted file mode 100644
index 6f76c49..0000000
--- a/jenkins/pom.xml.in
+++ /dev/null
@@ -1,80 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.jenkins-ci.plugins</groupId>
-    <artifactId>plugin</artifactId>
-    <version>1.509.1</version><!-- which version of Jenkins is this plugin built against? -->
-  </parent>
-
-  <groupId>org.jenkins-ci.plugins</groupId>
-  <artifactId>mesos</artifactId>
-  <version>0.1-SNAPSHOT</version>
-  <packaging>hpi</packaging>
-
-  <!-- get every artifact through repo.jenkins-ci.org, which proxies all the artifacts that we need -->
-  <repositories>
-    <repository>
-      <id>repo.jenkins-ci.org</id>
-      <url>http://repo.jenkins-ci.org/public/</url>
-    </repository>
-  </repositories>
-
-  <pluginRepositories>
-    <pluginRepository>
-      <id>repo.jenkins-ci.org</id>
-      <url>http://repo.jenkins-ci.org/public/</url>
-    </pluginRepository>
-  </pluginRepositories>
-
-  <properties>
-    <!--
-      explicitly specifying the latest version here because one we get from the parent POM
-      tends to lag behind a bit
-    -->
-    <maven-hpi-plugin.version>1.95</maven-hpi-plugin.version>
-  </properties>
-
-  <!-- NOTE: Need to run jenkins by providing the mesos lib path. -->
-  <!-- $ MESOS_NATIVE_LIBRARY=/path/to/libmesos.dylib mvn hpi:run -->
-  <dependencies>
-      <dependency>
-          <groupId>org.apache.mesos</groupId>
-          <artifactId>mesos</artifactId>
-          <version>@PACKAGE_VERSION@</version>
-      </dependency>
-      <dependency>
-          <groupId>com.google.protobuf</groupId>
-          <artifactId>protobuf-java</artifactId>
-          <version>2.4.1</version>
-      </dependency>
-  </dependencies>
-
-  <build>
-      <plugins>
-          <plugin>
-              <groupId>org.apache.maven.plugins</groupId>
-              <artifactId>maven-dependency-plugin</artifactId>
-              <executions>
-                  <execution>
-                      <id>copy-dependencies</id>
-                      <phase>package</phase>
-                      <goals>
-                          <goal>copy-dependencies</goal>
-                      </goals>
-                      <configuration>
-                          <outputDirectory>${project.build.directory}</outputDirectory>
-                          <overWriteReleases>false</overWriteReleases>
-                          <overWriteSnapshots>true</overWriteSnapshots>
-                      </configuration>
-                  </execution>
-              </executions>
-          </plugin>
-          <plugin>
-              <artifactId>maven-compiler-plugin</artifactId>
-              <configuration>
-                  <target>1.6</target>
-              </configuration>
-          </plugin>
-      </plugins>
-  </build>
-</project>

http://git-wip-us.apache.org/repos/asf/mesos/blob/e54a7952/jenkins/src/main/java/org/jenkinsci/plugins/mesos/JenkinsScheduler.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/JenkinsScheduler.java b/jenkins/src/main/java/org/jenkinsci/plugins/mesos/JenkinsScheduler.java
deleted file mode 100644
index a52fc0f..0000000
--- a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/JenkinsScheduler.java
+++ /dev/null
@@ -1,355 +0,0 @@
-package org.jenkinsci.plugins.mesos;
-
-import java.net.URL;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Queue;
-import java.util.logging.Logger;
-
-import jenkins.model.Jenkins;
-
-import org.apache.mesos.MesosSchedulerDriver;
-import org.apache.mesos.MesosNativeLibrary;
-import org.apache.mesos.Protos.CommandInfo;
-import org.apache.mesos.Protos.ExecutorID;
-import org.apache.mesos.Protos.Filters;
-import org.apache.mesos.Protos.FrameworkID;
-import org.apache.mesos.Protos.FrameworkInfo;
-import org.apache.mesos.Protos.MasterInfo;
-import org.apache.mesos.Protos.Offer;
-import org.apache.mesos.Protos.OfferID;
-import org.apache.mesos.Protos.Resource;
-import org.apache.mesos.Protos.SlaveID;
-import org.apache.mesos.Protos.Status;
-import org.apache.mesos.Protos.TaskID;
-import org.apache.mesos.Protos.TaskInfo;
-import org.apache.mesos.Protos.TaskStatus;
-import org.apache.mesos.Protos.Value;
-import org.apache.mesos.Scheduler;
-import org.apache.mesos.SchedulerDriver;
-
-public class JenkinsScheduler implements Scheduler {
-  private static final String SLAVE_JAR_URI_SUFFIX = "jnlpJars/slave.jar";
-
-  // We allocate 10% more memory to the Mesos task to account for the JVM overhead.
-  private static final double JVM_MEM_OVERHEAD_FACTOR = 0.1;
-
-  private static final String SLAVE_COMMAND_FORMAT =
-      "java -DHUDSON_HOME=jenkins -server -Xmx%dm -Xms16m -XX:+UseConcMarkSweepGC " +
-      "-Djava.net.preferIPv4Stack=true -jar slave.jar  -jnlpUrl %s";
-
-  private Queue<Request> requests;
-  private Map<TaskID, Result> results;
-  private volatile MesosSchedulerDriver driver;
-  private final String jenkinsMaster;
-  private final String mesosMaster;
-
-  private static final Logger LOGGER = Logger.getLogger(JenkinsScheduler.class.getName());
-
-  public JenkinsScheduler(String jenkinsMaster, String mesosMaster) {
-    LOGGER.info("JenkinsScheduler instantiated with jenkins " + jenkinsMaster +
-        " and mesos " + mesosMaster);
-
-    this.jenkinsMaster = jenkinsMaster;
-    this.mesosMaster = mesosMaster;
-
-    requests = new LinkedList<Request>();
-    results = new HashMap<TaskID, Result>();
-  }
-
-  public synchronized void init() {
-    // Load the Mesos native library bundled with the plugin.
-    // TODO(vinod): Instead of loading the library here, it would
-    // be great if the plugin can dynamically set the MESOS_NATIVE_LIBRARY
-    // environment variable or java.library.path system property.
-    final URL resourceURL =
-        Jenkins.getInstance().getPlugin("mesos").getWrapper().baseResourceURL;
-
-    String MESOS_NATIVE_LIBRARY = resourceURL.getPath() + "libmesos.so";
-    if (System.getProperty("os.name").indexOf("Mac") >= 0) {
-      MESOS_NATIVE_LIBRARY = resourceURL.getPath() + "libmesos.dylib";
-    }
-
-    // First, we attempt to load the library from the plugin directory.
-    // If unsuccessful, we attempt to load using 'MesosNativeLibrary.load()'.
-    try {
-      MesosNativeLibrary.load(MESOS_NATIVE_LIBRARY);
-    } catch (UnsatisfiedLinkError error) {
-      LOGGER.warning("Failed to load native Mesos library from '" + MESOS_NATIVE_LIBRARY +
-                     "': " + error.getMessage());
-      MesosNativeLibrary.load();
-    }
-
-    // Start the framework.
-    new Thread(new Runnable() {
-      @Override
-      public void run() {
-        // Have Mesos fill in the current user.
-        FrameworkInfo framework = FrameworkInfo.newBuilder().setUser("")
-            .setName("Jenkins Framework").build();
-
-        driver = new MesosSchedulerDriver(JenkinsScheduler.this, framework, mesosMaster);
-
-        if (driver.run() != Status.DRIVER_STOPPED) {
-          LOGGER.severe("The mesos driver was aborted!");
-        }
-
-        driver = null;
-      }
-    }).start();
-  }
-
-  public synchronized void stop() {
-    driver.stop();
-  }
-
-  public synchronized boolean isRunning() {
-    return driver != null;
-  }
-
-  public void requestJenkinsSlave(Mesos.SlaveRequest request, Mesos.SlaveResult result) {
-    LOGGER.info("Enqueuing jenkins slave request");
-    requests.add(new Request(request, result));
-  }
-
-  /**
-   * @param slaveName the slave name in jenkins
-   * @return the jnlp url for the slave: http://[master]/computer/[slaveName]/slave-agent.jnlp
-   */
-  private String getJnlpUrl(String slaveName) {
-    return joinPaths(joinPaths(joinPaths(jenkinsMaster, "computer"), slaveName), "slave-agent.jnlp");
-  }
-
-  private static String joinPaths(String prefix, String suffix) {
-    if (prefix.endsWith("/"))   prefix = prefix.substring(0, prefix.length()-1);
-    if (suffix.startsWith("/")) suffix = suffix.substring(1, suffix.length());
-
-    return prefix + '/' + suffix;
-  }
-
-  public void terminateJenkinsSlave(String name) {
-    LOGGER.info("Terminating jenkins slave " + name);
-
-    TaskID taskId = TaskID.newBuilder().setValue(name).build();
-
-    if (results.containsKey(taskId)) {
-      LOGGER.info("Killing mesos task " + taskId);
-      driver.killTask(taskId);
-    } else {
-      LOGGER.warning("Asked to kill unknown mesos task " + taskId);
-    }
-  }
-
-  @Override
-  public void registered(SchedulerDriver driver, FrameworkID frameworkId, MasterInfo masterInfo) {
-    LOGGER.info("Framework registered! ID = " + frameworkId.getValue());
-  }
-
-  @Override
-  public void reregistered(SchedulerDriver driver, MasterInfo masterInfo) {
-    LOGGER.info("Framework re-registered");
-  }
-
-  @Override
-  public void disconnected(SchedulerDriver driver) {
-    LOGGER.info("Framework disconnected!");
-  }
-
-  @Override
-  public void resourceOffers(SchedulerDriver driver, List<Offer> offers) {
-    LOGGER.info("Received offers " + offers.size());
-    for (Offer offer : offers) {
-      boolean matched = false;
-      for (Request request : requests) {
-        if (matches(offer, request)) {
-          matched = true;
-          LOGGER.info("Offer matched! Creating mesos task");
-          createMesosTask(offer, request);
-          requests.remove(request);
-          break;
-        }
-      }
-
-      if (!matched) {
-        driver.declineOffer(offer.getId());
-      }
-    }
-  }
-
-  private boolean matches(Offer offer, Request request) {
-    double cpus = -1;
-    double mem = -1;
-
-    for (Resource resource : offer.getResourcesList()) {
-      if (resource.getName().equals("cpus")) {
-        if (resource.getType().equals(Value.Type.SCALAR)) {
-          cpus = resource.getScalar().getValue();
-        } else {
-          LOGGER.severe("Cpus resource was not a scalar: " + resource.getType().toString());
-        }
-      } else if (resource.getName().equals("mem")) {
-        if (resource.getType().equals(Value.Type.SCALAR)) {
-          mem = resource.getScalar().getValue();
-        } else {
-          LOGGER.severe("Mem resource was not a scalar: " + resource.getType().toString());
-        }
-      } else if (resource.getName().equals("disk")) {
-        LOGGER.warning("Ignoring disk resources from offer");
-      } else if (resource.getName().equals("ports")) {
-        LOGGER.info("Ignoring ports resources from offer");
-      } else {
-        LOGGER.warning("Ignoring unknown resource type: " + resource.getName());
-      }
-    }
-
-    if (cpus < 0) LOGGER.severe("No cpus resource present");
-    if (mem < 0)  LOGGER.severe("No mem resource present");
-
-    // Check for sufficient cpu and memory resources in the offer.
-    double requestedCpus = request.request.cpus;
-    double requestedMem = (1 + JVM_MEM_OVERHEAD_FACTOR) * request.request.mem;
-
-    if (requestedCpus <= cpus && requestedMem <= mem) {
-      return true;
-    } else {
-      LOGGER.info(
-          "Offer not sufficient for slave request:\n" +
-          offer.getResourcesList().toString() +
-          "\nRequested for Jenkins slave:\n" +
-          "  cpus: " + requestedCpus + "\n" +
-          "  mem:  " + requestedMem);
-      return false;
-    }
-  }
-
-  private void createMesosTask(Offer offer, Request request) {
-    TaskID taskId = TaskID.newBuilder().setValue(request.request.slave.name).build();
-
-    LOGGER.info("Launching task " + taskId.getValue() + " with URI " +
-                joinPaths(jenkinsMaster, SLAVE_JAR_URI_SUFFIX));
-
-    TaskInfo task = TaskInfo
-        .newBuilder()
-        .setName("task " + taskId.getValue())
-        .setTaskId(taskId)
-        .setSlaveId(offer.getSlaveId())
-        .addResources(
-            Resource
-                .newBuilder()
-                .setName("cpus")
-                .setType(Value.Type.SCALAR)
-                .setScalar(
-                    Value.Scalar.newBuilder()
-                        .setValue(request.request.cpus).build()).build())
-        .addResources(
-            Resource
-                .newBuilder()
-                .setName("mem")
-                .setType(Value.Type.SCALAR)
-                .setScalar(
-                    Value.Scalar
-                        .newBuilder()
-                        .setValue((1 + JVM_MEM_OVERHEAD_FACTOR) * request.request.mem)
-                        .build()).build())
-        .setCommand(
-            CommandInfo
-                .newBuilder()
-                .setValue(
-                    String.format(SLAVE_COMMAND_FORMAT, request.request.mem,
-                        getJnlpUrl(request.request.slave.name)))
-                .addUris(
-                    CommandInfo.URI.newBuilder().setValue(
-                        joinPaths(jenkinsMaster, SLAVE_JAR_URI_SUFFIX)))).build();
-
-    List<TaskInfo> tasks = new ArrayList<TaskInfo>();
-    tasks.add(task);
-    Filters filters = Filters.newBuilder().setRefuseSeconds(1).build();
-    driver.launchTasks(offer.getId(), tasks, filters);
-
-    results.put(taskId, new Result(request.result, new Mesos.JenkinsSlave(offer.getSlaveId()
-        .getValue())));
-  }
-
-  @Override
-  public void offerRescinded(SchedulerDriver driver, OfferID offerId) {
-    LOGGER.info("Rescinded offer " + offerId);
-  }
-
-  @Override
-  public void statusUpdate(SchedulerDriver driver, TaskStatus status) {
-    TaskID taskId = status.getTaskId();
-    LOGGER.info("Status update: task " + taskId + " is in state " + status.getState());
-
-    if (!results.containsKey(taskId)) {
-      throw new IllegalStateException("Unknown taskId: " + taskId);
-    }
-
-    Result result = results.get(taskId);
-
-    switch (status.getState()) {
-    case TASK_STAGING:
-    case TASK_STARTING:
-      break;
-    case TASK_RUNNING:
-      result.result.running(result.slave);
-      break;
-    case TASK_FINISHED:
-      result.result.finished(result.slave);
-      break;
-    case TASK_FAILED:
-    case TASK_KILLED:
-    case TASK_LOST:
-      result.result.failed(result.slave);
-      break;
-    default:
-      throw new IllegalStateException("Invalid State: " + status.getState());
-    }
-  }
-
-  @Override
-  public void frameworkMessage(SchedulerDriver driver, ExecutorID executorId,
-      SlaveID slaveId, byte[] data) {
-    LOGGER.info("Received framework message from executor " + executorId
-        + " of slave " + slaveId);
-  }
-
-  @Override
-  public void slaveLost(SchedulerDriver driver, SlaveID slaveId) {
-    LOGGER.info("Slave " + slaveId + " lost!");
-  }
-
-  @Override
-  public void executorLost(SchedulerDriver driver, ExecutorID executorId,
-      SlaveID slaveId, int status) {
-    LOGGER.info("Executor " + executorId + " of slave " + slaveId + " lost!");
-  }
-
-  @Override
-  public void error(SchedulerDriver driver, String message) {
-    LOGGER.severe(message);
-  }
-
-  private class Result {
-    private final Mesos.SlaveResult result;
-    private final Mesos.JenkinsSlave slave;
-
-    private Result(Mesos.SlaveResult result, Mesos.JenkinsSlave slave) {
-      this.result = result;
-      this.slave = slave;
-    }
-  }
-
-  private class Request {
-    private final Mesos.SlaveRequest request;
-    private final Mesos.SlaveResult result;
-
-    public Request(Mesos.SlaveRequest request, Mesos.SlaveResult result) {
-      this.request = request;
-      this.result = result;
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/mesos/blob/e54a7952/jenkins/src/main/java/org/jenkinsci/plugins/mesos/Mesos.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/Mesos.java b/jenkins/src/main/java/org/jenkinsci/plugins/mesos/Mesos.java
deleted file mode 100644
index 61a226e..0000000
--- a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/Mesos.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package org.jenkinsci.plugins.mesos;
-
-public abstract class Mesos {
-  private static MesosImpl mesos;
-
-  public static class JenkinsSlave {
-    String name;
-
-    public JenkinsSlave(String name) {
-      this.name = name;
-    }
-  }
-
-  public static class SlaveRequest {
-    JenkinsSlave slave;
-    final int cpus;
-    final int mem;
-
-    public SlaveRequest(JenkinsSlave slave, int cpus, int mem) {
-      this.slave = slave;
-      this.cpus = cpus;
-      this.mem = mem;
-    }
-  }
-
-  interface SlaveResult {
-    void running(JenkinsSlave slave);
-
-    void finished(JenkinsSlave slave);
-
-    void failed(JenkinsSlave slave);
-  }
-
-  abstract public void startScheduler(String jenkinsMaster, String mesosMaster);
-  abstract public boolean isSchedulerRunning();
-  abstract public void stopScheduler();
-
-  /**
-   * Starts a jenkins slave asynchronously in the mesos cluster.
-   *
-   * @param request
-   *          slave request.
-   * @param result
-   *          this callback will be called when the slave starts.
-   */
-  abstract public void startJenkinsSlave(SlaveRequest request, SlaveResult result);
-
-
-  /**
-   * Stop a jenkins slave asynchronously in the mesos cluster.
-   *
-   * @param name
-   *          jenkins slave.
-   *
-   */
-  abstract public void stopJenkinsSlave(String name);
-
-  /**
-   * @return the mesos implementation instance
-   */
-  public static synchronized Mesos getInstance() {
-    if (mesos == null) {
-      mesos = new MesosImpl();
-    }
-    return mesos;
-  }
-
-  public static class MesosImpl extends Mesos {
-    @Override
-    public synchronized void startScheduler(String jenkinsMaster, String mesosMaster) {
-      stopScheduler();
-      scheduler = new JenkinsScheduler(jenkinsMaster, mesosMaster);
-      scheduler.init();
-    }
-
-    @Override
-    public synchronized boolean isSchedulerRunning() {
-      return scheduler != null && scheduler.isRunning();
-    }
-
-    @Override
-    public synchronized void stopScheduler() {
-      if (scheduler != null) {
-        scheduler.stop();
-        scheduler = null;
-      }
-    }
-
-    @Override
-    public synchronized void startJenkinsSlave(SlaveRequest request, SlaveResult result) {
-      if (scheduler != null) {
-        scheduler.requestJenkinsSlave(request, result);
-      }
-    }
-
-    @Override
-    public synchronized void stopJenkinsSlave(String name) {
-      if (scheduler != null) {
-        scheduler.terminateJenkinsSlave(name);
-      }
-    }
-
-    private JenkinsScheduler scheduler;
-  }
-}

http://git-wip-us.apache.org/repos/asf/mesos/blob/e54a7952/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
deleted file mode 100644
index 29dbea5..0000000
--- a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosCloud.java
+++ /dev/null
@@ -1,215 +0,0 @@
-package org.jenkinsci.plugins.mesos;
-
-import hudson.Extension;
-import hudson.model.Computer;
-import hudson.model.Descriptor;
-import hudson.model.Descriptor.FormException;
-import hudson.model.Hudson;
-import hudson.model.Label;
-import hudson.model.Node;
-import hudson.model.Node.Mode;
-import hudson.slaves.Cloud;
-import hudson.slaves.NodeProperty;
-import hudson.slaves.NodeProvisioner.PlannedNode;
-import hudson.util.FormValidation;
-
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.UUID;
-import java.util.concurrent.Callable;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.servlet.ServletException;
-
-import jenkins.model.Jenkins;
-import net.sf.json.JSONObject;
-
-import org.kohsuke.stapler.DataBoundConstructor;
-import org.kohsuke.stapler.QueryParameter;
-import org.kohsuke.stapler.StaplerRequest;
-import org.kohsuke.stapler.StaplerResponse;
-
-public class MesosCloud extends Cloud {
-
-  private String master;
-  private String description;
-
-  // 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";
-
-  private static String staticMaster;
-
-  private static final Logger LOGGER = Logger.getLogger(MesosCloud.class.getName());
-
-  @DataBoundConstructor
-  public MesosCloud(String master, String description, int slaveCpus,
-      int slaveMem, int maxExecutors, int executorCpus, int executorMem, int idleTerminationMinutes)
-          throws NumberFormatException {
-    super("MesosCloud");
-
-    this.master = master;
-    this.description = description;
-    this.slaveCpus = slaveCpus;
-    this.slaveMem = slaveMem;
-    this.maxExecutors = maxExecutors;
-    this.executorCpus = executorCpus;
-    this.executorMem = executorMem;
-    this.idleTerminationMinutes = idleTerminationMinutes;
-
-    // Restart the scheduler if the master has changed or a scheduler is not up.
-    if (!master.equals(staticMaster) || !Mesos.getInstance().isSchedulerRunning()) {
-      if (!master.equals(staticMaster)) {
-        LOGGER.info("Mesos master changed, restarting the scheduler");
-      } else {
-        LOGGER.info("Scheduler was down, restarting the scheduler");
-      }
-
-      Mesos.getInstance().stopScheduler();
-      Mesos.getInstance().startScheduler(Jenkins.getInstance().getRootUrl(), master);
-    } else {
-      LOGGER.info("Mesos master has not changed, leaving the scheduler running");
-    }
-
-    staticMaster = master;
-  }
-
-  @Override
-  public Collection<PlannedNode> provision(Label label, int excessWorkload) {
-    List<PlannedNode> list = new ArrayList<PlannedNode>();
-    try {
-      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();
-    }
-
-    return list;
-  }
-
-  private MesosSlave doProvision(int numExecutors) throws Descriptor.FormException, IOException {
-    String name = "mesos-jenkins-" + UUID.randomUUID().toString();
-    return new MesosSlave(name, numExecutors, labelString, slaveCpus, slaveMem,
-        executorCpus, executorMem, idleTerminationMinutes);
-  }
-
-  @Override
-  public boolean canProvision(Label label) {
-    // Provisioning is simply creating a task for a jenkins slave.
-    // Therefore, we can always provision as long as the label
-    // matches "mesos".
-    // TODO(vinod): The framework may not have the resources necessary
-    // to start a task when it comes time to launch the slave.
-    return label.matches(Label.parse(labelString));
-  }
-
-  public String getMaster() {
-    return this.master;
-  }
-
-  public void setMaster(String master) {
-    this.master = master;
-  }
-
-  public String getDescription() {
-    return description;
-  }
-
-  public void setDescription(String description) {
-    this.description = description;
-  }
-
-  @Override
-  public DescriptorImpl getDescriptor() {
-    return (DescriptorImpl) super.getDescriptor();
-  }
-
-  public static MesosCloud get() {
-    return Hudson.getInstance().clouds.get(MesosCloud.class);
-  }
-
-  @Extension
-  public static class DescriptorImpl extends Descriptor<Cloud> {
-    private String master;
-    private String description;
-
-    @Override
-    public String getDisplayName() {
-      return "Mesos Cloud";
-    }
-
-    @Override
-    public boolean configure(StaplerRequest request, JSONObject object) throws FormException {
-      master = object.getString("master");
-      description = object.getString("description");
-      save();
-      return super.configure(request, object);
-    }
-
-    /**
-     * Test connection from configuration page.
-     */
-    public FormValidation doTestConnection(@QueryParameter String master)
-        throws IOException, ServletException {
-      master = master.trim();
-
-      if (master.equals("local")) {
-        return FormValidation.warning("'local' creates a local mesos cluster");
-      }
-
-      if (master.startsWith("zk://")) {
-        return FormValidation.warning("Zookeeper paths can be used, but the connection cannot be " +
-            "tested prior to saving this page.");
-      }
-
-      if (master.startsWith("http://")) {
-        return FormValidation.error("Please omit 'http://'.");
-      }
-
-      try {
-        // URL requires the protocol to be explicitly specified.
-        HttpURLConnection urlConn =
-          (HttpURLConnection) new URL("http://" + master).openConnection();
-        urlConn.connect();
-        int code = urlConn.getResponseCode();
-        urlConn.disconnect();
-
-        if (code == 200) {
-          return FormValidation.ok("Connected to Mesos successfully");
-        } else {
-          return FormValidation.error("Status returned from url was " + code);
-        }
-      } catch (IOException e) {
-        LOGGER.log(Level.WARNING, "Failed to connect to Mesos " + master, e);
-        return FormValidation.error(e.getMessage());
-      }
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/mesos/blob/e54a7952/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosComputer.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosComputer.java b/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosComputer.java
deleted file mode 100644
index 1196b9d..0000000
--- a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosComputer.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.jenkinsci.plugins.mesos;
-
-import hudson.model.Slave;
-import hudson.slaves.SlaveComputer;
-
-import java.io.IOException;
-
-import org.kohsuke.stapler.HttpRedirect;
-import org.kohsuke.stapler.HttpResponse;
-
-public class MesosComputer extends SlaveComputer {
-  public MesosComputer(Slave slave) {
-    super(slave);
-  }
-
-  @Override
-  public MesosSlave getNode() {
-    return (MesosSlave) super.getNode();
-  }
-
-  @Override
-  public HttpResponse doDoDelete() throws IOException {
-    checkPermission(DELETE);
-    if (getNode() != null)
-      getNode().terminate();
-    return new HttpRedirect("..");
-  }
-}

http://git-wip-us.apache.org/repos/asf/mesos/blob/e54a7952/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosComputerLauncher.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosComputerLauncher.java b/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosComputerLauncher.java
deleted file mode 100644
index c752254..0000000
--- a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosComputerLauncher.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package org.jenkinsci.plugins.mesos;
-
-import hudson.model.TaskListener;
-import hudson.slaves.ComputerLauncher;
-import hudson.slaves.SlaveComputer;
-
-import java.io.PrintStream;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-import java.util.logging.Logger;
-
-import org.jenkinsci.plugins.mesos.Mesos.JenkinsSlave;
-
-public class MesosComputerLauncher extends ComputerLauncher {
-
-  enum State { INIT, RUNNING, FAILURE }
-
-  private static final Logger LOGGER = Logger.getLogger(MesosComputerLauncher.class.getName());
-
-  public MesosComputerLauncher(String _name) {
-    super();
-    LOGGER.info("Constructing MesosComputerLauncher");
-    this.state = State.INIT;
-    this.name = _name;
-  }
-
-  /**
-   * Launches a mesos task that starts the jenkins slave.
-   *
-   * NOTE: This has to be a blocking call:
-   *
-   * @see hudson.slaves.ComputerLauncher#launch(hudson.slaves.SlaveComputer,
-   *      hudson.model.TaskListener)
-   */
-  @Override
-  public void launch(SlaveComputer _computer, TaskListener listener) throws InterruptedException {
-    LOGGER.info("Launching slave computer " + name);
-
-    MesosComputer computer = (MesosComputer) _computer;
-    PrintStream logger = listener.getLogger();
-
-    // Get a handle to mesos.
-    Mesos mesos = Mesos.getInstance();
-
-    // If Jenkins scheduler is not running, terminate the node.
-    // This might happen if the computer was offline when Jenkins was shutdown.
-    // Since Jenkins persists its state, it tries to launch offline slaves when
-    // it restarts.
-    if (!mesos.isSchedulerRunning()) {
-      LOGGER.warning("Not launching " + name +
-                     " because the Mesos Jenkins scheduler is not running");
-      computer.getNode().terminate();
-      return;
-    }
-
-    // Create the request.
-    int cpus = computer.getNode().getCpus();
-    int mem = computer.getNode().getMem();
-    Mesos.SlaveRequest request = new Mesos.SlaveRequest(new JenkinsSlave(name), cpus, mem);
-
-    // Launch the jenkins slave.
-    final Lock lock = new ReentrantLock();
-    final CountDownLatch latch = new CountDownLatch(1);
-
-    logger.println("Starting mesos slave " + name);
-    LOGGER.info("Sending a request to start jenkins slave " + name);
-    mesos.startJenkinsSlave(request, new Mesos.SlaveResult() {
-      @Override
-      public void running(JenkinsSlave slave) {
-        state = State.RUNNING;
-        latch.countDown();
-      }
-
-      @Override
-      public void finished(JenkinsSlave slave) {
-        state = State.FAILURE;
-        latch.countDown();
-      }
-
-      @Override
-      public void failed(JenkinsSlave slave) {
-        state = State.FAILURE;
-        latch.countDown();
-      }
-    });
-
-    // Block until we know the status of the slave.
-    // TODO(vinod): What happens if the callback is called again!
-    latch.await();
-
-    if (state == State.RUNNING) {
-      logger.println("Successfully launched slave" + name);
-    }
-
-    LOGGER.info("Finished launching slave computer " + name);
-  }
-
-  /**
-   * Kills the mesos task that corresponds to the Jenkins slave, asynchronously.
-   */
-  public void terminate() {
-    // Get a handle to mesos.
-    Mesos mesos = Mesos.getInstance();
-
-    mesos.stopJenkinsSlave(name);
-  }
-
-  private volatile State state;
-  private final String name;
-}

http://git-wip-us.apache.org/repos/asf/mesos/blob/e54a7952/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosRetentionStrategy.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosRetentionStrategy.java b/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosRetentionStrategy.java
deleted file mode 100644
index b0b6d8a..0000000
--- a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosRetentionStrategy.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package org.jenkinsci.plugins.mesos;
-
-import static hudson.util.TimeUnit2.MINUTES;
-
-import java.util.logging.Logger;
-
-import org.kohsuke.stapler.DataBoundConstructor;
-
-import hudson.model.Descriptor;
-import hudson.slaves.RetentionStrategy;
-import hudson.util.TimeUnit2;
-
-/**
- * This is inspired by {@link hudson.slaves.CloudRetentionStrategy}.
- */
-public class MesosRetentionStrategy extends RetentionStrategy<MesosComputer> {
-
-  /**
-   * Number of minutes of idleness before an instance should be terminated. A
-   * value of zero indicates that the instance should never be automatically
-   * terminated.
-   */
-  public final int idleTerminationMinutes;
-
-  private static final Logger LOGGER = Logger
-      .getLogger(MesosRetentionStrategy.class.getName());
-
-  public MesosRetentionStrategy(int idleTerminationMinutes) {
-    this.idleTerminationMinutes = idleTerminationMinutes;
-  }
-
-  @Override
-  public synchronized long check(MesosComputer c) {
-    if (c.getNode() == null) {
-      return 1;
-    }
-
-    // If we just launched this computer, check back after 1 min.
-    // NOTE: 'c.getConnectTime()' refers to when the Jenkins slave was launched.
-    if ((System.currentTimeMillis() - c.getConnectTime()) <
-        MINUTES.toMillis(idleTerminationMinutes)) {
-      return 1;
-    }
-
-    // If the computer is offline, terminate it.
-    if (c.isOffline()) {
-      LOGGER.info("Disconnecting offline computer " + c.getName());
-      c.getNode().terminate();
-      return 1;
-    }
-
-    // Terminate the computer if it is idle for longer than
-    // 'idleTerminationMinutes'.
-    if (c.isIdle()) {
-      final long idleMilliseconds =
-          System.currentTimeMillis() - c.getIdleStartMilliseconds();
-
-      if (idleMilliseconds > MINUTES.toMillis(idleTerminationMinutes)) {
-        LOGGER.info("Disconnecting idle computer " + c.getName());
-        c.getNode().terminate();
-      }
-    }
-    return 1;
-  }
-
-  /**
-   * Try to connect to it ASAP to launch the slave agent.
-   */
-  @Override
-  public void start(MesosComputer c) {
-    c.connect(false);
-  }
-
-  /**
-   * No registration since this retention strategy is used only for Mesos nodes
-   * that we provision automatically.
-   */
-  public static class DescriptorImpl extends Descriptor<RetentionStrategy<?>> {
-    @Override
-    public String getDisplayName() {
-      return "MESOS";
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/mesos/blob/e54a7952/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosSlave.java
----------------------------------------------------------------------
diff --git a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosSlave.java b/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosSlave.java
deleted file mode 100644
index 9848ae9..0000000
--- a/jenkins/src/main/java/org/jenkinsci/plugins/mesos/MesosSlave.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package org.jenkinsci.plugins.mesos;
-
-import hudson.Extension;
-import hudson.model.Computer;
-import hudson.model.Descriptor;
-import hudson.model.Descriptor.FormException;
-import hudson.model.Hudson;
-import hudson.model.Slave;
-import hudson.slaves.NodeProperty;
-import hudson.slaves.ComputerLauncher;
-import hudson.slaves.RetentionStrategy;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.kohsuke.stapler.DataBoundConstructor;
-
-public class MesosSlave extends Slave {
-
-  private final int cpus;
-  private final int mem;
-
-  private static final Logger LOGGER = Logger.getLogger(MesosSlave.class
-      .getName());
-
-  @DataBoundConstructor
-  public MesosSlave(String name, int numExecutors, String labelString,
-      int slaveCpus, int slaveMem, int executorCpus, int executorMem,
-      int idleTerminationMinutes) throws FormException, IOException
-  {
-    super(name,
-          labelString, // node description.
-          "jenkins",   // remoteFS.
-          "" + numExecutors,
-          Mode.NORMAL,
-          labelString, // Label.
-          new MesosComputerLauncher(name),
-          new MesosRetentionStrategy(idleTerminationMinutes),
-          Collections.<NodeProperty<?>> emptyList());
-
-    this.cpus = slaveCpus + (numExecutors * executorCpus);
-    this.mem = slaveMem + (numExecutors * executorMem);
-
-    LOGGER.info("Constructing Mesos slave");
-  }
-
-  public int getCpus() {
-    return cpus;
-  }
-
-  public int getMem() {
-    return mem;
-  }
-
-  public void terminate() {
-    LOGGER.info("Terminating slave " + getNodeName());
-    try {
-      // Remove the node from hudson.
-      Hudson.getInstance().removeNode(this);
-
-      ComputerLauncher launcher = getLauncher();
-
-      // If this is a mesos computer launcher, terminate the launcher.
-      if (launcher instanceof MesosComputerLauncher) {
-        ((MesosComputerLauncher) launcher).terminate();
-      }
-    } catch (IOException e) {
-      LOGGER.log(Level.WARNING, "Failed to terminate Mesos instance: "
-          + getInstanceId(), e);
-    }
-  }
-
-  @Override
-  public DescriptorImpl getDescriptor() {
-    return (DescriptorImpl) super.getDescriptor();
-  }
-
-  @Extension
-  public static class DescriptorImpl extends SlaveDescriptor {
-    @Override
-    public String getDisplayName() {
-      return "Mesos Slave";
-    }
-  }
-
-  private String getInstanceId() {
-    return getNodeName();
-  }
-
-  public void idleTimeout() {
-    LOGGER.info("Mesos instance idle time expired: " + getInstanceId()
-        + ", terminate now");
-    terminate();
-  }
-
-  @Override
-  public Computer createComputer() {
-    return new MesosComputer(this);
-  }
-}

http://git-wip-us.apache.org/repos/asf/mesos/blob/e54a7952/jenkins/src/main/resources/index.jelly
----------------------------------------------------------------------
diff --git a/jenkins/src/main/resources/index.jelly b/jenkins/src/main/resources/index.jelly
deleted file mode 100644
index 62343d2..0000000
--- a/jenkins/src/main/resources/index.jelly
+++ /dev/null
@@ -1,7 +0,0 @@
-<!--
-  This view is used to render the installed plugins page.
--->
-<div>
-  This plugin can be used to connect Jenkins master to a Mesos cluster
-  and dynamically launch Jenkins slaves based on the work load.
-</div>

http://git-wip-us.apache.org/repos/asf/mesos/blob/e54a7952/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
deleted file mode 100644
index e12283a..0000000
--- a/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/config.jelly
+++ /dev/null
@@ -1,38 +0,0 @@
-<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
-
-    <f:entry title="${%Mesos Master [hostname:port]}" help="help-master.html">
-        <f:textbox field="master" />
-    </f:entry>
-
-    <f:entry title="${%Description}">
-        <f:textbox field="description" />
-    </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/e54a7952/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
deleted file mode 100644
index ecf60cc..0000000
--- a/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosCloud/help-master.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<div>
-    Specifies the hostname:port of the Mesos master.
-</div>

http://git-wip-us.apache.org/repos/asf/mesos/blob/e54a7952/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosSlave/configure-entries.jelly
----------------------------------------------------------------------
diff --git a/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosSlave/configure-entries.jelly b/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosSlave/configure-entries.jelly
deleted file mode 100644
index d671731..0000000
--- a/jenkins/src/main/resources/org/jenkinsci/plugins/mesos/MesosSlave/configure-entries.jelly
+++ /dev/null
@@ -1,15 +0,0 @@
-<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
-
-        <f:entry title="${%# of executors}">
-          <f:readOnlyTextbox field="numExecutors" clazz="positive-number"/>
-        </f:entry>
-
-        <f:entry title="${%Labels}">
-          <f:readOnlyTextbox field="labelString"/>
-        </f:entry>
-
-        <f:entry title="${%Idle Termination Minutes}">
-          <f:readOnlyTextbox field="idleTerminationMinutes" clazz="positive-number"/>
-        </f:entry>
-
-</j:jelly>