Repository: bigtop Updated Branches: refs/heads/master d2c2126a6 -> 8535f314e
BIGTOP-1836. Better UX for Dokcer provisioner by integrating it into gradle Project: http://git-wip-us.apache.org/repos/asf/bigtop/repo Commit: http://git-wip-us.apache.org/repos/asf/bigtop/commit/8535f314 Tree: http://git-wip-us.apache.org/repos/asf/bigtop/tree/8535f314 Diff: http://git-wip-us.apache.org/repos/asf/bigtop/diff/8535f314 Branch: refs/heads/master Commit: 8535f314e2b4d23e7228a5ee1bf875da2a79593a Parents: d2c2126 Author: Evans Ye <[email protected]> Authored: Sat Apr 18 14:19:02 2015 +0000 Committer: Evans Ye <[email protected]> Committed: Fri Apr 24 08:43:24 2015 +0000 ---------------------------------------------------------------------- .../vm/vagrant-puppet-docker/docker-hadoop.sh | 4 ++ build.gradle | 49 ++++++++++++++++++++ 2 files changed, 53 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/bigtop/blob/8535f314/bigtop-deploy/vm/vagrant-puppet-docker/docker-hadoop.sh ---------------------------------------------------------------------- diff --git a/bigtop-deploy/vm/vagrant-puppet-docker/docker-hadoop.sh b/bigtop-deploy/vm/vagrant-puppet-docker/docker-hadoop.sh index 63c18fd..e7022c1 100755 --- a/bigtop-deploy/vm/vagrant-puppet-docker/docker-hadoop.sh +++ b/bigtop-deploy/vm/vagrant-puppet-docker/docker-hadoop.sh @@ -29,6 +29,10 @@ create() { echo "\$num_instances = $1" > config.rb echo "\$vagrantyamlconf = \"$vagrantyamlconf\"" >> config.rb vagrant up --no-parallel + if [ $? -ne 0 ]; then + echo "Docker container(s) startup failed!"; + exit 1; + fi nodes=(`vagrant status |grep running |grep -v image |awk '{print $1}'`) hadoop_head_node=(`echo "hostname -f" |vagrant ssh ${nodes[0]} |tail -n 1`) repo=$(get-yaml-config repo) http://git-wip-us.apache.org/repos/asf/bigtop/blob/8535f314/build.gradle ---------------------------------------------------------------------- diff --git a/build.gradle b/build.gradle index 752c5d1..6db74ed 100644 --- a/build.gradle +++ b/build.gradle @@ -65,6 +65,7 @@ project(':itest-common') { def TESTARTIFACTS_GROUP = 'test artifacts' def DEVENV_GROUP = 'development tools' +def DEPLOY_GROUP = 'deployment' // All packaging logic is separated into its own build module apply from: 'packages.gradle' @@ -103,6 +104,54 @@ task "toolchain-devtools"(type:Exec, commandLine command } +task "docker-provisioner"(type:Exec, + description: 'Provision a Bigtop cluster on Docker container(s). Default to CentOS and 1 node.\nCreate a 3 node cluster:\n $ ./gradlew -Pnum_instances=3 docker-provisioner\nRun smoke tests on 3 node cluster:\n $ ./gradlew -Pnum_instances=3 -Prun_smoke_tests=true docker-provisioner\nSpecify configuration file (located in bigtop-deploy/vm/vagrant-puppet-docker/):\n $ ./gradlew -Pconfig=vagrantconfig_debian.yaml docker-provisioner', + group: DEPLOY_GROUP) { + def _config = project.hasProperty("config") ? config : "vagrantconfig.yaml" + def _num_instances = project.hasProperty("num_instances") ? num_instances : 1 + def command = [ + './docker-hadoop.sh', + '-C', _config, + '--create', _num_instances, + ] + if ( project.hasProperty("run_smoke_tests") && run_smoke_tests ) { + command.add("--smoke-tests") + } + workingDir 'bigtop-deploy/vm/vagrant-puppet-docker' + commandLine command +} +task "docker-provisioner-ssh"(type:Exec, + description: 'Show ssh command to get in to the provisioned container', + group: DEPLOY_GROUP) { + workingDir 'bigtop-deploy/vm/vagrant-puppet-docker' + def message = "To ssh in to the container, do: \n(cd " + workingDir + " && vagrant ssh <CONTAIER_NAME>)" + def command = [ + '/bin/echo', + message + ] + commandLine command +} +task "docker-provisioner-status"(type:Exec, + description: 'Show status of Bigtop Docker cluster', + group: DEPLOY_GROUP) { + def command = [ + 'vagrant', + 'status', + ] + workingDir 'bigtop-deploy/vm/vagrant-puppet-docker' + commandLine command +} +task "docker-provisioner-destroy"(type:Exec, + description: 'Destroy provisioned Bigtop Docker cluster', + group: DEPLOY_GROUP) { + def command = [ + './docker-hadoop.sh', + '--destroy' + ] + workingDir 'bigtop-deploy/vm/vagrant-puppet-docker' + commandLine command +} + task installTopLevel(type:Exec) { workingDir "." commandLine 'mvn clean install -f pom.xml'.split(" ")
