1 <?xml version="1.0" encoding="utf-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
8 <title>Class: MCollective::RPC::Helpers</title>
10 <link rel="stylesheet" href="../../rdoc.css" type="text/css" media="screen" />
12 <script src="../../js/jquery.js" type="text/javascript"
13 charset="utf-8"></script>
14 <script src="../../js/thickbox-compressed.js" type="text/javascript"
15 charset="utf-8"></script>
16 <script src="../../js/quicksearch.js" type="text/javascript"
17 charset="utf-8"></script>
18 <script src="../../js/darkfish.js" type="text/javascript"
19 charset="utf-8"></script>
25 <div id="file-metadata">
26 <div id="file-list-section" class="section">
27 <h3 class="section-header">In Files</h3>
28 <div class="section-body">
31 <li><a href="../../lib/mcollective/rpc/helpers_rb.html?TB_iframe=true&height=550&width=785"
32 class="thickbox" title="lib/mcollective/rpc/helpers.rb">lib/mcollective/rpc/helpers.rb</a></li>
41 <div id="class-metadata">
45 <div id="parent-class-section" class="section">
46 <h3 class="section-header">Parent</h3>
48 <p class="link"><a href="../../Object.html">Object</a></p>
53 <!-- Namespace Contents -->
56 <!-- Method Quickref -->
58 <div id="method-list-section" class="section">
59 <h3 class="section-header">Methods</h3>
60 <ul class="link-list">
62 <li><a href="#M000453">::add_simplerpc_options</a></li>
64 <li><a href="#M000442">::extract_hosts_from_array</a></li>
66 <li><a href="#M000441">::extract_hosts_from_json</a></li>
68 <li><a href="#M000451">::old_rpcresults</a></li>
70 <li><a href="#M000444">::rpcresults</a></li>
72 <li><a href="#M000450">::text_for_flattened_result</a></li>
74 <li><a href="#M000445">::text_for_result</a></li>
80 <!-- Included Modules -->
84 <div id="project-metadata">
87 <div id="fileindex-section" class="section project-section">
88 <h3 class="section-header">Files</h3>
91 <li class="file"><a href="../../COPYING.html">COPYING</a></li>
93 <li class="file"><a href="../../Gemfile.html">Gemfile</a></li>
95 <li class="file"><a href="../../README.html">README</a></li>
97 <li class="file"><a href="../../Rakefile.html">Rakefile</a></li>
99 <li class="file"><a href="../../etc/client_cfg_dist.html">client.cfg.dist</a></li>
101 <li class="file"><a href="../../etc/data-help_erb.html">data-help.erb</a></li>
103 <li class="file"><a href="../../etc/discovery-help_erb.html">discovery-help.erb</a></li>
105 <li class="file"><a href="../../etc/facts_yaml_dist.html">facts.yaml.dist</a></li>
107 <li class="file"><a href="../../etc/metadata-help_erb.html">metadata-help.erb</a></li>
109 <li class="file"><a href="../../etc/msg-help_erb.html">msg-help.erb</a></li>
111 <li class="file"><a href="../../etc/rpc-help_erb.html">rpc-help.erb</a></li>
113 <li class="file"><a href="../../etc/server_cfg_dist.html">server.cfg.dist</a></li>
115 <li class="file"><a href="../../etc/ssl/PLACEHOLDER.html">PLACEHOLDER</a></li>
117 <li class="file"><a href="../../etc/ssl/clients/PLACEHOLDER.html">PLACEHOLDER</a></li>
119 <li class="file"><a href="../../lib/mcollective/generators/templates/action_snippet_erb.html">action_snippet.erb</a></li>
121 <li class="file"><a href="../../lib/mcollective/generators/templates/data_input_snippet_erb.html">data_input_snippet.erb</a></li>
123 <li class="file"><a href="../../lib/mcollective/generators/templates/ddl_erb.html">ddl.erb</a></li>
125 <li class="file"><a href="../../lib/mcollective/generators/templates/plugin_erb.html">plugin.erb</a></li>
127 <li class="file"><a href="../../lib/mcollective/locales/en_yml.html">en.yml</a></li>
129 <li class="file"><a href="../../mcollective_init.html">mcollective.init</a></li>
135 <div id="classindex-section" class="section project-section">
136 <h3 class="section-header">Class Index
137 <span class="search-toggle"><img src="../../images/find.png"
138 height="16" width="16" alt="[+]"
139 title="show/hide quicksearch" /></span></h3>
140 <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
142 <legend>Quicksearch</legend>
143 <input type="text" name="quicksearch" value=""
144 class="quicksearch-field" />
148 <ul class="link-list">
150 <li><a href="../../MCollective.html">MCollective</a></li>
152 <li><a href="../../MCollective/Agent.html">MCollective::Agent</a></li>
154 <li><a href="../../MCollective/Agents.html">MCollective::Agents</a></li>
156 <li><a href="../../MCollective/Aggregate.html">MCollective::Aggregate</a></li>
158 <li><a href="../../MCollective/Aggregate/Base.html">MCollective::Aggregate::Base</a></li>
160 <li><a href="../../MCollective/Aggregate/Result.html">MCollective::Aggregate::Result</a></li>
162 <li><a href="../../MCollective/Aggregate/Result/Base.html">MCollective::Aggregate::Result::Base</a></li>
164 <li><a href="../../MCollective/Aggregate/Result/CollectionResult.html">MCollective::Aggregate::Result::CollectionResult</a></li>
166 <li><a href="../../MCollective/Aggregate/Result/NumericResult.html">MCollective::Aggregate::Result::NumericResult</a></li>
168 <li><a href="../../MCollective/Application.html">MCollective::Application</a></li>
170 <li><a href="../../MCollective/Applications.html">MCollective::Applications</a></li>
172 <li><a href="../../MCollective/Cache.html">MCollective::Cache</a></li>
174 <li><a href="../../MCollective/Client.html">MCollective::Client</a></li>
176 <li><a href="../../MCollective/CodedError.html">MCollective::CodedError</a></li>
178 <li><a href="../../MCollective/Config.html">MCollective::Config</a></li>
180 <li><a href="../../MCollective/Connector.html">MCollective::Connector</a></li>
182 <li><a href="../../MCollective/Connector/Base.html">MCollective::Connector::Base</a></li>
184 <li><a href="../../MCollective/DDL.html">MCollective::DDL</a></li>
186 <li><a href="../../MCollective/DDL/AgentDDL.html">MCollective::DDL::AgentDDL</a></li>
188 <li><a href="../../MCollective/DDL/Base.html">MCollective::DDL::Base</a></li>
190 <li><a href="../../MCollective/DDL/DataDDL.html">MCollective::DDL::DataDDL</a></li>
192 <li><a href="../../MCollective/DDL/DiscoveryDDL.html">MCollective::DDL::DiscoveryDDL</a></li>
194 <li><a href="../../MCollective/DDL/ValidatorDDL.html">MCollective::DDL::ValidatorDDL</a></li>
196 <li><a href="../../MCollective/DDLValidationError.html">MCollective::DDLValidationError</a></li>
198 <li><a href="../../MCollective/Data.html">MCollective::Data</a></li>
200 <li><a href="../../MCollective/Data/Base.html">MCollective::Data::Base</a></li>
202 <li><a href="../../MCollective/Data/Result.html">MCollective::Data::Result</a></li>
204 <li><a href="../../MCollective/Discovery.html">MCollective::Discovery</a></li>
206 <li><a href="../../MCollective/Facts.html">MCollective::Facts</a></li>
208 <li><a href="../../MCollective/Facts/Base.html">MCollective::Facts::Base</a></li>
210 <li><a href="../../MCollective/Generators.html">MCollective::Generators</a></li>
212 <li><a href="../../MCollective/Generators/AgentGenerator.html">MCollective::Generators::AgentGenerator</a></li>
214 <li><a href="../../MCollective/Generators/Base.html">MCollective::Generators::Base</a></li>
216 <li><a href="../../MCollective/Generators/DataGenerator.html">MCollective::Generators::DataGenerator</a></li>
218 <li><a href="../../MCollective/InvalidRPCData.html">MCollective::InvalidRPCData</a></li>
220 <li><a href="../../MCollective/Log.html">MCollective::Log</a></li>
222 <li><a href="../../MCollective/Logger.html">MCollective::Logger</a></li>
224 <li><a href="../../MCollective/Logger/Base.html">MCollective::Logger::Base</a></li>
226 <li><a href="../../MCollective/Logger/Console_logger.html">MCollective::Logger::Console_logger</a></li>
228 <li><a href="../../MCollective/Logger/File_logger.html">MCollective::Logger::File_logger</a></li>
230 <li><a href="../../MCollective/Logger/Syslog_logger.html">MCollective::Logger::Syslog_logger</a></li>
232 <li><a href="../../MCollective/Matcher.html">MCollective::Matcher</a></li>
234 <li><a href="../../MCollective/Matcher/Parser.html">MCollective::Matcher::Parser</a></li>
236 <li><a href="../../MCollective/Matcher/Scanner.html">MCollective::Matcher::Scanner</a></li>
238 <li><a href="../../MCollective/Message.html">MCollective::Message</a></li>
240 <li><a href="../../MCollective/MissingRPCData.html">MCollective::MissingRPCData</a></li>
242 <li><a href="../../MCollective/MsgDoesNotMatchRequestID.html">MCollective::MsgDoesNotMatchRequestID</a></li>
244 <li><a href="../../MCollective/MsgTTLExpired.html">MCollective::MsgTTLExpired</a></li>
246 <li><a href="../../MCollective/NotTargettedAtUs.html">MCollective::NotTargettedAtUs</a></li>
248 <li><a href="../../MCollective/Optionparser.html">MCollective::Optionparser</a></li>
250 <li><a href="../../MCollective/PluginManager.html">MCollective::PluginManager</a></li>
252 <li><a href="../../MCollective/PluginPackager.html">MCollective::PluginPackager</a></li>
254 <li><a href="../../MCollective/PluginPackager/AgentDefinition.html">MCollective::PluginPackager::AgentDefinition</a></li>
256 <li><a href="../../MCollective/PluginPackager/StandardDefinition.html">MCollective::PluginPackager::StandardDefinition</a></li>
258 <li><a href="../../MCollective/RPC.html">MCollective::RPC</a></li>
260 <li><a href="../../MCollective/RPC/ActionRunner.html">MCollective::RPC::ActionRunner</a></li>
262 <li><a href="../../MCollective/RPC/Agent.html">MCollective::RPC::Agent</a></li>
264 <li><a href="../../MCollective/RPC/Audit.html">MCollective::RPC::Audit</a></li>
266 <li><a href="../../MCollective/RPC/Client.html">MCollective::RPC::Client</a></li>
268 <li><a href="../../MCollective/RPC/Helpers.html">MCollective::RPC::Helpers</a></li>
270 <li><a href="../../MCollective/RPC/Progress.html">MCollective::RPC::Progress</a></li>
272 <li><a href="../../MCollective/RPC/Reply.html">MCollective::RPC::Reply</a></li>
274 <li><a href="../../MCollective/RPC/Request.html">MCollective::RPC::Request</a></li>
276 <li><a href="../../MCollective/RPC/Result.html">MCollective::RPC::Result</a></li>
278 <li><a href="../../MCollective/RPC/Stats.html">MCollective::RPC::Stats</a></li>
280 <li><a href="../../MCollective/RPCAborted.html">MCollective::RPCAborted</a></li>
282 <li><a href="../../MCollective/RPCError.html">MCollective::RPCError</a></li>
284 <li><a href="../../MCollective/Registration.html">MCollective::Registration</a></li>
286 <li><a href="../../MCollective/Registration/Base.html">MCollective::Registration::Base</a></li>
288 <li><a href="../../MCollective/Runner.html">MCollective::Runner</a></li>
290 <li><a href="../../MCollective/RunnerStats.html">MCollective::RunnerStats</a></li>
292 <li><a href="../../MCollective/SSL.html">MCollective::SSL</a></li>
294 <li><a href="../../MCollective/Security.html">MCollective::Security</a></li>
296 <li><a href="../../MCollective/Security/Base.html">MCollective::Security::Base</a></li>
298 <li><a href="../../MCollective/SecurityValidationFailed.html">MCollective::SecurityValidationFailed</a></li>
300 <li><a href="../../MCollective/Shell.html">MCollective::Shell</a></li>
302 <li><a href="../../MCollective/Translatable.html">MCollective::Translatable</a></li>
304 <li><a href="../../MCollective/UnixDaemon.html">MCollective::UnixDaemon</a></li>
306 <li><a href="../../MCollective/UnknownRPCAction.html">MCollective::UnknownRPCAction</a></li>
308 <li><a href="../../MCollective/UnknownRPCError.html">MCollective::UnknownRPCError</a></li>
310 <li><a href="../../MCollective/Util.html">MCollective::Util</a></li>
312 <li><a href="../../MCollective/Validator.html">MCollective::Validator</a></li>
314 <li><a href="../../MCollective/ValidatorError.html">MCollective::ValidatorError</a></li>
316 <li><a href="../../MCollective/WindowsDaemon.html">MCollective::WindowsDaemon</a></li>
318 <li><a href="../../Array.html">Array</a></li>
320 <li><a href="../../Dir.html">Dir</a></li>
322 <li><a href="../../Object.html">Object</a></li>
324 <li><a href="../../String.html">String</a></li>
326 <li><a href="../../Symbol.html">Symbol</a></li>
329 <div id="no-class-search-results" style="display: none;">No matching classes.</div>
336 <div id="documentation">
337 <h1 class="class">MCollective::RPC::Helpers</h1>
339 <div id="description">
341 Various utilities for the <a href="../RPC.html">RPC</a> system
354 <div id="public-class-method-details" class="method-section section">
355 <h3 class="section-header">Public Class Methods</h3>
358 <div id="add-simplerpc-options-method" class="method-detail ">
359 <a name="M000453"></a>
361 <div class="method-heading">
363 <span class="method-name">add_simplerpc_options</span><span
364 class="method-args">(parser, options)</span>
365 <span class="method-click-advice">click to toggle source</span>
369 <div class="method-description">
372 Add SimpleRPC common options
377 <div class="method-source-code"
378 id="add-simplerpc-options-source">
380 <span class="ruby-comment cmt"># File lib/mcollective/rpc/helpers.rb, line 254</span>
381 254: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">add_simplerpc_options</span>(<span class="ruby-identifier">parser</span>, <span class="ruby-identifier">options</span>)
382 255: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">""</span>
383 256: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">"RPC Options"</span>
385 258: <span class="ruby-comment cmt"># add SimpleRPC specific options to all clients that use our library</span>
386 259: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--np'</span>, <span class="ruby-value str">'--no-progress'</span>, <span class="ruby-value str">'Do not show the progress bar'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
387 260: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:progress_bar</span>] = <span class="ruby-keyword kw">false</span>
388 261: <span class="ruby-keyword kw">end</span>
390 263: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--one'</span>, <span class="ruby-value str">'-1'</span>, <span class="ruby-value str">'Send request to only one discovered nodes'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
391 264: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:mcollective_limit_targets</span>] = <span class="ruby-value">1</span>
392 265: <span class="ruby-keyword kw">end</span>
394 267: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--batch SIZE'</span>, <span class="ruby-constant">Integer</span>, <span class="ruby-value str">'Do requests in batches'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
395 268: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:batch_size</span>] = <span class="ruby-identifier">v</span>
396 269: <span class="ruby-keyword kw">end</span>
398 271: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--batch-sleep SECONDS'</span>, <span class="ruby-constant">Float</span>, <span class="ruby-value str">'Sleep time between batches'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
399 272: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:batch_sleep_time</span>] = <span class="ruby-identifier">v</span>
400 273: <span class="ruby-keyword kw">end</span>
402 275: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--limit-seed NUMBER'</span>, <span class="ruby-constant">Integer</span>, <span class="ruby-value str">'Seed value for deterministic random batching'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
403 276: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:limit_seed</span>] = <span class="ruby-identifier">v</span>
404 277: <span class="ruby-keyword kw">end</span>
406 279: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--limit-nodes COUNT'</span>, <span class="ruby-value str">'--ln'</span>, <span class="ruby-value str">'--limit'</span>, <span class="ruby-value str">'Send request to only a subset of nodes, can be a percentage'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
407 280: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Invalid limit specified: #{v} valid limits are /^\d+%*$/"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">v</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^\d+%*$/</span>
409 282: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">v</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^\d+$/</span>
410 283: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:mcollective_limit_targets</span>] = <span class="ruby-identifier">v</span>.<span class="ruby-identifier">to_i</span>
411 284: <span class="ruby-keyword kw">else</span>
412 285: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:mcollective_limit_targets</span>] = <span class="ruby-identifier">v</span>
413 286: <span class="ruby-keyword kw">end</span>
414 287: <span class="ruby-keyword kw">end</span>
416 289: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--json'</span>, <span class="ruby-value str">'-j'</span>, <span class="ruby-value str">'Produce JSON output'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
417 290: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:progress_bar</span>] = <span class="ruby-keyword kw">false</span>
418 291: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:output_format</span>] = <span class="ruby-identifier">:json</span>
419 292: <span class="ruby-keyword kw">end</span>
421 294: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--display MODE'</span>, <span class="ruby-value str">'Influence how results are displayed. One of ok, all or failed'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
422 295: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">v</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"all"</span>
423 296: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:force_display_mode</span>] = <span class="ruby-identifier">:always</span>
424 297: <span class="ruby-keyword kw">else</span>
425 298: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:force_display_mode</span>] = <span class="ruby-identifier">v</span>.<span class="ruby-identifier">intern</span>
426 299: <span class="ruby-keyword kw">end</span>
428 301: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"--display has to be one of 'ok', 'all' or 'failed'"</span> <span class="ruby-keyword kw">unless</span> [<span class="ruby-identifier">:ok</span>, <span class="ruby-identifier">:failed</span>, <span class="ruby-identifier">:always</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:force_display_mode</span>])
429 302: <span class="ruby-keyword kw">end</span>
430 303: <span class="ruby-keyword kw">end</span></pre>
439 <div id="extract-hosts-from-array-method" class="method-detail ">
440 <a name="M000442"></a>
442 <div class="method-heading">
444 <span class="method-name">extract_hosts_from_array</span><span
445 class="method-args">(hosts)</span>
446 <span class="method-click-advice">click to toggle source</span>
450 <div class="method-description">
453 Given an array of something, make sure each is a string chomp off any new
454 lines and return just the array of hosts
459 <div class="method-source-code"
460 id="extract-hosts-from-array-source">
462 <span class="ruby-comment cmt"># File lib/mcollective/rpc/helpers.rb, line 29</span>
463 29: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">extract_hosts_from_array</span>(<span class="ruby-identifier">hosts</span>)
464 30: [<span class="ruby-identifier">hosts</span>].<span class="ruby-identifier">flatten</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">host</span><span class="ruby-operator">|</span>
465 31: <span class="ruby-identifier">raise</span> <span class="ruby-node">"#{host} should be a string"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">host</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)
466 32: <span class="ruby-identifier">host</span>.<span class="ruby-identifier">chomp</span>
467 33: <span class="ruby-keyword kw">end</span>
468 34: <span class="ruby-keyword kw">end</span></pre>
477 <div id="extract-hosts-from-json-method" class="method-detail ">
478 <a name="M000441"></a>
480 <div class="method-heading">
482 <span class="method-name">extract_hosts_from_json</span><span
483 class="method-args">(json)</span>
484 <span class="method-click-advice">click to toggle source</span>
488 <div class="method-description">
491 Parse JSON output as produced by printrpc and extract the
492 “sender” of each rpc response
495 The simplist valid JSON based data would be:
501 {"sender" => "example.com"},
502 {"sender" => "another.com"}
510 <div class="method-source-code"
511 id="extract-hosts-from-json-source">
513 <span class="ruby-comment cmt"># File lib/mcollective/rpc/helpers.rb, line 14</span>
514 14: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">extract_hosts_from_json</span>(<span class="ruby-identifier">json</span>)
515 15: <span class="ruby-identifier">hosts</span> = <span class="ruby-constant">JSON</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">json</span>)
517 17: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"JSON hosts list is not an array"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">hosts</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
519 19: <span class="ruby-identifier">hosts</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">host</span><span class="ruby-operator">|</span>
520 20: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"JSON host list is not an array of Hashes"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">host</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>)
521 21: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"JSON host list does not have senders in it"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">host</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-value str">"sender"</span>)
523 23: <span class="ruby-identifier">host</span>[<span class="ruby-value str">"sender"</span>]
524 24: <span class="ruby-keyword kw">end</span>.<span class="ruby-identifier">uniq</span>
525 25: <span class="ruby-keyword kw">end</span></pre>
534 <div id="old-rpcresults-method" class="method-detail ">
535 <a name="M000451"></a>
537 <div class="method-heading">
539 <span class="method-name">old_rpcresults</span><span
540 class="method-args">(result, flags = {})</span>
541 <span class="method-click-advice">click to toggle source</span>
545 <div class="method-description">
548 Backward compatible display block for results without a <a
549 href="../DDL.html">DDL</a>
554 <div class="method-source-code"
555 id="old-rpcresults-source">
557 <span class="ruby-comment cmt"># File lib/mcollective/rpc/helpers.rb, line 202</span>
558 202: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">old_rpcresults</span>(<span class="ruby-identifier">result</span>, <span class="ruby-identifier">flags</span> = {})
559 203: <span class="ruby-identifier">result_text</span> = <span class="ruby-value str">""</span>
561 205: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">flags</span>[<span class="ruby-identifier">:flatten</span>]
562 206: <span class="ruby-identifier">result</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
563 207: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">r</span>[<span class="ruby-identifier">:statuscode</span>] <span class="ruby-operator"><=</span> <span class="ruby-value">1</span>
564 208: <span class="ruby-identifier">data</span> = <span class="ruby-identifier">r</span>[<span class="ruby-identifier">:data</span>]
566 210: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">data</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)
567 211: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">data</span>.<span class="ruby-identifier">pretty_inspect</span>
568 212: <span class="ruby-keyword kw">else</span>
569 213: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">data</span>
570 214: <span class="ruby-keyword kw">end</span>
571 215: <span class="ruby-keyword kw">else</span>
572 216: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">r</span>.<span class="ruby-identifier">pretty_inspect</span>
573 217: <span class="ruby-keyword kw">end</span>
574 218: <span class="ruby-keyword kw">end</span>
576 220: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">""</span>
577 221: <span class="ruby-keyword kw">else</span>
578 222: [<span class="ruby-identifier">result</span>].<span class="ruby-identifier">flatten</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
580 224: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">flags</span>[<span class="ruby-identifier">:verbose</span>]
581 225: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"%-40s: %s\n"</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">r</span>[<span class="ruby-identifier">:sender</span>], <span class="ruby-identifier">r</span>[<span class="ruby-identifier">:statusmsg</span>]]
583 227: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">r</span>[<span class="ruby-identifier">:statuscode</span>] <span class="ruby-operator"><=</span> <span class="ruby-value">1</span>
584 228: <span class="ruby-identifier">r</span>[<span class="ruby-identifier">:data</span>].<span class="ruby-identifier">pretty_inspect</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">"\n"</span>).<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span> <span class="ruby-identifier">result_text</span> <span class="ruby-operator">+=</span> <span class="ruby-node">" #{m}"</span>}
585 229: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"\n\n"</span>
586 230: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">r</span>[<span class="ruby-identifier">:statuscode</span>] <span class="ruby-operator">==</span> <span class="ruby-value">2</span>
587 231: <span class="ruby-comment cmt"># dont print anything, no useful data to display</span>
588 232: <span class="ruby-comment cmt"># past what was already shown</span>
589 233: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">r</span>[<span class="ruby-identifier">:statuscode</span>] <span class="ruby-operator">==</span> <span class="ruby-value">3</span>
590 234: <span class="ruby-comment cmt"># dont print anything, no useful data to display</span>
591 235: <span class="ruby-comment cmt"># past what was already shown</span>
592 236: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">r</span>[<span class="ruby-identifier">:statuscode</span>] <span class="ruby-operator">==</span> <span class="ruby-value">4</span>
593 237: <span class="ruby-comment cmt"># dont print anything, no useful data to display</span>
594 238: <span class="ruby-comment cmt"># past what was already shown</span>
595 239: <span class="ruby-keyword kw">else</span>
596 240: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-node">" #{r[:statusmsg]}"</span>
597 241: <span class="ruby-keyword kw">end</span>
598 242: <span class="ruby-keyword kw">else</span>
599 243: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">r</span>[<span class="ruby-identifier">:statuscode</span>] <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
600 244: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"%-40s %s\n"</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">r</span>[<span class="ruby-identifier">:sender</span>], <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:red</span>, <span class="ruby-identifier">r</span>[<span class="ruby-identifier">:statusmsg</span>])]
601 245: <span class="ruby-keyword kw">end</span>
602 246: <span class="ruby-keyword kw">end</span>
603 247: <span class="ruby-keyword kw">end</span>
604 248: <span class="ruby-keyword kw">end</span>
606 250: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">""</span>
607 251: <span class="ruby-keyword kw">end</span></pre>
616 <div id="rpcresults-method" class="method-detail ">
617 <a name="M000444"></a>
619 <div class="method-heading">
621 <span class="method-name">rpcresults</span><span
622 class="method-args">(result, flags = {})</span>
623 <span class="method-click-advice">click to toggle source</span>
627 <div class="method-description">
630 Returns a blob of text representing the results in a standard way
633 It tries hard to do sane things so you often should not need to write your
634 own display functions
637 If the agent you are getting results for has a <a
638 href="../DDL.html">DDL</a> it will use the hints in there to do the right
639 thing specifically it will look at the values of display in the <a
640 href="../DDL.html">DDL</a> to choose when to show results
643 If you do not have a <a href="../DDL.html">DDL</a> you can pass these
647 printrpc exim.mailq, :flatten => true
648 printrpc exim.mailq, :verbose => true
651 If you’ve asked it to flatten the result it will not print sender
652 hostnames, it will just print the result as if it’s one huge result,
653 handy for things like showing a combined mailq.
658 <div class="method-source-code"
659 id="rpcresults-source">
661 <span class="ruby-comment cmt"># File lib/mcollective/rpc/helpers.rb, line 54</span>
662 54: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">rpcresults</span>(<span class="ruby-identifier">result</span>, <span class="ruby-identifier">flags</span> = {})
663 55: <span class="ruby-identifier">flags</span> = {<span class="ruby-identifier">:verbose</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">:flatten</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">:format</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">:console</span>, <span class="ruby-identifier">:force_display_mode</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">false</span>}.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">flags</span>)
665 57: <span class="ruby-identifier">result_text</span> = <span class="ruby-value str">""</span>
666 58: <span class="ruby-identifier">ddl</span> = <span class="ruby-keyword kw">nil</span>
668 60: <span class="ruby-comment cmt"># if running in verbose mode, just use the old style print</span>
669 61: <span class="ruby-comment cmt"># no need for all the DDL helpers obfuscating the result</span>
670 62: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">flags</span>[<span class="ruby-identifier">:format</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">:json</span>
671 63: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">STDOUT</span>.<span class="ruby-identifier">tty?</span>
672 64: <span class="ruby-identifier">result_text</span> = <span class="ruby-constant">JSON</span>.<span class="ruby-identifier">pretty_generate</span>(<span class="ruby-identifier">result</span>)
673 65: <span class="ruby-keyword kw">else</span>
674 66: <span class="ruby-identifier">result_text</span> = <span class="ruby-identifier">result</span>.<span class="ruby-identifier">to_json</span>
675 67: <span class="ruby-keyword kw">end</span>
676 68: <span class="ruby-keyword kw">else</span>
677 69: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">flags</span>[<span class="ruby-identifier">:verbose</span>]
678 70: <span class="ruby-identifier">result_text</span> = <span class="ruby-identifier">old_rpcresults</span>(<span class="ruby-identifier">result</span>, <span class="ruby-identifier">flags</span>)
679 71: <span class="ruby-keyword kw">else</span>
680 72: [<span class="ruby-identifier">result</span>].<span class="ruby-identifier">flatten</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
681 73: <span class="ruby-keyword kw">begin</span>
682 74: <span class="ruby-identifier">ddl</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">DDL</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">r</span>.<span class="ruby-identifier">agent</span>).<span class="ruby-identifier">action_interface</span>(<span class="ruby-identifier">r</span>.<span class="ruby-identifier">action</span>.<span class="ruby-identifier">to_s</span>)
684 76: <span class="ruby-identifier">sender</span> = <span class="ruby-identifier">r</span>[<span class="ruby-identifier">:sender</span>]
685 77: <span class="ruby-identifier">status</span> = <span class="ruby-identifier">r</span>[<span class="ruby-identifier">:statuscode</span>]
686 78: <span class="ruby-identifier">message</span> = <span class="ruby-identifier">r</span>[<span class="ruby-identifier">:statusmsg</span>]
687 79: <span class="ruby-identifier">result</span> = <span class="ruby-identifier">r</span>[<span class="ruby-identifier">:data</span>]
689 81: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">flags</span>[<span class="ruby-identifier">:force_display_mode</span>]
690 82: <span class="ruby-identifier">display</span> = <span class="ruby-identifier">flags</span>[<span class="ruby-identifier">:force_display_mode</span>]
691 83: <span class="ruby-keyword kw">else</span>
692 84: <span class="ruby-identifier">display</span> = <span class="ruby-identifier">ddl</span>[<span class="ruby-identifier">:display</span>]
693 85: <span class="ruby-keyword kw">end</span>
695 87: <span class="ruby-comment cmt"># appand the results only according to what the DDL says</span>
696 88: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">display</span>
697 89: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:ok</span>
698 90: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">status</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
699 91: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">text_for_result</span>(<span class="ruby-identifier">sender</span>, <span class="ruby-identifier">status</span>, <span class="ruby-identifier">message</span>, <span class="ruby-identifier">result</span>, <span class="ruby-identifier">ddl</span>)
700 92: <span class="ruby-keyword kw">end</span>
702 94: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:failed</span>
703 95: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">status</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
704 96: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">text_for_result</span>(<span class="ruby-identifier">sender</span>, <span class="ruby-identifier">status</span>, <span class="ruby-identifier">message</span>, <span class="ruby-identifier">result</span>, <span class="ruby-identifier">ddl</span>)
705 97: <span class="ruby-keyword kw">end</span>
707 99: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:always</span>
708 100: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">text_for_result</span>(<span class="ruby-identifier">sender</span>, <span class="ruby-identifier">status</span>, <span class="ruby-identifier">message</span>, <span class="ruby-identifier">result</span>, <span class="ruby-identifier">ddl</span>)
710 102: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:flatten</span>
711 103: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">text_for_flattened_result</span>(<span class="ruby-identifier">status</span>, <span class="ruby-identifier">result</span>)
713 105: <span class="ruby-keyword kw">end</span>
714 106: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">e</span>
715 107: <span class="ruby-comment cmt"># no DDL so just do the old style print unchanged for</span>
716 108: <span class="ruby-comment cmt"># backward compat</span>
717 109: <span class="ruby-identifier">result_text</span> = <span class="ruby-identifier">old_rpcresults</span>(<span class="ruby-identifier">result</span>, <span class="ruby-identifier">flags</span>)
718 110: <span class="ruby-keyword kw">end</span>
719 111: <span class="ruby-keyword kw">end</span>
720 112: <span class="ruby-keyword kw">end</span>
721 113: <span class="ruby-keyword kw">end</span>
723 115: <span class="ruby-identifier">result_text</span>
724 116: <span class="ruby-keyword kw">end</span></pre>
733 <div id="text-for-flattened-result-method" class="method-detail ">
734 <a name="M000450"></a>
736 <div class="method-heading">
738 <span class="method-name">text_for_flattened_result</span><span
739 class="method-args">(status, result)</span>
740 <span class="method-click-advice">click to toggle source</span>
744 <div class="method-description">
747 Returns text representing a flattened result of only good data
752 <div class="method-source-code"
753 id="text-for-flattened-result-source">
755 <span class="ruby-comment cmt"># File lib/mcollective/rpc/helpers.rb, line 189</span>
756 189: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">text_for_flattened_result</span>(<span class="ruby-identifier">status</span>, <span class="ruby-identifier">result</span>)
757 190: <span class="ruby-identifier">result_text</span> = <span class="ruby-value str">""</span>
759 192: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">status</span> <span class="ruby-operator"><=</span> <span class="ruby-value">1</span>
760 193: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)
761 194: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">pretty_inspect</span>
762 195: <span class="ruby-keyword kw">else</span>
763 196: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">result</span>
764 197: <span class="ruby-keyword kw">end</span>
765 198: <span class="ruby-keyword kw">end</span>
766 199: <span class="ruby-keyword kw">end</span></pre>
775 <div id="text-for-result-method" class="method-detail ">
776 <a name="M000445"></a>
778 <div class="method-heading">
780 <span class="method-name">text_for_result</span><span
781 class="method-args">(sender, status, msg, result, ddl)</span>
782 <span class="method-click-advice">click to toggle source</span>
786 <div class="method-description">
789 Return text representing a result
794 <div class="method-source-code"
795 id="text-for-result-source">
797 <span class="ruby-comment cmt"># File lib/mcollective/rpc/helpers.rb, line 119</span>
798 119: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">text_for_result</span>(<span class="ruby-identifier">sender</span>, <span class="ruby-identifier">status</span>, <span class="ruby-identifier">msg</span>, <span class="ruby-identifier">result</span>, <span class="ruby-identifier">ddl</span>)
799 120: <span class="ruby-identifier">statusses</span> = [<span class="ruby-value str">""</span>,
800 121: <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:red</span>, <span class="ruby-value str">"Request Aborted"</span>),
801 122: <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:yellow</span>, <span class="ruby-value str">"Unknown Action"</span>),
802 123: <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:yellow</span>, <span class="ruby-value str">"Missing Request Data"</span>),
803 124: <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:yellow</span>, <span class="ruby-value str">"Invalid Request Data"</span>),
804 125: <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:red</span>, <span class="ruby-value str">"Unknown Request Status"</span>)]
806 127: <span class="ruby-identifier">result_text</span> = <span class="ruby-value str">"%-40s %s\n"</span> <span class="ruby-operator">%</span> [<span class="ruby-identifier">sender</span>, <span class="ruby-identifier">statusses</span>[<span class="ruby-identifier">status</span>]]
807 128: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">" %s\n"</span> <span class="ruby-operator">%</span> [<span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:yellow</span>, <span class="ruby-identifier">msg</span>)] <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">msg</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"OK"</span>
809 130: <span class="ruby-comment cmt"># only print good data, ignore data that results from failure</span>
810 131: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">status</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
811 132: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>)
812 133: <span class="ruby-comment cmt"># figure out the lengths of the display as strings, we'll use</span>
813 134: <span class="ruby-comment cmt"># it later to correctly justify the output</span>
814 135: <span class="ruby-identifier">lengths</span> = <span class="ruby-identifier">result</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span>
815 136: <span class="ruby-keyword kw">begin</span>
816 137: <span class="ruby-identifier">ddl</span>[<span class="ruby-identifier">:output</span>][<span class="ruby-identifier">k</span>][<span class="ruby-identifier">:display_as</span>].<span class="ruby-identifier">size</span>
817 138: <span class="ruby-keyword kw">rescue</span>
818 139: <span class="ruby-identifier">k</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span>
819 140: <span class="ruby-keyword kw">end</span>
820 141: <span class="ruby-keyword kw">end</span>
822 143: <span class="ruby-identifier">result</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">sort_by</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span> <span class="ruby-identifier">k</span>}.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span>
823 144: <span class="ruby-comment cmt"># get all the output fields nicely lined up with a</span>
824 145: <span class="ruby-comment cmt"># 3 space front padding</span>
825 146: <span class="ruby-keyword kw">begin</span>
826 147: <span class="ruby-identifier">display_as</span> = <span class="ruby-identifier">ddl</span>[<span class="ruby-identifier">:output</span>][<span class="ruby-identifier">k</span>][<span class="ruby-identifier">:display_as</span>]
827 148: <span class="ruby-keyword kw">rescue</span>
828 149: <span class="ruby-identifier">display_as</span> = <span class="ruby-identifier">k</span>.<span class="ruby-identifier">to_s</span>
829 150: <span class="ruby-keyword kw">end</span>
831 152: <span class="ruby-identifier">display_length</span> = <span class="ruby-identifier">display_as</span>.<span class="ruby-identifier">size</span>
832 153: <span class="ruby-identifier">padding</span> = <span class="ruby-identifier">lengths</span>.<span class="ruby-identifier">max</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">display_length</span> <span class="ruby-operator">+</span> <span class="ruby-value">3</span>
833 154: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">" "</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">padding</span>
835 156: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"#{display_as}:"</span>
837 158: <span class="ruby-keyword kw">if</span> [<span class="ruby-constant">String</span>, <span class="ruby-constant">Numeric</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">result</span>[<span class="ruby-identifier">k</span>].<span class="ruby-identifier">class</span>)
838 159: <span class="ruby-identifier">lines</span> = <span class="ruby-identifier">result</span>[<span class="ruby-identifier">k</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">"\n"</span>)
840 161: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lines</span>.<span class="ruby-identifier">empty?</span>
841 162: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"\n"</span>
842 163: <span class="ruby-keyword kw">else</span>
843 164: <span class="ruby-identifier">lines</span>.<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span>, <span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
844 165: <span class="ruby-identifier">i</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">padtxt</span> = <span class="ruby-value str">" "</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">padtxt</span> = <span class="ruby-value str">" "</span> <span class="ruby-operator">*</span> (<span class="ruby-identifier">padding</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">display_length</span> <span class="ruby-operator">+</span> <span class="ruby-value">2</span>)
846 167: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"#{padtxt}#{line}\n"</span>
847 168: <span class="ruby-keyword kw">end</span>
848 169: <span class="ruby-keyword kw">end</span>
849 170: <span class="ruby-keyword kw">else</span>
850 171: <span class="ruby-identifier">padding</span> = <span class="ruby-value str">" "</span> <span class="ruby-operator">*</span> (<span class="ruby-identifier">lengths</span>.<span class="ruby-identifier">max</span> <span class="ruby-operator">+</span> <span class="ruby-value">5</span>)
851 172: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">" "</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">result</span>[<span class="ruby-identifier">k</span>].<span class="ruby-identifier">pretty_inspect</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">"\n"</span>).<span class="ruby-identifier">join</span>(<span class="ruby-value str">"\n"</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">padding</span>) <span class="ruby-operator"><<</span> <span class="ruby-value str">"\n"</span>
852 173: <span class="ruby-keyword kw">end</span>
853 174: <span class="ruby-keyword kw">end</span>
854 175: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">status</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
855 176: <span class="ruby-comment cmt"># for status 1 we dont want to show half baked</span>
856 177: <span class="ruby-comment cmt"># data by default since the DDL will supply all the defaults</span>
857 178: <span class="ruby-comment cmt"># it just doesnt look right</span>
858 179: <span class="ruby-keyword kw">else</span>
859 180: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"\n\t"</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">pretty_inspect</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">"\n"</span>).<span class="ruby-identifier">join</span>(<span class="ruby-value str">"\n\t"</span>)
860 181: <span class="ruby-keyword kw">end</span>
861 182: <span class="ruby-keyword kw">end</span>
863 184: <span class="ruby-identifier">result_text</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"\n"</span>
864 185: <span class="ruby-identifier">result_text</span>
865 186: <span class="ruby-keyword kw">end</span></pre>
880 <div id="rdoc-debugging-section-dump" class="debugging-section">
882 <p>Disabled; run with --debug to generate this.</p>
886 <div id="validator-badges">
887 <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
888 <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
889 Rdoc Generator</a> 1.1.6</small>.</p>