bnt 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/.gitignore +6 -0
- data/README +20 -0
- data/bin/bnt-create-bosh-dirs +15 -0
- data/bin/bnt-create-cage +43 -0
- data/bin/bnt-delete-cage +11 -0
- data/bin/bnt-make-package +21 -0
- data/bin/bnt-test-package +26 -0
- data/bnt.gemspec +21 -0
- data/lib/bnt/env.rb +36 -0
- data/lib/bnt/version.rb +3 -0
- metadata +59 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NGIwZGZjNmFjNDk4MDMyNjQ1M2EzMjUzMjI3MjZiODllMjE0ZGMyYw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZDRjNzRhMDM4YjRhMmFlMzU0MWJmNTQ5YTk1ZjIzMGVlY2Q3N2E0YQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NzViYzQ1OGNmOTRjOWM4Zjc1Mjc1NzMzNWNiZjg1YzFlZjk5OTM1ZWM5M2Nm
|
10
|
+
YmFhZTQ5YWFjOWVjODBhZGZlMmI5ZDAzYjgyMzhmNGYyNzE3NjI1MzFlMWRi
|
11
|
+
Y2ZmZGIxZTUyZjE4YWJkOTNkNmY4OTIzOTAzMGQ5MzdlYjZmYzI=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZTExN2NlOTI3ZDMxMDRmZTMyZWIxZDY2OTJkMzY0ZjdlOTBlYzA5MGQ5MjQ1
|
14
|
+
N2QyODc0MzJhZThkZjVlNmZlOGYxZWY4NzcxN2U3ZGIxMjdjMDY3ODM1Nzk4
|
15
|
+
NDRiNDM2ZTljZmU5N2RiNTViZTdjMmZmYTNhNGQ2YzI0MmE3M2Q=
|
data/README
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
BOSH Ninja Tools
|
2
|
+
================
|
3
|
+
|
4
|
+
Bnt is a fast way to test bosh package compilation using chroot
|
5
|
+
|
6
|
+
Usage
|
7
|
+
-----
|
8
|
+
|
9
|
+
gem install bnt
|
10
|
+
|
11
|
+
$ export CAGE_PATH=~/.bnt/cages/latest-bosh-stemcell/
|
12
|
+
$ sudo -E ./bin/bnt-create-cage
|
13
|
+
|
14
|
+
Now you are able to start testing your bosh packages like this:
|
15
|
+
|
16
|
+
$ ./bin/bnt /path/to/bosh/package
|
17
|
+
|
18
|
+
You'll need root permissions to use BNT.
|
19
|
+
|
20
|
+
Have fun!
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require_relative '../lib/bnt/env'
|
4
|
+
|
5
|
+
puts "==> Using #{Cage.path}"
|
6
|
+
puts "-> [ Creating bosh dirs structure ]"
|
7
|
+
|
8
|
+
bosh_dirs = "/var/vcap/packages/ /var/vcap/jobs/ /var/vcap/sys/run /var/vcap/sys/log/ /var/vcap/store /var/vcap/bnt"
|
9
|
+
|
10
|
+
Runner.exec "sudo chroot #{Cage.path} mkdir -p #{bosh_dirs}"
|
11
|
+
|
12
|
+
puts "-> [ Copying scripts to cage ]"
|
13
|
+
builder_script_path = 'bin/bnt-make-package'
|
14
|
+
Runner.exec "sudo cp #{builder_script_path} #{Cage.path}/var/vcap/bnt/"
|
15
|
+
|
data/bin/bnt-create-cage
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require_relative '../lib/bnt/env'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
def download_stemcell(cache_path)
|
7
|
+
FileUtils.cd cache_path do
|
8
|
+
Runner.exec "wget -c http://bosh-jenkins-gems-warden.s3.amazonaws.com/stemcells/latest-bosh-stemcell-warden.tgz"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def untar_stemcell(cage_path, cache_stemcell_path)
|
13
|
+
FileUtils.cd cage_path do
|
14
|
+
Runner.exec "tar -xzf #{cache_stemcell_path}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def gunzip_stemcell_img(cage_path)
|
19
|
+
FileUtils.cd cage_path do
|
20
|
+
stemcell_version = `grep "^version:" stemcell.MF`
|
21
|
+
msg = "decompressing stemcell #{stemcell_version}"
|
22
|
+
`mv image image.tar.gz`
|
23
|
+
Runner.exec :cmd => "sudo -E tar -xzf image.tar.gz", :msg => msg
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
cache_path = File.expand_path('~/.bnt/cache/')
|
28
|
+
cache_stemcell_path = "#{cache_path}/latest-bosh-stemcell-warden.tgz"
|
29
|
+
cage_path = File.expand_path('~/.bnt/cages/latest-bosh-stemcell')
|
30
|
+
|
31
|
+
Runner.exec "mkdir -p #{cache_path}"
|
32
|
+
Runner.exec "mkdir -p #{cage_path}"
|
33
|
+
|
34
|
+
download_stemcell cache_path
|
35
|
+
untar_stemcell cage_path, cache_stemcell_path
|
36
|
+
gunzip_stemcell_img cage_path
|
37
|
+
|
38
|
+
ENV['CAGE_PATH'] = cage_path
|
39
|
+
Runner.exec "./bin/bnt-create-bosh-dirs"
|
40
|
+
|
41
|
+
Runner.exec "sudo cp /etc/resolv.conf #{cage_path}/etc/"
|
42
|
+
|
43
|
+
puts "now you can use this new cage doing 'export CAGE_PATH=#{cage_path}'"
|
data/bin/bnt-delete-cage
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require_relative '../lib/bnt/env'
|
4
|
+
require "readline"
|
5
|
+
|
6
|
+
Runner.exec "sudo umount #{Cage.tmp_dir}"
|
7
|
+
|
8
|
+
puts "\n\nWARNING!!! I'm going to delete #{Cage.path}"
|
9
|
+
input = Readline.readline("yes|no >", true)
|
10
|
+
Runner.exec "sudo rm -rf #{Cage.path}" if input == "yes"
|
11
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/bin/sh -x
|
2
|
+
|
3
|
+
export BOSH_INSTALL_TARGET=/var/vcap/packages/$1
|
4
|
+
export BOSH_COMPILE_TARGET=/tmp/bosh-compile/
|
5
|
+
export BOSH_RELEASE_DIR=/tmp/bosh-release
|
6
|
+
|
7
|
+
mkdir -p $BOSH_COMPILE_TARGET
|
8
|
+
mkdir -p $BOSH_RELEASE_DIR
|
9
|
+
|
10
|
+
echo \-\> compiling: $BOSH_INSTALL_TARGET
|
11
|
+
cd $BOSH_COMPILE_TARGET
|
12
|
+
|
13
|
+
if [ ! -f $1 ]; then
|
14
|
+
ln -s $BOSH_RELEASE_DIR/src/$1 $1
|
15
|
+
fi
|
16
|
+
|
17
|
+
. $BOSH_RELEASE_DIR/packages/$1/packaging
|
18
|
+
|
19
|
+
# Remove the sources
|
20
|
+
rm -rf $BOSH_COMPILE_TARGET
|
21
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require_relative '../lib/bnt/env'
|
4
|
+
|
5
|
+
package_path = ARGV[0]
|
6
|
+
package_name = package_path.split("/").last
|
7
|
+
package_cage_path = "#{Cage.packages_path}/#{package_name}"
|
8
|
+
|
9
|
+
release_path = package_path.split("/")
|
10
|
+
release_path.pop
|
11
|
+
release_path.pop
|
12
|
+
release_path = release_path.join("/")
|
13
|
+
|
14
|
+
Runner.exec "sudo mkdir -p #{Cage.package_path(package_name)}"
|
15
|
+
|
16
|
+
unless File.directory? Cage.tmp_dir
|
17
|
+
Runner.exec "sudo mkdir #{Cage.tmp_dir}"
|
18
|
+
end
|
19
|
+
|
20
|
+
mount_check = `mount | grep #{Cage.path}`
|
21
|
+
|
22
|
+
if mount_check.empty?
|
23
|
+
Runner.exec "sudo mount --bind #{release_path} #{Cage.tmp_dir}"
|
24
|
+
end
|
25
|
+
|
26
|
+
Runner.exec "sudo chroot #{Cage.path} sh /var/vcap/bnt/bnt-make-package #{package_name} "
|
data/bnt.gemspec
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'bnt/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "bnt"
|
8
|
+
spec.version = Bnt::VERSION
|
9
|
+
spec.authors = ["Gaston Ramos"]
|
10
|
+
spec.email = ["ramos.gaston@gmail.com"]
|
11
|
+
spec.description = %q{Bosh ninja tools}
|
12
|
+
spec.summary = %q{Bosh ninja tools to test bosh packages in fast way}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "GPL"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
#spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
end
|
data/lib/bnt/env.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
class Cage
|
2
|
+
|
3
|
+
def self.path
|
4
|
+
error_msg = <<-EOS "\n\nEmpty cage path please ensure that CAGE_PATH env var is available 'export CAGE_PATH=~/.bnt/cages/latest-bosh-stemcell/'"
|
5
|
+
EOS
|
6
|
+
raise error_msg if ENV['CAGE_PATH'].nil?
|
7
|
+
ENV['CAGE_PATH']
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.packages_path
|
11
|
+
"/var/vcap/packages"
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.package_path(pkg)
|
15
|
+
"#{path}#{packages_path}/#{pkg}"
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.tmp_dir
|
19
|
+
"#{path}/tmp/bosh-release"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class Runner
|
24
|
+
def self.exec(args)
|
25
|
+
msg = ""
|
26
|
+
cmd = args
|
27
|
+
|
28
|
+
if args.is_a? Hash
|
29
|
+
cmd = args[:cmd]
|
30
|
+
msg = "* #{args[:msg]}"
|
31
|
+
end
|
32
|
+
|
33
|
+
puts "#{msg} ==> #{cmd}"
|
34
|
+
system cmd
|
35
|
+
end
|
36
|
+
end
|
data/lib/bnt/version.rb
ADDED
metadata
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bnt
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Gaston Ramos
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-12-12 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Bosh ninja tools
|
14
|
+
email:
|
15
|
+
- ramos.gaston@gmail.com
|
16
|
+
executables:
|
17
|
+
- bnt-create-bosh-dirs
|
18
|
+
- bnt-create-cage
|
19
|
+
- bnt-delete-cage
|
20
|
+
- bnt-make-package
|
21
|
+
- bnt-test-package
|
22
|
+
extensions: []
|
23
|
+
extra_rdoc_files: []
|
24
|
+
files:
|
25
|
+
- .gitignore
|
26
|
+
- README
|
27
|
+
- bin/bnt-create-bosh-dirs
|
28
|
+
- bin/bnt-create-cage
|
29
|
+
- bin/bnt-delete-cage
|
30
|
+
- bin/bnt-make-package
|
31
|
+
- bin/bnt-test-package
|
32
|
+
- bnt.gemspec
|
33
|
+
- lib/bnt/env.rb
|
34
|
+
- lib/bnt/version.rb
|
35
|
+
homepage: ''
|
36
|
+
licenses:
|
37
|
+
- GPL
|
38
|
+
metadata: {}
|
39
|
+
post_install_message:
|
40
|
+
rdoc_options: []
|
41
|
+
require_paths:
|
42
|
+
- lib
|
43
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ! '>='
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0'
|
53
|
+
requirements: []
|
54
|
+
rubyforge_project:
|
55
|
+
rubygems_version: 2.1.5
|
56
|
+
signing_key:
|
57
|
+
specification_version: 4
|
58
|
+
summary: Bosh ninja tools to test bosh packages in fast way
|
59
|
+
test_files: []
|