@@ -5,43 +5,24 @@ class Cert < Puppet::Provider
55
66 initvars
77
8- commands :rpm => 'rpm'
9- commands :yum => 'yum'
108 commands :katello_ssl_tool_command => 'katello-ssl-tool'
119
1210 def exists?
13- ! generate? && ! deploy ?
11+ !generate?
1412 end
1513
1614 def create
1715 generate! if generate?
18- deploy! if deploy?
1916 end
2017
2118 def destroy
22- files_to_deploy . each do |file |
23- FileUtils . rm_f ( file )
24- end
25-
26- output = execute ( [ :rpm , '-q' , rpmfile_base_name ] , failonfail : false )
27- if output . exitstatus == 0
28- rpm ( '-e' , rpmfile_base_name )
29- end
30- end
31-
32- def self . details ( cert_name )
33- details = { :pubkey => pubkey ( cert_name ) ,
34- :privkey => privkey ( cert_name ) }
35-
36- return details
3719 end
3820
39- def self . pubkey ( name )
40- target_path ( "certs/#{ name } .crt" )
41- end
42-
43- def self . privkey ( name )
44- target_path ( "private/#{ name } .key" )
21+ def details ( cert_name )
22+ return {
23+ :pubkey => pubkey ( cert_name ) ,
24+ :privkey => privkey ( cert_name )
25+ }
4526 end
4627
4728 protected
@@ -59,49 +40,12 @@ def generate!
5940 def generate?
6041 return false unless resource [ :generate ]
6142 return true if resource [ :regenerate ]
62- return true if File . exist ?( update_file )
63- return files_to_generate . any? { | file | ! File . exist? ( file ) }
43+ return true if File . exists ?( update_file )
44+ return true unless ( File . exist? ( pubkey ) && File . exist? ( privkey ) )
6445 end
6546
66- def files_to_generate
67- [ rpmfile ]
68- end
69-
70- def deploy?
71- return false unless resource [ :deploy ]
72- return true if resource [ :regenerate ]
73- return true if files_to_deploy . any? { |file | ! File . exist? ( file ) }
74- return true if needs_deploy?
75- end
76-
77- def files_to_deploy
78- [ pubkey , privkey ]
79- end
80-
81- def deploy!
82- if File . exist? ( rpmfile )
83- if ( system ( "rpm -q #{ rpmfile_base_name } &>/dev/null" ) )
84- rpm ( '-e' , rpmfile_base_name )
85- end
86- rpm ( '-Uvh' , '--force' , rpmfile )
87- else
88- # we search the rpm in yum repo
89- yum ( "install" , "-y" , rpmfile_base_name )
90- end
91- end
92-
93- def needs_deploy?
94- if File . exist? ( rpmfile )
95- # the installed version doesn't match the rpmfile
96- !system ( "rpm --verify -p #{ rpmfile } &>/dev/null" )
97- else
98- `yum check-update #{ rpmfile_base_name } &>/dev/null`
99- $?. exitstatus == 100
100- end
101- end
102-
103- def version_from_name ( rpmname )
104- rpmname . scan ( /\d +/ ) . map ( &:to_i )
47+ def update_file
48+ build_path ( "#{ resource [ :name ] } .update" )
10549 end
10650
10751 def common_args
@@ -114,56 +58,29 @@ def common_args
11458 '--cert-expiration' , resource [ :expiration ] ]
11559 end
11660
117- def rpmfile
118- path = self . build_path ( "#{ rpmfile_base_name } " )
119- path = path + "-[0-9].*" + "noarch.rpm"
120-
121- rpmfile = Dir [ path ] . max_by do |file |
122- version_from_name ( file )
123- end
124-
125- rpmfile ||= self . build_path ( "#{ rpmfile_base_name } .noarch.rpm" )
126- return rpmfile
127- end
128-
129- # file that indicates that a new version of the rpm should be updated
130- def update_file
131- self . build_path ( "#{ rpmfile_base_name } .update" )
132- end
133-
134- def rpmfile_base_name
135- resource [ :name ]
136- end
137-
138- def pubkey
139- self . class . pubkey ( resource [ :name ] )
140- end
141-
142- def privkey
143- self . class . privkey ( resource [ :name ] )
61+ def pubkey ( cert_name = resource [ :name ] )
62+ build_path ( "#{ cert_name } .crt" )
14463 end
14564
146- def target_path ( file_name = '' )
147- self . class . target_path ( file_name )
148- end
149-
150- def self . target_path ( file_name = '' )
151- File . join ( "/etc/pki/katello-certs-tools" , file_name )
65+ def privkey ( key_name = resource [ :name ] )
66+ build_path ( "#{ key_name } .key" )
15267 end
15368
15469 def build_path ( file_name = '' )
155- self . class . build_path ( file_name )
156- end
70+ path = resource [ :build_dir ]
71+
72+ if resource . to_hash . key? ( :hostname )
73+ path = "#{ path } /#{ resource [ :hostname ] } "
74+ end
15775
158- def self . build_path ( file_name = '' )
159- File . join ( "/root/ssl-build" , file_name )
76+ File . join ( path , file_name )
16077 end
16178
16279 def ca_details
16380 return @ca_details if defined? @ca_details
16481 if ca_resource = resource . catalog . resource ( @resource [ :ca ] . to_s )
16582 name = ca_resource . to_hash [ :name ]
166- @ca_details = Puppet :: Provider :: KatelloSslTool :: Cert . details ( name )
83+ @ca_details = details ( name )
16784 else
16885 raise 'Wanted to generate cert without ca specified'
16986 end
@@ -221,7 +138,7 @@ def cert_details
221138 return @cert_details if defined? @cert_details
222139 if cert_resource = resource . catalog . resource ( @resource [ :key_pair ] . to_s )
223140 name = cert_resource . to_hash [ :name ]
224- @cert_details = Puppet :: Provider :: KatelloSslTool :: Cert . details ( name )
141+ @cert_details = details ( name )
225142 else
226143 raise 'Cert or Ca was not specified'
227144 end
0 commit comments