bosh-gen 0.17.1 → 0.18.0
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 +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
|
+

|
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: ''
|