bosh-gen 0.6.2 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog.md +12 -0
- data/lib/bosh/gen/cli.rb +8 -2
- data/lib/bosh/gen/generators/deployment_manifest_generator.rb +11 -1
- data/lib/bosh/gen/generators/extract_package_generator.rb +65 -0
- data/lib/bosh/gen/generators/new_release_generator.rb +1 -0
- data/lib/bosh/gen/models/deployment_manifest.rb +1 -1
- data/lib/bosh/gen/models/release_detection.rb +1 -1
- data/lib/bosh/gen/version.rb +1 -1
- metadata +6 -5
data/ChangeLog.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## v0.7.0
|
4
|
+
|
5
|
+
Added:
|
6
|
+
|
7
|
+
* `extract-pkg` - extract a package and its dependencies from a target release
|
8
|
+
|
9
|
+
Changed/Renamed:
|
10
|
+
|
11
|
+
* `extract` -> `extract-job`
|
12
|
+
* `new` -> `.gitignore` includes `.vagrant`, to support `bosh-solo`
|
13
|
+
* `manifest` -> update to soon-to-be-released stemcell 0.6.2
|
14
|
+
|
3
15
|
## v0.6.0
|
4
16
|
|
5
17
|
Added:
|
data/lib/bosh/gen/cli.rb
CHANGED
@@ -69,13 +69,19 @@ module Bosh
|
|
69
69
|
Bosh::Gen::Generators::JobTemplateGenerator.start([job_name, file_path])
|
70
70
|
end
|
71
71
|
|
72
|
-
desc "extract SOURCE_RELEASE_PATH SOURCE_JOB_NAME [JOB_NAME]", "Extracts a job from another release and all its dependent packages and source"
|
73
|
-
def
|
72
|
+
desc "extract-job SOURCE_RELEASE_PATH SOURCE_JOB_NAME [JOB_NAME]", "Extracts a job from another release and all its dependent packages and source"
|
73
|
+
def extract_job(source_release_path, source_job_name, target_job_name=nil)
|
74
74
|
target_job_name ||= source_job_name
|
75
75
|
require 'bosh/gen/generators/extract_job_generator'
|
76
76
|
Bosh::Gen::Generators::ExtractJobGenerator.start([source_release_path, source_job_name, target_job_name])
|
77
77
|
end
|
78
78
|
|
79
|
+
desc "extract-pkg SOURCE_RELEASE_PATH SOURCE_PACKAGE_NAME", "Extracts a package from another release and all its dependent packages and sources"
|
80
|
+
def extract_pkg(source_release_path, source_package_name)
|
81
|
+
require 'bosh/gen/generators/extract_package_generator'
|
82
|
+
Bosh::Gen::Generators::ExtractPackageGenerator.start([source_release_path, source_package_name])
|
83
|
+
end
|
84
|
+
|
79
85
|
desc "manifest NAME PATH UUID", "Creates a deployment manifest based on the release located at PATH"
|
80
86
|
method_option :force, :type => :boolean, :desc => "Force override existing target manifest file"
|
81
87
|
method_option :addresses, :aliases => ['-a'], :type => :array, :desc => "List of IP addresses available for jobs"
|
@@ -12,6 +12,12 @@ module Bosh::Gen
|
|
12
12
|
argument :ip_addresses
|
13
13
|
argument :flags, :type => :hash
|
14
14
|
|
15
|
+
def create_root
|
16
|
+
self.destination_root = File.expand_path(name, destination_root)
|
17
|
+
empty_directory '.'
|
18
|
+
FileUtils.cd(destination_root) unless options[:pretend]
|
19
|
+
end
|
20
|
+
|
15
21
|
def check_release_path_is_release
|
16
22
|
unless File.exist?(release_path)
|
17
23
|
raise Thor::Error.new("target path '#{release_path}' doesn't exist")
|
@@ -33,6 +39,10 @@ module Bosh::Gen
|
|
33
39
|
create_file manifest_file_name, manifest.to_yaml, :force => flags[:force]
|
34
40
|
end
|
35
41
|
|
42
|
+
def setup_bosh_deployment_target
|
43
|
+
run "bosh deployment #{manifest_file_name}"
|
44
|
+
end
|
45
|
+
|
36
46
|
private
|
37
47
|
def release_detector
|
38
48
|
@release_detector ||= Bosh::Gen::Models::ReleaseDetection.new(release_path)
|
@@ -40,7 +50,7 @@ module Bosh::Gen
|
|
40
50
|
|
41
51
|
# Whether +name+ contains .yml suffix or nor, returns a .yml filename for manifest to be generated
|
42
52
|
def manifest_file_name
|
43
|
-
basename =
|
53
|
+
basename = "manifest.yml"
|
44
54
|
end
|
45
55
|
|
46
56
|
def job_manifests
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'thor/group'
|
3
|
+
|
4
|
+
module Bosh::Gen
|
5
|
+
module Generators
|
6
|
+
class ExtractPackageGenerator < Thor::Group
|
7
|
+
include Thor::Actions
|
8
|
+
|
9
|
+
argument :source_release_path
|
10
|
+
argument :source_package_name
|
11
|
+
|
12
|
+
def check_root_is_release
|
13
|
+
unless File.exist?("jobs") && File.exist?("packages")
|
14
|
+
raise Thor::Error.new("run inside a BOSH release project")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def using_source_release_for_templates
|
19
|
+
source_paths << File.join(source_release_path)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Extract target package and all its dependencies
|
23
|
+
def detect_dependent_packages
|
24
|
+
spec = YAML.load_file(source_package_dir("spec"))
|
25
|
+
@packages = [target_package_name]
|
26
|
+
@packages << spec["packages"] if spec["packages"]
|
27
|
+
end
|
28
|
+
|
29
|
+
def copy_dependent_packages
|
30
|
+
@packages.each {|package| directory "packages/#{package}"}
|
31
|
+
end
|
32
|
+
|
33
|
+
def copy_dependent_sources
|
34
|
+
@blobs = false
|
35
|
+
@packages.each do |package|
|
36
|
+
directory "src/#{package}" if File.exist?(File.join(source_release_path, "src", package))
|
37
|
+
if File.exist?(File.join(source_release_path, "blobs", package))
|
38
|
+
directory "blobs/#{package}"
|
39
|
+
@blobs = true
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def readme
|
45
|
+
if @blobs
|
46
|
+
say_status "readme", "Upload blobs with 'bosh upload blobs'"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
def target_package_name
|
52
|
+
source_package_name
|
53
|
+
end
|
54
|
+
|
55
|
+
def package_dir(path="")
|
56
|
+
File.join("packages", source_package_name, path)
|
57
|
+
end
|
58
|
+
|
59
|
+
def source_package_dir(path="")
|
60
|
+
File.join(source_release_path, "packages", source_package_name, path)
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -8,7 +8,7 @@ module Bosh::Gen::Models
|
|
8
8
|
@manifest = {}
|
9
9
|
@cloud_properties = cloud_properties
|
10
10
|
@security_groups = ["default"]
|
11
|
-
@stemcell_version = "0.
|
11
|
+
@stemcell_version = "0.6.2"
|
12
12
|
@stemcell = { "name" => "bosh-stemcell", "version" => @stemcell_version }
|
13
13
|
@persistent_disk = cloud_properties.delete("persistent_disk").to_i
|
14
14
|
@static_ips = cloud_properties.delete("static_ips") || []
|
data/lib/bosh/gen/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bosh-gen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
@@ -128,6 +128,7 @@ files:
|
|
128
128
|
- lib/bosh/gen/cli.rb
|
129
129
|
- lib/bosh/gen/generators/deployment_manifest_generator.rb
|
130
130
|
- lib/bosh/gen/generators/extract_job_generator.rb
|
131
|
+
- lib/bosh/gen/generators/extract_package_generator.rb
|
131
132
|
- lib/bosh/gen/generators/job_generator.rb
|
132
133
|
- lib/bosh/gen/generators/job_generator/templates/.gitkeep
|
133
134
|
- lib/bosh/gen/generators/job_generator/templates/jobs/%job_name%/monit.tt
|
@@ -208,7 +209,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
208
209
|
version: '0'
|
209
210
|
segments:
|
210
211
|
- 0
|
211
|
-
hash:
|
212
|
+
hash: 1843884671280331738
|
212
213
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
213
214
|
none: false
|
214
215
|
requirements:
|
@@ -217,10 +218,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
217
218
|
version: '0'
|
218
219
|
segments:
|
219
220
|
- 0
|
220
|
-
hash:
|
221
|
+
hash: 1843884671280331738
|
221
222
|
requirements: []
|
222
223
|
rubyforge_project:
|
223
|
-
rubygems_version: 1.8.
|
224
|
+
rubygems_version: 1.8.24
|
224
225
|
signing_key:
|
225
226
|
specification_version: 3
|
226
227
|
summary: ''
|