Skip to content

Commit 8daa402

Browse files
committed
add possibility to manage permissions for x509_request
1 parent 201c294 commit 8daa402

File tree

3 files changed

+49
-1
lines changed

3 files changed

+49
-1
lines changed

lib/puppet/provider/x509_request/openssl.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
# frozen_string_literal: true
22

33
require 'pathname'
4-
Puppet::Type.type(:x509_request).provide(:openssl) do
4+
require File.join(File.dirname(__FILE__), '..', '..', '..', 'puppet/provider/openssl')
5+
Puppet::Type.type(:x509_request).provide(
6+
:openssl,
7+
parent: Puppet::Provider::Openssl,
8+
) do
59
desc 'Manages certificate signing requests with OpenSSL'
610

711
commands openssl: 'openssl'
@@ -45,6 +49,8 @@ def create
4549
# openssl(options) doesn't work because it's impossible to pass an env
4650
# https://github.com/puppetlabs/puppet/issues/9493
4751
execute([command('openssl')] + options, { failonfail: true, combine: true, custom_environment: env })
52+
53+
set_file_perm(resource[:path], resource[:owner], resource[:group], resource[:mode])
4854
end
4955

5056
def destroy

lib/puppet/type/x509_request.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,33 @@
5454
defaultto true
5555
end
5656

57+
newproperty(:owner) do
58+
desc 'owner of the file'
59+
validate do |value|
60+
unless value =~ %r{^\w+}
61+
raise ArgumentError, '%s is not a valid user name' % value
62+
end
63+
end
64+
end
65+
66+
newproperty(:group) do
67+
desc 'group of the file'
68+
validate do |value|
69+
unless value =~ %r{^\w+}
70+
raise ArgumentError, '%s is not a valid group name' % value
71+
end
72+
end
73+
end
74+
75+
newproperty(:mode) do
76+
desc 'mode of the file'
77+
validate do |value|
78+
unless value =~ %r{^0\d\d\d$}
79+
raise ArgumentError, '%s is not a valid file mode' % value
80+
end
81+
end
82+
end
83+
5784
autorequire(:x509_cert) do
5885
path = Pathname.new(self[:private_key])
5986
"#{path.dirname}/#{path.basename(path.extname)}"

spec/unit/puppet/type/x509_request_spec.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,19 @@
5353
resource[:force] = :foo
5454
end.to raise_error(Puppet::Error, %r{Invalid value :foo})
5555
end
56+
57+
it 'accepts mode' do
58+
resource[:mode] = '0700'
59+
expect(resource[:mode]).to eq('0700')
60+
end
61+
62+
it 'accepts owner' do
63+
resource[:owner] = 'someone'
64+
expect(resource[:owner]).to eq('someone')
65+
end
66+
67+
it 'accepts group' do
68+
resource[:group] = 'party'
69+
expect(resource[:group]).to eq('party')
70+
end
5671
end

0 commit comments

Comments
 (0)