Update version according to OSCI-856
[packages/precise/mcollective.git] / doc / classes / MCollective / PluginPackager.html
1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <!DOCTYPE html 
3      PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
6 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7 <head>
8   <title>Module: MCollective::PluginPackager</title>
9   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10   <meta http-equiv="Content-Script-Type" content="text/javascript" />
11   <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12   <script type="text/javascript">
13   // <![CDATA[
14
15   function popupCode( url ) {
16     window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17   }
18
19   function toggleCode( id ) {
20     if ( document.getElementById )
21       elem = document.getElementById( id );
22     else if ( document.all )
23       elem = eval( "document.all." + id );
24     else
25       return false;
26
27     elemStyle = elem.style;
28     
29     if ( elemStyle.display != "block" ) {
30       elemStyle.display = "block"
31     } else {
32       elemStyle.display = "none"
33     }
34
35     return true;
36   }
37   
38   // Make codeblocks hidden by default
39   document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40   
41   // ]]>
42   </script>
43
44 </head>
45 <body>
46
47
48
49     <div id="classHeader">
50         <table class="header-table">
51         <tr class="top-aligned-row">
52           <td><strong>Module</strong></td>
53           <td class="class-name-in-header">MCollective::PluginPackager</td>
54         </tr>
55         <tr class="top-aligned-row">
56             <td><strong>In:</strong></td>
57             <td>
58                 <a href="../../files/lib/mcollective/pluginpackager_rb.html">
59                 lib/mcollective/pluginpackager.rb
60                 </a>
61         <br />
62                 <a href="../../files/lib/mcollective/pluginpackager/standard_definition_rb.html">
63                 lib/mcollective/pluginpackager/standard_definition.rb
64                 </a>
65         <br />
66                 <a href="../../files/lib/mcollective/pluginpackager/agent_definition_rb.html">
67                 lib/mcollective/pluginpackager/agent_definition.rb
68                 </a>
69         <br />
70             </td>
71         </tr>
72
73         </table>
74     </div>
75   <!-- banner header -->
76
77   <div id="bodyContent">
78
79
80
81   <div id="contextContent">
82
83
84
85    </div>
86
87     <div id="method-list">
88       <h3 class="section-bar">Methods</h3>
89
90       <div class="name-list">
91       <a href="#M000312">[]</a>&nbsp;&nbsp;
92       <a href="#M000314">check_dir_present</a>&nbsp;&nbsp;
93       <a href="#M000316">command_available?</a>&nbsp;&nbsp;
94       <a href="#M000315">execute_verbosely</a>&nbsp;&nbsp;
95       <a href="#M000318">filter_dependencies</a>&nbsp;&nbsp;
96       <a href="#M000313">get_metadata</a>&nbsp;&nbsp;
97       <a href="#M000311">load_packagers</a>&nbsp;&nbsp;
98       <a href="#M000317">safe_system</a>&nbsp;&nbsp;
99       </div>
100     </div>
101
102   </div>
103
104
105     <!-- if includes -->
106
107     <div id="section">
108
109     <div id="class-list">
110       <h3 class="section-bar">Classes and Modules</h3>
111
112       Class <a href="PluginPackager/AgentDefinition.html" class="link">MCollective::PluginPackager::AgentDefinition</a><br />
113 Class <a href="PluginPackager/StandardDefinition.html" class="link">MCollective::PluginPackager::StandardDefinition</a><br />
114
115     </div>
116
117
118
119
120       
121
122
123     <!-- if method_list -->
124     <div id="methods">
125       <h3 class="section-bar">Public Class methods</h3>
126
127       <div id="method-M000312" class="method-detail">
128         <a name="M000312"></a>
129
130         <div class="method-heading">
131           <a href="#M000312" class="method-signature">
132           <span class="method-name">[]</span><span class="method-args">(klass)</span>
133           </a>
134         </div>
135       
136         <div class="method-description">
137           <p><a class="source-toggle" href="#"
138             onclick="toggleCode('M000312-source');return false;">[Source]</a></p>
139           <div class="method-source-code" id="M000312-source">
140 <pre>
141     <span class="ruby-comment cmt"># File lib/mcollective/pluginpackager.rb, line 12</span>
142 12:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-operator">[]</span>(<span class="ruby-identifier">klass</span>)
143 13:       <span class="ruby-identifier">const_get</span>(<span class="ruby-node">&quot;#{klass}&quot;</span>)
144 14:     <span class="ruby-keyword kw">end</span>
145 </pre>
146           </div>
147         </div>
148       </div>
149
150       <div id="method-M000314" class="method-detail">
151         <a name="M000314"></a>
152
153         <div class="method-heading">
154           <a href="#M000314" class="method-signature">
155           <span class="method-name">check_dir_present</span><span class="method-args">(path)</span>
156           </a>
157         </div>
158       
159         <div class="method-description">
160           <p>
161 Checks if a directory is present and not empty
162 </p>
163           <p><a class="source-toggle" href="#"
164             onclick="toggleCode('M000314-source');return false;">[Source]</a></p>
165           <div class="method-source-code" id="M000314-source">
166 <pre>
167     <span class="ruby-comment cmt"># File lib/mcollective/pluginpackager.rb, line 31</span>
168 31:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">check_dir_present</span>(<span class="ruby-identifier">path</span>)
169 32:       (<span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-identifier">path</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-constant">Dir</span>.<span class="ruby-identifier">glob</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">path</span>, <span class="ruby-value str">&quot;*&quot;</span>)).<span class="ruby-identifier">empty?</span>)
170 33:     <span class="ruby-keyword kw">end</span>
171 </pre>
172           </div>
173         </div>
174       </div>
175
176       <div id="method-M000316" class="method-detail">
177         <a name="M000316"></a>
178
179         <div class="method-heading">
180           <a href="#M000316" class="method-signature">
181           <span class="method-name">command_available?</span><span class="method-args">(build_tool)</span>
182           </a>
183         </div>
184       
185         <div class="method-description">
186           <p>
187 Checks if a build tool is present on the system
188 </p>
189           <p><a class="source-toggle" href="#"
190             onclick="toggleCode('M000316-source');return false;">[Source]</a></p>
191           <div class="method-source-code" id="M000316-source">
192 <pre>
193     <span class="ruby-comment cmt"># File lib/mcollective/pluginpackager.rb, line 54</span>
194 54:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">command_available?</span>(<span class="ruby-identifier">build_tool</span>)
195 55:       <span class="ruby-constant">ENV</span>[<span class="ruby-value str">&quot;PATH&quot;</span>].<span class="ruby-identifier">split</span>(<span class="ruby-constant">File</span><span class="ruby-operator">::</span><span class="ruby-constant">PATH_SEPARATOR</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">path</span><span class="ruby-operator">|</span>
196 56:         <span class="ruby-identifier">builder</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">build_tool</span>)
197 57:         <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-identifier">builder</span>)
198 58:           <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
199 59:         <span class="ruby-keyword kw">end</span>
200 60:       <span class="ruby-keyword kw">end</span>
201 61:       <span class="ruby-keyword kw">false</span>
202 62:     <span class="ruby-keyword kw">end</span>
203 </pre>
204           </div>
205         </div>
206       </div>
207
208       <div id="method-M000315" class="method-detail">
209         <a name="M000315"></a>
210
211         <div class="method-heading">
212           <a href="#M000315" class="method-signature">
213           <span class="method-name">execute_verbosely</span><span class="method-args">(verbose, &amp;block)</span>
214           </a>
215         </div>
216       
217         <div class="method-description">
218           <p>
219 Quietly calls a block if verbose parameter is false
220 </p>
221           <p><a class="source-toggle" href="#"
222             onclick="toggleCode('M000315-source');return false;">[Source]</a></p>
223           <div class="method-source-code" id="M000315-source">
224 <pre>
225     <span class="ruby-comment cmt"># File lib/mcollective/pluginpackager.rb, line 36</span>
226 36:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">execute_verbosely</span>(<span class="ruby-identifier">verbose</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
227 37:       <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">verbose</span>
228 38:         <span class="ruby-identifier">old_stdout</span> = <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">clone</span>
229 39:         <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">reopen</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;/dev/null&quot;</span>, <span class="ruby-value str">&quot;w&quot;</span>))
230 40:         <span class="ruby-keyword kw">begin</span>
231 41:           <span class="ruby-identifier">block</span>.<span class="ruby-identifier">call</span>
232 42:         <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
233 43:           <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-identifier">old_stdout</span>
234 44:           <span class="ruby-identifier">raise</span> <span class="ruby-identifier">e</span>
235 45:         <span class="ruby-keyword kw">ensure</span>
236 46:           <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">reopen</span> <span class="ruby-identifier">old_stdout</span>
237 47:         <span class="ruby-keyword kw">end</span>
238 48:       <span class="ruby-keyword kw">else</span>
239 49:         <span class="ruby-identifier">block</span>.<span class="ruby-identifier">call</span>
240 50:       <span class="ruby-keyword kw">end</span>
241 51:     <span class="ruby-keyword kw">end</span>
242 </pre>
243           </div>
244         </div>
245       </div>
246
247       <div id="method-M000318" class="method-detail">
248         <a name="M000318"></a>
249
250         <div class="method-heading">
251           <a href="#M000318" class="method-signature">
252           <span class="method-name">filter_dependencies</span><span class="method-args">(prefix, dependencies)</span>
253           </a>
254         </div>
255       
256         <div class="method-description">
257           <p>
258 Filter out platform specific dependencies Given a list of dependencies
259 named - debian::foo redhat::bar <a
260 href="PluginPackager.html#M000318">PluginPackager.filter_dependencies</a>(&#8216;debian&#8217;,
261 dependencies) will return foo.
262 </p>
263           <p><a class="source-toggle" href="#"
264             onclick="toggleCode('M000318-source');return false;">[Source]</a></p>
265           <div class="method-source-code" id="M000318-source">
266 <pre>
267     <span class="ruby-comment cmt"># File lib/mcollective/pluginpackager.rb, line 74</span>
268 74:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">filter_dependencies</span>(<span class="ruby-identifier">prefix</span>, <span class="ruby-identifier">dependencies</span>)
269 75:       <span class="ruby-identifier">dependencies</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">dependency</span><span class="ruby-operator">|</span>
270 76:         <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dependency</span>[<span class="ruby-identifier">:name</span>] <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^(\w+)::(\w+)/</span>
271 77:           <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">prefix</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">$1</span>
272 78:             <span class="ruby-identifier">dependency</span>[<span class="ruby-identifier">:name</span>] = <span class="ruby-identifier">$2</span>
273 79:             <span class="ruby-identifier">dependency</span>
274 80:           <span class="ruby-keyword kw">else</span>
275 81:             <span class="ruby-keyword kw">nil</span>
276 82:           <span class="ruby-keyword kw">end</span>
277 83:         <span class="ruby-keyword kw">else</span>
278 84:           <span class="ruby-identifier">dependency</span>
279 85:         <span class="ruby-keyword kw">end</span>
280 86:       <span class="ruby-keyword kw">end</span>.<span class="ruby-identifier">reject</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">dependency</span><span class="ruby-operator">|</span> <span class="ruby-identifier">dependency</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span> }
281 87:     <span class="ruby-keyword kw">end</span>
282 </pre>
283           </div>
284         </div>
285       </div>
286
287       <div id="method-M000313" class="method-detail">
288         <a name="M000313"></a>
289
290         <div class="method-heading">
291           <a href="#M000313" class="method-signature">
292           <span class="method-name">get_metadata</span><span class="method-args">(path, type)</span>
293           </a>
294         </div>
295       
296         <div class="method-description">
297           <p>
298 Fetch and return metadata from plugin <a href="DDL.html">DDL</a>
299 </p>
300           <p><a class="source-toggle" href="#"
301             onclick="toggleCode('M000313-source');return false;">[Source]</a></p>
302           <div class="method-source-code" id="M000313-source">
303 <pre>
304     <span class="ruby-comment cmt"># File lib/mcollective/pluginpackager.rb, line 17</span>
305 17:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">get_metadata</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">type</span>)
306 18:       <span class="ruby-identifier">ddl</span> = <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">&quot;package&quot;</span>, <span class="ruby-identifier">type</span>.<span class="ruby-identifier">to_sym</span>, <span class="ruby-keyword kw">false</span>)
307 19: 
308 20:       <span class="ruby-keyword kw">begin</span>
309 21:         <span class="ruby-identifier">ddl_file</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-constant">Dir</span>.<span class="ruby-identifier">glob</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">type</span>, <span class="ruby-value str">&quot;*.ddl&quot;</span>)).<span class="ruby-identifier">first</span>)
310 22:       <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span>
311 23:         <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;failed to load ddl file in plugin directory : #{File.join(path, type)}&quot;</span>
312 24:       <span class="ruby-keyword kw">end</span>
313 25:       <span class="ruby-identifier">ddl</span>.<span class="ruby-identifier">instance_eval</span> <span class="ruby-identifier">ddl_file</span>
314 26: 
315 27:       <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">ddl</span>.<span class="ruby-identifier">meta</span>, <span class="ruby-identifier">ddl</span>.<span class="ruby-identifier">requirements</span>[<span class="ruby-identifier">:mcollective</span>]
316 28:     <span class="ruby-keyword kw">end</span>
317 </pre>
318           </div>
319         </div>
320       </div>
321
322       <div id="method-M000311" class="method-detail">
323         <a name="M000311"></a>
324
325         <div class="method-heading">
326           <a href="#M000311" class="method-signature">
327           <span class="method-name">load_packagers</span><span class="method-args">()</span>
328           </a>
329         </div>
330       
331         <div class="method-description">
332           <p>
333 Package implementation plugins
334 </p>
335           <p><a class="source-toggle" href="#"
336             onclick="toggleCode('M000311-source');return false;">[Source]</a></p>
337           <div class="method-source-code" id="M000311-source">
338 <pre>
339     <span class="ruby-comment cmt"># File lib/mcollective/pluginpackager.rb, line 8</span>
340  8:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">load_packagers</span>
341  9:       <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">find_and_load</span>(<span class="ruby-value str">&quot;pluginpackager&quot;</span>)
342 10:     <span class="ruby-keyword kw">end</span>
343 </pre>
344           </div>
345         </div>
346       </div>
347
348       <div id="method-M000317" class="method-detail">
349         <a name="M000317"></a>
350
351         <div class="method-heading">
352           <a href="#M000317" class="method-signature">
353           <span class="method-name">safe_system</span><span class="method-args">(*args)</span>
354           </a>
355         </div>
356       
357         <div class="method-description">
358           <p><a class="source-toggle" href="#"
359             onclick="toggleCode('M000317-source');return false;">[Source]</a></p>
360           <div class="method-source-code" id="M000317-source">
361 <pre>
362     <span class="ruby-comment cmt"># File lib/mcollective/pluginpackager.rb, line 64</span>
363 64:     <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">safe_system</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
364 65:       <span class="ruby-identifier">raise</span>(<span class="ruby-constant">RuntimeError</span>, <span class="ruby-node">&quot;Failed: #{args.join(' ')}&quot;</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">system</span> <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>
365 66:     <span class="ruby-keyword kw">end</span>
366 </pre>
367           </div>
368         </div>
369       </div>
370
371
372     </div>
373
374
375   </div>
376
377
378 <div id="validator-badges">
379   <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
380 </div>
381
382 </body>
383 </html>