You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sdap.apache.org by le...@apache.org on 2017/10/27 22:39:49 UTC

[12/51] [partial] incubator-sdap-nexus git commit: SDAP-1 Import all code under the SDAP SGA

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/build/reports/project/properties.txt
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/build/reports/project/properties.txt b/nexus-ingest/dataset-tiler/build/reports/project/properties.txt
new file mode 100644
index 0000000..8fb9f33
--- /dev/null
+++ b/nexus-ingest/dataset-tiler/build/reports/project/properties.txt
@@ -0,0 +1,151 @@
+
+------------------------------------------------------------
+Root project
+------------------------------------------------------------
+
+BootRepackage: class org.springframework.boot.gradle.repackage.RepackageTask
+allprojects: [root project 'dataset-tiler']
+ant: org.gradle.api.internal.project.DefaultAntBuilder@32a7d330
+antBuilderFactory: org.gradle.api.internal.project.DefaultAntBuilderFactory@5b9dfc8a
+applicationDefaultJvmArgs: []
+applicationDistribution: org.gradle.api.internal.file.copy.DefaultCopySpec_Decorated@6d5374d2
+applicationName: dataset-tiler
+archivesBaseName: dataset-tiler
+artifacts: org.gradle.api.internal.artifacts.dsl.DefaultArtifactHandler_Decorated@edb0b3
+asDynamicObject: org.gradle.api.internal.ExtensibleDynamicObject@c5fcdcd
+assemble: task ':assemble'
+assembleDist: task ':assembleDist'
+baseClassLoaderScope: org.gradle.api.internal.initialization.DefaultClassLoaderScope@38921960
+bootRepackage: task ':bootRepackage'
+bootRun: task ':bootRun'
+buildDependents: task ':buildDependents'
+buildDir: /Users/greguska/githubprojects/nexus/nexus-ingest/dataset-tiler/build
+buildFile: /Users/greguska/githubprojects/nexus/nexus-ingest/dataset-tiler/build.gradle
+buildNeeded: task ':buildNeeded'
+buildScriptSource: org.gradle.groovy.scripts.UriScriptSource@4e111f44
+buildscript: org.gradle.api.internal.initialization.DefaultScriptHandler@2394461d
+check: task ':check'
+childProjects: {}
+class: class org.gradle.api.internal.project.DefaultProject_Decorated
+classLoaderScope: org.gradle.api.internal.initialization.DefaultClassLoaderScope@5157d607
+classes: task ':classes'
+cleanEclipse: task ':cleanEclipse'
+cleanEclipseClasspath: task ':cleanEclipseClasspath'
+cleanEclipseJdt: task ':cleanEclipseJdt'
+cleanEclipseProject: task ':cleanEclipseProject'
+cleanIdea: task ':cleanIdea'
+cleanIdeaModule: task ':cleanIdeaModule'
+cleanIdeaProject: task ':cleanIdeaProject'
+cleanIdeaWorkspace: task ':cleanIdeaWorkspace'
+compileGroovy: task ':compileGroovy'
+compileJava: task ':compileJava'
+compileTestGroovy: task ':compileTestGroovy'
+compileTestJava: task ':compileTestJava'
+components: [org.gradle.api.internal.java.JavaLibrary@79268c54]
+conf2ScopeMappings: org.gradle.api.publication.maven.internal.pom.DefaultConf2ScopeMappingContainer@60afa4c7
+configurationActions: org.gradle.configuration.project.DefaultProjectConfigurationActionContainer@3f8b470b
+configurations: [configuration ':archives', configuration ':compile', configuration ':compileClasspath', configuration ':compileOnly', configuration ':default', configuration ':exported', configuration ':messageBus', configuration ':optional', configuration ':provided', configuration ':runtime', configuration ':testCompile', configuration ':testCompileClasspath', configuration ':testCompileOnly', configuration ':testRuntime', configuration ':versionManagement']
+configureModule: task ':configureModule'
+convention: org.gradle.api.internal.plugins.DefaultConvention@3eae5a49
+defaultArtifacts: org.gradle.api.internal.plugins.DefaultArtifactPublicationSet_Decorated@51265475
+defaultTasks: []
+deferredProjectConfiguration: org.gradle.api.internal.project.DeferredProjectConfiguration@1caf3629
+dependencies: org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@3bfd0dd5
+dependencyCacheDir: /Users/greguska/githubprojects/nexus/nexus-ingest/dataset-tiler/build/dependency-cache
+dependencyCacheDirName: dependency-cache
+dependencyReport: task ':dependencyReport'
+depth: 0
+description: null
+distTar: task ':distTar'
+distZip: task ':distZip'
+distributions: [org.gradle.api.distribution.internal.DefaultDistribution_Decorated@79f989a8]
+distsDir: /Users/greguska/githubprojects/nexus/nexus-ingest/dataset-tiler/build/distributions
+distsDirName: distributions
+docsDir: /Users/greguska/githubprojects/nexus/nexus-ingest/dataset-tiler/build/docs
+docsDirName: docs
+eclipse: org.gradle.plugins.ide.eclipse.model.EclipseModel_Decorated@35c9e8cc
+eclipseClasspath: task ':eclipseClasspath'
+eclipseJdt: task ':eclipseJdt'
+eclipseProject: task ':eclipseProject'
+ext: org.gradle.api.internal.plugins.DefaultExtraPropertiesExtension@562f97fc
+extensions: org.gradle.api.internal.plugins.DefaultConvention@3eae5a49
+fileOperations: org.gradle.api.internal.file.DefaultFileOperations@33d4fd6e
+fileResolver: org.gradle.api.internal.file.BaseDirFileResolver@6d59675
+findMainClass: task ':findMainClass'
+gradle: build 'dataset-tiler'
+groovyRuntime: org.gradle.api.tasks.GroovyRuntime_Decorated@7c2091eb
+groovydoc: task ':groovydoc'
+group: org.nasa.jpl.nexus.ingest
+htmlDependencyReport: task ':htmlDependencyReport'
+idea: org.gradle.plugins.ide.idea.model.IdeaModel_Decorated@569a79e4
+ideaModule: task ':ideaModule'
+ideaProject: task ':ideaProject'
+ideaWorkspace: task ':ideaWorkspace'
+inheritedScope: org.gradle.api.internal.ExtensibleDynamicObject$InheritedDynamicObject@42b1c1d4
+install: task ':install'
+installApp: task ':installApp'
+installDist: task ':installDist'
+jar: task ':jar'
+javadoc: task ':javadoc'
+libsDir: /Users/greguska/githubprojects/nexus/nexus-ingest/dataset-tiler/build/libs
+libsDirName: libs
+logger: org.gradle.logging.internal.slf4j.OutputEventListenerBackedLogger@34e667fd
+logging: org.gradle.logging.internal.DefaultLoggingManager@687d91c9
+mainClassName: 
+mavenPomDir: /Users/greguska/githubprojects/nexus/nexus-ingest/dataset-tiler/build/poms
+modelRegistry: org.gradle.model.internal.registry.DefaultModelRegistry@10aaeae4
+modelSchemaStore: org.gradle.model.internal.manage.schema.extract.DefaultModelSchemaStore@426bb8e6
+module: org.gradle.api.internal.artifacts.ProjectBackedModule@198c3f60
+name: dataset-tiler
+netcdfJavaVersion: 4.6.3
+parent: null
+parentIdentifier: null
+path: :
+pluginManager: org.gradle.api.internal.plugins.DefaultPluginManager_Decorated@157af44c
+plugins: [org.gradle.api.plugins.HelpTasksPlugin@7f8eb922, org.gradle.language.base.plugins.LifecycleBasePlugin@7ab94854, org.gradle.api.plugins.BasePlugin@15d9f6ac, org.gradle.api.plugins.ReportingBasePlugin@71a6c20c, org.gradle.platform.base.plugins.ComponentBasePlugin@1db7e233, org.gradle.language.base.plugins.LanguageBasePlugin@66d73f9c, org.gradle.platform.base.plugins.BinaryBasePlugin@3a140f61, org.gradle.api.plugins.JavaBasePlugin@111c6477, org.gradle.api.plugins.JavaPlugin@5fc5780e, org.gradle.api.plugins.GroovyBasePlugin@615d50a5, org.gradle.api.plugins.GroovyPlugin@52d01bf1, org.gradle.plugins.ide.idea.IdeaPlugin@c23fd87, org.gradle.api.plugins.MavenPlugin@32085631, org.gradle.api.distribution.plugins.DistributionPlugin@581babbc, org.gradle.api.plugins.ApplicationPlugin@6f6a6185, org.springframework.boot.gradle.SpringBootPlugin@21984069, org.springframework.build.gradle.propdep.PropDepsPlugin@7629f9e, org.springframework.build.gradle.propdep.PropDepsIdeaPlugin@221793a3, or
 g.gradle.plugins.ide.eclipse.EclipsePlugin@172789e0, org.springframework.build.gradle.propdep.PropDepsEclipsePlugin@2aae7f01, org.springframework.xd.gradle.plugin.ModulePlugin@364f0e2f, org.gradle.api.plugins.ProjectReportsPlugin@9f8a1f8]
+processOperations: org.gradle.api.internal.file.DefaultFileOperations@33d4fd6e
+processResources: task ':processResources'
+processTestResources: task ':processTestResources'
+project: root project 'dataset-tiler'
+projectDir: /Users/greguska/githubprojects/nexus/nexus-ingest/dataset-tiler
+projectEvaluationBroadcaster: ProjectEvaluationListener broadcast
+projectEvaluator: org.gradle.configuration.project.LifecycleProjectEvaluator@59092856
+projectRegistry: org.gradle.api.internal.project.DefaultProjectRegistry@5dfe1967
+projectReport: task ':projectReport'
+projectReportDir: /Users/greguska/githubprojects/nexus/nexus-ingest/dataset-tiler/build/reports/project
+projectReportDirName: project
+projects: [root project 'dataset-tiler']
+properties: {...}
+propertyReport: task ':propertyReport'
+reporting: org.gradle.api.reporting.ReportingExtension_Decorated@1ac435f6
+reportsDir: /Users/greguska/githubprojects/nexus/nexus-ingest/dataset-tiler/build/reports
+repositories: [org.gradle.api.internal.artifacts.repositories.DefaultMavenArtifactRepository_Decorated@58de7a76, org.gradle.api.internal.artifacts.repositories.DefaultMavenArtifactRepository_Decorated@4805b2a3, org.gradle.api.internal.artifacts.repositories.DefaultMavenArtifactRepository_Decorated@651dafe5, org.gradle.api.internal.artifacts.repositories.DefaultMavenArtifactRepository_Decorated@5e4d4d35, org.gradle.api.internal.artifacts.repositories.DefaultMavenArtifactRepository_Decorated@756b8140, org.gradle.api.internal.artifacts.repositories.DefaultMavenArtifactRepository_Decorated@109eb5e4]
+resources: org.gradle.api.internal.resources.DefaultResourceHandler@18745295
+rootDir: /Users/greguska/githubprojects/nexus/nexus-ingest/dataset-tiler
+rootProject: root project 'dataset-tiler'
+run: task ':run'
+scriptHandlerFactory: org.gradle.api.internal.initialization.DefaultScriptHandlerFactory@2c64804b
+scriptPluginFactory: org.gradle.configuration.DefaultScriptPluginFactory@52c7506
+serviceRegistryFactory: org.gradle.internal.service.scopes.ProjectScopeServices$4@60f8c1d2
+services: ProjectScopeServices
+sourceCompatibility: 1.8
+sourceSets: [source set 'main', source set 'test']
+springBoot: org.springframework.boot.gradle.SpringBootPluginExtension_Decorated@5a22d7a2
+springIntegrationDslVersion: 1.1.2.RELEASE
+springXdVersion: 1.3.1.RELEASE
+standardOutputCapture: org.gradle.logging.internal.DefaultLoggingManager@687d91c9
+startScripts: task ':startScripts'
+state: project state 'EXECUTED'
+status: integration
+subprojects: []
+targetCompatibility: 1.8
+taskReport: task ':taskReport'
+tasks: [task ':assemble', task ':assembleDist', task ':bootRepackage', task ':bootRun', task ':buildDependents', task ':buildNeeded', task ':check', task ':classes', task ':cleanEclipse', task ':cleanEclipseClasspath', task ':cleanEclipseJdt', task ':cleanEclipseProject', task ':cleanIdea', task ':cleanIdeaModule', task ':cleanIdeaProject', task ':cleanIdeaWorkspace', task ':compileGroovy', task ':compileJava', task ':compileTestGroovy', task ':compileTestJava', task ':configureModule', task ':dependencyReport', task ':distTar', task ':distZip', task ':eclipse', task ':eclipseClasspath', task ':eclipseJdt', task ':eclipseProject', task ':findMainClass', task ':groovydoc', task ':htmlDependencyReport', task ':idea', task ':ideaModule', task ':ideaProject', task ':ideaWorkspace', task ':install', task ':installApp', task ':installDist', task ':jar', task ':javadoc', task ':processResources', task ':processTestResources', task ':projectReport', task ':propertyReport', task ':run', task
  ':startScripts', task ':taskReport', task ':test', task ':testClasses', task ':wrapper']
+test: task ':test'
+testClasses: task ':testClasses'
+testReportDir: /Users/greguska/githubprojects/nexus/nexus-ingest/dataset-tiler/build/reports/tests
+testReportDirName: tests
+testResultsDir: /Users/greguska/githubprojects/nexus/nexus-ingest/dataset-tiler/build/test-results
+testResultsDirName: test-results
+version: 1.0.0.BUILD-SNAPSHOT
+wrapper: task ':wrapper'

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/build/reports/project/tasks.txt
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/build/reports/project/tasks.txt b/nexus-ingest/dataset-tiler/build/reports/project/tasks.txt
new file mode 100644
index 0000000..8741826
--- /dev/null
+++ b/nexus-ingest/dataset-tiler/build/reports/project/tasks.txt
@@ -0,0 +1,82 @@
+
+------------------------------------------------------------
+All tasks runnable from root project
+------------------------------------------------------------
+
+Application tasks
+-----------------
+bootRun - Run the project with support for auto-detecting main class and reloading static resources
+installApp - Installs the project as a JVM application along with libs and OS specific scripts.
+run - Runs this project as a JVM application
+
+Build tasks
+-----------
+assemble - Assembles the outputs of this project.
+bootRepackage - Repackage existing JAR and WAR archives so that they can be executed from the command line using 'java -jar'
+build - Assembles and tests this project.
+buildDependents - Assembles and tests this project and all projects that depend on it.
+buildNeeded - Assembles and tests this project and all projects it depends on.
+classes - Assembles main classes.
+clean - Deletes the build directory.
+jar - Assembles a jar archive containing the main classes.
+testClasses - Assembles test classes.
+
+Build Setup tasks
+-----------------
+init - Initializes a new Gradle build. [incubating]
+
+Distribution tasks
+------------------
+assembleDist - Assembles the main distributions
+distTar - Bundles the project as a distribution.
+distZip - Bundles the project as a distribution.
+installDist - Installs the project as a distribution as-is.
+
+Documentation tasks
+-------------------
+groovydoc - Generates Groovydoc API documentation for the main source code.
+javadoc - Generates Javadoc API documentation for the main source code.
+
+Help tasks
+----------
+buildEnvironment - Displays all buildscript dependencies declared in root project 'dataset-tiler'.
+components - Displays the components produced by root project 'dataset-tiler'. [incubating]
+dependencies - Displays all dependencies declared in root project 'dataset-tiler'.
+dependencyInsight - Displays the insight into a specific dependency in root project 'dataset-tiler'.
+help - Displays a help message.
+model - Displays the configuration model of root project 'dataset-tiler'. [incubating]
+projects - Displays the sub-projects of root project 'dataset-tiler'.
+properties - Displays the properties of root project 'dataset-tiler'.
+tasks - Displays the tasks runnable from root project 'dataset-tiler'.
+
+IDE tasks
+---------
+cleanEclipse - Cleans all Eclipse files.
+cleanIdea - Cleans IDEA project files (IML, IPR)
+eclipse - Generates all Eclipse files.
+idea - Generates IDEA project files (IML, IPR, IWS)
+
+Reporting tasks
+---------------
+projectReport - Generates a report about your project.
+
+Verification tasks
+------------------
+check - Runs all checks.
+test - Runs the unit tests.
+
+Other tasks
+-----------
+cleanIdeaWorkspace
+install - Installs the 'archives' artifacts into the local Maven repository.
+wrapper
+
+Rules
+-----
+Pattern: clean<TaskName>: Cleans the output files of a task.
+Pattern: build<ConfigurationName>: Assembles the artifacts of a configuration.
+Pattern: upload<ConfigurationName>: Assembles and uploads the artifacts belonging to a configuration.
+
+To see all tasks and more detail, run gradle tasks --all
+
+To see more detail about a task, run gradle help --task <task>

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/gradle/wrapper/gradle-wrapper.jar
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/gradle/wrapper/gradle-wrapper.jar b/nexus-ingest/dataset-tiler/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..9411448
Binary files /dev/null and b/nexus-ingest/dataset-tiler/gradle/wrapper/gradle-wrapper.jar differ

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/gradle/wrapper/gradle-wrapper.properties
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/gradle/wrapper/gradle-wrapper.properties b/nexus-ingest/dataset-tiler/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..2d73657
--- /dev/null
+++ b/nexus-ingest/dataset-tiler/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Wed Jan 04 10:25:39 PST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.12-all.zip

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/gradlew
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/gradlew b/nexus-ingest/dataset-tiler/gradlew
new file mode 100755
index 0000000..9d82f78
--- /dev/null
+++ b/nexus-ingest/dataset-tiler/gradlew
@@ -0,0 +1,160 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/src/main/groovy/org/nasa/jpl/nexus/ingest/datatiler/FileSlicer.groovy
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/src/main/groovy/org/nasa/jpl/nexus/ingest/datatiler/FileSlicer.groovy b/nexus-ingest/dataset-tiler/src/main/groovy/org/nasa/jpl/nexus/ingest/datatiler/FileSlicer.groovy
new file mode 100644
index 0000000..9e35b42
--- /dev/null
+++ b/nexus-ingest/dataset-tiler/src/main/groovy/org/nasa/jpl/nexus/ingest/datatiler/FileSlicer.groovy
@@ -0,0 +1,14 @@
+/*****************************************************************************
+* Copyright (c) 2016 Jet Propulsion Laboratory,
+* California Institute of Technology.  All rights reserved
+*****************************************************************************/
+package org.nasa.jpl.nexus.ingest.datatiler
+
+/**
+ * Created by greguska on 4/19/16.
+ */
+interface FileSlicer {
+
+    def generateSlices(def inputfile)
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/src/main/groovy/org/nasa/jpl/nexus/ingest/datatiler/SliceFileByDimension.groovy
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/src/main/groovy/org/nasa/jpl/nexus/ingest/datatiler/SliceFileByDimension.groovy b/nexus-ingest/dataset-tiler/src/main/groovy/org/nasa/jpl/nexus/ingest/datatiler/SliceFileByDimension.groovy
new file mode 100644
index 0000000..5645370
--- /dev/null
+++ b/nexus-ingest/dataset-tiler/src/main/groovy/org/nasa/jpl/nexus/ingest/datatiler/SliceFileByDimension.groovy
@@ -0,0 +1,101 @@
+/*****************************************************************************
+* Copyright (c) 2016 Jet Propulsion Laboratory,
+* California Institute of Technology.  All rights reserved
+*****************************************************************************/
+package org.nasa.jpl.nexus.ingest.datatiler
+
+import ucar.nc2.Variable
+import ucar.nc2.dataset.NetcdfDataset
+
+/**
+ * Created by greguska on 2/1/16.
+ */
+class SliceFileByDimension implements FileSlicer{
+
+    private String sliceByDimension
+    private List<String> dimensions
+    private String dimensionNamePrefix
+
+    public void setDimensions(List<String> dims) {
+        this.dimensions = dims
+    }
+
+    public void setSliceByDimension(String sliceBy){
+        this.sliceByDimension = sliceBy
+    }
+
+    public void setDimensionNamePrefix(String dimensionNamePrefix){
+        this.dimensionNamePrefix = dimensionNamePrefix
+    }
+
+    def generateSlices(def inputfile) {
+
+        return sliceByDimension.isInteger()?indexedDimensionSlicing(inputfile):namedDimensionSlicing(inputfile)
+    }
+
+    def indexedDimensionSlicing(def inputfile){
+
+        NetcdfDataset ds = null
+        def dimensionNameToLength = [:]
+        try {
+            ds = NetcdfDataset.openDataset(inputfile.getAbsolutePath())
+
+            // Because this is indexed-based dimension slicing, the dimensions are assumed to be unlimited with no names (ie. ds.dimensions == [])
+            // Therefore, we need to find a 'representative' variable with dimensions that we can inspect and work with
+            // 'lat' and 'lon' are common variable names in the datasets we work with. So try to find one of those first
+            // Otherwise, just find the first variable that has the same number of dimensions as was given in this.dimensions
+            Variable var = (ds.getVariables().find {"lat".equalsIgnoreCase(it.shortName)})?:(ds.getVariables().find {"lon".equalsIgnoreCase(it.shortName)})?:(ds.getVariables().find { it.getDimensions().size() == this.dimensions.size()})
+
+            assert var != null, "Could not find a variable in ${inputfile.name} with ${dimensions.size()} dimension(s)."
+
+            dimensions.forEach { dim_index ->
+                dimensionNameToLength[this.dimensionNamePrefix+dim_index] = var.getDimension(dim_index.toInteger()).length
+            }
+        } finally {
+            ds?.close()
+        }
+
+        return generateTileBoundrySlices(this.dimensionNamePrefix+this.sliceByDimension, dimensionNameToLength)
+
+    }
+
+    def namedDimensionSlicing(def inputfile){
+        NetcdfDataset ds = null
+        def dimensionNameToLength = [:]
+        try {
+            ds = NetcdfDataset.openDataset(inputfile.getAbsolutePath())
+
+            dimensionNameToLength = ds.getDimensions().findResults { dimension ->
+
+                this.dimensions.contains(dimension.getShortName()) ? [(dimension.getShortName()): dimension.getLength()] : null
+
+            }.collectEntries { it }
+        } finally {
+            ds?.close()
+        }
+
+        return generateTileBoundrySlices(this.sliceByDimension, dimensionNameToLength)
+    }
+
+    def generateTileBoundrySlices(sliceByDimension, dimensionNameToLength){
+        def combos = dimensionNameToLength.collect { dimensionName, lengthOfDimension ->
+            dimensionName.equals(sliceByDimension)?
+                    [dimensionName, lengthOfDimension, 1]:
+                    [dimensionName, lengthOfDimension, lengthOfDimension]
+        }.collect { nameLengthSize ->
+            def dimname = nameLengthSize[0]
+            def length = nameLengthSize[1]
+            def step = nameLengthSize[2]
+            def bounds = []
+            0.step(length, step) { start ->
+                bounds.add("$dimname:$start:${start + step >= length ? length : start + step}")
+            }
+            bounds
+        }.combinations().collect { combo ->
+            combo.join(",")
+        }
+
+        return combos
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/src/main/groovy/org/nasa/jpl/nexus/ingest/datatiler/SliceFileByTilesDesired.groovy
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/src/main/groovy/org/nasa/jpl/nexus/ingest/datatiler/SliceFileByTilesDesired.groovy b/nexus-ingest/dataset-tiler/src/main/groovy/org/nasa/jpl/nexus/ingest/datatiler/SliceFileByTilesDesired.groovy
new file mode 100644
index 0000000..861c685
--- /dev/null
+++ b/nexus-ingest/dataset-tiler/src/main/groovy/org/nasa/jpl/nexus/ingest/datatiler/SliceFileByTilesDesired.groovy
@@ -0,0 +1,80 @@
+/*****************************************************************************
+* Copyright (c) 2016 Jet Propulsion Laboratory,
+* California Institute of Technology.  All rights reserved
+*****************************************************************************/
+package org.nasa.jpl.nexus.ingest.datatiler
+
+import ucar.nc2.dataset.NetcdfDataset
+import ucar.nc2.dt.grid.GeoGrid
+import ucar.nc2.ft.FeatureDatasetFactoryManager
+
+/**
+ * Created by greguska on 2/1/16.
+ */
+class SliceFileByTilesDesired implements FileSlicer{
+
+    private Integer tilesDesired
+    private List<String> dimensions
+
+    public void setTilesDesired(Integer desired) {
+        this.tilesDesired = desired
+    }
+
+    public void setDimensions(List<String> dims) {
+        this.dimensions = dims
+    }
+
+    def generateSlices(def inputfile) {
+
+        NetcdfDataset ds = null
+        def dimensionNameToLength = [:]
+        try {
+            ds = NetcdfDataset.openDataset(inputfile.getAbsolutePath())
+
+            dimensionNameToLength = ds.getDimensions().findResults { dimension ->
+
+                this.dimensions.contains(dimension.getShortName()) ? [(dimension.getShortName()): dimension.getLength()] : null
+
+            }.collectEntries { it }
+        } finally {
+            ds?.close()
+        }
+
+        return generateChunkBoundrySlices(tilesDesired, dimensionNameToLength)
+
+    }
+
+    def generateChunkBoundrySlices(def chunksDesired, def dimensionNameToLength) {
+        def combos = dimensionNameToLength.collect { dimensionName, lengthOfDimension ->
+            [dimensionName, lengthOfDimension, calculateStepSize(lengthOfDimension, chunksDesired, dimensionNameToLength.size())]
+        }.collect { nameLengthSize ->
+            def dimname = nameLengthSize[0]
+            def length = nameLengthSize[1]
+            def step = nameLengthSize[2]
+            def bounds = []
+            0.step(length, step) { start ->
+                bounds.add("$dimname:$start:${start + step >= length ? length : start + step}")
+            }
+            bounds
+        }.combinations().collect { combo ->
+            combo.join(",")
+        }
+
+        return combos
+
+    }
+
+    def calculateStepSize(def lengthOfDimension, def chunksDesired, def numberOfDimensions) {
+        return Math.floor(lengthOfDimension / (chunksDesired**(1.0 / numberOfDimensions))).toInteger()
+    }
+
+    public static void main(String[] args) {
+        NetcdfDataset ds = NetcdfDataset.openDataset("/Users/greguska/data/mur/20150101090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc")
+        println ds.getCoordinateSystems()[0]
+        GeoGrid sst = FeatureDatasetFactoryManager.wrap(FeatureDatasetFactoryManager.findFeatureType(ds), ds, null, null).findGridByShortName("analysed_sst")
+        GeoGrid subset = sst.subset(null, null, new ucar.ma2.Range(2000, 2010), new ucar.ma2.Range(2500, 2510))
+
+        println subset
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/src/main/java/org/nasa/jpl/nexus/ingest/datatiler/DataTilerOptionsMetadata.java
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/src/main/java/org/nasa/jpl/nexus/ingest/datatiler/DataTilerOptionsMetadata.java b/nexus-ingest/dataset-tiler/src/main/java/org/nasa/jpl/nexus/ingest/datatiler/DataTilerOptionsMetadata.java
new file mode 100644
index 0000000..73a9e52
--- /dev/null
+++ b/nexus-ingest/dataset-tiler/src/main/java/org/nasa/jpl/nexus/ingest/datatiler/DataTilerOptionsMetadata.java
@@ -0,0 +1,81 @@
+/*****************************************************************************
+* Copyright (c) 2016 Jet Propulsion Laboratory,
+* California Institute of Technology.  All rights reserved
+*****************************************************************************/
+package org.nasa.jpl.nexus.ingest.datatiler;
+
+import org.springframework.util.StringUtils;
+import org.springframework.xd.module.options.spi.ModuleOption;
+import org.springframework.xd.module.options.spi.ProfileNamesProvider;
+
+import javax.validation.constraints.AssertTrue;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.Pattern;
+
+/**
+ * Created by greguska on 3/1/16.
+ */
+public class DataTilerOptionsMetadata implements ProfileNamesProvider {
+
+    public static final String PROPERTY_NAME_TILES_DESIRED = "tilesDesired";
+    public static final String PROPERTY_NAME_DIMENSIONS = "dimensions";
+
+    public static final String PROPERTY_NAME_SLICE_BY_DIMENSION = "sliceByDimension";
+    public static final String PROPERTY_NAME_SPLIT_RESULT = "splitResult";
+
+    private Integer tilesDesired;
+    private String dimensions;
+
+    private String sliceByDimension;
+
+    private Boolean splitResult = false;
+
+    @ModuleOption("The approximate number of tiles to generate")
+    public void setTilesDesired(Integer tilesDesired) {
+        this.tilesDesired = tilesDesired;
+    }
+
+    @ModuleOption("Comma-delimited list of dimensions to be used for the tiling operation")
+    public void setDimensions(String dimensions) {
+        this.dimensions = dimensions;
+    }
+
+    @ModuleOption("Name of dimension to slice by")
+    public void setSliceByDimension(String sliceByDimension) {
+        this.sliceByDimension = sliceByDimension;
+    }
+
+    @ModuleOption(value = "Should output specifications be split into individual messages", defaultValue = "false")
+    public void setSplitResult(Boolean splitResult){ this.splitResult = splitResult; }
+
+    @Min(0)
+    @Max(Integer.MAX_VALUE)
+    public Integer getTilesDesired() {
+        return tilesDesired;
+    }
+
+    @Pattern(regexp = "^[-\\w\\s]+(?:,[-\\w\\s]+)*$", flags = {Pattern.Flag.CASE_INSENSITIVE}, message = "Must be a comma-delimited string.")
+    public String getDimensions() {
+        return dimensions;
+    }
+
+    public String getSliceByDimension() {
+        return this.sliceByDimension;
+    }
+
+    public Boolean getSplitResult() { return this.splitResult; }
+
+    @AssertTrue(message = "'tilesDesired' or 'sliceByDimension' are required and mutually exclusive")
+    private boolean isInvalid() {
+        return (this.tilesDesired == null && StringUtils.hasText(this.sliceByDimension))
+                || (this.tilesDesired != null && !StringUtils.hasText(this.sliceByDimension));
+    }
+
+    @Override
+    public String[] profilesToActivate() {
+        return new String[]{"use-" + (this.getTilesDesired()==null?"dimension":"tilesdesired")};
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/src/main/java/org/nasa/jpl/nexus/ingest/datatiler/IntegrationConfiguration.java
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/src/main/java/org/nasa/jpl/nexus/ingest/datatiler/IntegrationConfiguration.java b/nexus-ingest/dataset-tiler/src/main/java/org/nasa/jpl/nexus/ingest/datatiler/IntegrationConfiguration.java
new file mode 100644
index 0000000..71ebf0a
--- /dev/null
+++ b/nexus-ingest/dataset-tiler/src/main/java/org/nasa/jpl/nexus/ingest/datatiler/IntegrationConfiguration.java
@@ -0,0 +1,112 @@
+/*****************************************************************************
+* Copyright (c) 2016 Jet Propulsion Laboratory,
+* California Institute of Technology.  All rights reserved
+*****************************************************************************/
+package org.nasa.jpl.nexus.ingest.datatiler;
+
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
+import org.springframework.core.env.Environment;
+import org.springframework.integration.channel.DirectChannel;
+import org.springframework.integration.config.EnableIntegration;
+import org.springframework.integration.dsl.IntegrationFlow;
+import org.springframework.integration.dsl.IntegrationFlows;
+import org.springframework.messaging.MessageChannel;
+import org.springframework.scheduling.TaskScheduler;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+
+/**
+ * Created by greguska on 3/1/16.
+ */
+@Configuration
+@EnableIntegration
+public class IntegrationConfiguration {
+
+    @Resource
+    private Environment environment;
+
+    @Value("#{environment[T(org.nasa.jpl.nexus.ingest.datatiler.DataTilerOptionsMetadata).PROPERTY_NAME_SPLIT_RESULT]}")
+    private Boolean splitResult;
+
+    @Bean
+    public MessageChannel input() {
+        return new DirectChannel();
+    }
+
+    @Bean
+    MessageChannel output() {
+        return new DirectChannel();
+    }
+
+    @Bean
+    public IntegrationFlow createTileSpecs(FileSlicer fileSlicer) {
+        return IntegrationFlows.from(this.input())
+                .transform(inputFile ->
+                        fileSlicer.generateSlices(inputFile))
+                .<Object, Object>route(payload -> splitResult, mapping -> mapping
+                        .channelMapping("false", "output")
+                        .subFlowMapping("true", splitResultSubflow -> splitResultSubflow
+                                .split()
+                        ))
+                .channel(this.output())
+                .get();
+    }
+
+
+    @Bean
+    public TaskScheduler taskScheduler() {
+        ThreadPoolTaskScheduler tpts = new ThreadPoolTaskScheduler();
+        tpts.setPoolSize(1);
+        return tpts;
+    }
+
+    @Configuration
+    @Profile("use-tilesdesired")
+    static class SliceByTilesDesiredConfiguration {
+        @Resource
+        private Environment environment;
+
+        @Value("#{environment[T(org.nasa.jpl.nexus.ingest.datatiler.DataTilerOptionsMetadata).PROPERTY_NAME_TILES_DESIRED]}")
+        private Integer tilesDesired;
+
+        @Value("#{environment[T(org.nasa.jpl.nexus.ingest.datatiler.DataTilerOptionsMetadata).PROPERTY_NAME_DIMENSIONS]}")
+        private String dimensions;
+
+        @Bean
+        public FileSlicer fileSlicer() {
+            SliceFileByTilesDesired slicer = new SliceFileByTilesDesired();
+            slicer.setTilesDesired(tilesDesired);
+            slicer.setDimensions(Arrays.asList(dimensions.split(",")));
+            return slicer;
+        }
+    }
+
+    @Configuration
+    @Profile("use-dimension")
+    static class SliceByDimensionConfiguration {
+        @Resource
+        private Environment environment;
+
+        @Value("#{environment[T(org.nasa.jpl.nexus.ingest.datatiler.DataTilerOptionsMetadata).PROPERTY_NAME_SLICE_BY_DIMENSION]}")
+        private String sliceByDimension;
+
+        @Value("#{environment[T(org.nasa.jpl.nexus.ingest.datatiler.DataTilerOptionsMetadata).PROPERTY_NAME_DIMENSIONS]}")
+        private String dimensions;
+
+        @Bean
+        public FileSlicer fileSlicer() {
+            SliceFileByDimension slicer = new SliceFileByDimension();
+            slicer.setSliceByDimension(sliceByDimension);
+            slicer.setDimensions(Arrays.asList(dimensions.split(",")));
+            slicer.setDimensionNamePrefix("phony_dim_");
+            return slicer;
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/src/main/resources/config/spring-module.properties
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/src/main/resources/config/spring-module.properties b/nexus-ingest/dataset-tiler/src/main/resources/config/spring-module.properties
new file mode 100644
index 0000000..2114f08
--- /dev/null
+++ b/nexus-ingest/dataset-tiler/src/main/resources/config/spring-module.properties
@@ -0,0 +1,2 @@
+options_class = org.nasa.jpl.nexus.ingest.datatiler.DataTilerOptionsMetadata
+base_packages = org.nasa.jpl.nexus.ingest.datatiler
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/src/test/groovy/org/nasa/jpl/nexus/ingest/datatiler/DatasetTilerIntegrationTest.groovy
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/src/test/groovy/org/nasa/jpl/nexus/ingest/datatiler/DatasetTilerIntegrationTest.groovy b/nexus-ingest/dataset-tiler/src/test/groovy/org/nasa/jpl/nexus/ingest/datatiler/DatasetTilerIntegrationTest.groovy
new file mode 100644
index 0000000..42716ea
--- /dev/null
+++ b/nexus-ingest/dataset-tiler/src/test/groovy/org/nasa/jpl/nexus/ingest/datatiler/DatasetTilerIntegrationTest.groovy
@@ -0,0 +1,181 @@
+/*****************************************************************************
+* Copyright (c) 2016 Jet Propulsion Laboratory,
+* California Institute of Technology.  All rights reserved
+*****************************************************************************/
+package org.nasa.jpl.nexus.ingest.datatiler
+
+import org.junit.After
+import org.junit.BeforeClass
+import org.junit.Test
+import org.springframework.core.io.ClassPathResource
+import org.springframework.core.io.FileSystemResource
+import org.springframework.xd.dirt.server.singlenode.SingleNodeApplication
+import org.springframework.xd.dirt.test.SingleNodeIntegrationTestSupport
+import org.springframework.xd.dirt.test.SingletonModuleRegistry
+import org.springframework.xd.dirt.test.process.SingleNodeProcessingChain
+import org.springframework.xd.module.ModuleType
+import org.springframework.xd.test.RandomConfigurationSupport
+
+import static org.junit.Assert.assertEquals
+import static org.junit.Assert.assertTrue
+import static org.springframework.xd.dirt.test.process.SingleNodeProcessingChainSupport.chain;
+
+/**
+ * Created by greguska on 3/1/16.
+ */
+class DatasetTilerIntegrationTest {
+
+    private static SingleNodeApplication application;
+
+    private static int RECEIVE_TIMEOUT = 5000;
+
+    private static String moduleName = "dataTiler";
+
+    SingleNodeProcessingChain chain;
+
+    /**
+     * Start the single node container, binding random unused ports, etc. to not conflict with any other instances
+     * running on this host. Configure the ModuleRegistry to include the project module.
+     */
+    @BeforeClass
+    public static void setUp() {
+        RandomConfigurationSupport randomConfigSupport = new RandomConfigurationSupport();
+        application = new SingleNodeApplication().run();
+        SingleNodeIntegrationTestSupport singleNodeIntegrationTestSupport = new SingleNodeIntegrationTestSupport
+                (application);
+        singleNodeIntegrationTestSupport.addModuleRegistry(new SingletonModuleRegistry(ModuleType.processor,
+                moduleName));
+
+    }
+
+    @Test
+    public void testSliceByDesiredTiles() {
+        def tilesDesired = 1
+        def dimensions = "lat,lon"
+//        def splitResult = true
+
+        def payload = new ClassPathResource("datasets/20150101090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc.nc4").getFile()
+
+        def streamName = "testDefault"
+
+
+        def processingChainUnderTest = "$moduleName --tilesDesired=$tilesDesired --dimensions=$dimensions"
+
+        chain = chain(application, streamName, processingChainUnderTest)
+
+        chain.sendPayload(payload);
+        Object result = chain.receivePayload(RECEIVE_TIMEOUT)
+
+        assertTrue(result instanceof List)
+        assertEquals(1, result.size)
+        assertEquals("lat:0:249,lon:0:500", result[0].toString())
+    }
+
+    @Test
+    public void testSliceByDimension() {
+        def dimensions = "NUMROWS,NUMCELLS"
+        def sliceByDimension = "NUMROWS"
+
+        def payload = new ClassPathResource("datasets/ascat_20130325_002100_metopb_02676_eps_o_coa_2101_ovw.l2.nc4").getFile()
+
+        def streamName = "testDefault"
+
+
+        def processingChainUnderTest = "$moduleName --sliceByDimension=$sliceByDimension --dimensions=$dimensions"
+
+        chain = chain(application, streamName, processingChainUnderTest)
+
+        chain.sendPayload(payload);
+        Object result = chain.receivePayload(RECEIVE_TIMEOUT)
+
+        assertTrue(result instanceof List)
+        assertEquals(2, result.size)
+
+        assertEquals("NUMROWS:0:1,NUMCELLS:0:82", result[0].toString())
+        assertEquals("NUMROWS:1:2,NUMCELLS:0:82", result[1].toString())
+    }
+
+    @Test
+    public void testSliceByDimensionSplitResult() {
+        def dimensions = "NUMROWS,NUMCELLS"
+        def sliceByDimension = "NUMROWS"
+        def splitResult = true
+
+        def payload = new ClassPathResource("datasets/ascat_20130325_002100_metopb_02676_eps_o_coa_2101_ovw.l2.nc4").getFile()
+
+        def streamName = "testDefault"
+
+
+        def processingChainUnderTest = "$moduleName --sliceByDimension=$sliceByDimension --dimensions=$dimensions --splitResult=$splitResult"
+
+        chain = chain(application, streamName, processingChainUnderTest)
+
+        chain.sendPayload(payload);
+        Object result = chain.receivePayload(RECEIVE_TIMEOUT)
+
+        assertTrue(result instanceof String)
+        assertEquals("NUMROWS:0:1,NUMCELLS:0:82", result.toString())
+
+        result = chain.receivePayload(RECEIVE_TIMEOUT)
+
+        assertTrue(result instanceof String)
+        assertEquals("NUMROWS:1:2,NUMCELLS:0:82", result.toString())
+    }
+
+    @Test
+    public void testSliceByDimensionIndexedDimensions() {
+        def dimensions = "0,1"
+        def sliceByDimension = "1"
+
+        def payload = new ClassPathResource("datasets/SMAP_L2B_SSS_00865_20150331T163144_R13080.split.h5").getFile()
+
+        def streamName = "testDefault"
+
+
+        def processingChainUnderTest = "$moduleName --sliceByDimension=$sliceByDimension --dimensions=$dimensions"
+
+        chain = chain(application, streamName, processingChainUnderTest)
+
+        chain.sendPayload(payload);
+        Object result = chain.receivePayload(RECEIVE_TIMEOUT)
+
+        assertTrue(result instanceof List)
+        assertEquals(2, result.size)
+
+        assertEquals("phony_dim_0:0:76,phony_dim_1:0:1", result[0].toString())
+        assertEquals("phony_dim_0:0:76,phony_dim_1:1:2", result[1].toString())
+    }
+
+    @Test
+    public void testSliceccmpByDesiredTiles() {
+        def tilesDesired = 1
+        def dimensions = "latitude,longitude"
+        def splitResult = true
+
+        def payload = new ClassPathResource("datasets/CCMP_Wind_Analysis_20160101_V02.0_L3.0_RSS.split.nc").getFile()
+
+        def streamName = "testDefault"
+
+
+        def processingChainUnderTest = "$moduleName --tilesDesired=$tilesDesired --dimensions=$dimensions --splitResult=$splitResult"
+
+        chain = chain(application, streamName, processingChainUnderTest)
+
+        chain.sendPayload(payload);
+        Object result = chain.receivePayload(RECEIVE_TIMEOUT)
+
+        assertTrue(result instanceof String)
+        assertEquals("longitude:0:87,latitude:0:38", result.toString())
+    }
+
+    /**
+     * Destroy the chain to reset message bus bindings and destroy the stream.
+     */
+    @After
+    public void tearDown() {
+        if (chain != null) {
+            chain.destroy();
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/src/test/groovy/org/nasa/jpl/nexus/ingest/datatiler/DatasetTilerPropertiesTest.groovy
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/src/test/groovy/org/nasa/jpl/nexus/ingest/datatiler/DatasetTilerPropertiesTest.groovy b/nexus-ingest/dataset-tiler/src/test/groovy/org/nasa/jpl/nexus/ingest/datatiler/DatasetTilerPropertiesTest.groovy
new file mode 100644
index 0000000..4299906
--- /dev/null
+++ b/nexus-ingest/dataset-tiler/src/test/groovy/org/nasa/jpl/nexus/ingest/datatiler/DatasetTilerPropertiesTest.groovy
@@ -0,0 +1,43 @@
+/*****************************************************************************
+* Copyright (c) 2016 Jet Propulsion Laboratory,
+* California Institute of Technology.  All rights reserved
+*****************************************************************************/
+package org.nasa.jpl.nexus.ingest.datatiler
+
+import org.hamcrest.Matcher
+import org.junit.Test
+import org.springframework.xd.module.ModuleDefinition
+import org.springframework.xd.module.ModuleDefinitions
+import org.springframework.xd.module.options.DefaultModuleOptionsMetadataResolver
+import org.springframework.xd.module.options.ModuleOption
+import org.springframework.xd.module.options.ModuleOptionsMetadata
+import org.springframework.xd.module.options.ModuleOptionsMetadataResolver
+
+import static org.hamcrest.Matchers.*
+import static org.junit.Assert.assertThat
+import static org.springframework.xd.module.ModuleType.processor
+
+/**
+ * Created by greguska on 3/1/16.
+ */
+class DatasetTilerPropertiesTest {
+
+    private String moduleName = "datasetTiler";
+
+    @Test
+    public void testModuleProperties() {
+        ModuleOptionsMetadataResolver moduleOptionsMetadataResolver = new DefaultModuleOptionsMetadataResolver();
+        String resource = "classpath:/";
+        ModuleDefinition definition = ModuleDefinitions.simple(moduleName, processor, resource);
+        ModuleOptionsMetadata metadata = moduleOptionsMetadataResolver.resolve(definition);
+
+        assertThat(
+                metadata,
+                containsInAnyOrder(moduleOptionNamed("tilesDesired"), moduleOptionNamed("dimensions"), moduleOptionNamed("sliceByDimension"), moduleOptionNamed("splitResult")));
+    }
+
+    public static Matcher<ModuleOption> moduleOptionNamed(String name) {
+        return hasProperty("name", equalTo(name));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/src/test/groovy/org/nasa/jpl/nexus/ingest/datatiler/SliceFileByDimensionTest.groovy
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/src/test/groovy/org/nasa/jpl/nexus/ingest/datatiler/SliceFileByDimensionTest.groovy b/nexus-ingest/dataset-tiler/src/test/groovy/org/nasa/jpl/nexus/ingest/datatiler/SliceFileByDimensionTest.groovy
new file mode 100644
index 0000000..eeeb9fb
--- /dev/null
+++ b/nexus-ingest/dataset-tiler/src/test/groovy/org/nasa/jpl/nexus/ingest/datatiler/SliceFileByDimensionTest.groovy
@@ -0,0 +1,49 @@
+/*****************************************************************************
+* Copyright (c) 2016 Jet Propulsion Laboratory,
+* California Institute of Technology.  All rights reserved
+*****************************************************************************/
+package org.nasa.jpl.nexus.ingest.datatiler
+
+import org.junit.Test
+
+import static junit.framework.Assert.assertEquals
+import static org.hamcrest.CoreMatchers.hasItems
+import static org.hamcrest.MatcherAssert.assertThat
+
+/**
+ * Created by greguska on 4/18/16.
+ */
+class SliceFileByDimensionTest {
+
+    @Test
+    public void testGenerateTileBoundrySlices(){
+
+        def slicer = new SliceFileByDimension()
+        slicer.setSliceByDimension("NUMROWS")
+
+        def dimensionNameToLength = ['NUMROWS':3163, 'NUMCELLS':82]
+
+        def result = slicer.generateTileBoundrySlices("NUMROWS", dimensionNameToLength)
+
+        assertEquals(3163, result.size)
+
+        assertThat(result, hasItems("NUMROWS:0:1,NUMCELLS:0:82", "NUMROWS:1:2,NUMCELLS:0:82", "NUMROWS:3162:3163,NUMCELLS:0:82"))
+
+    }
+
+    @Test
+    public void testGenerateTileBoundrySlices2(){
+
+        def slicer = new SliceFileByDimension()
+        slicer.setSliceByDimension("NUMROWS")
+
+        def dimensionNameToLength = ['NUMROWS':2, 'NUMCELLS':82]
+
+        def result = slicer.generateTileBoundrySlices("NUMROWS", dimensionNameToLength)
+
+        assertEquals(2, result.size)
+
+        assertThat(result, hasItems("NUMROWS:0:1,NUMCELLS:0:82", "NUMROWS:1:2,NUMCELLS:0:82"))
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/src/test/groovy/org/nasa/jpl/nexus/ingest/datatiler/SliceFileByTilesDesiredTest.groovy
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/src/test/groovy/org/nasa/jpl/nexus/ingest/datatiler/SliceFileByTilesDesiredTest.groovy b/nexus-ingest/dataset-tiler/src/test/groovy/org/nasa/jpl/nexus/ingest/datatiler/SliceFileByTilesDesiredTest.groovy
new file mode 100644
index 0000000..3b9f626
--- /dev/null
+++ b/nexus-ingest/dataset-tiler/src/test/groovy/org/nasa/jpl/nexus/ingest/datatiler/SliceFileByTilesDesiredTest.groovy
@@ -0,0 +1,33 @@
+/*****************************************************************************
+* Copyright (c) 2016 Jet Propulsion Laboratory,
+* California Institute of Technology.  All rights reserved
+*****************************************************************************/
+package org.nasa.jpl.nexus.ingest.datatiler
+
+import org.junit.Test
+
+import static junit.framework.Assert.assertEquals
+import static org.hamcrest.CoreMatchers.hasItems
+import static org.hamcrest.MatcherAssert.assertThat
+
+/**
+ * Created by greguska on 4/18/16.
+ */
+class SliceFileByTilesDesiredTest {
+
+    @Test
+    public void testGenerateChunkBoundrySlices(){
+
+        def slicer = new SliceFileByTilesDesired()
+
+        def chunksDesired = 5184
+        def dimensionNameToLength = ['lat':17999, 'lon':36000]
+
+        def result = slicer.generateChunkBoundrySlices(5184, dimensionNameToLength)
+
+        assertEquals(chunksDesired + 72, result.size)
+
+        assertThat(result, hasItems("lat:0:249,lon:0:500", "lat:0:249,lon:500:1000", "lat:17928:17999,lon:35500:36000"))
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/src/test/resources/datasets/20150101090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc.nc4
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/src/test/resources/datasets/20150101090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc.nc4 b/nexus-ingest/dataset-tiler/src/test/resources/datasets/20150101090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc.nc4
new file mode 100644
index 0000000..ada9b07
Binary files /dev/null and b/nexus-ingest/dataset-tiler/src/test/resources/datasets/20150101090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc.nc4 differ

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/src/test/resources/datasets/CCMP_Wind_Analysis_20160101_V02.0_L3.0_RSS.split.nc
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/src/test/resources/datasets/CCMP_Wind_Analysis_20160101_V02.0_L3.0_RSS.split.nc b/nexus-ingest/dataset-tiler/src/test/resources/datasets/CCMP_Wind_Analysis_20160101_V02.0_L3.0_RSS.split.nc
new file mode 100644
index 0000000..b7b491d
Binary files /dev/null and b/nexus-ingest/dataset-tiler/src/test/resources/datasets/CCMP_Wind_Analysis_20160101_V02.0_L3.0_RSS.split.nc differ

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/src/test/resources/datasets/SMAP_L2B_SSS_00865_20150331T163144_R13080.split.h5
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/src/test/resources/datasets/SMAP_L2B_SSS_00865_20150331T163144_R13080.split.h5 b/nexus-ingest/dataset-tiler/src/test/resources/datasets/SMAP_L2B_SSS_00865_20150331T163144_R13080.split.h5
new file mode 100644
index 0000000..956cbc5
Binary files /dev/null and b/nexus-ingest/dataset-tiler/src/test/resources/datasets/SMAP_L2B_SSS_00865_20150331T163144_R13080.split.h5 differ

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/dataset-tiler/src/test/resources/datasets/ascat_20130325_002100_metopb_02676_eps_o_coa_2101_ovw.l2.nc4
----------------------------------------------------------------------
diff --git a/nexus-ingest/dataset-tiler/src/test/resources/datasets/ascat_20130325_002100_metopb_02676_eps_o_coa_2101_ovw.l2.nc4 b/nexus-ingest/dataset-tiler/src/test/resources/datasets/ascat_20130325_002100_metopb_02676_eps_o_coa_2101_ovw.l2.nc4
new file mode 100644
index 0000000..1214c24
Binary files /dev/null and b/nexus-ingest/dataset-tiler/src/test/resources/datasets/ascat_20130325_002100_metopb_02676_eps_o_coa_2101_ovw.l2.nc4 differ

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/.gitignore
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/.gitignore b/nexus-ingest/developer-box/.gitignore
new file mode 100644
index 0000000..3dde3e5
--- /dev/null
+++ b/nexus-ingest/developer-box/.gitignore
@@ -0,0 +1,8 @@
+logs/
+
+*.nc
+*.h5
+
+.listing
+.DS_Store
+.vagrant

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/README.md
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/README.md b/nexus-ingest/developer-box/README.md
new file mode 100644
index 0000000..c1049a8
--- /dev/null
+++ b/nexus-ingest/developer-box/README.md
@@ -0,0 +1,103 @@
+# Reuirements
+
+* Vagrant (https://www.vagrantup.com/downloads.html) minimum version 1.8.1
+  * The [vagrant-vbguest](https://github.com/dotless-de/vagrant-vbguest) plugin is also required. Once vagrant is installed, run `vagrant plugin install vagrant-vbguest`
+* Apache Solr 5.3 with solr-nexustiles-core core running on localhost (see solr-nexustiles-core.zip)
+* Apache Cassandra 2.2.3 with nexustiles keyspace running on localhost (see cassandra-ddl.sql)
+
+# Setup
+
+1. Clone this repo: https://github.com/dataplumber/nexus.git
+2. CD into `nexus/nexus-ingest/developer-box`
+3. Run the command `vagrant up` (this will take some time, around 10-20 minutes, it’s going to download a bunch of stuff)
+4. Once completed, run `vagrant ssh` to log in to your newly minted centos virtual machine.
+5. Once ssh’ed in, run `/vagrant/user-init.sh /home/vagrant`
+  * **NOTE** Part of this script will be cloning some git repos. In order to clone a JPL github repo you need a JPL github account, proper authorization for the repo, and an OAuth token. When running this script you will be prompted to enter an OAuth token. A token can be generated by going to https://github.com/settings/tokens
+6. After that you should be able to go to http://localhost:9393/admin-ui/#/streams/definitions and you’ll see a number of streams.
+7. When changes are made in the repository, ssh into the vagrant box and run `./user-update.sh /home/vagrant` to deploy the new changes (FYI - this script re-deploys everything)
+
+## No Vagrant Setup
+
+1. Install JDK 8, Maven 3.3.9, Git (latest), and Anaconda2 4.0
+2. Create a conda environment and activate it
+  1. conda install `libnetcdf` and `netcdf4`
+3. Download the [Spring XD 1.3.1](http://repo.spring.io/libs-release/org/springframework/xd/spring-xd/1.3.1.RELEASE) distrobution zip
+  1. Extract the zip to a folder `$springxd-home`
+  2. Create directory `$springxd-home/spring-xd-1.3.1.RELEASE/xd/lib/none`
+  3. Copy [xd-singlenode-logback.groovy](xd-singlenode-logback.groovy) to `$springxd-home/spring-xd-1.3.1.RELEASE/xd/config/xd-singlenode-logback.groovy`
+  4. Start Spring XD in singlenode mode `nohup ./spring-xd-1.3.1.RELEASE/xd/bin/xd-singlenode --hadoopDistro none &` (logs will be in `$springxd-home/spring-xd-1.3.1.RELEASE/xd/logs/`)
+4. Run `./user-init.sh $springxd-home $conda-environment-name`
+5. When changes are made in the repository, run `./user-update.sh $springxd-home` to deploy the new changes (FYI - this script re-deploys everything)
+
+# Working with the Environment
+
+Now you have a centos virtualbox running on your local machine that has Spring XD installed and running in single node mode.
+
+## Ingesting Data
+
+Inside of the `developer-box` directory, you will notice a `data` directory with a number of sub-directories that coorespond to different datasets. If you copy a *.nc file into one of these directories and then deploy the dataset's corresponding stream, the *.nc files will begin to be ingested.
+
+### Datasets
+
+* MUR
+  * Data directory: `data/mur`
+  * Stream name: `ingest-mur`
+* MUR Climatology
+  * Data directory: `data/mur-clim`
+  * Stream name: `ingest-mur`
+* ASCATB L2 Coastal
+  * Data directory: `data/ascatb`
+  * Stream name: `ingest-ascatb-u` and `ingest-ascatb-v`
+* AVHRR
+  * Data directory: `data/avhrr`
+  * Stream name: `ingest-avhrr`
+* AVHRR Climatology
+  * Data directory: `data/avhrr-clim`
+  * Stream name: `ingest-avhrr-clim`
+* MODIS Aqua L3
+  * Data directory: `data/modis`
+  * Stream name: `ingest-modis`
+* MODIS Aqua L3 Climatology
+  * Data directory: `data/modis-clim`
+  * Stream name: `ingest-modis-clim`
+* TRMM
+  * Data directory: `data/trmm`
+  * Stream name: `ingest-trmm`
+* SMAP (**WORK IN PROGRESS**)
+  * Data directory: `data/smap`
+  * Stream name: `ingest-smap-sss`
+
+## Interacting with the virtual machine
+
+* **SSH** You can ssh into the running virtual machine by running `vagrant ssh` from the `developer-box` directory
+* **Halt** To stop the virtual machine, run `vagrant halt` from the `developer-box` directory
+* **Start** To start the virtual machine, run `vagrant up` from the `developer-box` directory
+* **Destroy** To destroy the virtual machine, run `vagrant destroy` from the `developer-box` directory
+  * **WARNING** This will remove all traces of the virtual machine. The next time you run `vagrant up` it will need to re-provision (i.e. download) all of the software again.
+  
+The `/developer-box` directory on the host machine is automatically shared with the virtual machine. It can be accessed in `/vagrant` from the virtual machine.
+
+## Spring XD
+
+Spring XD is running inside the virtual machine in single-node mode.  
+It is installed in `/home/vagrant/spring-xd-1.3.1.RELEASE`.
+Logs are written to `/vagrant/logs` which is also shared with the host machine and can be accessed from the host as `developer-box/logs`
+
+* **Stopping** To stop Spring XD run `ps -ef | grep xd-singlenode` to get the PID of the XD process and then `kill $PID`
+* **Starting** To start Spring XD run `/vagrant/start-singlenode-at-boot.sh`
+
+### Opening a XD-Shell
+
+ssh into the vagrant machine and run `~/spring-xd-1.3.1.RELEASE/shell/bin/xd-shell`
+
+### Working with Streams
+
+* **Deploying** There are two ways to deploy a stream:
+  * Navigate to http://localhost:9393/admin-ui/#/streams/definitions and click on the `Deploy` button for the stream you want to deploy
+  * Open an XD Shell and run `stream deploy --name name-of-stream`
+* **Un-Deploying** There are two ways to undeploy a stream:
+  * Navigate to http://localhost:9393/admin-ui/#/streams/definitions and click on the `Undeploy` button for the stream you want to deploy
+  * Open an XD Shell and run `stream undeploy --name name-of-stream`
+* **Destroying** There are two was to destroy a stream:
+  * Navigate to http://localhost:9393/admin-ui/#/streams/definitions and click on the `Destroy` button for the stream you want to deploy
+  * Open an XD Shell and run `stream destroy --name name-of-stream`

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/Vagrantfile
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/Vagrantfile b/nexus-ingest/developer-box/Vagrantfile
new file mode 100644
index 0000000..9966927
--- /dev/null
+++ b/nexus-ingest/developer-box/Vagrantfile
@@ -0,0 +1,74 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# All Vagrant configuration is done below. The "2" in Vagrant.configure
+# configures the configuration version (we support older styles for
+# backwards compatibility). Please don't change it unless you know what
+# you're doing.
+Vagrant.configure(2) do |config|
+  # The most common configuration options are documented and commented below.
+  # For a complete reference, please see the online documentation at
+  # https://docs.vagrantup.com.
+
+  # Every Vagrant development environment requires a box. You can search for
+  # boxes at https://atlas.hashicorp.com/search.
+  config.vm.box = "centos/7"
+
+  # Disable automatic box update checking. If you disable this, then
+  # boxes will only be checked for updates when the user runs
+  # `vagrant box outdated`. This is not recommended.
+  # config.vm.box_check_update = false
+
+  # Create a forwarded port mapping which allows access to a specific port
+  # within the machine from a port on the host machine. In the example below,
+  # accessing "localhost:8080" will access port 80 on the guest machine.
+  # config.vm.network "forwarded_port", guest: 80, host: 8080
+  config.vm.network "forwarded_port", guest: 9393, host: 9393
+
+  # Create a private network, which allows host-only access to the machine
+  # using a specific IP.
+  # config.vm.network "private_network", ip: "192.168.33.10"
+
+  # Create a public network, which generally matched to bridged network.
+  # Bridged networks make the machine appear as another physical device on
+  # your network.
+  # config.vm.network "public_network"
+
+  # Share an additional folder to the guest VM. The first argument is
+  # the path on the host to the actual folder. The second argument is
+  # the path on the guest to mount the folder. And the optional third
+  # argument is a set of non-required options.
+  # config.vm.synced_folder "../data", "/vagrant_data"
+  config.vm.synced_folder ".", "/home/vagrant/sync", type: "virtualbox"
+
+  # Provider-specific configuration so you can fine-tune various
+  # backing providers for Vagrant. These expose provider-specific options.
+  # Example for VirtualBox:
+  #
+  # config.vm.provider "virtualbox" do |vb|
+  #   # Display the VirtualBox GUI when booting the machine
+  #   vb.gui = true
+  #
+  #   # Customize the amount of memory on the VM:
+  #   vb.memory = "1024"
+  # end
+  #
+  # View the documentation for the provider you are using for more
+  # information on available options.
+
+  # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
+  # such as FTP and Heroku are also available. See the documentation at
+  # https://docs.vagrantup.com/v2/push/atlas.html for more information.
+  # config.push.define "atlas" do |push|
+  #   push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
+  # end
+
+  # Enable provisioning with a shell script. Additional provisioners such as
+  # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
+  # documentation for more information about their specific syntax and use.
+  # config.vm.provision "shell", inline: <<-SHELL
+  #   sudo apt-get update
+  #   sudo apt-get install -y apache2
+  # SHELL
+  config.vm.provision :shell, path: "bootstrap.sh", privileged: false
+end

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/bootstrap.sh
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/bootstrap.sh b/nexus-ingest/developer-box/bootstrap.sh
new file mode 100644
index 0000000..c6e4137
--- /dev/null
+++ b/nexus-ingest/developer-box/bootstrap.sh
@@ -0,0 +1,61 @@
+# Install JDK
+sudo yum -y install java-1.8.0-openjdk*
+
+# Install maven
+echo "Downloading Maven"
+curl "http://mirror.stjschools.org/public/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz" -s -O
+tar xvf apache-maven-3.3.9-bin.tar.gz
+sudo mv apache-maven-3.3.9  /usr/local/apache-maven
+cat >> /home/vagrant/.bashrc << END
+# add for maven install
+M2_HOME=/usr/local/apache-maven
+M2=\$M2_HOME/bin
+PATH=\$M2:\$PATH
+END
+
+# Install nco tools
+sudo yum -y install epel-release
+sudo yum -y install nco-devel
+
+# Install git
+sudo yum -y install git
+
+# Install and configure Anaconda
+echo "Downloading Anaconda"
+curl "https://repo.continuum.io/archive/Anaconda2-4.3.0-Linux-x86_64.sh" -s -O
+
+chmod +x Anaconda2-4.3.0-Linux-x86_64.sh
+
+./Anaconda2-4.3.0-Linux-x86_64.sh -b -p /home/vagrant/anaconda2
+
+cat >> /home/vagrant/.bashrc << END
+# add for anaconda install
+PATH=/home/vagrant/anaconda2/bin:\$PATH
+END
+
+source /home/vagrant/.bashrc
+
+conda create -y --name nexus-xd-python-modules python
+source activate nexus-xd-python-modules
+conda install -y scipy=0.18.1 netcdf4
+
+
+# Install Spring XD and launch it
+
+sudo yum -y install unzip
+
+echo "Downloading Spring XD"
+curl "http://repo.spring.io/libs-release/org/springframework/xd/spring-xd/1.3.1.RELEASE/spring-xd-1.3.1.RELEASE-dist.zip" -s -O
+
+unzip spring-xd-1.3.1.RELEASE-dist.zip
+mkdir spring-xd-1.3.1.RELEASE/xd/lib/none
+
+sudo ln -s /home/vagrant/sync /vagrant
+cp /vagrant/xd-singlenode-logback.groovy spring-xd-1.3.1.RELEASE/xd/config/xd-singlenode-logback.groovy
+
+(crontab -l 2>/dev/null; echo "@reboot /vagrant/start-singlenode-at-boot.sh") | crontab -
+
+mkdir /vagrant/logs
+pushd /home/vagrant
+nohup ./spring-xd-1.3.1.RELEASE/xd/bin/xd-singlenode --hadoopDistro none > /vagrant/logs/xd-singlenode.log 2>&1 &
+popd
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/cassandra-ddl.sql
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/cassandra-ddl.sql b/nexus-ingest/developer-box/cassandra-ddl.sql
new file mode 100644
index 0000000..bfc486e
--- /dev/null
+++ b/nexus-ingest/developer-box/cassandra-ddl.sql
@@ -0,0 +1,6 @@
+CREATE KEYSPACE IF NOT EXISTS nexustiles WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
+
+CREATE TABLE sea_surface_temp  (
+tile_id    uuid PRIMARY KEY,
+tile_blob  blob
+);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/data/ascatb/dataseturl.txt
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/data/ascatb/dataseturl.txt b/nexus-ingest/developer-box/data/ascatb/dataseturl.txt
new file mode 100644
index 0000000..d274384
--- /dev/null
+++ b/nexus-ingest/developer-box/data/ascatb/dataseturl.txt
@@ -0,0 +1 @@
+https://podaac.jpl.nasa.gov/dataset/ASCATB-L2-Coastal

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/data/avhrr/dataseturl.txt
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/data/avhrr/dataseturl.txt b/nexus-ingest/developer-box/data/avhrr/dataseturl.txt
new file mode 100644
index 0000000..70641d4
--- /dev/null
+++ b/nexus-ingest/developer-box/data/avhrr/dataseturl.txt
@@ -0,0 +1 @@
+ftp://podaac-ftp.jpl.nasa.gov/allData/ghrsst/data/GDS2/L4/GLOB/NCEI/AVHRR_OI/v2/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/data/ccmp/dataseturl.txt
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/data/ccmp/dataseturl.txt b/nexus-ingest/developer-box/data/ccmp/dataseturl.txt
new file mode 100644
index 0000000..a2cafec
--- /dev/null
+++ b/nexus-ingest/developer-box/data/ccmp/dataseturl.txt
@@ -0,0 +1 @@
+ftp://ftp2.remss.com/ccmp/v02.0/

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/data/grace/dataseturl.txt
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/data/grace/dataseturl.txt b/nexus-ingest/developer-box/data/grace/dataseturl.txt
new file mode 100644
index 0000000..c4cdb3b
--- /dev/null
+++ b/nexus-ingest/developer-box/data/grace/dataseturl.txt
@@ -0,0 +1 @@
+https://podaac.jpl.nasa.gov/dataset/TELLUS_GRACE_MASCON_GRID_RL05_V2

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/data/measures_alt/dataseturl.txt
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/data/measures_alt/dataseturl.txt b/nexus-ingest/developer-box/data/measures_alt/dataseturl.txt
new file mode 100644
index 0000000..fd3bfde
--- /dev/null
+++ b/nexus-ingest/developer-box/data/measures_alt/dataseturl.txt
@@ -0,0 +1 @@
+ftp://podaac-ftp.jpl.nasa.gov/allData/merged_alt/L4/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/data/modis/dataseturl.txt
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/data/modis/dataseturl.txt b/nexus-ingest/developer-box/data/modis/dataseturl.txt
new file mode 100644
index 0000000..acac6bd
--- /dev/null
+++ b/nexus-ingest/developer-box/data/modis/dataseturl.txt
@@ -0,0 +1 @@
+http://podaac.jpl.nasa.gov/dataset/MODIS_AQUA_L3_SST_THERMAL_DAILY_4KM_DAYTIME_V2014.0

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/data/modis_aqua_chl/dataseturl.txt
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/data/modis_aqua_chl/dataseturl.txt b/nexus-ingest/developer-box/data/modis_aqua_chl/dataseturl.txt
new file mode 100644
index 0000000..02e0534
--- /dev/null
+++ b/nexus-ingest/developer-box/data/modis_aqua_chl/dataseturl.txt
@@ -0,0 +1 @@
+https://oceandata.sci.gsfc.nasa.gov/MODIS-Aqua/Mapped/Daily/4km/chlor_a
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/data/mur/dataseturl.txt
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/data/mur/dataseturl.txt b/nexus-ingest/developer-box/data/mur/dataseturl.txt
new file mode 100644
index 0000000..20d38a3
--- /dev/null
+++ b/nexus-ingest/developer-box/data/mur/dataseturl.txt
@@ -0,0 +1 @@
+https://podaac.jpl.nasa.gov/dataset/MUR-JPL-L4-GLOB-v4.1

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/data/smap/dataseturl.txt
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/data/smap/dataseturl.txt b/nexus-ingest/developer-box/data/smap/dataseturl.txt
new file mode 100644
index 0000000..8e99c9f
--- /dev/null
+++ b/nexus-ingest/developer-box/data/smap/dataseturl.txt
@@ -0,0 +1 @@
+ftp://sealion.jpl.nasa.gov/pub/outgoing/smap/v2.0/L2B
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/data/smapl3/dataseturl.txt
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/data/smapl3/dataseturl.txt b/nexus-ingest/developer-box/data/smapl3/dataseturl.txt
new file mode 100644
index 0000000..2b4993d
--- /dev/null
+++ b/nexus-ingest/developer-box/data/smapl3/dataseturl.txt
@@ -0,0 +1 @@
+ftp://podaac-ftp.jpl.nasa.gov/allData/smap/L3/RSS/V2/monthly/SCI
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/data/trmm/dataseturl.txt
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/data/trmm/dataseturl.txt b/nexus-ingest/developer-box/data/trmm/dataseturl.txt
new file mode 100644
index 0000000..e69de29

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/solr-nexustiles-core.zip
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/solr-nexustiles-core.zip b/nexus-ingest/developer-box/solr-nexustiles-core.zip
new file mode 100644
index 0000000..c510af5
Binary files /dev/null and b/nexus-ingest/developer-box/solr-nexustiles-core.zip differ

http://git-wip-us.apache.org/repos/asf/incubator-sdap-nexus/blob/ff98fa34/nexus-ingest/developer-box/start-singlenode-at-boot.sh
----------------------------------------------------------------------
diff --git a/nexus-ingest/developer-box/start-singlenode-at-boot.sh b/nexus-ingest/developer-box/start-singlenode-at-boot.sh
new file mode 100755
index 0000000..84a6aa3
--- /dev/null
+++ b/nexus-ingest/developer-box/start-singlenode-at-boot.sh
@@ -0,0 +1,4 @@
+source activate nexus-xd-python-modules
+pushd /home/vagrant
+nohup ./spring-xd-1.3.1.RELEASE/xd/bin/xd-singlenode --hadoopDistro none > /vagrant/logs/xd-singlenode.log 2>&1 &
+popd