try again, with puppetforge modules, correctly included now
[mirror/dsa-puppet.git] / 3rdparty / modules / nova / spec / classes / nova_compute_libvirt_spec.rb
1 require 'spec_helper'
2 describe 'nova::compute::libvirt' do
3
4   let :pre_condition do
5     "include nova\ninclude nova::compute"
6   end
7
8   describe 'on debian platforms' do
9     let :facts do
10       { :osfamily => 'Debian' }
11     end
12
13     describe 'with default parameters' do
14
15       it { should contain_class('nova::params')}
16
17       it { should contain_package('nova-compute-kvm').with(
18         :ensure => 'present',
19         :before => 'Package[nova-compute]',
20         :tag    => ['openstack', 'nova']
21       ) }
22
23       it { should contain_package('libvirt').with(
24         :name   => 'libvirt-bin',
25         :ensure => 'present'
26       ) }
27
28       it { should contain_service('libvirt').with(
29         :name     => 'libvirt-bin',
30         :enable   => true,
31         :ensure   => 'running',
32         :provider => 'upstart',
33         :require  => 'Package[libvirt]',
34         :before   => 'Service[nova-compute]'
35       )}
36
37       it { should contain_nova_config('DEFAULT/compute_driver').with_value('libvirt.LibvirtDriver')}
38       it { should contain_nova_config('libvirt/virt_type').with_value('kvm')}
39       it { should contain_nova_config('libvirt/cpu_mode').with_value('host-model')}
40       it { should contain_nova_config('libvirt/disk_cachemodes').with_ensure('absent')}
41       it { should contain_nova_config('libvirt/inject_password').with_value(false)}
42       it { should contain_nova_config('libvirt/inject_key').with_value(false)}
43       it { should contain_nova_config('libvirt/inject_partition').with_value(-2)}
44       it { should contain_nova_config('DEFAULT/vncserver_listen').with_value('127.0.0.1')}
45       it { should contain_nova_config('DEFAULT/remove_unused_base_images').with_ensure('absent')}
46       it { should contain_nova_config('DEFAULT/remove_unused_original_minimum_age_seconds').with_ensure('absent')}
47       it { should contain_nova_config('libvirt/remove_unused_kernels').with_ensure('absent')}
48       it { should contain_nova_config('libvirt/remove_unused_resized_minimum_age_seconds').with_ensure('absent')}
49     end
50
51     describe 'with params' do
52       let :params do
53         { :libvirt_virt_type                          => 'qemu',
54           :vncserver_listen                           => '0.0.0.0',
55           :libvirt_cpu_mode                           => 'host-passthrough',
56           :libvirt_disk_cachemodes                    => ['file=directsync','block=none'],
57           :remove_unused_base_images                  => true,
58           :remove_unused_kernels                      => true,
59           :remove_unused_resized_minimum_age_seconds  => 3600,
60           :remove_unused_original_minimum_age_seconds => 3600,
61           :libvirt_service_name                       => 'custom_service'
62         }
63       end
64
65       it { should contain_nova_config('libvirt/virt_type').with_value('qemu')}
66       it { should contain_nova_config('libvirt/cpu_mode').with_value('host-passthrough')}
67       it { should contain_nova_config('libvirt/disk_cachemodes').with_value('file=directsync,block=none')}
68       it { should contain_nova_config('DEFAULT/vncserver_listen').with_value('0.0.0.0')}
69       it { should contain_nova_config('DEFAULT/remove_unused_base_images').with_value(true)}
70       it { should contain_nova_config('DEFAULT/remove_unused_original_minimum_age_seconds').with_value(3600)}
71       it { should contain_nova_config('libvirt/remove_unused_kernels').with_value(true)}
72       it { should contain_nova_config('libvirt/remove_unused_resized_minimum_age_seconds').with_value(3600)}
73       it { should contain_service('libvirt').with(
74         :name     => 'custom_service',
75         :enable   => true,
76         :ensure   => 'running',
77         :require  => 'Package[libvirt]',
78         :before   => 'Service[nova-compute]'
79       )}
80     end
81
82     describe 'with deprecated params' do
83       let :params do
84         { :libvirt_type => 'qemu'
85         }
86       end
87
88       it { should contain_nova_config('libvirt/virt_type').with_value('qemu')}
89     end
90
91     describe 'with migration_support enabled' do
92
93       context 'with vncserver_listen set to 0.0.0.0' do
94         let :params do
95           { :vncserver_listen  => '0.0.0.0',
96             :migration_support => true }
97         end
98
99         it { should contain_class('nova::migration::libvirt')}
100         it { should contain_nova_config('DEFAULT/vncserver_listen').with_value('0.0.0.0')}
101         it { should contain_file_line('/etc/default/libvirt-bin libvirtd opts').with(:line => 'libvirtd_opts="-d -l"') }
102       end
103
104       context 'with vncserver_listen set to ::0' do
105         let :params do
106           { :vncserver_listen  => '::0',
107             :migration_support => true }
108         end
109
110         it { should contain_class('nova::migration::libvirt')}
111         it { should contain_nova_config('DEFAULT/vncserver_listen').with_value('::0')}
112         it { should contain_file_line('/etc/default/libvirt-bin libvirtd opts').with(:line => 'libvirtd_opts="-d -l"') }
113       end
114
115       context 'with vncserver_listen not set to 0.0.0.0' do
116         let :params do
117           { :vncserver_listen  => '127.0.0.1',
118             :migration_support => true }
119         end
120
121         it { expect { should contain_class('nova::compute::libvirt') }.to \
122           raise_error(Puppet::Error, /For migration support to work, you MUST set vncserver_listen to '0.0.0.0' or '::0'/) }
123       end
124
125       context 'with custom libvirt service name on Debian plateforms' do
126         let :params do
127           { :libvirt_service_name  => 'libvirtd',
128             :vncserver_listen      => '0.0.0.0',
129             :migration_support     => true }
130         end
131         it { should contain_file_line('/etc/default/libvirtd libvirtd opts').with(:line => 'libvirtd_opts="-d -l"') }
132
133       end
134     end
135   end
136
137
138   describe 'on rhel platforms' do
139     let :facts do
140       { :operatingsystem => 'RedHat', :osfamily => 'RedHat',
141         :operatingsystemrelease => 6.5 }
142     end
143
144     describe 'with default parameters' do
145
146       it { should contain_class('nova::params')}
147
148       it { should contain_package('libvirt').with(
149         :name   => 'libvirt',
150         :ensure => 'present'
151       ) }
152
153       it { should contain_service('libvirt').with(
154         :name     => 'libvirtd',
155         :enable   => true,
156         :ensure   => 'running',
157         :provider => nil,
158         :require  => 'Package[libvirt]',
159         :before   => 'Service[nova-compute]'
160       )}
161       it { should contain_service('messagebus').with(
162         :ensure   => 'running',
163         :enable   => true,
164         :before   => 'Service[libvirt]',
165         :provider => nil
166       ) }
167
168       describe 'on rhel 7' do
169         let :facts do
170           super().merge(:operatingsystemrelease => 7.0)
171         end
172
173         it { should contain_service('libvirt').with(
174           :provider => nil
175         )}
176
177         it { should contain_service('messagebus').with(
178           :provider => nil
179         )}
180       end
181
182       it { should contain_nova_config('DEFAULT/compute_driver').with_value('libvirt.LibvirtDriver')}
183       it { should contain_nova_config('libvirt/virt_type').with_value('kvm')}
184       it { should contain_nova_config('libvirt/inject_password').with_value(false)}
185       it { should contain_nova_config('libvirt/inject_key').with_value(false)}
186       it { should contain_nova_config('libvirt/inject_partition').with_value(-2)}
187       it { should contain_nova_config('DEFAULT/vncserver_listen').with_value('127.0.0.1')}
188       it { should contain_nova_config('DEFAULT/remove_unused_base_images').with_ensure('absent')}
189       it { should contain_nova_config('DEFAULT/remove_unused_original_minimum_age_seconds').with_ensure('absent')}
190       it { should contain_nova_config('libvirt/remove_unused_kernels').with_ensure('absent')}
191       it { should contain_nova_config('libvirt/remove_unused_resized_minimum_age_seconds').with_ensure('absent')}
192     end
193
194     describe 'with params' do
195       let :params do
196         { :libvirt_virt_type                          => 'qemu',
197           :vncserver_listen                           => '0.0.0.0',
198           :remove_unused_base_images                  => true,
199           :remove_unused_kernels                      => true,
200           :remove_unused_resized_minimum_age_seconds  => 3600,
201           :remove_unused_original_minimum_age_seconds => 3600
202         }
203       end
204
205       it { should contain_nova_config('libvirt/virt_type').with_value('qemu')}
206       it { should contain_nova_config('DEFAULT/vncserver_listen').with_value('0.0.0.0')}
207       it { should contain_nova_config('DEFAULT/remove_unused_base_images').with_value(true)}
208       it { should contain_nova_config('DEFAULT/remove_unused_original_minimum_age_seconds').with_value(3600)}
209       it { should contain_nova_config('libvirt/remove_unused_kernels').with_value(true)}
210       it { should contain_nova_config('libvirt/remove_unused_resized_minimum_age_seconds').with_value(3600)}
211     end
212
213     describe 'with deprecated params' do
214       let :params do
215         { :libvirt_type => 'qemu'
216         }
217       end
218
219       it { should contain_nova_config('libvirt/virt_type').with_value('qemu')}
220     end
221
222     describe 'with migration_support enabled' do
223
224       context 'with vncserver_listen set to 0.0.0.0' do
225         let :params do
226           { :vncserver_listen  => '0.0.0.0',
227             :migration_support => true }
228         end
229
230         it { should contain_class('nova::migration::libvirt')}
231         it { should contain_nova_config('DEFAULT/vncserver_listen').with_value('0.0.0.0')}
232       end
233
234       context 'with vncserver_listen not set to 0.0.0.0' do
235         let :params do
236           { :vncserver_listen  => '127.0.0.1',
237             :migration_support => true }
238         end
239
240         it { expect { should contain_class('nova::compute::libvirt') }.to \
241           raise_error(Puppet::Error, /For migration support to work, you MUST set vncserver_listen to '0.0.0.0'/) }
242       end
243     end
244
245     describe 'with default parameters on Fedora' do
246       let :facts do
247         { :operatingsystem => 'Fedora', :osfamily => 'RedHat' }
248       end
249
250       it { should contain_class('nova::params')}
251
252       it { should contain_package('libvirt').with(
253         :name   => 'libvirt',
254         :ensure => 'present'
255       ) }
256
257       it { should contain_service('libvirt').with(
258         :name     => 'libvirtd',
259         :enable   => true,
260         :ensure   => 'running',
261         :provider => nil,
262         :require  => 'Package[libvirt]',
263         :before   => 'Service[nova-compute]'
264       )}
265
266       it { should contain_nova_config('DEFAULT/compute_driver').with_value('libvirt.LibvirtDriver')}
267       it { should contain_nova_config('libvirt/virt_type').with_value('kvm')}
268       it { should contain_nova_config('DEFAULT/vncserver_listen').with_value('127.0.0.1')}
269     end
270
271   end
272 end