bosh-gen 0.17.1 → 0.18.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/ChangeLog.md +5 -0
- data/Gemfile +0 -1
- data/README.md +4 -0
- data/bosh-gen.gemspec +1 -1
- data/lib/bosh/cli/commands/share_release.rb +3 -1
- data/lib/bosh/gen/cli.rb +9 -0
- data/lib/bosh/gen/generators/deployment_manifest_generator.rb +7 -7
- data/lib/bosh/gen/generators/errand_generator.rb +94 -0
- data/lib/bosh/gen/generators/errand_generator/templates/.gitkeep +0 -0
- data/lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/monit.tt +0 -0
- data/lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/bin/run +12 -0
- data/lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/config/.gitkeep +0 -0
- data/lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/helpers/ctl_setup.sh +61 -0
- data/lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/helpers/ctl_utils.sh +156 -0
- data/lib/bosh/gen/generators/new_release_generator/templates/templates/jobs.yml.tt +1 -1
- data/lib/bosh/gen/version.rb +1 -1
- metadata +34 -27
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
MjU1MGQzNDJjYTRkYjYzNjc5OTYwYTg5NGJhZTRjYjgzMDMxZGMwZQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: eb772775c13bd207fa2e58169dad496f87bcdbf2
|
4
|
+
data.tar.gz: 5a37c67880e8e463654d35da2e260580d6b2757f
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
ZTRiYTliNWVlY2IxNDlhNWJkOWZjMWY1Y2U2YjAzN2E2NTJiZWRhNTZkNGJj
|
11
|
-
ZWZmYWY0ZjUzZDJjZGQxOTRmNTMwMTM0ODhlN2MxMTg1OTE4ZWI=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MWFhMjE5ZDZjYTMwYzkyMWQ2MDQ3ZmQ4NjAwZGIwZGZjZmJlMmM2MTRkOWVk
|
14
|
-
ZDY4ZjJkYTZmMTIyOTA2NWRjNWIxZWFkOTFjMGU2NGJjOTNiY2VlZTczOTdj
|
15
|
-
NmE0ZmYxZDU5MmJhMTRkZWI1OGNhNjdkNWU5OTY4ZDkyOTQ3ZjI=
|
6
|
+
metadata.gz: b0b968b05d80a09a1dd75bd245a6874ab08943705176e4112e0a3515ed3c74bbd255db38da3f45e5362c77507416c7eae55b127b94155427e4e68b598ae19a57
|
7
|
+
data.tar.gz: 730fe6855982b1b5b4cab1b8bac3376aefde3402ecfe6c5a9204a0ff5e74694f1a796f5274da8baf63d44617efcdd8f19b74b9f6146cff6712c961ac3fe8324a
|
data/ChangeLog.md
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -14,7 +14,9 @@ Installation
|
|
14
14
|
|
15
15
|
This application requires Ruby 1.9 or 2.0 and is installed via RubyGems:
|
16
16
|
|
17
|
+
```
|
17
18
|
$ gem install bosh-gen
|
19
|
+
```
|
18
20
|
|
19
21
|
Usage
|
20
22
|
-----
|
@@ -241,6 +243,8 @@ $ bosh upload release https://my-project-boshrelease.s3.amazonaws.com/boshreleas
|
|
241
243
|
|
242
244
|
They no longer require your BOSH release repo to access the BOSH release.
|
243
245
|
|
246
|
+
![share-http-tarball](http://f.cl.ly/items/0R3A1w3k2E3h3a2d1g2U/bosh-gen-share-release.gif)
|
247
|
+
|
244
248
|
### BOSH community facilities
|
245
249
|
|
246
250
|
You are welcome to re-use the BOSH user community facilities:
|
data/bosh-gen.gemspec
CHANGED
@@ -30,7 +30,9 @@ module Bosh::Cli::Command
|
|
30
30
|
bucket_name = raw_blobstore_client.instance_variable_get("@bucket_name")
|
31
31
|
|
32
32
|
fog = fog_storage(raw_blobstore_client)
|
33
|
-
dir = fog.directories.get(bucket_name)
|
33
|
+
unless dir = fog.directories.get(bucket_name)
|
34
|
+
err("S3 bucket #{bucket_name} is missing")
|
35
|
+
end
|
34
36
|
|
35
37
|
say("\nUploading release...")
|
36
38
|
if file = dir.files.new(key: upload_name, body: f)
|
data/lib/bosh/gen/cli.rb
CHANGED
@@ -72,6 +72,15 @@ module Bosh
|
|
72
72
|
Bosh::Gen::Generators::JobGenerator.start([name, dependencies, 'simple'])
|
73
73
|
end
|
74
74
|
|
75
|
+
desc "errand NAME", "Create a new errand"
|
76
|
+
method_option :dependencies, :aliases => ['-d'], :type => :array,
|
77
|
+
:desc => "List of package dependencies"
|
78
|
+
def errand(name)
|
79
|
+
dependencies = options[:dependencies] || []
|
80
|
+
require 'bosh/gen/generators/errand_generator'
|
81
|
+
Bosh::Gen::Generators::ErrandGenerator.start([name, dependencies])
|
82
|
+
end
|
83
|
+
|
75
84
|
desc "micro [JOB]", "Create a micro job - a collection of all jobs and packages"
|
76
85
|
method_option :jobs, :aliases => ['-j'], :type => :array,
|
77
86
|
:desc => "Ordered list of jobs to include"
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'thor/group'
|
3
|
-
require '
|
3
|
+
require 'bosh/template/property_helper'
|
4
4
|
|
5
5
|
module Bosh::Gen
|
6
6
|
module Generators
|
7
7
|
class DeploymentManifestGenerator < Thor::Group
|
8
8
|
include Thor::Actions
|
9
|
-
include Bosh::
|
9
|
+
include Bosh::Template::PropertyHelper
|
10
10
|
|
11
11
|
argument :name
|
12
12
|
argument :release_path
|
@@ -33,8 +33,8 @@ module Bosh::Gen
|
|
33
33
|
|
34
34
|
# Create a deployment manifest (initially for AWS only)
|
35
35
|
def create_deployment_manifest
|
36
|
-
cloud_properties = {
|
37
|
-
"instance_type" => "m1.small",
|
36
|
+
cloud_properties = {
|
37
|
+
"instance_type" => "m1.small",
|
38
38
|
}
|
39
39
|
cloud_properties["persistent_disk"] = flags[:disk] if flags[:disk]
|
40
40
|
cloud_properties["static_ips"] = ip_addresses
|
@@ -54,12 +54,12 @@ module Bosh::Gen
|
|
54
54
|
def release_detector
|
55
55
|
@release_detector ||= Bosh::Gen::Models::ReleaseDetection.new(release_path)
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
58
|
# Whether +name+ contains .yml suffix or nor, returns a .yml filename for manifest to be generated
|
59
59
|
def manifest_file_name
|
60
60
|
basename = "#{name}.yml"
|
61
61
|
end
|
62
|
-
|
62
|
+
|
63
63
|
def job_manifests
|
64
64
|
jobs.map do |job_name|
|
65
65
|
{
|
@@ -67,7 +67,7 @@ module Bosh::Gen
|
|
67
67
|
}
|
68
68
|
end
|
69
69
|
end
|
70
|
-
|
70
|
+
|
71
71
|
# Return list of job names
|
72
72
|
def detect_jobs
|
73
73
|
release_detector.latest_dev_release_job_names
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'thor/group'
|
3
|
+
|
4
|
+
module Bosh::Gen
|
5
|
+
module Generators
|
6
|
+
class ErrandGenerator < Thor::Group
|
7
|
+
include Thor::Actions
|
8
|
+
|
9
|
+
argument :job_name
|
10
|
+
argument :dependencies, :type => :array
|
11
|
+
|
12
|
+
def self.source_root
|
13
|
+
File.join(File.dirname(__FILE__), "errand_generator", "templates")
|
14
|
+
end
|
15
|
+
|
16
|
+
def check_root_is_release
|
17
|
+
unless File.exist?("jobs") && File.exist?("packages")
|
18
|
+
raise Thor::Error.new("run inside a BOSH release project")
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def check_name
|
23
|
+
raise Thor::Error.new("'#{job_name}' is not a valid BOSH id") unless job_name.bosh_valid_id?
|
24
|
+
end
|
25
|
+
|
26
|
+
def warn_missing_dependencies
|
27
|
+
dependencies.each do |d|
|
28
|
+
raise Thor::Error.new("dependency '#{d}' is not a valid BOSH id") unless d.bosh_valid_id?
|
29
|
+
unless File.exist?(File.join("packages", d))
|
30
|
+
say_status "warning", "missing dependency '#{d}'", :yellow
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# copy the thor template files into the bosh release to be bosh templates
|
36
|
+
# that's right, templates (.tt) can become templates (.erb)
|
37
|
+
def template_files
|
38
|
+
generator_job_templates_path = File.join(self.class.source_root, "jobs/%job_name%")
|
39
|
+
directory "jobs/%job_name%", "jobs/#{job_name}"
|
40
|
+
|
41
|
+
# build a hash of { 'bin/webapp_ctl.erb' => 'bin/webapp_ctl', ...} used in spec
|
42
|
+
@template_files = {}
|
43
|
+
FileUtils.chdir(File.join(generator_job_templates_path, "templates")) do
|
44
|
+
`ls */*`.split("\n").each do |template_file|
|
45
|
+
# clean up thor name convention
|
46
|
+
template_file.gsub!("%job_name%", job_name)
|
47
|
+
template_file.gsub!(".tt", "")
|
48
|
+
# strip erb from target file
|
49
|
+
target_template_file = template_file.gsub(/.erb/, '')
|
50
|
+
|
51
|
+
@template_files[template_file] = target_template_file
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def job_specification
|
57
|
+
config = { "name" => job_name, "packages" => dependencies, "templates" => @template_files }
|
58
|
+
create_file job_dir("spec"), YAML.dump(config)
|
59
|
+
end
|
60
|
+
|
61
|
+
def readme
|
62
|
+
say_status "readme", "Add job to deploymemt manifest with lifecycle: errand"
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
def filenames
|
68
|
+
files.map {|f| File.basename(f) }
|
69
|
+
end
|
70
|
+
|
71
|
+
def job_dir(path)
|
72
|
+
File.join("jobs", job_name, path)
|
73
|
+
end
|
74
|
+
|
75
|
+
# Run a command in git.
|
76
|
+
#
|
77
|
+
# ==== Examples
|
78
|
+
#
|
79
|
+
# git :init
|
80
|
+
# git :add => "this.file that.rb"
|
81
|
+
# git :add => "onefile.rb", :rm => "badfile.cxx"
|
82
|
+
#
|
83
|
+
def git(commands={})
|
84
|
+
if commands.is_a?(Symbol)
|
85
|
+
run "git #{commands}"
|
86
|
+
else
|
87
|
+
commands.each do |cmd, options|
|
88
|
+
run "git #{cmd} #{options}"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
File without changes
|
File without changes
|
@@ -0,0 +1,12 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -e # exit immediately if a simple command exits with a non-zero status
|
4
|
+
set -u # report the usage of uninitialized variables
|
5
|
+
|
6
|
+
# Setup env vars and folders for the webapp_ctl script
|
7
|
+
source /var/vcap/jobs/<%= job_name %>/helpers/ctl_setup.sh '<%= job_name %>'
|
8
|
+
|
9
|
+
EXITSTATUS=0
|
10
|
+
|
11
|
+
echo "Errand <%= job_name %> is complete; exit status $EXITSTATUS"
|
12
|
+
exit $EXITSTATUS
|
data/lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/config/.gitkeep
ADDED
File without changes
|
@@ -0,0 +1,61 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
# Setup env vars and folders for the ctl script
|
4
|
+
# This helps keep the ctl script as readable
|
5
|
+
# as possible
|
6
|
+
|
7
|
+
# Usage options:
|
8
|
+
# source /var/vcap/jobs/foobar/helpers/ctl_setup.sh JOB_NAME OUTPUT_LABEL
|
9
|
+
# source /var/vcap/jobs/foobar/helpers/ctl_setup.sh foobar
|
10
|
+
# source /var/vcap/jobs/foobar/helpers/ctl_setup.sh foobar foobar
|
11
|
+
# source /var/vcap/jobs/foobar/helpers/ctl_setup.sh foobar nginx
|
12
|
+
|
13
|
+
set -e # exit immediately if a simple command exits with a non-zero status
|
14
|
+
set -u # report the usage of uninitialized variables
|
15
|
+
|
16
|
+
JOB_NAME=$1
|
17
|
+
output_label=${2:-${JOB_NAME}}
|
18
|
+
|
19
|
+
export JOB_DIR=/var/vcap/jobs/$JOB_NAME
|
20
|
+
chmod 755 $JOB_DIR # to access file via symlink
|
21
|
+
|
22
|
+
# Load some bosh deployment properties into env vars
|
23
|
+
# Try to put all ERb into data/properties.sh.erb
|
24
|
+
# incl $NAME, $JOB_INDEX, $WEBAPP_DIR
|
25
|
+
source $JOB_DIR/data/properties.sh
|
26
|
+
|
27
|
+
source $JOB_DIR/helpers/ctl_utils.sh
|
28
|
+
redirect_output ${output_label}
|
29
|
+
|
30
|
+
export HOME=${HOME:-/home/vcap}
|
31
|
+
|
32
|
+
# Add all packages' /bin & /sbin into $PATH
|
33
|
+
for package_bin_dir in $(ls -d /var/vcap/packages/*/*bin)
|
34
|
+
do
|
35
|
+
export PATH=${package_bin_dir}:$PATH
|
36
|
+
done
|
37
|
+
|
38
|
+
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:-''} # default to empty
|
39
|
+
for package_bin_dir in $(ls -d /var/vcap/packages/*/lib)
|
40
|
+
do
|
41
|
+
export LD_LIBRARY_PATH=${package_bin_dir}:$LD_LIBRARY_PATH
|
42
|
+
done
|
43
|
+
|
44
|
+
# Setup log, run and tmp folders
|
45
|
+
|
46
|
+
export RUN_DIR=/var/vcap/sys/run/$JOB_NAME
|
47
|
+
export LOG_DIR=/var/vcap/sys/log/$JOB_NAME
|
48
|
+
export TMP_DIR=/var/vcap/sys/tmp/$JOB_NAME
|
49
|
+
export STORE_DIR=/var/vcap/store/$JOB_NAME
|
50
|
+
for dir in $RUN_DIR $LOG_DIR $TMP_DIR $STORE_DIR
|
51
|
+
do
|
52
|
+
mkdir -p ${dir}
|
53
|
+
chown vcap:vcap ${dir}
|
54
|
+
chmod 775 ${dir}
|
55
|
+
done
|
56
|
+
export TMPDIR=$TMP_DIR
|
57
|
+
|
58
|
+
export C_INCLUDE_PATH=/var/vcap/packages/mysqlclient/include/mysql:/var/vcap/packages/sqlite/include:/var/vcap/packages/libpq/include
|
59
|
+
export LIBRARY_PATH=/var/vcap/packages/mysqlclient/lib/mysql:/var/vcap/packages/sqlite/lib:/var/vcap/packages/libpq/lib
|
60
|
+
|
61
|
+
echo '$PATH' $PATH
|
@@ -0,0 +1,156 @@
|
|
1
|
+
# Helper functions used by ctl scripts
|
2
|
+
|
3
|
+
# links a job file (probably a config file) into a package
|
4
|
+
# Example usage:
|
5
|
+
# link_job_file_to_package config/redis.yml [config/redis.yml]
|
6
|
+
# link_job_file_to_package config/wp-config.php wp-config.php
|
7
|
+
link_job_file_to_package() {
|
8
|
+
source_job_file=$1
|
9
|
+
target_package_file=${2:-$source_job_file}
|
10
|
+
full_package_file=$WEBAPP_DIR/${target_package_file}
|
11
|
+
|
12
|
+
link_job_file ${source_job_file} ${full_package_file}
|
13
|
+
}
|
14
|
+
|
15
|
+
# links a job file (probably a config file) somewhere
|
16
|
+
# Example usage:
|
17
|
+
# link_job_file config/bashrc /home/vcap/.bashrc
|
18
|
+
link_job_file() {
|
19
|
+
source_job_file=$1
|
20
|
+
target_file=$2
|
21
|
+
full_job_file=$JOB_DIR/${source_job_file}
|
22
|
+
|
23
|
+
echo link_job_file ${full_job_file} ${target_file}
|
24
|
+
if [[ ! -f ${full_job_file} ]]
|
25
|
+
then
|
26
|
+
echo "file to link ${full_job_file} does not exist"
|
27
|
+
else
|
28
|
+
# Create/recreate the symlink to current job file
|
29
|
+
# If another process is using the file, it won't be
|
30
|
+
# deleted, so don't attempt to create the symlink
|
31
|
+
mkdir -p $(dirname ${target_file})
|
32
|
+
ln -nfs ${full_job_file} ${target_file}
|
33
|
+
fi
|
34
|
+
}
|
35
|
+
|
36
|
+
# If loaded within monit ctl scripts then pipe output
|
37
|
+
# If loaded from 'source ../utils.sh' then normal STDOUT
|
38
|
+
redirect_output() {
|
39
|
+
SCRIPT=$1
|
40
|
+
mkdir -p /var/vcap/sys/log/monit
|
41
|
+
exec 1>> /var/vcap/sys/log/monit/$SCRIPT.log
|
42
|
+
exec 2>> /var/vcap/sys/log/monit/$SCRIPT.err.log
|
43
|
+
}
|
44
|
+
|
45
|
+
pid_guard() {
|
46
|
+
pidfile=$1
|
47
|
+
name=$2
|
48
|
+
|
49
|
+
if [ -f "$pidfile" ]; then
|
50
|
+
pid=$(head -1 "$pidfile")
|
51
|
+
|
52
|
+
if [ -n "$pid" ] && [ -e /proc/$pid ]; then
|
53
|
+
echo "$name is already running, please stop it first"
|
54
|
+
exit 1
|
55
|
+
fi
|
56
|
+
|
57
|
+
echo "Removing stale pidfile..."
|
58
|
+
rm $pidfile
|
59
|
+
fi
|
60
|
+
}
|
61
|
+
|
62
|
+
wait_pid() {
|
63
|
+
pid=$1
|
64
|
+
try_kill=$2
|
65
|
+
timeout=${3:-0}
|
66
|
+
force=${4:-0}
|
67
|
+
countdown=$(( $timeout * 10 ))
|
68
|
+
|
69
|
+
echo wait_pid $pid $try_kill $timeout $force $countdown
|
70
|
+
if [ -e /proc/$pid ]; then
|
71
|
+
if [ "$try_kill" = "1" ]; then
|
72
|
+
echo "Killing $pidfile: $pid "
|
73
|
+
kill $pid
|
74
|
+
fi
|
75
|
+
while [ -e /proc/$pid ]; do
|
76
|
+
sleep 0.1
|
77
|
+
[ "$countdown" != '0' -a $(( $countdown % 10 )) = '0' ] && echo -n .
|
78
|
+
if [ $timeout -gt 0 ]; then
|
79
|
+
if [ $countdown -eq 0 ]; then
|
80
|
+
if [ "$force" = "1" ]; then
|
81
|
+
echo -ne "\nKill timed out, using kill -9 on $pid... "
|
82
|
+
kill -9 $pid
|
83
|
+
sleep 0.5
|
84
|
+
fi
|
85
|
+
break
|
86
|
+
else
|
87
|
+
countdown=$(( $countdown - 1 ))
|
88
|
+
fi
|
89
|
+
fi
|
90
|
+
done
|
91
|
+
if [ -e /proc/$pid ]; then
|
92
|
+
echo "Timed Out"
|
93
|
+
else
|
94
|
+
echo "Stopped"
|
95
|
+
fi
|
96
|
+
else
|
97
|
+
echo "Process $pid is not running"
|
98
|
+
echo "Attempting to kill pid anyway..."
|
99
|
+
kill $pid
|
100
|
+
fi
|
101
|
+
}
|
102
|
+
|
103
|
+
wait_pidfile() {
|
104
|
+
pidfile=$1
|
105
|
+
try_kill=$2
|
106
|
+
timeout=${3:-0}
|
107
|
+
force=${4:-0}
|
108
|
+
countdown=$(( $timeout * 10 ))
|
109
|
+
|
110
|
+
if [ -f "$pidfile" ]; then
|
111
|
+
pid=$(head -1 "$pidfile")
|
112
|
+
if [ -z "$pid" ]; then
|
113
|
+
echo "Unable to get pid from $pidfile"
|
114
|
+
exit 1
|
115
|
+
fi
|
116
|
+
|
117
|
+
wait_pid $pid $try_kill $timeout $force
|
118
|
+
|
119
|
+
rm -f $pidfile
|
120
|
+
else
|
121
|
+
echo "Pidfile $pidfile doesn't exist"
|
122
|
+
fi
|
123
|
+
}
|
124
|
+
|
125
|
+
kill_and_wait() {
|
126
|
+
pidfile=$1
|
127
|
+
# Monit default timeout for start/stop is 30s
|
128
|
+
# Append 'with timeout {n} seconds' to monit start/stop program configs
|
129
|
+
timeout=${2:-25}
|
130
|
+
force=${3:-1}
|
131
|
+
if [[ -f ${pidfile} ]]
|
132
|
+
then
|
133
|
+
wait_pidfile $pidfile 1 $timeout $force
|
134
|
+
else
|
135
|
+
# TODO assume $1 is something to grep from 'ps ax'
|
136
|
+
pid="$(ps auwwx | grep "$1" | awk '{print $2}')"
|
137
|
+
wait_pid $pid 1 $timeout $force
|
138
|
+
fi
|
139
|
+
}
|
140
|
+
|
141
|
+
check_nfs_mount() {
|
142
|
+
opts=$1
|
143
|
+
exports=$2
|
144
|
+
mount_point=$3
|
145
|
+
|
146
|
+
if grep -qs $mount_point /proc/mounts; then
|
147
|
+
echo "Found NFS mount $mount_point"
|
148
|
+
else
|
149
|
+
echo "Mounting NFS..."
|
150
|
+
mount $opts $exports $mount_point
|
151
|
+
if [ $? != 0 ]; then
|
152
|
+
echo "Cannot mount NFS from $exports to $mount_point, exiting..."
|
153
|
+
exit 1
|
154
|
+
fi
|
155
|
+
fi
|
156
|
+
}
|
data/lib/bosh/gen/version.rb
CHANGED
metadata
CHANGED
@@ -1,139 +1,139 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bosh-gen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.18.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dr Nic Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bosh_cli
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: bosh-template
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: progressbar
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: cyoi
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0.10'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0.10'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: fog
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - ~>
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '1.11'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - ~>
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '1.11'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: readwritesettings
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - ~>
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '3.0'
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - ~>
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '3.0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rake
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: rspec-fire
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
description: Generators for creating BOSH releases
|
@@ -144,9 +144,9 @@ executables:
|
|
144
144
|
extensions: []
|
145
145
|
extra_rdoc_files: []
|
146
146
|
files:
|
147
|
-
- .gitignore
|
148
|
-
- .rspec
|
149
|
-
- .travis.yml
|
147
|
+
- ".gitignore"
|
148
|
+
- ".rspec"
|
149
|
+
- ".travis.yml"
|
150
150
|
- ChangeLog.md
|
151
151
|
- Gemfile
|
152
152
|
- Guardfile
|
@@ -159,6 +159,13 @@ files:
|
|
159
159
|
- lib/bosh/gen.rb
|
160
160
|
- lib/bosh/gen/cli.rb
|
161
161
|
- lib/bosh/gen/generators/deployment_manifest_generator.rb
|
162
|
+
- lib/bosh/gen/generators/errand_generator.rb
|
163
|
+
- lib/bosh/gen/generators/errand_generator/templates/.gitkeep
|
164
|
+
- lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/monit.tt
|
165
|
+
- lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/bin/run
|
166
|
+
- lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/config/.gitkeep
|
167
|
+
- lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/helpers/ctl_setup.sh
|
168
|
+
- lib/bosh/gen/generators/errand_generator/templates/jobs/%job_name%/templates/helpers/ctl_utils.sh
|
162
169
|
- lib/bosh/gen/generators/extract_job_generator.rb
|
163
170
|
- lib/bosh/gen/generators/extract_package_generator.rb
|
164
171
|
- lib/bosh/gen/generators/job_generator.rb
|
@@ -311,17 +318,17 @@ require_paths:
|
|
311
318
|
- lib
|
312
319
|
required_ruby_version: !ruby/object:Gem::Requirement
|
313
320
|
requirements:
|
314
|
-
- -
|
321
|
+
- - ">="
|
315
322
|
- !ruby/object:Gem::Version
|
316
323
|
version: '0'
|
317
324
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
318
325
|
requirements:
|
319
|
-
- -
|
326
|
+
- - ">="
|
320
327
|
- !ruby/object:Gem::Version
|
321
328
|
version: '0'
|
322
329
|
requirements: []
|
323
330
|
rubyforge_project:
|
324
|
-
rubygems_version: 2.2.
|
331
|
+
rubygems_version: 2.2.1
|
325
332
|
signing_key:
|
326
333
|
specification_version: 4
|
327
334
|
summary: ''
|