1 <?xml version="1.0" encoding="iso-8859-1"?>
3 PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
8 <title>Module: MCollective::Data</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">
15 function popupCode( url ) {
16 window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
19 function toggleCode( id ) {
20 if ( document.getElementById )
21 elem = document.getElementById( id );
22 else if ( document.all )
23 elem = eval( "document.all." + id );
27 elemStyle = elem.style;
29 if ( elemStyle.display != "block" ) {
30 elemStyle.display = "block"
32 elemStyle.display = "none"
38 // Make codeblocks hidden by default
39 document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
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::Data</td>
55 <tr class="top-aligned-row">
56 <td><strong>In:</strong></td>
58 <a href="../../files/lib/mcollective/data/base_rb.html">
59 lib/mcollective/data/base.rb
62 <a href="../../files/lib/mcollective/data/result_rb.html">
63 lib/mcollective/data/result.rb
66 <a href="../../files/lib/mcollective/data_rb.html">
67 lib/mcollective/data.rb
75 <!-- banner header -->
77 <div id="bodyContent">
81 <div id="contextContent">
87 <div id="method-list">
88 <h3 class="section-bar">Methods</h3>
90 <div class="name-list">
91 <a href="#M000225">[]</a>
92 <a href="#M000227">ddl</a>
93 <a href="#M000229">ddl_has_output?</a>
94 <a href="#M000230">ddl_transform_input</a>
95 <a href="#M000228">ddl_validate</a>
96 <a href="#M000223">load_data_sources</a>
97 <a href="#M000226">method_missing</a>
98 <a href="#M000224">pluginname</a>
109 <div id="class-list">
110 <h3 class="section-bar">Classes and Modules</h3>
112 Class <a href="Data/Base.html" class="link">MCollective::Data::Base</a><br />
113 Class <a href="Data/Result.html" class="link">MCollective::Data::Result</a><br />
123 <!-- if method_list -->
125 <h3 class="section-bar">Public Class methods</h3>
127 <div id="method-M000225" class="method-detail">
128 <a name="M000225"></a>
130 <div class="method-heading">
131 <a href="#M000225" class="method-signature">
132 <span class="method-name">[]</span><span class="method-args">(plugin)</span>
136 <div class="method-description">
137 <p><a class="source-toggle" href="#"
138 onclick="toggleCode('M000225-source');return false;">[Source]</a></p>
139 <div class="method-source-code" id="M000225-source">
141 <span class="ruby-comment cmt"># File lib/mcollective/data.rb, line 26</span>
142 26: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-operator">[]</span>(<span class="ruby-identifier">plugin</span>)
143 27: <span class="ruby-constant">PluginManager</span>[<span class="ruby-identifier">pluginname</span>(<span class="ruby-identifier">plugin</span>)]
144 28: <span class="ruby-keyword kw">end</span>
150 <div id="method-M000227" class="method-detail">
151 <a name="M000227"></a>
153 <div class="method-heading">
154 <a href="#M000227" class="method-signature">
155 <span class="method-name">ddl</span><span class="method-args">(plugin)</span>
159 <div class="method-description">
160 <p><a class="source-toggle" href="#"
161 onclick="toggleCode('M000227-source');return false;">[Source]</a></p>
162 <div class="method-source-code" id="M000227-source">
164 <span class="ruby-comment cmt"># File lib/mcollective/data.rb, line 37</span>
165 37: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">ddl</span>(<span class="ruby-identifier">plugin</span>)
166 38: <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">pluginname</span>(<span class="ruby-identifier">plugin</span>), <span class="ruby-identifier">:data</span>)
167 39: <span class="ruby-keyword kw">end</span>
173 <div id="method-M000229" class="method-detail">
174 <a name="M000229"></a>
176 <div class="method-heading">
177 <a href="#M000229" class="method-signature">
178 <span class="method-name">ddl_has_output?</span><span class="method-args">(ddl, output)</span>
182 <div class="method-description">
183 <p><a class="source-toggle" href="#"
184 onclick="toggleCode('M000229-source');return false;">[Source]</a></p>
185 <div class="method-source-code" id="M000229-source">
187 <span class="ruby-comment cmt"># File lib/mcollective/data.rb, line 62</span>
188 62: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">ddl_has_output?</span>(<span class="ruby-identifier">ddl</span>, <span class="ruby-identifier">output</span>)
189 63: <span class="ruby-identifier">ddl</span>.<span class="ruby-identifier">entities</span>[<span class="ruby-identifier">:data</span>][<span class="ruby-identifier">:output</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">output</span>.<span class="ruby-identifier">to_sym</span>) <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">false</span>
190 64: <span class="ruby-keyword kw">end</span>
196 <div id="method-M000230" class="method-detail">
197 <a name="M000230"></a>
199 <div class="method-heading">
200 <a href="#M000230" class="method-signature">
201 <span class="method-name">ddl_transform_input</span><span class="method-args">(ddl, input)</span>
205 <div class="method-description">
207 For an input where the <a href="DDL.html">DDL</a> requests a boolean or
208 some number this will convert the input to the right type where possible
209 else just returns the origin input unedited
212 if anything here goes wrong just return the input value this is not really
213 the end of the world or anything since all that will happen is that <a
214 href="DDL.html">DDL</a> validation will fail and the user will get an
215 error, no need to be too defensive here
217 <p><a class="source-toggle" href="#"
218 onclick="toggleCode('M000230-source');return false;">[Source]</a></p>
219 <div class="method-source-code" id="M000230-source">
221 <span class="ruby-comment cmt"># File lib/mcollective/data.rb, line 74</span>
222 74: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">ddl_transform_input</span>(<span class="ruby-identifier">ddl</span>, <span class="ruby-identifier">input</span>)
223 75: <span class="ruby-keyword kw">begin</span>
224 76: <span class="ruby-identifier">type</span> = <span class="ruby-identifier">ddl</span>.<span class="ruby-identifier">entities</span>[<span class="ruby-identifier">:data</span>][<span class="ruby-identifier">:input</span>][<span class="ruby-identifier">:query</span>][<span class="ruby-identifier">:type</span>]
226 78: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">type</span>
227 79: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:boolean</span>
228 80: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">string_to_boolean</span>(<span class="ruby-identifier">input</span>)
230 82: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:number</span>, <span class="ruby-identifier">:integer</span>, <span class="ruby-identifier">:float</span>
231 83: <span class="ruby-keyword kw">return</span> <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">string_to_number</span>(<span class="ruby-identifier">input</span>)
232 84: <span class="ruby-keyword kw">end</span>
233 85: <span class="ruby-keyword kw">rescue</span>
234 86: <span class="ruby-keyword kw">end</span>
236 88: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">input</span>
237 89: <span class="ruby-keyword kw">end</span>
243 <div id="method-M000228" class="method-detail">
244 <a name="M000228"></a>
246 <div class="method-heading">
247 <a href="#M000228" class="method-signature">
248 <span class="method-name">ddl_validate</span><span class="method-args">(ddl, argument)</span>
252 <div class="method-description">
253 <p><a class="source-toggle" href="#"
254 onclick="toggleCode('M000228-source');return false;">[Source]</a></p>
255 <div class="method-source-code" id="M000228-source">
257 <span class="ruby-comment cmt"># File lib/mcollective/data.rb, line 41</span>
258 41: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">ddl_validate</span>(<span class="ruby-identifier">ddl</span>, <span class="ruby-identifier">argument</span>)
259 42: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">ddl</span>.<span class="ruby-identifier">meta</span>[<span class="ruby-identifier">:name</span>]
260 43: <span class="ruby-identifier">query</span> = <span class="ruby-identifier">ddl</span>.<span class="ruby-identifier">entities</span>[<span class="ruby-identifier">:data</span>]
262 45: <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">validation_fail!</span>(<span class="ruby-identifier">:PLMC31</span>, <span class="ruby-value str">"No dataquery has been defined in the DDL for data plugin '%{plugin}'"</span>, <span class="ruby-identifier">:error</span>, <span class="ruby-identifier">:plugin</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">name</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">query</span>
264 47: <span class="ruby-identifier">input</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">:input</span>, {})
265 48: <span class="ruby-identifier">output</span> = <span class="ruby-identifier">query</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">:output</span>, {})
267 50: <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">validation_fail!</span>(<span class="ruby-identifier">:PLMC32</span>, <span class="ruby-value str">"No output has been defined in the DDL for data plugin %{plugin}"</span>, <span class="ruby-identifier">:error</span>, <span class="ruby-identifier">:plugin</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">name</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">output</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">empty?</span>
269 52: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">input</span>[<span class="ruby-identifier">:query</span>]
270 53: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">argument</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">input</span>[<span class="ruby-identifier">:query</span>][<span class="ruby-identifier">:optional</span>]
272 55: <span class="ruby-identifier">ddl</span>.<span class="ruby-identifier">validate_input_argument</span>(<span class="ruby-identifier">input</span>, <span class="ruby-identifier">:query</span>, <span class="ruby-identifier">argument</span>)
273 56: <span class="ruby-keyword kw">else</span>
274 57: <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">validation_fail!</span>(<span class="ruby-identifier">:PLMC33</span>, <span class="ruby-value str">"No data plugin argument was declared in the '%{plugin}' DDL but an input was supplied"</span>, <span class="ruby-identifier">:error</span>, <span class="ruby-identifier">:plugin</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">name</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">argument</span>
275 58: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
276 59: <span class="ruby-keyword kw">end</span>
277 60: <span class="ruby-keyword kw">end</span>
283 <div id="method-M000223" class="method-detail">
284 <a name="M000223"></a>
286 <div class="method-heading">
287 <a href="#M000223" class="method-signature">
288 <span class="method-name">load_data_sources</span><span class="method-args">()</span>
292 <div class="method-description">
293 <p><a class="source-toggle" href="#"
294 onclick="toggleCode('M000223-source');return false;">[Source]</a></p>
295 <div class="method-source-code" id="M000223-source">
297 <span class="ruby-comment cmt"># File lib/mcollective/data.rb, line 6</span>
298 6: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">load_data_sources</span>
299 7: <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">find_and_load</span>(<span class="ruby-value str">"data"</span>)
301 9: <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">grep</span>(<span class="ruby-regexp re">/_data$/</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">plugin</span><span class="ruby-operator">|</span>
302 10: <span class="ruby-keyword kw">begin</span>
303 11: <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">PluginManager</span>[<span class="ruby-identifier">plugin</span>].<span class="ruby-identifier">class</span>.<span class="ruby-identifier">activate?</span>
304 12: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-value str">"Disabling data plugin %s due to plugin activation policy"</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">plugin</span>)
305 13: <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">plugin</span>)
306 14: <span class="ruby-keyword kw">end</span>
307 15: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">e</span>
308 16: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"Disabling data plugin %s due to exception #{e.class}: #{e}"</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">plugin</span>)
309 17: <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">plugin</span>)
310 18: <span class="ruby-keyword kw">end</span>
311 19: <span class="ruby-keyword kw">end</span>
312 20: <span class="ruby-keyword kw">end</span>
318 <div id="method-M000226" class="method-detail">
319 <a name="M000226"></a>
321 <div class="method-heading">
322 <a href="#M000226" class="method-signature">
323 <span class="method-name">method_missing</span><span class="method-args">(method, *args)</span>
327 <div class="method-description">
329 Data.package("httpd").architecture
331 <p><a class="source-toggle" href="#"
332 onclick="toggleCode('M000226-source');return false;">[Source]</a></p>
333 <div class="method-source-code" id="M000226-source">
335 <span class="ruby-comment cmt"># File lib/mcollective/data.rb, line 31</span>
336 31: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">method_missing</span>(<span class="ruby-identifier">method</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
337 32: <span class="ruby-keyword kw">super</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">PluginManager</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">pluginname</span>(<span class="ruby-identifier">method</span>))
339 34: <span class="ruby-constant">PluginManager</span>[<span class="ruby-identifier">pluginname</span>(<span class="ruby-identifier">method</span>)].<span class="ruby-identifier">lookup</span>(<span class="ruby-identifier">args</span>.<span class="ruby-identifier">first</span>)
340 35: <span class="ruby-keyword kw">end</span>
346 <div id="method-M000224" class="method-detail">
347 <a name="M000224"></a>
349 <div class="method-heading">
350 <a href="#M000224" class="method-signature">
351 <span class="method-name">pluginname</span><span class="method-args">(plugin)</span>
355 <div class="method-description">
356 <p><a class="source-toggle" href="#"
357 onclick="toggleCode('M000224-source');return false;">[Source]</a></p>
358 <div class="method-source-code" id="M000224-source">
360 <span class="ruby-comment cmt"># File lib/mcollective/data.rb, line 22</span>
361 22: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">pluginname</span>(<span class="ruby-identifier">plugin</span>)
362 23: <span class="ruby-identifier">plugin</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/_data$/i</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">plugin</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">:</span> <span class="ruby-value str">"%s_data"</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">plugin</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>
363 24: <span class="ruby-keyword kw">end</span>
376 <div id="validator-badges">
377 <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>