Skip to content

Commit dcf5290

Browse files
committed
Merge pull request #151 from ssgelm/resize_fs_flag
(MODULES-3230) Add flag to Logical_volume to not resize filesystem
2 parents 815594e + ae7e206 commit dcf5290

File tree

3 files changed

+49
-9
lines changed

3 files changed

+49
-9
lines changed

lib/puppet/provider/logical_volume/lvm.rb

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -188,15 +188,17 @@ def size=(new_size)
188188

189189
lvextend( '-L', new_size, path) || fail( "Cannot extend to size #{new_size} because lvextend failed." )
190190

191-
blkid_type = blkid(path)
192-
if command(:resize4fs) and blkid_type =~ /\bTYPE=\"(ext4)\"/
193-
resize4fs( path) || fail( "Cannot resize file system to size #{new_size} because resize2fs failed." )
194-
elsif blkid_type =~ /\bTYPE=\"(ext[34])\"/
195-
resize2fs( path) || fail( "Cannot resize file system to size #{new_size} because resize2fs failed." )
196-
elsif blkid_type =~ /\bTYPE=\"(xfs)\"/
197-
xfs_growfs( path) || fail( "Cannot resize filesystem to size #{new_size} because xfs_growfs failed." )
198-
elsif blkid_type =~ /\bTYPE=\"(swap)\"/
199-
swapoff( path) && mkswap( path) && swapon( path) || fail( "Cannot resize swap to size #{new_size} because mkswap failed." )
191+
unless @resource[:resize_fs] == :false or @resource[:resize_fs] == false or @resource[:resize_fs] == 'false'
192+
blkid_type = blkid(path)
193+
if command(:resize4fs) and blkid_type =~ /\bTYPE=\"(ext4)\"/
194+
resize4fs( path) || fail( "Cannot resize file system to size #{new_size} because resize2fs failed." )
195+
elsif blkid_type =~ /\bTYPE=\"(ext[34])\"/
196+
resize2fs( path) || fail( "Cannot resize file system to size #{new_size} because resize2fs failed." )
197+
elsif blkid_type =~ /\bTYPE=\"(xfs)\"/
198+
xfs_growfs( path) || fail( "Cannot resize filesystem to size #{new_size} because xfs_growfs failed." )
199+
elsif blkid_type =~ /\bTYPE=\"(swap)\"/
200+
swapoff( path) && mkswap( path) && swapon( path) || fail( "Cannot resize swap to size #{new_size} because mkswap failed." )
201+
end
200202
end
201203

202204
end

lib/puppet/type/logical_volume.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,16 @@ def insync?(is)
135135
defaultto :false
136136
end
137137

138+
newparam(:resize_fs) do
139+
desc "Whether or not to resize the underlying filesystem when resizing the logical volume."
140+
validate do |value|
141+
unless [:true, true, "true", :false, false, "false"].include?(value)
142+
raise ArgumentError , "resize_fs must either be true or false"
143+
end
144+
end
145+
defaultto :true
146+
end
147+
138148

139149
newproperty(:mirror) do
140150
desc "The number of mirrors of the volume."

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,34 @@
126126
@provider.expects(:blkid).with('/dev/myvg/mylv')
127127
@provider.size = '2000000k'
128128
end
129+
context "with resize_fs flag" do
130+
it "should execute 'blkid' if resize_fs is set to true" do
131+
@resource.expects(:[]).with(:name).returns('mylv').at_least_once
132+
@resource.expects(:[]).with(:volume_group).returns('myvg').at_least_once
133+
@resource.expects(:[]).with(:size).returns('1g').at_least_once
134+
@resource.expects(:[]).with(:resize_fs).returns('true').at_least_once
135+
@provider.expects(:lvcreate).with('-n', 'mylv', '--size', '1g', 'myvg')
136+
@provider.create
137+
@provider.expects(:lvs).with('--noheading', '--unit', 'g', '/dev/myvg/mylv').returns(' 1.00g').at_least_once
138+
@provider.expects(:lvs).with('--noheading', '-o', 'vg_extent_size', '--units', 'k', '/dev/myvg/mylv').returns(' 1000.00k')
139+
@provider.expects(:lvextend).with('-L', '2000000k', '/dev/myvg/mylv').returns(true)
140+
@provider.expects(:blkid).with('/dev/myvg/mylv')
141+
@provider.size = '2000000k'
142+
end
143+
it "should not execute 'blkid' if resize_fs is set to false" do
144+
@resource.expects(:[]).with(:name).returns('mylv').at_least_once
145+
@resource.expects(:[]).with(:volume_group).returns('myvg').at_least_once
146+
@resource.expects(:[]).with(:size).returns('1g').at_least_once
147+
@resource.expects(:[]).with(:resize_fs).returns('false').at_least_once
148+
@provider.expects(:lvcreate).with('-n', 'mylv', '--size', '1g', 'myvg')
149+
@provider.create
150+
@provider.expects(:lvs).with('--noheading', '--unit', 'g', '/dev/myvg/mylv').returns(' 1.00g').at_least_once
151+
@provider.expects(:lvs).with('--noheading', '-o', 'vg_extent_size', '--units', 'k', '/dev/myvg/mylv').returns(' 1000.00k')
152+
@provider.expects(:lvextend).with('-L', '2000000k', '/dev/myvg/mylv').returns(true)
153+
@provider.expects(:blkid).with('/dev/myvg/mylv').never
154+
@provider.size = '2000000k'
155+
end
156+
end
129157
end
130158
context "not in extent portions" do
131159
it "should raise an exception" do

0 commit comments

Comments
 (0)