Skip to content

Commit 2cb0893

Browse files
authored
Merge pull request #333 from glangloi/main
Allow modifying the physical extent size for volume groups
2 parents 471a41b + 04576a1 commit 2cb0893

File tree

4 files changed

+34
-6
lines changed

4 files changed

+34
-6
lines changed

lib/puppet/provider/volume_group/lvm.rb

+6-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,12 @@ def self.get_logical_volume_properties(volume_groups_line)
4444
end
4545

4646
def create
47-
vgcreate(@resource[:name], *@resource.should(:physical_volumes))
47+
vgcreate_args = [@resource[:name], *@resource.should(:physical_volumes)]
48+
extent_args = @resource[:extent_size].nil? ? [] : ['-s', @resource[:extent_size]]
49+
50+
vgcreate_args.append(*extent_args)
51+
52+
vgcreate(*vgcreate_args)
4853
end
4954

5055
def destroy

lib/puppet/type/volume_group.rb

+4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
isnamevar
1111
end
1212

13+
newparam(:extent_size) do
14+
desc 'The physical extent size. Uses OS default if not provided. Only applicable on Linux.'
15+
end
16+
1317
newproperty(:physical_volumes, array_matching: :all) do
1418
desc "The list of physical volumes to be included in the volume group; this
1519
will automatically set these as dependencies, but they must be defined elsewhere

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

+18-5
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,24 @@
2828
end
2929

3030
describe 'when creating' do
31-
it "executes 'vgcreate'" do
32-
@resource.expects(:[]).with(:name).returns('myvg')
33-
@resource.expects(:should).with(:physical_volumes).returns(['/dev/hda'])
34-
@provider.expects(:vgcreate).with('myvg', '/dev/hda')
35-
@provider.create
31+
context 'when an extent size is not provided' do
32+
it "executes 'vgcreate'" do
33+
@resource.expects(:[]).with(:name).returns('myvg')
34+
@resource.expects(:[]).with(:extent_size).returns(nil)
35+
@resource.expects(:should).with(:physical_volumes).returns(['/dev/hda'])
36+
@provider.expects(:vgcreate).with('myvg', '/dev/hda')
37+
@provider.create
38+
end
39+
end
40+
41+
context 'when an extent size is provided' do
42+
it "executes 'vgcreate' with the desired extent size" do
43+
@resource.expects(:[]).with(:name).returns('myvg')
44+
@resource.expects(:[]).twice.with(:extent_size).returns('16M')
45+
@resource.expects(:should).with(:physical_volumes).returns(['/dev/hda'])
46+
@provider.expects(:vgcreate).with('myvg', '/dev/hda', '-s', '16M')
47+
@provider.create
48+
end
3649
end
3750
end
3851

spec/unit/puppet/type/volume_group_spec.rb

+6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@
1818
end
1919
end
2020

21+
describe 'the extent_size parameter' do
22+
it 'exists' do
23+
@type.attrclass(:extent_size).should_not be_nil
24+
end
25+
end
26+
2127
describe "the 'ensure' parameter" do
2228
it 'exists' do
2329
@type.attrclass(:ensure).should_not be_nil

0 commit comments

Comments
 (0)