diff --git a/.fixtures.yml b/.fixtures.yml index 61d5fa9a..e0ad2614 100644 --- a/.fixtures.yml +++ b/.fixtures.yml @@ -2,16 +2,16 @@ fixtures: repositories: 'cinder': repo: 'git://github.com/enovance/puppet-cinder' - ref: 'bd1536626f2b5d66f9ea77bcd69ba7d1f5f33961' + ref: '504a061918ac08297f6a9b9f64f1836643573447' 'keystone': repo: 'git://github.com/enovance/puppet-keystone.git' - ref: 'ce49f6b6d9bb0e89e3e1e63a88a1d63d5a930851' + ref: 'd9aac2f78240e0fd651a6dc0ac05db4ffcba885b' 'nova': repo: 'git://github.com/enovance/puppet-nova.git' - ref: 'b7811392062b649572f470f5f3ddca1882997210' + ref: '47d576d2e62b4c449309ef228cdbc17bcf3fdcf0' 'glance': repo: 'git://github.com/enovance/puppet-glance.git' - ref: '001f1b6a8ef6bd0fde8fbe0a4b3362f31e6bbcda' + ref: 'e61e47d664e4d18e849bc7c3d5f40f452397d0f4' 'horizon': repo: 'git://github.com/enovance/puppet-horizon' ref: 'da0cedce6f14f5c35e733ac345d8d862db11cd2b' @@ -20,13 +20,13 @@ fixtures: ref: '9b60581a1c8fd2c1a98adafc1bcdc53796859e23' 'neutron': repo: 'git://github.com/enovance/puppet-neutron' - ref: '39b7efdbc83c65966b7a961df98561c5550c2d23' + ref: '78428c844f73bf585a8f8a3bdf615ba2a0e8983b' 'ceilometer': repo: 'git://github.com/enovance/puppet-ceilometer' - ref: 'f71f935a3e41dcd11f8f5986a1fe0708b124e589' + ref: 'f444fc8937a6bc05d0257c1a935e742491e94b02' 'heat': repo: 'git://github.com/enovance/puppet-heat' - ref: 'bdf094da21161ec6f78530775a0c41fc76fd3339' + ref: '2847d4d42fdc413c0297b7aeedc9f29198e336c2' 'apt': repo: 'git://github.com/enovance/puppetlabs-apt.git' ref: '9b001af8775c7231ea2656b7eb43d6141b536f49' diff --git a/Puppetfile b/Puppetfile index 70f512e0..815fdf9e 100644 --- a/Puppetfile +++ b/Puppetfile @@ -19,28 +19,28 @@ forge 'http://forge.puppetlabs.com' # Core OpenStack projects mod 'ceilometer', :git => 'git://github.com/enovance/puppet-ceilometer.git', - :ref => 'f71f935a3e41dcd11f8f5986a1fe0708b124e589' + :ref => 'f444fc8937a6bc05d0257c1a935e742491e94b02' mod 'cinder', :git => 'git://github.com/enovance/puppet-cinder.git', - :ref => 'bd1536626f2b5d66f9ea77bcd69ba7d1f5f33961' + :ref => '504a061918ac08297f6a9b9f64f1836643573447' mod 'glance', :git => 'git://github.com/enovance/puppet-glance.git', - :ref => '001f1b6a8ef6bd0fde8fbe0a4b3362f31e6bbcda' + :ref => 'e61e47d664e4d18e849bc7c3d5f40f452397d0f4' mod 'heat', :git => 'git://github.com/enovance/puppet-heat.git', - :ref => 'bdf094da21161ec6f78530775a0c41fc76fd3339' + :ref => '2847d4d42fdc413c0297b7aeedc9f29198e336c2' mod 'horizon', :git => 'git://github.com/enovance/puppet-horizon.git', :ref => 'da0cedce6f14f5c35e733ac345d8d862db11cd2b' mod 'keystone', :git => 'git://github.com/enovance/puppet-keystone.git', - :ref => 'ce49f6b6d9bb0e89e3e1e63a88a1d63d5a930851' + :ref => 'd9aac2f78240e0fd651a6dc0ac05db4ffcba885b' mod 'neutron', :git => 'git://github.com/enovance/puppet-neutron.git', - :ref => '39b7efdbc83c65966b7a961df98561c5550c2d23' + :ref => '78428c844f73bf585a8f8a3bdf615ba2a0e8983b' mod 'nova', :git => 'git://github.com/enovance/puppet-nova.git', - :ref => 'b7811392062b649572f470f5f3ddca1882997210' + :ref => '47d576d2e62b4c449309ef228cdbc17bcf3fdcf0' mod 'swift', :git => 'git://github.com/enovance/puppet-swift.git', :ref => '9b60581a1c8fd2c1a98adafc1bcdc53796859e23' diff --git a/manifests/network/controller.pp b/manifests/network/controller.pp index 0c4900cc..5ad76b36 100644 --- a/manifests/network/controller.pp +++ b/manifests/network/controller.pp @@ -25,7 +25,13 @@ class cloud::network::controller( $ks_keystone_public_port = 5000, $ks_neutron_public_port = 9696, $api_eth = '127.0.0.1', - $ks_admin_tenant = 'admin' + $ks_admin_tenant = 'admin', + $nova_url = 'http://127.0.0.1:8774/v2', + $nova_admin_auth_url = 'http://127.0.0.1:35357/v2.0', + $nova_admin_username = 'nova', + $nova_admin_tenant_name = 'services', + $nova_admin_password = 'novapassword', + $nova_region_name = 'RegionOne' ) { include 'cloud::network' @@ -43,6 +49,15 @@ class cloud::network::controller( report_interval => '30', } + class { 'neutron::server::notifications': + nova_url => $nova_url, + nova_admin_auth_url => $nova_admin_auth_url, + nova_admin_username => $nova_admin_username, + nova_admin_tenant_name => $nova_admin_tenant_name, + nova_admin_password => $nova_admin_password, + nova_region_name => $nova_region_name + } + # Note(EmilienM): # We check if DB tables are created, if not we populate Neutron DB. # It's a hack to fit with our setup where we run MySQL/Galera diff --git a/spec/classes/cloud_compute_hypervisor_spec.rb b/spec/classes/cloud_compute_hypervisor_spec.rb index d56a05ad..84801fe8 100644 --- a/spec/classes/cloud_compute_hypervisor_spec.rb +++ b/spec/classes/cloud_compute_hypervisor_spec.rb @@ -70,10 +70,7 @@ describe 'cloud::compute::hypervisor' do { :libvirt_type => 'kvm', :server_proxyclient_address => '7.0.0.1', :spice_port => '6082', - :has_ceph => true, - :cinder_rbd_user => 'cinder', - :nova_rbd_pool => 'nova', - :nova_rbd_secret_uuid => 'secrete', + :has_ceph => false, :nova_ssh_private_key => 'secrete', :nova_ssh_public_key => 'public', :ks_nova_public_proto => 'http', @@ -213,15 +210,6 @@ describe 'cloud::compute::hypervisor' do ) end - it 'configure libvirt driver' do - should contain_class('nova::compute::libvirt').with( - :libvirt_type => 'kvm', - :vncserver_listen => '0.0.0.0', - :migration_support => true, - :libvirt_disk_cachemodes => ['network=writeback'] - ) - end - it 'configure nova compute with neutron' do should contain_class('nova::compute::neutron') end @@ -230,24 +218,23 @@ describe 'cloud::compute::hypervisor' do should contain_class('ceilometer::agent::compute') end - it 'configure nova-compute to support RBD backend' do - should contain_nova_config('DEFAULT/libvirt_images_type').with('value' => 'rbd') - should contain_nova_config('DEFAULT/libvirt_images_rbd_pool').with('value' => 'nova') - should contain_nova_config('DEFAULT/libvirt_images_rbd_ceph_conf').with('value' => '/etc/ceph/ceph.conf') - should contain_nova_config('DEFAULT/rbd_user').with('value' => 'cinder') - should contain_nova_config('DEFAULT/rbd_secret_uuid').with('value' => 'secrete') - should contain_group('cephkeyring').with(:ensure => 'present') - should contain_exec('add-nova-to-group').with( - :command => 'usermod -a -G cephkeyring nova', - :unless => 'groups nova | grep cephkeyring', - :path => ['/usr/sbin', '/usr/bin', '/bin', '/sbin'] - ) + it 'should not configure nova-compute for RBD backend' do + should_not contain_nova_config('libvirt/rbd_user').with('value' => 'cinder') + end + + it 'configure libvirt driver without disk cachemodes' do + should contain_class('nova::compute::libvirt').with( + :libvirt_type => 'kvm', + :vncserver_listen => '0.0.0.0', + :migration_support => true, + :libvirt_disk_cachemodes => [] + ) end it 'configure nova-compute with extra parameters' do should contain_nova_config('DEFAULT/default_availability_zone').with('value' => 'MyZone') - should contain_nova_config('DEFAULT/libvirt_inject_key').with('value' => false) - should contain_nova_config('DEFAULT/libvirt_inject_partition').with('value' => '-2') + should contain_nova_config('libvirt/inject_key').with('value' => false) + should contain_nova_config('libvirt/inject_partition').with('value' => '-2') should contain_nova_config('DEFAULT/live_migration_flag').with('value' => 'VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST') end @@ -267,23 +254,59 @@ describe 'cloud::compute::hypervisor' do end end - context 'without RBD backend' do + context 'with RBD backend on Debian plaforms' do before :each do - params.merge!( :has_ceph => false ) + facts.merge!( :osfamily => 'Debian' ) + params.merge!( + :has_ceph => true, + :cinder_rbd_user => 'cinder', + :nova_rbd_pool => 'nova', + :nova_rbd_secret_uuid => 'secrete' ) end - it 'should not configure nova-compute for RBD backend' do - should_not contain_nova_config('DEFAULT/rbd_user').with('value' => 'cinder') + it 'configure nova-compute to support RBD backend' do + should contain_nova_config('libvirt/images_type').with('value' => 'rbd') + should contain_nova_config('libvirt/images_rbd_pool').with('value' => 'nova') + should contain_nova_config('libvirt/images_rbd_ceph_conf').with('value' => '/etc/ceph/ceph.conf') + should contain_nova_config('libvirt/rbd_user').with('value' => 'cinder') + should contain_nova_config('libvirt/rbd_secret_uuid').with('value' => 'secrete') + should contain_group('cephkeyring').with(:ensure => 'present') + should contain_exec('add-nova-to-group').with( + :command => 'usermod -a -G cephkeyring nova', + :unless => 'groups nova | grep cephkeyring' + ) end - it 'configure libvirt driver without disk cachemodes' do + + it 'configure libvirt driver' do should contain_class('nova::compute::libvirt').with( :libvirt_type => 'kvm', :vncserver_listen => '0.0.0.0', :migration_support => true, - :libvirt_disk_cachemodes => [] + :libvirt_disk_cachemodes => ['network=writeback'] ) end end + + context 'when trying to enable RBD backend on RedHat plaforms' do + before :each do + facts.merge!( :operatingsystem => 'RedHat' ) + params.merge!( + :has_ceph => true, + :cinder_rbd_user => 'cinder', + :nova_rbd_pool => 'nova', + :nova_rbd_secret_uuid => 'secrete' ) + end + + it 'configure libvirt driver without libvirt_disk_cachemodes' do + should contain_class('nova::compute::libvirt').with( + :libvirt_type => 'kvm', + :vncserver_listen => '0.0.0.0', + :migration_support => true, + :libvirt_disk_cachemodes => [] + ) + end + end + end context 'on Debian platforms' do diff --git a/spec/classes/cloud_network_controller_spec.rb b/spec/classes/cloud_network_controller_spec.rb index c87055ad..65dcf62a 100644 --- a/spec/classes/cloud_network_controller_spec.rb +++ b/spec/classes/cloud_network_controller_spec.rb @@ -43,6 +43,12 @@ describe 'cloud::network::controller' do :ks_neutron_password => 'secrete', :ks_keystone_admin_host => '10.0.0.1', :ks_keystone_public_port => '5000', + :nova_url => 'http://127.0.0.1:8774/v2', + :$nova_admin_auth_url => 'http://127.0.0.1:35357/v2.0', + :nova_admin_username => 'nova', + :nova_admin_tenant_name => 'services', + :nova_admin_password => 'novapassword', + :nova_region_name => 'RegionOne', :api_eth => '10.0.0.1' } end @@ -92,6 +98,16 @@ describe 'cloud::network::controller' do ) end + it 'configure neutron server notifications to nova' do + should contain_class('neutron::server::notifications').with( + :nova_url => 'http://127.0.0.1:8774/v2', + :nova_admin_auth_url => 'http://127.0.0.1:35357/v2.0', + :nova_admin_username => 'nova', + :nova_admin_tenant_name => 'services', + :nova_admin_password => 'novapassword', + :nova_region_name => 'RegionOne' + ) + end it 'checks if Neutron DB is populated' do should contain_exec('neutron_db_sync').with( :command => 'neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head',