nova_network_spec.rb 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. require 'spec_helper'
  2. describe 'nova::network' do
  3. let :pre_condition do
  4. 'include nova'
  5. end
  6. let :default_params do
  7. {
  8. :private_interface => 'eth1',
  9. :fixed_range => '10.0.0.0/32',
  10. }
  11. end
  12. let :params do
  13. default_params
  14. end
  15. describe 'on debian platforms' do
  16. let :facts do
  17. @default_facts.merge({ :osfamily => 'Debian' })
  18. end
  19. it { is_expected.to contain_sysctl__value('net.ipv4.ip_forward').with_value('1') }
  20. describe 'when installing service' do
  21. it { is_expected.to contain_package('nova-network').with(
  22. 'name' => 'nova-network',
  23. 'ensure' => 'present',
  24. 'notify' => ['Anchor[nova::install::end]'],
  25. ) }
  26. describe 'with enabled as true' do
  27. it { is_expected.to contain_service('nova-network').with(
  28. 'name' => 'nova-network',
  29. 'ensure' => 'running',
  30. 'hasstatus' => true,
  31. 'enable' => true
  32. )}
  33. end
  34. describe 'when enabled is set to false' do
  35. let :params do
  36. default_params.merge(:enabled => false)
  37. end
  38. it { is_expected.to contain_service('nova-network').with(
  39. 'name' => 'nova-network',
  40. 'ensure' => 'stopped',
  41. 'hasstatus' => true,
  42. 'enable' => false
  43. )}
  44. end
  45. end
  46. describe 'when not installing service' do
  47. let :params do
  48. default_params.merge(:install_service => false)
  49. end
  50. it { is_expected.to_not contain_package('nova-network') }
  51. it { is_expected.to_not contain_service('nova-network') }
  52. end
  53. describe 'when not creating networks' do
  54. let :params do
  55. default_params.merge(:create_networks => false)
  56. end
  57. it { is_expected.to_not contain_nova__manage__network('nova-vm-net') }
  58. it { is_expected.to_not contain_nova__manage__floating('nova-vm-floating') }
  59. end
  60. describe 'when creating networks' do
  61. it { is_expected.to contain_nova__manage__network('nova-vm-net').with(
  62. :network => '10.0.0.0/32',
  63. :num_networks => '1'
  64. ) }
  65. it { is_expected.to_not contain__nova__manage__floating('nova-vm-floating') }
  66. describe 'when number of networks is set' do
  67. let :params do
  68. default_params.merge(:num_networks => '2')
  69. end
  70. it { is_expected.to contain_nova__manage__network('nova-vm-net').with(
  71. :num_networks => '2'
  72. ) }
  73. end
  74. describe 'when floating range is set' do
  75. let :params do
  76. default_params.merge(:floating_range => '10.0.0.0/30')
  77. end
  78. it { is_expected.to contain_nova_config('DEFAULT/floating_range').with_value('10.0.0.0/30') }
  79. it { is_expected.to contain_nova_config('DEFAULT/auto_assign_floating_ip').with_value('false') }
  80. it { is_expected.to contain_nova_config('DEFAULT/multi_host').with_value('false') }
  81. it { is_expected.to contain_nova__manage__floating('nova-vm-floating').with_network('10.0.0.0/30') }
  82. end
  83. end
  84. describe 'when creating networks, but service nova-network is disabled' do
  85. let :params do
  86. default_params.merge(:enabled => false)
  87. end
  88. it { is_expected.to_not contain_nova__manage__network('nova-vm-net') }
  89. it { is_expected.to_not contain_nova__manage__floating('nova-vm-floating') }
  90. end
  91. describe 'when configuring networks' do
  92. describe 'when configuring flatdhcpmanager' do
  93. let :params do
  94. default_params.merge(:network_manager => 'nova.network.manager.FlatDHCPManager')
  95. end
  96. it { is_expected.to contain_class('nova::network::flatdhcp').with(
  97. :fixed_range => '10.0.0.0/32',
  98. :public_interface => nil,
  99. :flat_interface => 'eth1',
  100. :flat_network_bridge => 'br100',
  101. :force_dhcp_release => true,
  102. :flat_injected => false,
  103. :dhcp_domain => 'novalocal',
  104. :dhcpbridge => '/usr/bin/nova-dhcpbridge',
  105. :dhcpbridge_flagfile => '/etc/nova/nova.conf'
  106. ) }
  107. describe 'when overriding parameters' do
  108. let :params do
  109. default_params.merge(
  110. {
  111. :network_manager => 'nova.network.manager.FlatDHCPManager',
  112. :public_interface => 'eth0',
  113. :config_overrides =>
  114. {
  115. 'flat_network_bridge' => 'br400',
  116. 'force_dhcp_release' => false,
  117. 'flat_injected' => true,
  118. 'dhcp_domain' => 'not-novalocal',
  119. 'dhcpbridge' => '/tmp/bridge',
  120. 'dhcpbridge_flagfile' => '/tmp/file',
  121. }
  122. }
  123. )
  124. end
  125. it { is_expected.to contain_class('nova::network::flatdhcp').with(
  126. :fixed_range => '10.0.0.0/32',
  127. :public_interface => 'eth0',
  128. :flat_interface => 'eth1',
  129. :flat_network_bridge => 'br400',
  130. #:force_dhcp_release => false,
  131. :flat_injected => true,
  132. :dhcp_domain => 'not-novalocal',
  133. :dhcpbridge => '/tmp/bridge',
  134. :dhcpbridge_flagfile => '/tmp/file'
  135. ) }
  136. end
  137. end
  138. describe 'when configuring flatmanager' do
  139. let :params do
  140. default_params.merge(:network_manager => 'nova.network.manager.FlatManager')
  141. end
  142. it { is_expected.to contain_class('nova::network::flat').with(
  143. :fixed_range => '10.0.0.0/32',
  144. :public_interface => nil,
  145. :flat_interface => 'eth1',
  146. :flat_network_bridge => 'br100'
  147. ) }
  148. describe 'when overriding flat network params' do
  149. let :params do
  150. default_params.merge(
  151. {
  152. :network_manager => 'nova.network.manager.FlatManager',
  153. :public_interface => 'eth0',
  154. :config_overrides => {'flat_network_bridge' => 'br400' }
  155. }
  156. )
  157. end
  158. it { is_expected.to contain_class('nova::network::flat').with(
  159. :public_interface => 'eth0',
  160. :flat_network_bridge => 'br400'
  161. ) }
  162. end
  163. end
  164. describe 'when configuring vlan' do
  165. let :params do
  166. default_params.merge(:network_manager => 'nova.network.manager.VlanManager')
  167. end
  168. it { is_expected.to contain_class('nova::network::vlan').with(
  169. :fixed_range => '10.0.0.0/32',
  170. :public_interface => nil,
  171. :vlan_interface => 'eth1',
  172. :force_dhcp_release => true,
  173. :dhcp_domain => 'novalocal',
  174. :dhcpbridge => '/usr/bin/nova-dhcpbridge',
  175. :dhcpbridge_flagfile => '/etc/nova/nova.conf'
  176. ) }
  177. describe 'when overriding parameters' do
  178. let :params do
  179. default_params.merge(
  180. {
  181. }
  182. )
  183. end
  184. end
  185. end
  186. end
  187. describe 'with package version' do
  188. let :params do
  189. default_params.merge(:ensure_package => '2012.1-2')
  190. end
  191. it { is_expected.to contain_package('nova-network').with(
  192. 'ensure' => '2012.1-2'
  193. )}
  194. end
  195. describe 'when creating network with nameservers' do
  196. let :params do
  197. default_params.merge(
  198. {
  199. :create_networks => true,
  200. :dns1 => '8.8.8.8',
  201. :dns2 => '8.8.4.4'
  202. }
  203. )
  204. end
  205. it { is_expected.to contain_class('nova::network').with(
  206. :dns1 => '8.8.8.8',
  207. :dns2 => '8.8.4.4'
  208. ) }
  209. it { is_expected.to contain_nova__manage__network('nova-vm-net').with(
  210. :dns1 => '8.8.8.8',
  211. :dns2 => '8.8.4.4'
  212. ) }
  213. end
  214. end
  215. describe 'on rhel' do
  216. let :facts do
  217. @default_facts.merge({ :osfamily => 'RedHat' })
  218. end
  219. it { is_expected.to contain_service('nova-network').with(
  220. 'name' => 'openstack-nova-network',
  221. 'ensure' => 'running',
  222. 'hasstatus' => true,
  223. 'enable' => true
  224. )}
  225. it { is_expected.to contain_package('nova-network').with_name('openstack-nova-network') }
  226. end
  227. end