Skip to content

Commit 6e897bf

Browse files
authored
Merge pull request #188 from abottchen/modules-4067-handle-blkid-retcode
(MODULES-4067) Gracefully handle blkid return code 2
2 parents a652217 + 8bf2ea2 commit 6e897bf

File tree

2 files changed

+26
-9
lines changed
  • lib/puppet/provider/logical_volume
  • spec/unit/puppet/provider/logical_volume

2 files changed

+26
-9
lines changed

lib/puppet/provider/logical_volume/lvm.rb

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -200,15 +200,22 @@ def size=(new_size)
200200
lvextend( '-L', new_size, path) || fail( "Cannot extend to size #{new_size} because lvextend failed." )
201201

202202
unless @resource[:resize_fs] == :false or @resource[:resize_fs] == false or @resource[:resize_fs] == 'false'
203-
blkid_type = blkid(path)
204-
if command(:resize4fs) and blkid_type =~ /\bTYPE=\"(ext4)\"/
205-
resize4fs( path) || fail( "Cannot resize file system to size #{new_size} because resize2fs failed." )
206-
elsif blkid_type =~ /\bTYPE=\"(ext[34])\"/
207-
resize2fs( path) || fail( "Cannot resize file system to size #{new_size} because resize2fs failed." )
208-
elsif blkid_type =~ /\bTYPE=\"(xfs)\"/
209-
xfs_growfs( path) || fail( "Cannot resize filesystem to size #{new_size} because xfs_growfs failed." )
210-
elsif blkid_type =~ /\bTYPE=\"(swap)\"/
211-
swapoff( path) && mkswap( path) && swapon( path) || fail( "Cannot resize swap to size #{new_size} because mkswap failed." )
203+
begin
204+
blkid_type = blkid(path)
205+
if command(:resize4fs) and blkid_type =~ /\bTYPE=\"(ext4)\"/
206+
resize4fs( path) || fail( "Cannot resize file system to size #{new_size} because resize2fs failed." )
207+
elsif blkid_type =~ /\bTYPE=\"(ext[34])\"/
208+
resize2fs( path) || fail( "Cannot resize file system to size #{new_size} because resize2fs failed." )
209+
elsif blkid_type =~ /\bTYPE=\"(xfs)\"/
210+
xfs_growfs( path) || fail( "Cannot resize filesystem to size #{new_size} because xfs_growfs failed." )
211+
elsif blkid_type =~ /\bTYPE=\"(swap)\"/
212+
swapoff( path) && mkswap( path) && swapon( path) || fail( "Cannot resize swap to size #{new_size} because mkswap failed." )
213+
end
214+
rescue Puppet::ExecutionFailure => detail
215+
## If blkid returned 2, there is no filesystem present or the file doesn't exist. This should not be a failure.
216+
if detail.message =~ / returned 2:/
217+
Puppet.debug(detail.message)
218+
end
212219
end
213220
end
214221

spec/unit/puppet/provider/logical_volume/lvm_spec.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,16 @@
178178
@provider.expects(:blkid).with('/dev/myvg/mylv').never
179179
@provider.size = '2000000k'
180180
end
181+
it "should not report an error from 'blkid' if resizing a filesystem with no filesystem present" do
182+
@resource.expects(:[]).with(:name).returns('mylv').at_least_once
183+
@resource.expects(:[]).with(:volume_group).returns('myvg').at_least_once
184+
@resource.expects(:[]).with(:size).returns('1g').at_least_once
185+
@provider.expects(:lvcreate).with('-n', 'mylv', '--size', '1g', 'myvg')
186+
@provider.create
187+
@provider.expects(:lvs).with('--noheading', '--unit', 'g', '/dev/myvg/mylv').returns(' 1.00g').at_least_once
188+
@provider.expects(:lvs).with('--noheading', '-o', 'vg_extent_size', '--units', 'k', '/dev/myvg/mylv').returns(' 1000.00k')
189+
expect { @provider.size = '1100000k' }.not_to raise_error(Puppet::ExecutionFailure, /blkid/)
190+
end
181191
end
182192
end
183193
context "not in extent portions" do

0 commit comments

Comments
 (0)