diff --git a/manifests/compute/hypervisor.pp b/manifests/compute/hypervisor.pp index 241375a7..4351593e 100644 --- a/manifests/compute/hypervisor.pp +++ b/manifests/compute/hypervisor.pp @@ -170,6 +170,12 @@ class cloud::compute::hypervisor( # We mount the NFS share in filesystem_store_datadir to fake the # backend. if $nfs_device { + file { $filesystem_store_datadir: + ensure => 'directory', + owner => 'nova', + group => 'nova', + mode => '0755' + } nova_config { 'DEFAULT/instances_path': value => $filesystem_store_datadir; } $nfs_mount = { "${filesystem_store_datadir}" => { @@ -180,7 +186,7 @@ class cloud::compute::hypervisor( } } ensure_resource('class', 'nfs', {}) - create_resources('types::mount', $nfs_mount) + create_resources('types::mount', $nfs_mount, {require => File[$filesystem_store_datadir]}) # Not using /var/lib/nova/instances may cause side effects. if $filesystem_store_datadir != '/var/lib/nova/instances' { diff --git a/manifests/image/api.pp b/manifests/image/api.pp index 64d7f4d5..61a4ac0a 100644 --- a/manifests/image/api.pp +++ b/manifests/image/api.pp @@ -260,6 +260,12 @@ class cloud::image::api( # We mount the NFS share in filesystem_store_datadir to fake the # backend. if $nfs_device { + file { $filesystem_store_datadir: + ensure => 'directory', + owner => 'glance', + group => 'glance', + mode => '0755' + } -> class { 'glance::backend::file': filesystem_store_datadir => $filesystem_store_datadir } @@ -272,7 +278,7 @@ class cloud::image::api( } } ensure_resource('class', 'nfs', {}) - create_resources('types::mount', $nfs_mount) + create_resources('types::mount', $nfs_mount, {require => File[$filesystem_store_datadir]}) } else { fail('When running NFS backend, you need to provide nfs_device parameter.') } diff --git a/spec/classes/cloud_compute_hypervisor_spec.rb b/spec/classes/cloud_compute_hypervisor_spec.rb index da537049..83a2366b 100644 --- a/spec/classes/cloud_compute_hypervisor_spec.rb +++ b/spec/classes/cloud_compute_hypervisor_spec.rb @@ -424,6 +424,12 @@ describe 'cloud::compute::hypervisor' do :nfs_options => 'noacl,fsid=123' ) end it 'configure nova instances path and NFS mount' do + is_expected.to contain_file('/var/lib/nova/instances').with( + 'ensure' => 'directory', + 'owner' => 'nova', + 'group' => 'nova', + 'mode' => '0755' + ) is_expected.to contain_nova_config('DEFAULT/instances_path').with('value' => '/var/lib/nova/instances') is_expected.to contain_mount('/var/lib/nova/instances').with({ 'ensure' => 'mounted', diff --git a/spec/classes/cloud_image_api_spec.rb b/spec/classes/cloud_image_api_spec.rb index fd9d39d9..d6bbe2e3 100644 --- a/spec/classes/cloud_image_api_spec.rb +++ b/spec/classes/cloud_image_api_spec.rb @@ -125,6 +125,12 @@ describe 'cloud::image::api' do it 'configure Glance with NFS backend' do is_expected.to contain_class('glance::backend::file') is_expected.not_to contain_class('glance::backend::rbd') + is_expected.to contain_file('/srv/images/').with( + 'ensure' => 'directory', + 'owner' => 'glance', + 'group' => 'glance', + 'mode' => '0755' + ) is_expected.to contain_glance_api_config('glance_store/filesystem_store_datadir').with('value' => '/srv/images/') is_expected.to contain_glance_api_config('glance_store/default_store').with('value' => 'file') is_expected.to contain_mount('/srv/images/').with({