bosh-gen 0.23.0 → 0.24.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 +4 -4
- data/ChangeLog.md +4 -0
- data/lib/bosh/gen/cli.rb +7 -0
- data/lib/bosh/gen/generators/blacksmith_forge_generator.rb +40 -0
- data/lib/bosh/gen/generators/blacksmith_forge_generator/templates/.gitkeep +0 -0
- data/lib/bosh/gen/generators/blacksmith_forge_generator/templates/jobs/%job_name%/monit.tt +0 -0
- data/lib/bosh/gen/generators/blacksmith_forge_generator/templates/jobs/%job_name%/spec.tt +51 -0
- data/lib/bosh/gen/generators/blacksmith_forge_generator/templates/jobs/%job_name%/templates/bin/configure-blacksmith.tt +45 -0
- data/lib/bosh/gen/generators/blacksmith_forge_generator/templates/jobs/%job_name%/templates/plans/service.yml +12 -0
- data/lib/bosh/gen/generators/blacksmith_forge_generator/templates/jobs/%job_name%/templates/plans/standalone/credentials.yml +18 -0
- data/lib/bosh/gen/generators/blacksmith_forge_generator/templates/jobs/%job_name%/templates/plans/standalone/init +3 -0
- data/lib/bosh/gen/generators/blacksmith_forge_generator/templates/jobs/%job_name%/templates/plans/standalone/manifest.yml.tt +14 -0
- data/lib/bosh/gen/generators/new_release_generator/templates/templates/deployment.yml.tt +1 -1
- data/lib/bosh/gen/generators/new_release_generator/templates/templates/infrastructure-aws-ec2.yml.tt +1 -1
- data/lib/bosh/gen/generators/new_release_generator/templates/templates/infrastructure-warden.yml.tt +1 -1
- data/lib/bosh/gen/generators/new_release_generator/templates/templates/jobs.yml.tt +2 -2
- data/lib/bosh/gen/version.rb +1 -1
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fbd5f5ae54cc9d6045654c2545801a6c4f1f3d05
|
4
|
+
data.tar.gz: 1763c8535dbd032b94009dc164e1d178d983de8c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc70d4413f65711c68f4644f63fbec7c02f6c9a66865adba53bcc7e946416bfe206af44ab5ed5a0c709cc21c317402f9c328412d5fb74145191e774dc38227c7
|
7
|
+
data.tar.gz: 41a3a15b2d28a5e60cc33d076e8eebb24893a915e8e47ecdd4b82fba86d16dc7c49aab1b7752b947b5199da2fba98426c9fd591b1333665d0b69c0505ceb3583
|
data/ChangeLog.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
Change Log
|
2
2
|
==========
|
3
3
|
|
4
|
+
v0.24.0
|
5
|
+
|
6
|
+
- Added new `forge` command to generate new forges for [blacksmith](https://github.com/cloudfoundry-community/blacksmith). Thanks @jhunt
|
7
|
+
|
4
8
|
v0.23.0
|
5
9
|
|
6
10
|
Appreciation to James Hunt, Dennis Bell and Chris Weibel for the contributions.
|
data/lib/bosh/gen/cli.rb
CHANGED
@@ -94,6 +94,13 @@ module Bosh
|
|
94
94
|
Bosh::Gen::Generators::JobTemplateGenerator.start([job_name, file_path])
|
95
95
|
end
|
96
96
|
|
97
|
+
desc "forge NAME",
|
98
|
+
"Creates a Blacksmith Forge job to get you up and running"
|
99
|
+
def forge(job_name)
|
100
|
+
require 'bosh/gen/generators/blacksmith_forge_generator'
|
101
|
+
Bosh::Gen::Generators::BlacksmithForgeGenerator.start([job_name])
|
102
|
+
end
|
103
|
+
|
97
104
|
desc "extract-job SOURCE_PACKAGE_PATH",
|
98
105
|
"Extracts a job from another release and all its " +
|
99
106
|
"dependent packages and source"
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'thor/group'
|
3
|
+
|
4
|
+
module Bosh::Gen
|
5
|
+
module Generators
|
6
|
+
class BlacksmithForgeGenerator < Thor::Group
|
7
|
+
include Thor::Actions
|
8
|
+
|
9
|
+
argument :name
|
10
|
+
|
11
|
+
def self.source_root
|
12
|
+
File.join(File.dirname(__FILE__), "blacksmith_forge_generator", "templates")
|
13
|
+
end
|
14
|
+
|
15
|
+
# FYI, bosh-gen (the CLI) will eventually call Thor, telling it to `start()`
|
16
|
+
# Don't bother looking for a start() function anywhere; Thor just calls all of
|
17
|
+
# the public methods of this class.
|
18
|
+
|
19
|
+
def check_root_is_release
|
20
|
+
unless File.exist?("jobs") && File.exist?("packages")
|
21
|
+
raise Thor::Error.new("run inside a BOSH release project")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def check_name
|
26
|
+
raise Thor::Error.new("'#{name}' is not a valid BOSH id") unless "#{name}-blacksmith-plans".bosh_valid_id?
|
27
|
+
end
|
28
|
+
|
29
|
+
def copy_files
|
30
|
+
generator_job_templates_path = File.join(self.class.source_root, "jobs/%job_name%")
|
31
|
+
directory "jobs/%job_name%", "jobs/#{job_name}"
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
def job_name
|
36
|
+
"#{name}-blacksmith-plans"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
File without changes
|
File without changes
|
@@ -0,0 +1,51 @@
|
|
1
|
+
name: <%= job_name %>
|
2
|
+
packages: []
|
3
|
+
templates:
|
4
|
+
bin/configure-blacksmith: bin/configure-blacksmith
|
5
|
+
|
6
|
+
plans/service.yml: plans/service.yml
|
7
|
+
|
8
|
+
plans/standalone/manifest.yml: plans/standalone/manifest.yml
|
9
|
+
plans/standalone/credentials.yml: plans/standalone/credentials.yml
|
10
|
+
plans/standalone/init: plans/standalone/init
|
11
|
+
|
12
|
+
|
13
|
+
properties:
|
14
|
+
service.id:
|
15
|
+
description: Machine-friendly name for this service.
|
16
|
+
default: <%= name %>
|
17
|
+
|
18
|
+
service.name:
|
19
|
+
description: Human-friendly name for this service, to be displayed in the Cloud Foundry marketplace.
|
20
|
+
default: <%= name.capitalize %>
|
21
|
+
|
22
|
+
service.description:
|
23
|
+
description: A description for this service, to be displayed in the Cloud Foundry marketplace.
|
24
|
+
default: A dedicated <%= name.capitalize %> instance, deployed just for you.
|
25
|
+
|
26
|
+
service.tags:
|
27
|
+
description: List of tags to apply to service instances.
|
28
|
+
default: [blacksmith, dedicated, <%= name %>]
|
29
|
+
|
30
|
+
service.limit:
|
31
|
+
description: A global limit on the number of <%= name.capitalize %> services (regardless of the plan); 0 = unlimited.
|
32
|
+
default: 0
|
33
|
+
|
34
|
+
plans:
|
35
|
+
description: |
|
36
|
+
A map of plans. I.e.:
|
37
|
+
|
38
|
+
standalone:
|
39
|
+
name: Standalone <%= name.capitalize %> Instance
|
40
|
+
description: A single <%= name %> server, with no redundancy or replication
|
41
|
+
limit: 7
|
42
|
+
type: standalone
|
43
|
+
vm_type: default
|
44
|
+
|
45
|
+
Configuration keys beyond `name', `description', `limit', and `type' are type-specific.
|
46
|
+
limit: 7
|
47
|
+
|
48
|
+
For type=standalone:
|
49
|
+
|
50
|
+
vm_type What VM type to use for the standalone <%= name %> server.
|
51
|
+
Defaults to 'default'
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -eu
|
3
|
+
|
4
|
+
PLANSRC=/var/vcap/jobs/<%= job_name %>/plans
|
5
|
+
SVCROOT=/var/vcap/data/blacksmith/<%= name %>-forge/services
|
6
|
+
rm -rf $SVCROOT
|
7
|
+
mkdir -p $SVCROOT
|
8
|
+
|
9
|
+
# Copy the service definition stub for Blacksmith
|
10
|
+
cp $PLANSRC/service.yml $SVCROOT
|
11
|
+
|
12
|
+
<%= "<"+"%" %> p('plans').each do |id, plan| <%= "%"+">" %>
|
13
|
+
##############################################
|
14
|
+
#
|
15
|
+
# Set up plan <%= "<"+"%" %>= id <%= "%"+">" %>
|
16
|
+
#
|
17
|
+
PLANROOT="$SVCROOT/<%= "<"+"%" %>= id <%= "%"+">" %>"
|
18
|
+
PLANTYPE="<%= "<"+"%" %>= plan["type"] || 'standalone' <%= "%"+">" %>"
|
19
|
+
|
20
|
+
mkdir -p $PLANROOT
|
21
|
+
cat > $PLANROOT/plan.yml <<EOF
|
22
|
+
---
|
23
|
+
id: <%= "<"+"%" %>= id <%= "%"+">" %>
|
24
|
+
name: <%= "<"+"%" %>= plan["name"] || id <%= "%"+">" %>
|
25
|
+
limit: <%= "<"+"%" %>= plan["limit"] || 0 <%= "%"+">" %>
|
26
|
+
description: |+
|
27
|
+
<%= "<"+"%" %>= plan["description"] || 'no description provided' <%= "%"+">" %>
|
28
|
+
EOF
|
29
|
+
|
30
|
+
for file in init credentials.yml manifest.yml; do
|
31
|
+
cp $PLANSRC/$PLANTYPE/$file $PLANROOT/
|
32
|
+
done
|
33
|
+
chmod 0755 $PLANROOT/init
|
34
|
+
|
35
|
+
cat > $PLANROOT/params.yml <<EOF
|
36
|
+
---
|
37
|
+
# auto-generated by <%= job_name %>
|
38
|
+
# for plan-id <%= "<"+"%" %>= id <%= "%"+">" %> (<%= "<"+"%" %>= plan["name"] || id <%= "%"+">" %>)
|
39
|
+
meta:
|
40
|
+
size: <%= "<"+"%" %>= plan["vm_type"] || 'default' <%= "%"+">" %>
|
41
|
+
EOF
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
<%= "<"+"%" %> end <%= "%"+">" %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
---
|
2
|
+
id: <%= p('service.id') %>
|
3
|
+
name: <%= p('service.name') %>
|
4
|
+
description: |
|
5
|
+
<%= p('service.description') %>
|
6
|
+
tags:
|
7
|
+
<% p('service.tags', []).each { |tag| %> - <%= tag %>
|
8
|
+
<% } %>
|
9
|
+
bindable: true
|
10
|
+
metadata: {}
|
11
|
+
plan_updateable: true
|
12
|
+
<% if p('service.limit') > 0 %>limit: <%= p('service.limit') %><% end %>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
---
|
2
|
+
# credentials.yml is the means to communicate credentials
|
3
|
+
# and connection information to cf applications, when they
|
4
|
+
# bind your service to their applications.
|
5
|
+
#
|
6
|
+
# Blacksmith will `spruce merge` this file with:
|
7
|
+
# - The full BOSH deployment manifest
|
8
|
+
# - A file with the IP addresses for each BOSH instance.
|
9
|
+
#
|
10
|
+
# For example, if you have a job named `xyzzy', and you
|
11
|
+
# need to pass back the IP address of the first instance to
|
12
|
+
# bound applications, you could do this:
|
13
|
+
#
|
14
|
+
# ---
|
15
|
+
# credentials:
|
16
|
+
# host: (( grab jobs.xyzzy/0.ips[0] ))
|
17
|
+
#
|
18
|
+
credentials: {}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
---
|
2
|
+
stemcells:
|
3
|
+
- alias: default
|
4
|
+
os: ubuntu-trusty
|
5
|
+
version: latest
|
6
|
+
|
7
|
+
update:
|
8
|
+
canaries: 1
|
9
|
+
max_in_flight: 10
|
10
|
+
canary_watch_time: 1000-30000
|
11
|
+
update_watch_time: 1000-30000
|
12
|
+
|
13
|
+
releases: (( param "The author or this Forge forgot to define any releases. Oops." ))
|
14
|
+
instance_groups: (( param "The author of this Forge forgot to define any instance_groups. Oops." ))
|
@@ -9,7 +9,7 @@ director_uuid: (( param "Please set the UUID of your BOSH Directory" ))
|
|
9
9
|
|
10
10
|
releases: (( param "Please list the BOSH releases to use for this deployment" ))
|
11
11
|
|
12
|
-
|
12
|
+
instance_groups: (( param "Please configure the constituent instance groups for this Deployment" ))
|
13
13
|
|
14
14
|
compilation:
|
15
15
|
workers: 6
|
data/lib/bosh/gen/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bosh-gen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.24.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:
|
11
|
+
date: 2017-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -192,6 +192,15 @@ files:
|
|
192
192
|
- lib/bosh/cli/commands/share_release.rb
|
193
193
|
- lib/bosh/gen.rb
|
194
194
|
- lib/bosh/gen/cli.rb
|
195
|
+
- lib/bosh/gen/generators/blacksmith_forge_generator.rb
|
196
|
+
- lib/bosh/gen/generators/blacksmith_forge_generator/templates/.gitkeep
|
197
|
+
- lib/bosh/gen/generators/blacksmith_forge_generator/templates/jobs/%job_name%/monit.tt
|
198
|
+
- lib/bosh/gen/generators/blacksmith_forge_generator/templates/jobs/%job_name%/spec.tt
|
199
|
+
- lib/bosh/gen/generators/blacksmith_forge_generator/templates/jobs/%job_name%/templates/bin/configure-blacksmith.tt
|
200
|
+
- lib/bosh/gen/generators/blacksmith_forge_generator/templates/jobs/%job_name%/templates/plans/service.yml
|
201
|
+
- lib/bosh/gen/generators/blacksmith_forge_generator/templates/jobs/%job_name%/templates/plans/standalone/credentials.yml
|
202
|
+
- lib/bosh/gen/generators/blacksmith_forge_generator/templates/jobs/%job_name%/templates/plans/standalone/init
|
203
|
+
- lib/bosh/gen/generators/blacksmith_forge_generator/templates/jobs/%job_name%/templates/plans/standalone/manifest.yml.tt
|
195
204
|
- lib/bosh/gen/generators/bosh_cli_plugin_generator.rb
|
196
205
|
- lib/bosh/gen/generators/bosh_cli_plugin_generator/templates/lib/bosh/cli/commands/%underscore_plugin_name%.rb.tt
|
197
206
|
- lib/bosh/gen/generators/errand_generator.rb
|