diff --git a/lib/puppet/provider/logical_volume/lvm.rb b/lib/puppet/provider/logical_volume/lvm.rb index cf46a6d6..d9eb4853 100644 --- a/lib/puppet/provider/logical_volume/lvm.rb +++ b/lib/puppet/provider/logical_volume/lvm.rb @@ -157,7 +157,7 @@ def destroy end def exists? - lvs(@resource[:volume_group]) =~ %r{#{@resource[:name]}} + lvs(@resource[:volume_group]) =~ lvs_pattern rescue Puppet::ExecutionFailure # lvs fails if we give it an empty volume group name, as would # happen if we were running `puppet resource`. This should be diff --git a/spec/unit/puppet/provider/logical_volume/lvm_spec.rb b/spec/unit/puppet/provider/logical_volume/lvm_spec.rb index 350d57a5..cbb9365c 100644 --- a/spec/unit/puppet/provider/logical_volume/lvm_spec.rb +++ b/spec/unit/puppet/provider/logical_volume/lvm_spec.rb @@ -9,10 +9,11 @@ end lvs_output = <<-EOS - LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert - lv_root VolGroup -wi-ao---- 18.54g - lv_swap VolGroup -wi-ao---- 992.00m - data data -wi-ao---- 992.00m + LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert + lv_root VolGroup -wi-ao---- 18.54g + lv_swap VolGroup -wi-ao---- 992.00m + data data -wi-ao---- 992.00m + j1 vg_jenkins -wi-a----- 1.00g EOS describe 'self.instances' do @@ -34,6 +35,12 @@ @provider.class.stubs(:lvs).with('data').returns(lvs_output) expect(@provider.exists?).to be > 10 end + it "returns 'nil', lv 'jenkins' in vg 'vg_jenkins' exists" do + @resource.expects(:[]).with(:name).returns('jenkins') + @resource.expects(:[]).with(:volume_group).returns('vg_jenkins').at_least_once + @provider.class.stubs(:lvs).with('vg_jenkins').returns(lvs_output) + expect(@provider.exists?).to be_nil + end it "returns 'nil', lv 'data' in vg 'myvg' does not exist" do @resource.expects(:[]).with(:volume_group).returns('myvg').at_least_once @provider.class.stubs(:lvs).with('myvg').raises(Puppet::ExecutionFailure, 'Execution of \'/sbin/lvs myvg\' returned 5')