nova_keystone_auth_spec.rb 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. require 'spec_helper'
  2. describe 'nova::keystone::auth' do
  3. let :params do
  4. {:password => 'nova_password'}
  5. end
  6. let :default_params do
  7. { :auth_name => 'nova',
  8. :service_name => 'nova',
  9. :region => 'RegionOne',
  10. :tenant => 'services',
  11. :email => 'nova@localhost',
  12. :public_url => 'http://127.0.0.1:8774/v2.1',
  13. :internal_url => 'http://127.0.0.1:8774/v2.1',
  14. :admin_url => 'http://127.0.0.1:8774/v2.1' }
  15. end
  16. context 'with default parameters' do
  17. it { is_expected.to contain_keystone_user('nova').with(
  18. :ensure => 'present',
  19. :password => 'nova_password'
  20. ) }
  21. it { is_expected.to contain_keystone_user_role('nova@services').with(
  22. :ensure => 'present',
  23. :roles => ['admin']
  24. )}
  25. it { is_expected.to contain_keystone_service('nova::compute').with(
  26. :ensure => 'present',
  27. :description => 'Openstack Compute Service'
  28. )}
  29. it { is_expected.to contain_keystone_endpoint('RegionOne/nova::compute').with(
  30. :ensure => 'present',
  31. :public_url => 'http://127.0.0.1:8774/v2.1',
  32. :admin_url => 'http://127.0.0.1:8774/v2.1',
  33. :internal_url => 'http://127.0.0.1:8774/v2.1'
  34. )}
  35. end
  36. context 'when setting auth name' do
  37. before do
  38. params.merge!( :auth_name => 'foo' )
  39. end
  40. it { is_expected.to contain_keystone_user('foo').with(
  41. :ensure => 'present',
  42. :password => 'nova_password'
  43. ) }
  44. it { is_expected.to contain_keystone_user_role('foo@services').with(
  45. :ensure => 'present',
  46. :roles => ['admin']
  47. )}
  48. it { is_expected.to contain_keystone_service('nova::compute').with(
  49. :ensure => 'present',
  50. :description => 'Openstack Compute Service'
  51. )}
  52. end
  53. context 'when overriding endpoint parameters' do
  54. before do
  55. params.merge!(
  56. :region => 'RegionTwo',
  57. :public_url => 'https://10.0.0.1:9774/v2.2',
  58. :internal_url => 'https://10.0.0.3:9774/v2.2',
  59. :admin_url => 'https://10.0.0.2:9774/v2.2',
  60. )
  61. end
  62. it { is_expected.to contain_keystone_endpoint('RegionTwo/nova::compute').with(
  63. :ensure => 'present',
  64. :public_url => params[:public_url],
  65. :internal_url => params[:internal_url],
  66. :admin_url => params[:admin_url]
  67. )}
  68. end
  69. describe 'when disabling endpoint configuration' do
  70. before do
  71. params.merge!( :configure_endpoint => false )
  72. end
  73. it { is_expected.to_not contain_keystone_endpoint('RegionOne/nova::compute') }
  74. end
  75. describe 'when disabling user configuration' do
  76. before do
  77. params.merge!( :configure_user => false )
  78. end
  79. it { is_expected.to_not contain_keystone_user('nova') }
  80. it { is_expected.to contain_keystone_user_role('nova@services') }
  81. it { is_expected.to contain_keystone_service('nova::compute').with(
  82. :ensure => 'present',
  83. :description => 'Openstack Compute Service'
  84. )}
  85. end
  86. describe 'when disabling user and user role configuration' do
  87. let :params do
  88. {
  89. :configure_user => false,
  90. :configure_user_role => false,
  91. :password => 'nova_password'
  92. }
  93. end
  94. it { is_expected.to_not contain_keystone_user('nova') }
  95. it { is_expected.to_not contain_keystone_user_role('nova@services') }
  96. it { is_expected.to contain_keystone_service('nova::compute').with(
  97. :ensure => 'present',
  98. :description => 'Openstack Compute Service'
  99. )}
  100. end
  101. describe 'when configuring nova-api and the keystone endpoint' do
  102. let :pre_condition do
  103. "class { '::nova::keystone::authtoken':
  104. password => 'secrete',
  105. }
  106. class { 'nova::api':}
  107. include nova"
  108. end
  109. let :facts do
  110. @default_facts.merge({ :osfamily => "Debian"})
  111. end
  112. let :params do
  113. {
  114. :password => 'test'
  115. }
  116. end
  117. it { is_expected.to contain_keystone_endpoint('RegionOne/nova::compute').with_notify(['Service[nova-api]']) }
  118. end
  119. describe 'when overriding service names' do
  120. let :params do
  121. {
  122. :service_name => 'nova_service',
  123. :password => 'nova_password'
  124. }
  125. end
  126. it { is_expected.to contain_keystone_user('nova') }
  127. it { is_expected.to contain_keystone_user_role('nova@services') }
  128. it { is_expected.to contain_keystone_service('nova_service::compute') }
  129. it { is_expected.to contain_keystone_endpoint('RegionOne/nova_service::compute') }
  130. end
  131. end