vagrant-pe_build 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,6 +1,24 @@
1
1
  vagrant-pe_build
2
2
  ================
3
3
 
4
+ 0.6.0
5
+ -----
6
+
7
+ 2013-10-03
8
+
9
+ This is a backwards compatible bugfix and feature release.
10
+
11
+ ### User notes:
12
+
13
+ * The tar archive unpacker has been split into a true tar unpacker and a
14
+ tar.gz unpacker. Archives with either '.tar' and '.tar.gz' will be
15
+ extracted with the correct unpacker.
16
+ * If a version of PE is requested but there's no definition for it, release
17
+ information for the latest version of PE will be used. This means that the
18
+ new versions of PE that aren't yet supported should work without having to
19
+ specify an explicit answer file.
20
+ * PE versions with trailing version information can now be used.
21
+
4
22
  0.5.0
5
23
  -----
6
24
 
@@ -80,7 +80,7 @@ class Archive
80
80
  end
81
81
 
82
82
  def installer_dir
83
- versioned_path(@filename).gsub('.tar.gz', '')
83
+ versioned_path(@filename).gsub(/.tar(?:\.gz)?/, '')
84
84
  end
85
85
 
86
86
  private
@@ -5,10 +5,6 @@ require 'uri'
5
5
 
6
6
  class PEBuild::Config::Global < Vagrant.plugin('2', :config)
7
7
 
8
- # @todo This value should be discovered based on what versions of the
9
- # installer are cached.
10
- #DEFAULT_PE_VERSION = '2.7.2'
11
-
12
8
  # @!attribute download_root
13
9
  attr_accessor :download_root
14
10
 
@@ -18,19 +14,8 @@ class PEBuild::Config::Global < Vagrant.plugin('2', :config)
18
14
  # @!attribute suffix
19
15
  attr_accessor :suffix
20
16
 
21
- # Allow our filename default to use @version and @suffix variables. This
22
- # approach will not break the merging mechanism since the merging directly
23
- # accesses the instance variables of the configuration objects.
24
- def filename
25
- if @filename == UNSET_VALUE
26
- "puppet-enterprise-#{version}-#{suffix}.tar.gz"
27
- else
28
- @filename
29
- end
30
- end
31
-
32
17
  # @!attribute filename
33
- attr_writer :filename
18
+ attr_accessor :filename
34
19
 
35
20
  def initialize
36
21
  @download_root = UNSET_VALUE
@@ -43,25 +28,25 @@ class PEBuild::Config::Global < Vagrant.plugin('2', :config)
43
28
 
44
29
  def finalize!
45
30
  set_default :@suffix, :detect
46
-
47
- #set_default :@version, DEFAULT_PE_VERSION
48
-
49
31
  set_default :@download_root, nil
32
+ set_default :@filename, nil
50
33
  end
51
34
 
52
35
  # @todo Convert error strings to I18n
53
36
  def validate(machine)
54
37
  errors = []
55
38
 
56
- validate_version(errors)
57
- validate_download_root(errors)
39
+ validate_version(errors, machine)
40
+ validate_download_root(errors, machine)
58
41
 
59
42
  {"PE build global config" => errors}
60
43
  end
61
44
 
62
45
  private
63
46
 
64
- def validate_version(version)
47
+ PE_VERSION_REGEX = %r[\d+\.\d+\.\d+[\w-]*]
48
+
49
+ def validate_version(errors, machine)
65
50
 
66
51
  errmsg = I18n.t(
67
52
  'pebuild.config.global.errors.malformed_version',
@@ -72,14 +57,16 @@ class PEBuild::Config::Global < Vagrant.plugin('2', :config)
72
57
  # Allow Global version to be unset, rendering it essentially optional. If it is
73
58
  # discovered to be unset by a configuration on the next level up who cannot provide a
74
59
  # value, it is that configuration's job to take action.
75
- if @version.kind_of? String and !(@version.match /\d+\.\d+(\.\d+)?/)
76
- errors << errmsg
60
+ if @version.kind_of? String
61
+ if !(@version.match PE_VERSION_REGEX)
62
+ errors << errmsg
63
+ end
77
64
  elsif @version != UNSET_VALUE
78
65
  errors << errmsg
79
66
  end
80
67
  end
81
68
 
82
- def validate_download_root(errors)
69
+ def validate_download_root(errors, machine)
83
70
  if @download_root and @download_root != UNSET_VALUE
84
71
  begin
85
72
  uri = URI.parse(@download_root)
@@ -103,13 +103,12 @@ class PEBuild::Config::PEBootstrap < PEBuild::Config::Global
103
103
 
104
104
  errors = []
105
105
 
106
- validate_version(errors)
107
- validate_role(errors)
108
- validate_verbose(errors)
109
- validate_master(errors)
110
- validate_answer_file(errors)
111
- validate_relocate_manifests(errors)
112
- validate_autosign(errors)
106
+ validate_role(errors, machine)
107
+ validate_verbose(errors, machine)
108
+ validate_master(errors, machine)
109
+ validate_answer_file(errors, machine)
110
+ validate_relocate_manifests(errors, machine)
111
+ validate_autosign(errors, machine)
113
112
 
114
113
  errors |= h.values.flatten
115
114
  {"PE Bootstrap" => errors}
@@ -117,13 +116,13 @@ class PEBuild::Config::PEBootstrap < PEBuild::Config::Global
117
116
 
118
117
  private
119
118
 
120
- def validate_version(errors)
119
+ def validate_version(errors, machine)
121
120
  if @version == UNSET_VALUE and global_config_from(machine).pe_build.version == UNSET_VALUE
122
121
  errors << I18n.t('pebuild.config.pe_bootstrap.errors.unset_version')
123
122
  end
124
123
  end
125
124
 
126
- def validate_role(errors)
125
+ def validate_role(errors, machine)
127
126
  unless VALID_ROLES.any? {|sym| @role == sym}
128
127
  errors << I18n.t(
129
128
  'pebuild.config.pe_bootstrap.errors.unhandled_role',
@@ -133,7 +132,7 @@ class PEBuild::Config::PEBootstrap < PEBuild::Config::Global
133
132
  end
134
133
  end
135
134
 
136
- def validate_verbose(errors)
135
+ def validate_verbose(errors, machine)
137
136
  unless @verbose == !!@verbose
138
137
  errors << I18n.t(
139
138
  'pebuild.config.pe_bootstrap.errors.malformed_verbose',
@@ -142,25 +141,25 @@ class PEBuild::Config::PEBootstrap < PEBuild::Config::Global
142
141
  end
143
142
  end
144
143
 
145
- def validate_master(errors)
144
+ def validate_master(errors, machine)
146
145
  unless @master.is_a? String
147
146
  errors << "'master' must be a string containing the address of the master, got a #{@master.class}"
148
147
  end
149
148
  end
150
149
 
151
- def validate_answer_file(errors)
150
+ def validate_answer_file(errors, machine)
152
151
  if @answer_file and !File.readable? @answer_file
153
152
  errors << "'answers_file' must be a readable file"
154
153
  end
155
154
  end
156
155
 
157
- def validate_relocate_manifests(errors)
156
+ def validate_relocate_manifests(errors, machine)
158
157
  if @relocate_manifests and not @role == :master
159
158
  errors << "'relocate_manifests' can only be applied to a master"
160
159
  end
161
160
  end
162
161
 
163
- def validate_autosign(errors)
162
+ def validate_autosign(errors, machine)
164
163
  if (@autosign and @role != :master)
165
164
  errors << I18n.t(
166
165
  'pebuild.config.pe_bootstrap.errors.invalid_autosign_role',
@@ -71,8 +71,8 @@ module PEBuild
71
71
  # is being used for default values and was never directly touched then it
72
72
  # may have bad values, so we re-finalize everything. This may not be
73
73
  # generally safe but inside of this plugin it should be ok.
74
- provision.finalize!
75
74
  global.finalize!
75
+ provision.finalize!
76
76
 
77
77
  merged = PEBuild::Util::Config.local_merge(provision, global)
78
78
 
@@ -85,7 +85,7 @@ module PEBuild
85
85
  end
86
86
 
87
87
  def load_archive
88
- if @config.suffix == :detect
88
+ if @config.suffix == :detect and @config.filename.nil?
89
89
  filename = @machine.guest.capability('detect_installer', @config.version)
90
90
  else
91
91
  filename = @config.filename
@@ -8,7 +8,17 @@ module PEBuild
8
8
  @releases = {}
9
9
 
10
10
  def self.[](ver)
11
- @releases[ver]
11
+ release = @releases[ver]
12
+
13
+ if release.nil?
14
+ logger = Log4r::Logger.new('vagrant::pe_build::release')
15
+ logger.warn I18n.t 'pebuild.release.unknown_version',
16
+ :missing_version => ver,
17
+ :latest_version => LATEST_VERSION
18
+ release = @releases[LATEST_VERSION]
19
+ end
20
+
21
+ release
12
22
  end
13
23
 
14
24
  def self.newrelease(&blk)
@@ -6,10 +6,12 @@ module PEBuild
6
6
  end
7
7
 
8
8
  require 'pe_build/unpack/tar'
9
+ require 'pe_build/unpack/tar_gz'
9
10
  require 'pe_build/unpack/copy'
10
11
 
11
12
  IMPLEMENTATIONS = {
12
- '.tar.gz' => PEBuild::Unpack::Tar,
13
+ '.tar' => PEBuild::Unpack::Tar,
14
+ '.tar.gz' => PEBuild::Unpack::TarGZ,
13
15
  '.msi' => PEBuild::Unpack::Copy,
14
16
  }
15
17
 
@@ -1,5 +1,4 @@
1
1
  require 'archive/tar/minitar'
2
- require 'zlib'
3
2
 
4
3
  module PEBuild
5
4
  module Unpack
@@ -12,7 +11,7 @@ class Tar
12
11
  end
13
12
 
14
13
  def unpack
15
- ::Archive::Tar::Minitar.unpack(zip, @dst)
14
+ ::Archive::Tar::Minitar.unpack(file_stream, @dst)
16
15
  end
17
16
 
18
17
  # @return [String] The file/dir that will be created as a result of unpack
@@ -22,7 +21,7 @@ class Tar
22
21
 
23
22
  # @return [String] The base directory contained in the tar archive
24
23
  def dirname
25
- input = ::Archive::Tar::Minitar::Input.new(zip)
24
+ input = ::Archive::Tar::Minitar::Input.new(file_stream)
26
25
 
27
26
  base = nil
28
27
  input.each do |entry|
@@ -35,8 +34,8 @@ class Tar
35
34
 
36
35
  private
37
36
 
38
- def zip
39
- Zlib::GzipReader.new(File.open(@src, 'rb'))
37
+ def file_stream
38
+ File.open(@src, 'rb')
40
39
  end
41
40
  end
42
41
  end
@@ -0,0 +1,17 @@
1
+ require 'pe_build/unpack'
2
+ require 'pe_build/unpack/tar'
3
+
4
+ require 'zlib'
5
+
6
+ module PEBuild
7
+ module Unpack
8
+ class TarGZ < PEBuild::Unpack::Tar
9
+
10
+ private
11
+
12
+ def file_stream
13
+ Zlib::GzipReader.new(super)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module PEBuild
2
- VERSION = '0.5.0'
2
+ VERSION = '0.6.0'
3
3
  end
@@ -62,3 +62,7 @@ en:
62
62
  The VM "%{name}" could not detect the version of Puppet Enterprise and failed with
63
63
  the following error:
64
64
  "%{error}"
65
+ release:
66
+ unknown_version: |-
67
+ Release information for PE version %{missing_version} could not be found. Falling back
68
+ Falling back to %{latest_version}.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-pe_build
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.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: 2013-09-17 00:00:00.000000000 Z
12
+ date: 2013-10-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: progressbar
@@ -108,6 +108,7 @@ files:
108
108
  - lib/pe_build/unpack.rb
109
109
  - lib/pe_build/unpack/copy.rb
110
110
  - lib/pe_build/unpack/tar.rb
111
+ - lib/pe_build/unpack/tar_gz.rb
111
112
  - lib/pe_build/util/config.rb
112
113
  - lib/pe_build/version.rb
113
114
  - lib/vagrant-pe_build.rb