vagrant-config_builder 0.15.1 → 1.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +18 -4
  3. data/CHANGELOG +44 -0
  4. data/Gemfile +3 -4
  5. data/lib/config_builder/model/base.rb +182 -8
  6. data/lib/config_builder/model/network/forwarded_port.rb +34 -13
  7. data/lib/config_builder/model/network/private_network.rb +17 -1
  8. data/lib/config_builder/model/network/public_network.rb +39 -0
  9. data/lib/config_builder/model/nfs.rb +33 -0
  10. data/lib/config_builder/model/provider/aws.rb +16 -39
  11. data/lib/config_builder/model/provider/azure.rb +11 -33
  12. data/lib/config_builder/model/provider/base.rb +37 -0
  13. data/lib/config_builder/model/provider/libvirt.rb +33 -39
  14. data/lib/config_builder/model/provider/openstack.rb +69 -0
  15. data/lib/config_builder/model/provider/openstack_plugin.rb +46 -0
  16. data/lib/config_builder/model/provider/softlayer.rb +85 -0
  17. data/lib/config_builder/model/provider/virtualbox.rb +84 -17
  18. data/lib/config_builder/model/provider/vmware.rb +6 -4
  19. data/lib/config_builder/model/provider/vsphere.rb +33 -15
  20. data/lib/config_builder/model/provisioner/base.rb +33 -0
  21. data/lib/config_builder/model/provisioner/file.rb +1 -10
  22. data/lib/config_builder/model/provisioner/puppet.rb +32 -22
  23. data/lib/config_builder/model/provisioner/puppet_server.rb +21 -15
  24. data/lib/config_builder/model/provisioner/shell.rb +28 -10
  25. data/lib/config_builder/model/root.rb +28 -4
  26. data/lib/config_builder/model/ssh.rb +29 -11
  27. data/lib/config_builder/model/synced_folder.rb +83 -14
  28. data/lib/config_builder/model/vm.rb +111 -52
  29. data/lib/config_builder/model/winrm.rb +27 -7
  30. data/lib/config_builder/model.rb +9 -1
  31. data/lib/config_builder/model_delegator.rb +5 -24
  32. data/lib/config_builder/version.rb +1 -1
  33. data/spec/integration/vagrant/root_config_spec.rb +89 -0
  34. data/spec/integration/vagrant/vm_config_spec.rb +101 -0
  35. data/spec/integration/vagrant/vm_provider_spec.rb +57 -0
  36. data/spec/integration/vagrant/vm_provisioner_spec.rb +90 -0
  37. data/spec/spec_helper.rb +6 -2
  38. data/spec/{config_builder → unit}/filter/boxes_spec.rb +0 -0
  39. data/spec/{config_builder → unit}/filter/roles_spec.rb +0 -0
  40. data/spec/{config_builder → unit}/loader/yaml_spec.rb +0 -0
  41. data/spec/unit/model/base_spec.rb +122 -0
  42. data/spec/{config_builder → unit}/model/provider/vmware_fusion_spec.rb +6 -5
  43. data/templates/locales/en.yml +4 -0
  44. metadata +33 -20
@@ -36,21 +36,41 @@ class ConfigBuilder::Model::WinRM < ConfigBuilder::Model::Base
36
36
  # @return [Fixnum] Maximum number of retry attempts. By default this is 20.
37
37
  def_model_attribute :max_tries
38
38
 
39
+ # @!attribute [rw] retry_delay
40
+ # @return [Fixnum]
41
+ def_model_attribute :retry_delay
42
+
39
43
  # @!attribute [rw] timeout
40
44
  # @return [Fixnum] The timeout in seconds. By default this is 1800 seconds.
41
45
  def_model_attribute :timeout
42
46
 
47
+ # @!attribute [rw] transport
48
+ # @return [String, Symbol]
49
+ def_model_attribute :transport
50
+
51
+ # @!attribute [rw] ssl_peer_verification
52
+ # @return [Boolean]
53
+ def_model_attribute :ssl_peer_verification
54
+
55
+ # @!attribute [rw] execution_time_limit
56
+ # @return [String]
57
+ def_model_attribute :execution_time_limit
58
+
43
59
  def to_proc
44
60
  Proc.new do |global_config|
45
61
  winrm = global_config.winrm
46
62
 
47
- with_attr(:username) { |val| winrm.username = val }
48
- with_attr(:password) { |val| winrm.password = val }
49
- with_attr(:host) { |val| winrm.host = val }
50
- with_attr(:guest) { |val| winrm.guest = val }
51
- with_attr(:guest_port) { |val| winrm.guest_port = val }
52
- with_attr(:max_tries) { |val| winrm.max_tries = val }
53
- with_attr(:timeout) { |val| winrm.timeout = val }
63
+ with_attr(:username) { |val| winrm.username = val }
64
+ with_attr(:password) { |val| winrm.password = val }
65
+ with_attr(:host) { |val| winrm.host = val }
66
+ with_attr(:guest) { |val| winrm.guest = val }
67
+ with_attr(:guest_port) { |val| winrm.guest_port = val }
68
+ with_attr(:max_tries) { |val| winrm.max_tries = val }
69
+ with_attr(:retry_delay) { |val| winrm.retry_delay = val }
70
+ with_attr(:timeout) { |val| winrm.timeout = val }
71
+ with_attr(:transport) { |val| winrm.transport = val.to_sym }
72
+ with_attr(:ssl_peer_verification) { |val| winrm.ssl_peer_verification = val }
73
+ with_attr(:execution_time_limit) { |val| winrm.execution_time_limit = val }
54
74
  end
55
75
  end
56
76
  end
@@ -1,6 +1,5 @@
1
1
  require 'vagrant/errors'
2
2
  require 'config_builder/class_registry'
3
- require 'config_builder/model_delegator'
4
3
 
5
4
  module ConfigBuilder
6
5
 
@@ -10,6 +9,7 @@ module ConfigBuilder
10
9
 
11
10
  require 'config_builder/model/root'
12
11
 
12
+ require 'config_builder/model/nfs'
13
13
  require 'config_builder/model/ssh'
14
14
  require 'config_builder/model/winrm'
15
15
  #require 'config_builder/model/host'
@@ -24,6 +24,7 @@ module ConfigBuilder
24
24
  module Network
25
25
  require 'config_builder/model/network/forwarded_port'
26
26
  require 'config_builder/model/network/private_network'
27
+ require 'config_builder/model/network/public_network'
27
28
  end
28
29
 
29
30
  module Provider
@@ -38,6 +39,8 @@ module ConfigBuilder
38
39
  @registry.register(name, klass)
39
40
  end
40
41
 
42
+ require 'config_builder/model/provider/base'
43
+
41
44
  require 'config_builder/model/provider/virtualbox'
42
45
  require 'config_builder/model/provider/vmware'
43
46
  require 'config_builder/model/provider/vmware_fusion'
@@ -46,6 +49,9 @@ module ConfigBuilder
46
49
  require 'config_builder/model/provider/vsphere'
47
50
  require 'config_builder/model/provider/azure'
48
51
  require 'config_builder/model/provider/aws'
52
+ require 'config_builder/model/provider/openstack'
53
+ require 'config_builder/model/provider/openstack_plugin'
54
+ require 'config_builder/model/provider/softlayer'
49
55
  end
50
56
 
51
57
  module Provisioner
@@ -60,6 +66,8 @@ module ConfigBuilder
60
66
  @registry.register(name, klass)
61
67
  end
62
68
 
69
+ require 'config_builder/model/provisioner/base'
70
+
63
71
  require 'config_builder/model/provisioner/file'
64
72
  require 'config_builder/model/provisioner/shell'
65
73
  require 'config_builder/model/provisioner/puppet'
@@ -1,30 +1,11 @@
1
+ require 'config_builder' # For logging.
2
+
1
3
  module ConfigBuilder
2
4
  module ModelDelegator
3
-
4
- def model_delegators
5
- self.class.model_delegators
6
- end
7
-
8
- def eval_models(config)
9
- model_delegators.each do |model|
10
- meth = "eval_#{model}"
11
- send(meth, config)
12
- end
13
- end
14
-
15
5
  def self.included(klass)
16
- klass.extend ClassMethods
17
- end
18
-
19
- module ClassMethods
20
- def def_model_delegator(identifier)
21
- def_model_attribute(identifier)
22
- model_delegators << identifier
23
- end
24
-
25
- def model_delegators
26
- (@models ||= [])
27
- end
6
+ ConfigBuilder.logger.warn {
7
+ I18n.t('config_builder.model_delegator.is_deprecated', :name => klass.inspect)
8
+ }
28
9
  end
29
10
  end
30
11
  end
@@ -1,3 +1,3 @@
1
1
  module ConfigBuilder
2
- VERSION = '0.15.1'
2
+ VERSION = '1.0.0.rc1'
3
3
  end
@@ -0,0 +1,89 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Vagrant Integration: ConfigBuilder::Model::Root' do
4
+ include_context 'vagrant-unit'
5
+
6
+ # Set inside test contexts to generate Vagrant configuration.
7
+ let(:config_data) { Hash.new }
8
+
9
+ let(:test_env) { isolated_environment }
10
+ let(:env) { test_env.create_vagrant_env }
11
+ let(:root_config) { env.vagrantfile.config }
12
+
13
+ before(:each) do
14
+ model = ConfigBuilder::Model::Root.new_from_hash(config_data)
15
+
16
+ model.call(root_config)
17
+ end
18
+
19
+ context 'when configured with ssh data' do
20
+ let(:config_data) {
21
+ {'ssh' =>
22
+ {
23
+ 'insert_key' => false,
24
+ 'username' => 'AzureDiamond',
25
+ 'password' => 'hunter2',
26
+ }
27
+ }
28
+ }
29
+
30
+ subject { root_config.ssh }
31
+
32
+ it 'sets Vagrant config.ssh parameters' do
33
+ expect(subject.insert_key).to be_false
34
+ expect(subject.username).to eq 'AzureDiamond'
35
+ expect(subject.password).to eq 'hunter2'
36
+ end
37
+ end
38
+
39
+ context 'when configured with WinRM data' do
40
+ let(:config_data) {
41
+ {'winrm' =>
42
+ {
43
+ 'username' => 'AzureDiamond',
44
+ 'password' => 'hunter2',
45
+ }
46
+ }
47
+ }
48
+
49
+ subject { root_config.winrm }
50
+
51
+ it 'sets Vagrant config.winrm parameters' do
52
+ expect(subject.username).to eq 'AzureDiamond'
53
+ expect(subject.password).to eq 'hunter2'
54
+ end
55
+ end
56
+
57
+ context 'when configured with NFS data' do
58
+ let(:config_data) {
59
+ {'nfs' =>
60
+ {
61
+ 'map_uid' => 42,
62
+ }
63
+ }
64
+ }
65
+
66
+ subject { root_config.nfs }
67
+
68
+ it 'sets Vagrant config.nfs parameters' do
69
+ expect(subject.map_uid).to eq 42
70
+ end
71
+ end
72
+
73
+ context 'when configured with VM defaults' do
74
+ let(:config_data) {
75
+ {'vm_defaults' =>
76
+ {
77
+ 'box' => 'somebox',
78
+ }
79
+ }
80
+ }
81
+
82
+ subject { root_config.vm }
83
+
84
+ it 'sets Vagrant config.vm parameters' do
85
+ expect(subject.box).to eq 'somebox'
86
+ end
87
+ end
88
+
89
+ end
@@ -0,0 +1,101 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Vagrant Integration: ConfigBuilder::Model::VM' do
4
+ include_context 'vagrant-unit'
5
+
6
+ # Set inside test contexts to generate Vagrant configuration.
7
+ let(:config_data) { Hash.new }
8
+
9
+ let(:test_env) { isolated_environment }
10
+ let(:env) {
11
+ test_env.create_vagrant_env(local_data_path: "#{test_env.workdir}/.vagrant")
12
+ }
13
+ let(:root_config) { env.vagrantfile.config }
14
+
15
+ before(:each) do
16
+ model = ConfigBuilder::Model::Root.new_from_hash(config_data)
17
+
18
+ model.call(root_config)
19
+ end
20
+
21
+ context 'when building vms' do
22
+ let(:config_data) {
23
+ {'vms' =>
24
+ [
25
+ {'name' => 'machine1'},
26
+ {'name' => 'machine2', 'autostart' => false},
27
+ ]
28
+ }
29
+ }
30
+
31
+ subject { root_config.vm }
32
+
33
+ it 'defines named machines under Vagrant config.vm' do
34
+ expect(subject.defined_vm_keys).to include(:machine1, :machine2)
35
+ end
36
+
37
+ it 'sets the autostart option when defining machines' do
38
+ test_vm = subject.defined_vms[:machine2]
39
+
40
+ expect(test_vm.options[:autostart]).to be_false
41
+ end
42
+ end
43
+
44
+ context 'when configuring vms' do
45
+ let(:config_data) {
46
+ {'vms' =>
47
+ [
48
+ {
49
+ 'name' => 'test',
50
+ 'hostname' => 'test-vm',
51
+ 'box' => 'testbox',
52
+ 'communicator' => 'winrm',
53
+ 'forwarded_ports' => [
54
+ {'id' => 'winrm', 'host' => 666}
55
+ ],
56
+ 'synced_folders' => [
57
+ {'host_path' => '.', 'guest_path' => '/vagrant', 'disabled' => true}
58
+ ],
59
+ 'private_networks' => [
60
+ {'type' => 'dhcp'}
61
+ ],
62
+ 'public_networks' => [
63
+ {'bridge' => 'some_interface:'}
64
+ ],
65
+ },
66
+ ]
67
+ }
68
+ }
69
+
70
+ subject { env.machine(:test, :dummy).config.vm }
71
+
72
+ it 'sets Vagrant VM attributes' do
73
+ expect(subject.box).to eq 'testbox'
74
+ expect(subject.communicator).to eq :winrm
75
+ expect(subject.hostname).to eq 'test-vm'
76
+ end
77
+
78
+ it 'configures Vagrant forwarded ports' do
79
+ winrm_port = subject.networks.find {|t, o| t == :forwarded_port && o[:id] == 'winrm'}
80
+
81
+ expect(winrm_port.last[:host]).to eq 666
82
+ end
83
+
84
+ it 'configures Vagrant synced folders' do
85
+ expect(subject.synced_folders['/vagrant'][:disabled]).to be_true
86
+ end
87
+
88
+ it 'configures Vagrant private networks' do
89
+ private_networks = subject.networks.select {|t, o| t == :private_network}
90
+
91
+ expect(private_networks).to_not be_empty
92
+ end
93
+
94
+ it 'configures Vagrant public networks' do
95
+ private_networks = subject.networks.select {|t, o| t == :public_network}
96
+
97
+ expect(private_networks).to_not be_empty
98
+ end
99
+ end
100
+
101
+ end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ class DummyModel < ConfigBuilder::Model::Provider::Base
4
+ def instance_id
5
+ 'dummy'
6
+ end
7
+
8
+ ConfigBuilder::Model::Provider.register('dummy', self)
9
+ end
10
+
11
+ describe 'Vagrant Integration: ConfigBuilder::Model::Provider' do
12
+ include_context 'vagrant-unit'
13
+
14
+ # Set inside test contexts to generate Vagrant configuration.
15
+ let(:config_data) { Hash.new }
16
+
17
+ let(:test_env) { isolated_environment }
18
+ let(:env) {
19
+ test_env.create_vagrant_env(local_data_path: "#{test_env.workdir}/.vagrant")
20
+ }
21
+ let(:root_config) { env.vagrantfile.config }
22
+
23
+ before(:each) do
24
+ model = ConfigBuilder::Model::Root.new_from_hash(config_data)
25
+
26
+ model.call(root_config)
27
+ end
28
+
29
+ context 'when configuring providers' do
30
+ let(:config_data) {
31
+ {'vms' =>
32
+ [
33
+ {
34
+ 'name' => 'test',
35
+ 'providers' => [
36
+ {
37
+ 'type' => 'dummy',
38
+ 'overrides' => {
39
+ 'ssh' => {'username' => 'AzureDiamond'},
40
+ 'vm_defaults' => {'box' => 'testbox'},
41
+ },
42
+ },
43
+ ],
44
+ },
45
+ ]
46
+ }
47
+ }
48
+
49
+ subject { env.machine(:test, :dummy) }
50
+
51
+ it 'sets configuration overrides' do #YAAARP.
52
+ expect(subject.config.ssh.username).to eq 'AzureDiamond'
53
+ expect(subject.config.vm.box).to eq 'testbox'
54
+ end
55
+ end
56
+
57
+ end
@@ -0,0 +1,90 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Vagrant Integration: ConfigBuilder::Model::Provisioner' do
4
+ include_context 'vagrant-unit'
5
+
6
+ # Set inside test contexts to generate Vagrant configuration.
7
+ let(:config_data) { Hash.new }
8
+
9
+ let(:test_env) { isolated_environment }
10
+ let(:env) {
11
+ test_env.create_vagrant_env(local_data_path: "#{test_env.workdir}/.vagrant")
12
+ }
13
+ let(:root_config) { env.vagrantfile.config }
14
+
15
+ before(:each) do
16
+ model = ConfigBuilder::Model::Root.new_from_hash(config_data)
17
+
18
+ model.call(root_config)
19
+ end
20
+
21
+ context 'when building provisioners' do
22
+ let(:config_data) {
23
+ {'vms' =>
24
+ [
25
+ {
26
+ 'name' => 'test',
27
+ 'provisioners' => [
28
+ {'type' => 'shell', 'run' => 'once'},
29
+ {'type' => 'file', 'name' => 'supercoolfile'},
30
+ ],
31
+ },
32
+ ]
33
+ }
34
+ }
35
+
36
+ subject { env.machine(:test, :dummy).config.vm }
37
+
38
+ it 'defines provisioners' do
39
+ expect(subject.provisioners).to have(2).items
40
+ end
41
+
42
+ it 'sets provisioner names' do
43
+ if Vagrant::VERSION < '1.7'
44
+ provisioner = subject.provisioners.find {|p| p.name == :file}
45
+
46
+ expect(provisioner.id).to eq 'supercoolfile'
47
+ else
48
+ provisioner = subject.provisioners.find {|p| p.type == :file}
49
+
50
+ expect(provisioner.name).to eq :supercoolfile
51
+ end
52
+ end
53
+
54
+ it 'sets provisioner options' do
55
+ if Vagrant::VERSION < '1.7'
56
+ provisioner = subject.provisioners.find {|p| p.name == :shell}
57
+
58
+ expect(provisioner.run).to eq :once
59
+ else
60
+ provisioner = subject.provisioners.find {|p| p.type == :shell}
61
+
62
+ expect(provisioner.run).to eq :once
63
+ end
64
+ end
65
+ end
66
+
67
+ context 'when configuring provisioners' do
68
+ let(:config_data) {
69
+ {'vms' =>
70
+ [
71
+ {
72
+ 'name' => 'test',
73
+ 'provisioners' => [
74
+ {'type' => 'shell', 'inline' => 'hello world'},
75
+ ],
76
+ },
77
+ ]
78
+ }
79
+ }
80
+
81
+ subject { env.machine(:test, :dummy).config.vm }
82
+
83
+ it 'sets provisioner attributes' do
84
+ shell_config = subject.provisioners.first.config
85
+
86
+ expect(shell_config.inline).to eq 'hello world'
87
+ end
88
+ end
89
+
90
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,8 @@
1
1
  $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
2
- require 'config_builder'
3
2
 
4
- require 'rspec'
3
+ # Disable Vagrant autoloading so that other plugins defined in the Gemfile for
4
+ # Acceptance tests are not loaded.
5
+ ENV['VAGRANT_NO_PLUGINS'] = '1'
6
+
7
+ require 'vagrant-spec/unit'
8
+ require 'config_builder'
File without changes
File without changes
File without changes
@@ -0,0 +1,122 @@
1
+ require 'spec_helper'
2
+
3
+ describe ConfigBuilder::Model::Base do
4
+ context 'when initialized with attributes' do
5
+ subject do
6
+ described_class.new_from_hash({'attr_1' => 'val_1', 'attr_2' => 'val_2'})
7
+ end
8
+
9
+ it 'provides access via #attr' do
10
+ expect(subject.attr(:attr_1)).to eq 'val_1'
11
+ end
12
+
13
+ it 'provides conditional access via #with_attr' do
14
+ test_val_2 = nil
15
+ test_val_3 = nil
16
+
17
+ subject.with_attr(:attr_2) { |value| test_val_2 = value }
18
+ subject.with_attr(:non_existent) { |value| test_val_3 = value }
19
+
20
+ expect(test_val_2).to eq 'val_2'
21
+ expect(test_val_3).to be_nil
22
+ end
23
+ end
24
+
25
+ context 'when subclassed' do
26
+ let (:subclass_a) do
27
+ Class.new(described_class) do
28
+ def_model_id :id_key
29
+
30
+ def_model_attribute :attr_1
31
+ def_model_attribute :attr_2
32
+
33
+ def_model_option :opt_1
34
+ def_model_option :opt_2
35
+
36
+ def_model_delegator :delegator_1
37
+
38
+ def configure_attr_2(config, value)
39
+ config.custom_setter(value)
40
+ end
41
+ end
42
+ end
43
+
44
+ subject { subclass_a }
45
+
46
+ it 'responds to .model_id' do
47
+ expect(subject.model_id).to eq :id_key
48
+ end
49
+
50
+ it 'lists attributes via .model_attributes' do
51
+ expect(subject.model_attributes).to include(:attr_1, :attr_2)
52
+ end
53
+
54
+ it 'lists options via .model_options' do
55
+ expect(subject.model_options).to include(:opt_1, :opt_2)
56
+ end
57
+
58
+ it 'lists delegators via .model_delegators' do
59
+ expect(subject.model_delegators).to include(:delegator_1)
60
+ end
61
+
62
+ it 'returns #instance_id by using .model_id' do
63
+ instance = subject.new_from_hash({'id_key' => 'id_value'})
64
+
65
+ expect(instance.instance_id).to eq 'id_value'
66
+ end
67
+
68
+ it 'returns all set options via #instance_options' do
69
+ instance = subject.new_from_hash({'opt_1' => 'option_value'})
70
+
71
+ expect(instance.instance_options).to eq({:opt_1 => 'option_value'})
72
+ end
73
+
74
+ it 'copies attributes to config objects with #configure!' do
75
+ config = double('vagrant config')
76
+ instance = subject.new_from_hash({'attr_1' => 'attr_value'})
77
+
78
+ expect(config).to receive("attr_1=").with('attr_value')
79
+
80
+ instance.configure!(config)
81
+ end
82
+
83
+ it 'uses custom setters to copy attributes with #configure!' do
84
+ config = double('vagrant config')
85
+ instance = subject.new_from_hash({'attr_2' => 'custom_value'})
86
+
87
+ expect(config).to receive("custom_setter").with('custom_value')
88
+
89
+ instance.configure!(config)
90
+ end
91
+
92
+ context 'when subclassed further' do
93
+ let (:subclass_b) do
94
+ Class.new(subclass_a) do
95
+ def_model_attribute :attr_3
96
+
97
+ def_model_delegator :delegator_2
98
+
99
+ def_model_option :opt_3
100
+ end
101
+ end
102
+
103
+ subject { subclass_b }
104
+
105
+ it 'lists inherited attributes via .model_attributes' do
106
+ expect(subject.model_attributes).to include(:attr_1, :attr_2, :attr_3)
107
+ end
108
+
109
+ it 'lists inherited options via .model_options' do
110
+ expect(subject.model_options).to include(:opt_1, :opt_2, :opt_3)
111
+ end
112
+
113
+ it 'lists inherited delegators via .model_delegators' do
114
+ expect(subject.model_delegators).to include(:delegator_1, :delegator_2)
115
+ end
116
+
117
+ it 'does not inherit model_id' do
118
+ expect(subject.model_id).to be_nil
119
+ end
120
+ end
121
+ end
122
+ end
@@ -5,23 +5,24 @@ describe ConfigBuilder::Model::Provider::VMwareFusion do
5
5
  describe "converting to a proc" do
6
6
 
7
7
  let(:vmx) { Hash.new }
8
- let(:fusion_config) { double('fusion provider config', :vmx => vmx) }
9
- let(:vm_config) { double('vagrant VM config', :provider => fusion_config) }
8
+ let(:vm_config) { double('vagrant VM config', :provider => provider_config) }
9
+ let(:provider_config) { double('fusion provider config', :vmx => vmx) }
10
+ let(:override_config) { double('fusion override config') }
10
11
 
11
12
  before do
12
- allow(vm_config).to receive(:provider).and_yield(fusion_config)
13
+ allow(vm_config).to receive(:provider).and_yield(provider_config, override_config)
13
14
  end
14
15
 
15
16
  it "assigns the gui value to the fusion provider object" do
16
17
  subject.attrs = {:gui => 'guivalue'}
17
- expect(fusion_config).to receive(:gui=).with('guivalue')
18
+ expect(provider_config).to receive(:gui=).with('guivalue')
18
19
  p = subject.to_proc
19
20
  p.call(vm_config)
20
21
  end
21
22
 
22
23
  it "assigns the vmx value to the fusion provider object" do
23
24
  subject.attrs = {:vmx => {:hello => 'world'}}
24
- allow(fusion_config).to receive(:gui=)
25
+ allow(provider_config).to receive(:gui=)
25
26
  subject.call(vm_config)
26
27
  expect(vmx).to eq({:hello => 'world'})
27
28
  end
@@ -13,3 +13,7 @@ en:
13
13
  vm:
14
14
  provider_is_deprecated: |-
15
15
  The provider attribute, set on vm %{name}, is deprecated and will be removed in an upcoming release. Use the providers attribute instead.
16
+ model_delegator:
17
+ is_deprecated: |-
18
+ The functionality provided by ConfigBuilder::ModelDelegator has been folded into Config::Builder::Model::Base.
19
+ The ModelDelegator module will be removed in an upcoming release (included by %{name}).