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::Application</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/application_rb.html?TB_iframe=true&height=550&width=785"
32 class="thickbox" title="lib/mcollective/application.rb">lib/mcollective/application.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="#M000003">::[]</a></li>
64 <li><a href="#M000002">::[]=</a></li>
66 <li><a href="#M000001">::application_options</a></li>
68 <li><a href="#M000004">::description</a></li>
70 <li><a href="#M000006">::exclude_argument_sections</a></li>
72 <li><a href="#M000008">::intialize_application_options</a></li>
74 <li><a href="#M000007">::option</a></li>
76 <li><a href="#M000005">::usage</a></li>
78 <li><a href="#M000018">#application_cli_arguments</a></li>
80 <li><a href="#M000016">#application_description</a></li>
82 <li><a href="#M000019">#application_failure</a></li>
84 <li><a href="#M000015">#application_options</a></li>
86 <li><a href="#M000013">#application_parse_options</a></li>
88 <li><a href="#M000017">#application_usage</a></li>
90 <li><a href="#M000012">#clioptions</a></li>
92 <li><a href="#M000009">#configuration</a></li>
94 <li><a href="#M000025">#disconnect</a></li>
96 <li><a href="#M000029">#halt</a></li>
98 <li><a href="#M000027">#halt_code</a></li>
100 <li><a href="#M000022">#help</a></li>
102 <li><a href="#M000026">#main</a></li>
104 <li><a href="#M000010">#options</a></li>
106 <li><a href="#M000030">#rpcclient</a></li>
108 <li><a href="#M000023">#run</a></li>
110 <li><a href="#M000014">#validate_cli_options</a></li>
112 <li><a href="#M000011">#validate_option</a></li>
118 <!-- Included Modules -->
120 <div id="includes-section" class="section">
121 <h3 class="section-header">Included Modules</h3>
122 <ul class="link-list">
125 <li><a class="include" href="Validator.html">MCollective::Validator</a></li>
133 <div id="project-metadata">
136 <div id="fileindex-section" class="section project-section">
137 <h3 class="section-header">Files</h3>
140 <li class="file"><a href="../COPYING.html">COPYING</a></li>
142 <li class="file"><a href="../Gemfile.html">Gemfile</a></li>
144 <li class="file"><a href="../README.html">README</a></li>
146 <li class="file"><a href="../Rakefile.html">Rakefile</a></li>
148 <li class="file"><a href="../etc/client_cfg_dist.html">client.cfg.dist</a></li>
150 <li class="file"><a href="../etc/data-help_erb.html">data-help.erb</a></li>
152 <li class="file"><a href="../etc/discovery-help_erb.html">discovery-help.erb</a></li>
154 <li class="file"><a href="../etc/facts_yaml_dist.html">facts.yaml.dist</a></li>
156 <li class="file"><a href="../etc/metadata-help_erb.html">metadata-help.erb</a></li>
158 <li class="file"><a href="../etc/msg-help_erb.html">msg-help.erb</a></li>
160 <li class="file"><a href="../etc/rpc-help_erb.html">rpc-help.erb</a></li>
162 <li class="file"><a href="../etc/server_cfg_dist.html">server.cfg.dist</a></li>
164 <li class="file"><a href="../etc/ssl/PLACEHOLDER.html">PLACEHOLDER</a></li>
166 <li class="file"><a href="../etc/ssl/clients/PLACEHOLDER.html">PLACEHOLDER</a></li>
168 <li class="file"><a href="../lib/mcollective/generators/templates/action_snippet_erb.html">action_snippet.erb</a></li>
170 <li class="file"><a href="../lib/mcollective/generators/templates/data_input_snippet_erb.html">data_input_snippet.erb</a></li>
172 <li class="file"><a href="../lib/mcollective/generators/templates/ddl_erb.html">ddl.erb</a></li>
174 <li class="file"><a href="../lib/mcollective/generators/templates/plugin_erb.html">plugin.erb</a></li>
176 <li class="file"><a href="../lib/mcollective/locales/en_yml.html">en.yml</a></li>
178 <li class="file"><a href="../mcollective_init.html">mcollective.init</a></li>
184 <div id="classindex-section" class="section project-section">
185 <h3 class="section-header">Class Index
186 <span class="search-toggle"><img src="../images/find.png"
187 height="16" width="16" alt="[+]"
188 title="show/hide quicksearch" /></span></h3>
189 <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
191 <legend>Quicksearch</legend>
192 <input type="text" name="quicksearch" value=""
193 class="quicksearch-field" />
197 <ul class="link-list">
199 <li><a href="../MCollective.html">MCollective</a></li>
201 <li><a href="../MCollective/Agent.html">MCollective::Agent</a></li>
203 <li><a href="../MCollective/Agents.html">MCollective::Agents</a></li>
205 <li><a href="../MCollective/Aggregate.html">MCollective::Aggregate</a></li>
207 <li><a href="../MCollective/Aggregate/Base.html">MCollective::Aggregate::Base</a></li>
209 <li><a href="../MCollective/Aggregate/Result.html">MCollective::Aggregate::Result</a></li>
211 <li><a href="../MCollective/Aggregate/Result/Base.html">MCollective::Aggregate::Result::Base</a></li>
213 <li><a href="../MCollective/Aggregate/Result/CollectionResult.html">MCollective::Aggregate::Result::CollectionResult</a></li>
215 <li><a href="../MCollective/Aggregate/Result/NumericResult.html">MCollective::Aggregate::Result::NumericResult</a></li>
217 <li><a href="../MCollective/Application.html">MCollective::Application</a></li>
219 <li><a href="../MCollective/Applications.html">MCollective::Applications</a></li>
221 <li><a href="../MCollective/Cache.html">MCollective::Cache</a></li>
223 <li><a href="../MCollective/Client.html">MCollective::Client</a></li>
225 <li><a href="../MCollective/CodedError.html">MCollective::CodedError</a></li>
227 <li><a href="../MCollective/Config.html">MCollective::Config</a></li>
229 <li><a href="../MCollective/Connector.html">MCollective::Connector</a></li>
231 <li><a href="../MCollective/Connector/Base.html">MCollective::Connector::Base</a></li>
233 <li><a href="../MCollective/DDL.html">MCollective::DDL</a></li>
235 <li><a href="../MCollective/DDL/AgentDDL.html">MCollective::DDL::AgentDDL</a></li>
237 <li><a href="../MCollective/DDL/Base.html">MCollective::DDL::Base</a></li>
239 <li><a href="../MCollective/DDL/DataDDL.html">MCollective::DDL::DataDDL</a></li>
241 <li><a href="../MCollective/DDL/DiscoveryDDL.html">MCollective::DDL::DiscoveryDDL</a></li>
243 <li><a href="../MCollective/DDL/ValidatorDDL.html">MCollective::DDL::ValidatorDDL</a></li>
245 <li><a href="../MCollective/DDLValidationError.html">MCollective::DDLValidationError</a></li>
247 <li><a href="../MCollective/Data.html">MCollective::Data</a></li>
249 <li><a href="../MCollective/Data/Base.html">MCollective::Data::Base</a></li>
251 <li><a href="../MCollective/Data/Result.html">MCollective::Data::Result</a></li>
253 <li><a href="../MCollective/Discovery.html">MCollective::Discovery</a></li>
255 <li><a href="../MCollective/Facts.html">MCollective::Facts</a></li>
257 <li><a href="../MCollective/Facts/Base.html">MCollective::Facts::Base</a></li>
259 <li><a href="../MCollective/Generators.html">MCollective::Generators</a></li>
261 <li><a href="../MCollective/Generators/AgentGenerator.html">MCollective::Generators::AgentGenerator</a></li>
263 <li><a href="../MCollective/Generators/Base.html">MCollective::Generators::Base</a></li>
265 <li><a href="../MCollective/Generators/DataGenerator.html">MCollective::Generators::DataGenerator</a></li>
267 <li><a href="../MCollective/InvalidRPCData.html">MCollective::InvalidRPCData</a></li>
269 <li><a href="../MCollective/Log.html">MCollective::Log</a></li>
271 <li><a href="../MCollective/Logger.html">MCollective::Logger</a></li>
273 <li><a href="../MCollective/Logger/Base.html">MCollective::Logger::Base</a></li>
275 <li><a href="../MCollective/Logger/Console_logger.html">MCollective::Logger::Console_logger</a></li>
277 <li><a href="../MCollective/Logger/File_logger.html">MCollective::Logger::File_logger</a></li>
279 <li><a href="../MCollective/Logger/Syslog_logger.html">MCollective::Logger::Syslog_logger</a></li>
281 <li><a href="../MCollective/Matcher.html">MCollective::Matcher</a></li>
283 <li><a href="../MCollective/Matcher/Parser.html">MCollective::Matcher::Parser</a></li>
285 <li><a href="../MCollective/Matcher/Scanner.html">MCollective::Matcher::Scanner</a></li>
287 <li><a href="../MCollective/Message.html">MCollective::Message</a></li>
289 <li><a href="../MCollective/MissingRPCData.html">MCollective::MissingRPCData</a></li>
291 <li><a href="../MCollective/MsgDoesNotMatchRequestID.html">MCollective::MsgDoesNotMatchRequestID</a></li>
293 <li><a href="../MCollective/MsgTTLExpired.html">MCollective::MsgTTLExpired</a></li>
295 <li><a href="../MCollective/NotTargettedAtUs.html">MCollective::NotTargettedAtUs</a></li>
297 <li><a href="../MCollective/Optionparser.html">MCollective::Optionparser</a></li>
299 <li><a href="../MCollective/PluginManager.html">MCollective::PluginManager</a></li>
301 <li><a href="../MCollective/PluginPackager.html">MCollective::PluginPackager</a></li>
303 <li><a href="../MCollective/PluginPackager/AgentDefinition.html">MCollective::PluginPackager::AgentDefinition</a></li>
305 <li><a href="../MCollective/PluginPackager/StandardDefinition.html">MCollective::PluginPackager::StandardDefinition</a></li>
307 <li><a href="../MCollective/RPC.html">MCollective::RPC</a></li>
309 <li><a href="../MCollective/RPC/ActionRunner.html">MCollective::RPC::ActionRunner</a></li>
311 <li><a href="../MCollective/RPC/Agent.html">MCollective::RPC::Agent</a></li>
313 <li><a href="../MCollective/RPC/Audit.html">MCollective::RPC::Audit</a></li>
315 <li><a href="../MCollective/RPC/Client.html">MCollective::RPC::Client</a></li>
317 <li><a href="../MCollective/RPC/Helpers.html">MCollective::RPC::Helpers</a></li>
319 <li><a href="../MCollective/RPC/Progress.html">MCollective::RPC::Progress</a></li>
321 <li><a href="../MCollective/RPC/Reply.html">MCollective::RPC::Reply</a></li>
323 <li><a href="../MCollective/RPC/Request.html">MCollective::RPC::Request</a></li>
325 <li><a href="../MCollective/RPC/Result.html">MCollective::RPC::Result</a></li>
327 <li><a href="../MCollective/RPC/Stats.html">MCollective::RPC::Stats</a></li>
329 <li><a href="../MCollective/RPCAborted.html">MCollective::RPCAborted</a></li>
331 <li><a href="../MCollective/RPCError.html">MCollective::RPCError</a></li>
333 <li><a href="../MCollective/Registration.html">MCollective::Registration</a></li>
335 <li><a href="../MCollective/Registration/Base.html">MCollective::Registration::Base</a></li>
337 <li><a href="../MCollective/Runner.html">MCollective::Runner</a></li>
339 <li><a href="../MCollective/RunnerStats.html">MCollective::RunnerStats</a></li>
341 <li><a href="../MCollective/SSL.html">MCollective::SSL</a></li>
343 <li><a href="../MCollective/Security.html">MCollective::Security</a></li>
345 <li><a href="../MCollective/Security/Base.html">MCollective::Security::Base</a></li>
347 <li><a href="../MCollective/SecurityValidationFailed.html">MCollective::SecurityValidationFailed</a></li>
349 <li><a href="../MCollective/Shell.html">MCollective::Shell</a></li>
351 <li><a href="../MCollective/Translatable.html">MCollective::Translatable</a></li>
353 <li><a href="../MCollective/UnixDaemon.html">MCollective::UnixDaemon</a></li>
355 <li><a href="../MCollective/UnknownRPCAction.html">MCollective::UnknownRPCAction</a></li>
357 <li><a href="../MCollective/UnknownRPCError.html">MCollective::UnknownRPCError</a></li>
359 <li><a href="../MCollective/Util.html">MCollective::Util</a></li>
361 <li><a href="../MCollective/Validator.html">MCollective::Validator</a></li>
363 <li><a href="../MCollective/ValidatorError.html">MCollective::ValidatorError</a></li>
365 <li><a href="../MCollective/WindowsDaemon.html">MCollective::WindowsDaemon</a></li>
367 <li><a href="../Array.html">Array</a></li>
369 <li><a href="../Dir.html">Dir</a></li>
371 <li><a href="../Object.html">Object</a></li>
373 <li><a href="../String.html">String</a></li>
375 <li><a href="../Symbol.html">Symbol</a></li>
378 <div id="no-class-search-results" style="display: none;">No matching classes.</div>
385 <div id="documentation">
386 <h1 class="class">MCollective::Application</h1>
388 <div id="description">
400 <div id="public-class-method-details" class="method-section section">
401 <h3 class="section-header">Public Class Methods</h3>
404 <div id="--method" class="method-detail ">
405 <a name="M000003"></a>
407 <div class="method-heading">
409 <span class="method-name">[]</span><span
410 class="method-args">(option)</span>
411 <span class="method-click-advice">click to toggle source</span>
415 <div class="method-description">
418 retrieves a specific option
423 <div class="method-source-code"
426 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 20</span>
427 20: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">option</span>)
428 21: <span class="ruby-identifier">intialize_application_options</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@application_options</span>
429 22: <span class="ruby-ivar">@application_options</span>[<span class="ruby-identifier">option</span>]
430 23: <span class="ruby-keyword kw">end</span></pre>
439 <div id="--method" class="method-detail ">
440 <a name="M000002"></a>
442 <div class="method-heading">
444 <span class="method-name">[]=</span><span
445 class="method-args">(option, value)</span>
446 <span class="method-click-advice">click to toggle source</span>
450 <div class="method-description">
453 set an option in the options hash
458 <div class="method-source-code"
461 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 14</span>
462 14: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]=</span>(<span class="ruby-identifier">option</span>, <span class="ruby-identifier">value</span>)
463 15: <span class="ruby-identifier">intialize_application_options</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@application_options</span>
464 16: <span class="ruby-ivar">@application_options</span>[<span class="ruby-identifier">option</span>] = <span class="ruby-identifier">value</span>
465 17: <span class="ruby-keyword kw">end</span></pre>
474 <div id="application-options-method" class="method-detail ">
475 <a name="M000001"></a>
477 <div class="method-heading">
479 <span class="method-name">application_options</span><span
480 class="method-args">()</span>
481 <span class="method-click-advice">click to toggle source</span>
485 <div class="method-description">
488 Intialize a blank set of options if its the first time used else returns
494 <div class="method-source-code"
495 id="application-options-source">
497 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 8</span>
498 8: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">application_options</span>
499 9: <span class="ruby-identifier">intialize_application_options</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@application_options</span>
500 10: <span class="ruby-ivar">@application_options</span>
501 11: <span class="ruby-keyword kw">end</span></pre>
510 <div id="description-method" class="method-detail ">
511 <a name="M000004"></a>
513 <div class="method-heading">
515 <span class="method-name">description</span><span
516 class="method-args">(descr)</span>
517 <span class="method-click-advice">click to toggle source</span>
521 <div class="method-description">
524 Sets the application description, there can be only one description per
525 application so multiple calls will just change the description
530 <div class="method-source-code"
531 id="description-source">
533 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 28</span>
534 28: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">description</span>(<span class="ruby-identifier">descr</span>)
535 29: <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">:description</span>] = <span class="ruby-identifier">descr</span>
536 30: <span class="ruby-keyword kw">end</span></pre>
545 <div id="exclude-argument-sections-method" class="method-detail ">
546 <a name="M000006"></a>
548 <div class="method-heading">
550 <span class="method-name">exclude_argument_sections</span><span
551 class="method-args">(*sections)</span>
552 <span class="method-click-advice">click to toggle source</span>
556 <div class="method-description">
558 <p class="missing-docs">(Not documented)</p>
562 <div class="method-source-code"
563 id="exclude-argument-sections-source">
565 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 38</span>
566 38: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">exclude_argument_sections</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">sections</span>)
567 39: <span class="ruby-identifier">sections</span> = [<span class="ruby-identifier">sections</span>].<span class="ruby-identifier">flatten</span>
569 41: <span class="ruby-identifier">sections</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
570 42: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Unknown CLI argument section #{s}"</span> <span class="ruby-keyword kw">unless</span> [<span class="ruby-value str">"rpc"</span>, <span class="ruby-value str">"common"</span>, <span class="ruby-value str">"filter"</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">s</span>)
571 43: <span class="ruby-keyword kw">end</span>
573 45: <span class="ruby-identifier">intialize_application_options</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@application_options</span>
574 46: <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">:exclude_arg_sections</span>] = <span class="ruby-identifier">sections</span>
575 47: <span class="ruby-keyword kw">end</span></pre>
584 <div id="intialize-application-options-method" class="method-detail ">
585 <a name="M000008"></a>
587 <div class="method-heading">
589 <span class="method-name">intialize_application_options</span><span
590 class="method-args">()</span>
591 <span class="method-click-advice">click to toggle source</span>
595 <div class="method-description">
598 Creates an empty set of options
603 <div class="method-source-code"
604 id="intialize-application-options-source">
606 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 79</span>
607 79: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">intialize_application_options</span>
608 80: <span class="ruby-ivar">@application_options</span> = {<span class="ruby-identifier">:description</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">nil</span>,
609 81: <span class="ruby-identifier">:usage</span> =<span class="ruby-operator">></span> [],
610 82: <span class="ruby-identifier">:cli_arguments</span> =<span class="ruby-operator">></span> [],
611 83: <span class="ruby-identifier">:exclude_arg_sections</span> =<span class="ruby-operator">></span> []}
612 84: <span class="ruby-keyword kw">end</span></pre>
621 <div id="option-method" class="method-detail ">
622 <a name="M000007"></a>
624 <div class="method-heading">
626 <span class="method-name">option</span><span
627 class="method-args">(name, arguments)</span>
628 <span class="method-click-advice">click to toggle source</span>
632 <div class="method-description">
635 Wrapper to create command line options
638 - name: varaible name that will be used to access the option value
639 - description: textual info shown in --help
640 - arguments: a list of possible arguments that can be used
641 to activate this option
642 - type: a data type that ObjectParser understand of :bool or :array
643 - required: true or false if this option has to be supplied
644 - validate: a proc that will be called with the value used to validate
648 :description => "The foo option"
649 :arguments => ["--foo ARG"]
652 after this the value supplied will be in configuration[:foo]
657 <div class="method-source-code"
660 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 65</span>
661 65: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">option</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">arguments</span>)
662 66: <span class="ruby-identifier">opt</span> = {<span class="ruby-identifier">:name</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">name</span>,
663 67: <span class="ruby-identifier">:description</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">nil</span>,
664 68: <span class="ruby-identifier">:arguments</span> =<span class="ruby-operator">></span> [],
665 69: <span class="ruby-identifier">:type</span> =<span class="ruby-operator">></span> <span class="ruby-constant">String</span>,
666 70: <span class="ruby-identifier">:required</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">false</span>,
667 71: <span class="ruby-identifier">:validate</span> =<span class="ruby-operator">></span> <span class="ruby-constant">Proc</span>.<span class="ruby-identifier">new</span> { <span class="ruby-keyword kw">true</span> }}
669 73: <span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">each_pair</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">opt</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">v</span>}
671 75: <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">:cli_arguments</span>] <span class="ruby-operator"><<</span> <span class="ruby-identifier">opt</span>
672 76: <span class="ruby-keyword kw">end</span></pre>
681 <div id="usage-method" class="method-detail ">
682 <a name="M000005"></a>
684 <div class="method-heading">
686 <span class="method-name">usage</span><span
687 class="method-args">(usage)</span>
688 <span class="method-click-advice">click to toggle source</span>
692 <div class="method-description">
695 Supplies usage information, calling multiple times will create multiple
696 usage lines in —help output
701 <div class="method-source-code"
704 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 34</span>
705 34: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">usage</span>(<span class="ruby-identifier">usage</span>)
706 35: <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">:usage</span>] <span class="ruby-operator"><<</span> <span class="ruby-identifier">usage</span>
707 36: <span class="ruby-keyword kw">end</span></pre>
718 <div id="public-instance-method-details" class="method-section section">
719 <h3 class="section-header">Public Instance Methods</h3>
722 <div id="application-cli-arguments-method" class="method-detail ">
723 <a name="M000018"></a>
725 <div class="method-heading">
727 <span class="method-name">application_cli_arguments</span><span
728 class="method-args">()</span>
729 <span class="method-click-advice">click to toggle source</span>
733 <div class="method-description">
736 Returns an array of all the arguments built using calls to optin
741 <div class="method-source-code"
742 id="application-cli-arguments-source">
744 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 247</span>
745 247: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">application_cli_arguments</span>
746 248: <span class="ruby-identifier">application_options</span>[<span class="ruby-identifier">:cli_arguments</span>]
747 249: <span class="ruby-keyword kw">end</span></pre>
756 <div id="application-description-method" class="method-detail ">
757 <a name="M000016"></a>
759 <div class="method-heading">
761 <span class="method-name">application_description</span><span
762 class="method-args">()</span>
763 <span class="method-click-advice">click to toggle source</span>
767 <div class="method-description">
770 Retrieve the current application description
775 <div class="method-source-code"
776 id="application-description-source">
778 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 234</span>
779 234: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">application_description</span>
780 235: <span class="ruby-identifier">application_options</span>[<span class="ruby-identifier">:description</span>]
781 236: <span class="ruby-keyword kw">end</span></pre>
790 <div id="application-failure-method" class="method-detail ">
791 <a name="M000019"></a>
793 <div class="method-heading">
795 <span class="method-name">application_failure</span><span
796 class="method-args">(e, err_dest=STDERR)</span>
797 <span class="method-click-advice">click to toggle source</span>
801 <div class="method-description">
804 Handles failure, if we’re far enough in the initialization phase it
805 will log backtraces if its in verbose mode only
810 <div class="method-source-code"
811 id="application-failure-source">
813 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 253</span>
814 253: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">application_failure</span>(<span class="ruby-identifier">e</span>, <span class="ruby-identifier">err_dest</span>=<span class="ruby-constant">STDERR</span>)
815 254: <span class="ruby-comment cmt"># peole can use exit() anywhere and not get nasty backtraces as a result</span>
816 255: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">SystemExit</span>)
817 256: <span class="ruby-identifier">disconnect</span>
818 257: <span class="ruby-identifier">raise</span>(<span class="ruby-identifier">e</span>)
819 258: <span class="ruby-keyword kw">end</span>
821 260: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">CodedError</span>)
822 261: <span class="ruby-identifier">err_dest</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\nThe %s application failed to run: %s: %s\n"</span> <span class="ruby-operator">%</span> [ <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:bold</span>, <span class="ruby-identifier">$0</span>), <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:bold</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">code</span>), <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:red</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">to_s</span>)]
824 263: <span class="ruby-identifier">err_dest</span>.<span class="ruby-identifier">puts</span>
825 264: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:verbose</span>]
826 265: <span class="ruby-identifier">err_dest</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"Use the 'mco doc %s' command for details about this error"</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">code</span>
827 266: <span class="ruby-keyword kw">else</span>
828 267: <span class="ruby-identifier">err_dest</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"Use the 'mco doc %s' command for details about this error, use -v for full error backtrace details"</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">code</span>
829 268: <span class="ruby-keyword kw">end</span>
830 269: <span class="ruby-keyword kw">else</span>
831 270: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:verbose</span>]
832 271: <span class="ruby-identifier">err_dest</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\nThe %s application failed to run: %s\n"</span> <span class="ruby-operator">%</span> [ <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:bold</span>, <span class="ruby-identifier">$0</span>), <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:red</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">to_s</span>)]
833 272: <span class="ruby-keyword kw">else</span>
834 273: <span class="ruby-identifier">err_dest</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\nThe %s application failed to run, use -v for full error backtrace details: %s\n"</span> <span class="ruby-operator">%</span> [ <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:bold</span>, <span class="ruby-identifier">$0</span>), <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:red</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">to_s</span>)]
835 274: <span class="ruby-keyword kw">end</span>
836 275: <span class="ruby-keyword kw">end</span>
838 277: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:verbose</span>]
839 278: <span class="ruby-identifier">e</span>.<span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">first</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:red</span>, <span class="ruby-value str">" <----"</span>)
840 279: <span class="ruby-identifier">err_dest</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\n%s %s"</span> <span class="ruby-operator">%</span> [ <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:red</span>, <span class="ruby-identifier">e</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:bold</span>, <span class="ruby-node">"(#{e.class.to_s})"</span>)]
841 280: <span class="ruby-identifier">e</span>.<span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">each</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">l</span><span class="ruby-operator">|</span> <span class="ruby-identifier">err_dest</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">"\tfrom #{l}"</span>}
842 281: <span class="ruby-keyword kw">end</span>
844 283: <span class="ruby-identifier">disconnect</span>
846 285: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
847 286: <span class="ruby-keyword kw">end</span></pre>
856 <div id="application-options-method" class="method-detail ">
857 <a name="M000015"></a>
859 <div class="method-heading">
861 <span class="method-name">application_options</span><span
862 class="method-args">()</span>
863 <span class="method-click-advice">click to toggle source</span>
867 <div class="method-description">
870 Retrieves the full hash of application options
875 <div class="method-source-code"
876 id="application-options-source">
878 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 229</span>
879 229: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">application_options</span>
880 230: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">application_options</span>
881 231: <span class="ruby-keyword kw">end</span></pre>
890 <div id="application-parse-options-method" class="method-detail ">
891 <a name="M000013"></a>
893 <div class="method-heading">
895 <span class="method-name">application_parse_options</span><span
896 class="method-args">(help=false)</span>
897 <span class="method-click-advice">click to toggle source</span>
901 <div class="method-description">
904 Builds an ObjectParser config, parse the CLI options and validates based on
910 <div class="method-source-code"
911 id="application-parse-options-source">
913 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 135</span>
914 135: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">application_parse_options</span>(<span class="ruby-identifier">help</span>=<span class="ruby-keyword kw">false</span>)
915 136: <span class="ruby-ivar">@options</span> <span class="ruby-operator">||=</span> {<span class="ruby-identifier">:verbose</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">false</span>}
917 138: <span class="ruby-ivar">@options</span> = <span class="ruby-identifier">clioptions</span>(<span class="ruby-identifier">help</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">parser</span>, <span class="ruby-identifier">options</span><span class="ruby-operator">|</span>
918 139: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">define_head</span> <span class="ruby-identifier">application_description</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">application_description</span>
919 140: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">banner</span> = <span class="ruby-value str">""</span>
921 142: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">application_usage</span>
922 143: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">""</span>
924 145: <span class="ruby-identifier">application_usage</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">u</span><span class="ruby-operator">|</span>
925 146: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">separator</span> <span class="ruby-node">"Usage: #{u}"</span>
926 147: <span class="ruby-keyword kw">end</span>
928 149: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">""</span>
929 150: <span class="ruby-keyword kw">end</span>
931 152: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">"Application Options"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">application_cli_arguments</span>.<span class="ruby-identifier">empty?</span>
933 154: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">define_tail</span> <span class="ruby-value str">""</span>
934 155: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">define_tail</span> <span class="ruby-node">"The Marionette Collective #{MCollective.version}"</span>
937 158: <span class="ruby-identifier">application_cli_arguments</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">carg</span><span class="ruby-operator">|</span>
938 159: <span class="ruby-identifier">opts_array</span> = []
940 161: <span class="ruby-identifier">opts_array</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">:on</span>
942 163: <span class="ruby-comment cmt"># if a default is set from the application set it up front</span>
943 164: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">carg</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">:default</span>)
944 165: <span class="ruby-identifier">configuration</span>[<span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:name</span>]] = <span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:default</span>]
945 166: <span class="ruby-keyword kw">end</span>
947 168: <span class="ruby-comment cmt"># :arguments are multiple possible ones</span>
948 169: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:arguments</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
949 170: <span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:arguments</span>].<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-identifier">opts_array</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">a</span>}
950 171: <span class="ruby-keyword kw">else</span>
951 172: <span class="ruby-identifier">opts_array</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:arguments</span>]
952 173: <span class="ruby-keyword kw">end</span>
954 175: <span class="ruby-comment cmt"># type was given and its not one of our special types, just pass it onto optparse</span>
955 176: <span class="ruby-identifier">opts_array</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:type</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:type</span>] <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span>[<span class="ruby-identifier">:boolean</span>, <span class="ruby-identifier">:bool</span>, <span class="ruby-identifier">:array</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:type</span>])
957 178: <span class="ruby-identifier">opts_array</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:description</span>]
959 180: <span class="ruby-comment cmt"># Handle our special types else just rely on the optparser to handle the types</span>
960 181: <span class="ruby-keyword kw">if</span> [<span class="ruby-identifier">:bool</span>, <span class="ruby-identifier">:boolean</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:type</span>])
961 182: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">send</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">opts_array</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
962 183: <span class="ruby-identifier">validate_option</span>(<span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:validate</span>], <span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:name</span>], <span class="ruby-identifier">v</span>)
964 185: <span class="ruby-identifier">configuration</span>[<span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:name</span>]] = <span class="ruby-identifier">v</span>
965 186: <span class="ruby-keyword kw">end</span>
967 188: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:type</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">:array</span>
968 189: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">send</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">opts_array</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
969 190: <span class="ruby-identifier">validate_option</span>(<span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:validate</span>], <span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:name</span>], <span class="ruby-identifier">v</span>)
971 192: <span class="ruby-identifier">configuration</span>[<span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:name</span>]] = [] <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">configuration</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:name</span>])
972 193: <span class="ruby-identifier">configuration</span>[<span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:name</span>]] <span class="ruby-operator"><<</span> <span class="ruby-identifier">v</span>
973 194: <span class="ruby-keyword kw">end</span>
975 196: <span class="ruby-keyword kw">else</span>
976 197: <span class="ruby-identifier">parser</span>.<span class="ruby-identifier">send</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">opts_array</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
977 198: <span class="ruby-identifier">validate_option</span>(<span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:validate</span>], <span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:name</span>], <span class="ruby-identifier">v</span>)
979 200: <span class="ruby-identifier">configuration</span>[<span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:name</span>]] = <span class="ruby-identifier">v</span>
980 201: <span class="ruby-keyword kw">end</span>
981 202: <span class="ruby-keyword kw">end</span>
982 203: <span class="ruby-keyword kw">end</span>
983 204: <span class="ruby-keyword kw">end</span>
984 205: <span class="ruby-keyword kw">end</span></pre>
993 <div id="application-usage-method" class="method-detail ">
994 <a name="M000017"></a>
996 <div class="method-heading">
998 <span class="method-name">application_usage</span><span
999 class="method-args">()</span>
1000 <span class="method-click-advice">click to toggle source</span>
1004 <div class="method-description">
1007 Return the current usage text false if nothing is set
1012 <div class="method-source-code"
1013 id="application-usage-source">
1015 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 239</span>
1016 239: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">application_usage</span>
1017 240: <span class="ruby-identifier">usage</span> = <span class="ruby-identifier">application_options</span>[<span class="ruby-identifier">:usage</span>]
1019 242: <span class="ruby-identifier">usage</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-value">? </span><span class="ruby-keyword kw">false</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">usage</span>
1020 243: <span class="ruby-keyword kw">end</span></pre>
1029 <div id="clioptions-method" class="method-detail ">
1030 <a name="M000012"></a>
1032 <div class="method-heading">
1034 <span class="method-name">clioptions</span><span
1035 class="method-args">(help)</span>
1036 <span class="method-click-advice">click to toggle source</span>
1040 <div class="method-description">
1043 Creates a standard options hash, pass in a block to add extra headings etc
1044 see <a href="Optionparser.html">Optionparser</a>
1049 <div class="method-source-code"
1050 id="clioptions-source">
1052 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 111</span>
1053 111: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clioptions</span>(<span class="ruby-identifier">help</span>)
1054 112: <span class="ruby-identifier">oparser</span> = <span class="ruby-constant">Optionparser</span>.<span class="ruby-identifier">new</span>({<span class="ruby-identifier">:verbose</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">:progress_bar</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">true</span>}, <span class="ruby-value str">"filter"</span>, <span class="ruby-identifier">application_options</span>[<span class="ruby-identifier">:exclude_arg_sections</span>])
1056 114: <span class="ruby-identifier">options</span> = <span class="ruby-identifier">oparser</span>.<span class="ruby-identifier">parse</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">parser</span>, <span class="ruby-identifier">options</span><span class="ruby-operator">|</span>
1057 115: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
1058 116: <span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">parser</span>, <span class="ruby-identifier">options</span>)
1059 117: <span class="ruby-keyword kw">end</span>
1061 119: <span class="ruby-constant">RPC</span><span class="ruby-operator">::</span><span class="ruby-constant">Helpers</span>.<span class="ruby-identifier">add_simplerpc_options</span>(<span class="ruby-identifier">parser</span>, <span class="ruby-identifier">options</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">application_options</span>[<span class="ruby-identifier">:exclude_arg_sections</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-value str">"rpc"</span>)
1062 120: <span class="ruby-keyword kw">end</span>
1064 122: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">oparser</span>.<span class="ruby-identifier">parser</span>.<span class="ruby-identifier">help</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">help</span>
1066 124: <span class="ruby-identifier">validate_cli_options</span>
1068 126: <span class="ruby-identifier">post_option_parser</span>(<span class="ruby-identifier">configuration</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:post_option_parser</span>)
1070 128: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">options</span>
1071 129: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">e</span>
1072 130: <span class="ruby-identifier">application_failure</span>(<span class="ruby-identifier">e</span>)
1073 131: <span class="ruby-keyword kw">end</span></pre>
1082 <div id="configuration-method" class="method-detail ">
1083 <a name="M000009"></a>
1085 <div class="method-heading">
1087 <span class="method-name">configuration</span><span
1088 class="method-args">()</span>
1089 <span class="method-click-advice">click to toggle source</span>
1093 <div class="method-description">
1096 The application configuration built from CLI arguments
1101 <div class="method-source-code"
1102 id="configuration-source">
1104 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 88</span>
1105 88: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">configuration</span>
1106 89: <span class="ruby-ivar">@application_configuration</span> <span class="ruby-operator">||=</span> {}
1107 90: <span class="ruby-ivar">@application_configuration</span>
1108 91: <span class="ruby-keyword kw">end</span></pre>
1117 <div id="disconnect-method" class="method-detail ">
1118 <a name="M000025"></a>
1120 <div class="method-heading">
1122 <span class="method-name">disconnect</span><span
1123 class="method-args">()</span>
1124 <span class="method-click-advice">click to toggle source</span>
1128 <div class="method-description">
1130 <p class="missing-docs">(Not documented)</p>
1134 <div class="method-source-code"
1135 id="disconnect-source">
1137 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 310</span>
1138 310: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">disconnect</span>
1139 311: <span class="ruby-constant">MCollective</span><span class="ruby-operator">::</span><span class="ruby-constant">PluginManager</span>[<span class="ruby-value str">"connector_plugin"</span>].<span class="ruby-identifier">disconnect</span>
1140 312: <span class="ruby-keyword kw">rescue</span>
1141 313: <span class="ruby-keyword kw">end</span></pre>
1150 <div id="halt-method" class="method-detail ">
1151 <a name="M000029"></a>
1153 <div class="method-heading">
1155 <span class="method-name">halt</span><span
1156 class="method-args">(stats)</span>
1157 <span class="method-click-advice">click to toggle source</span>
1161 <div class="method-description">
1164 A helper that creates a consistent exit code for applications by looking at
1165 an instance of <a href="RPC/Stats.html">MCollective::RPC::Stats</a>
1168 Exit with 0 if nodes were discovered and all passed Exit with 0 if no
1169 discovery were done and > 0 responses were received, all ok Exit with 1 if
1170 no nodes were discovered Exit with 2 if nodes were discovered but some <a
1171 href="RPC.html">RPC</a> requests failed Exit with 3 if nodes were
1172 discovered, but no responses received Exit with 4 if no discovery were done
1173 and no responses were received
1178 <div class="method-source-code"
1181 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 345</span>
1182 345: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">halt</span>(<span class="ruby-identifier">stats</span>)
1183 346: <span class="ruby-identifier">exit</span>(<span class="ruby-identifier">halt_code</span>(<span class="ruby-identifier">stats</span>))
1184 347: <span class="ruby-keyword kw">end</span></pre>
1193 <div id="halt-code-method" class="method-detail ">
1194 <a name="M000027"></a>
1196 <div class="method-heading">
1198 <span class="method-name">halt_code</span><span
1199 class="method-args">(stats)</span>
1200 <span class="method-click-advice">click to toggle source</span>
1204 <div class="method-description">
1206 <p class="missing-docs">(Not documented)</p>
1210 <div class="method-source-code"
1211 id="halt-code-source">
1213 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 322</span>
1214 322: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">halt_code</span>(<span class="ruby-identifier">stats</span>)
1215 323: <span class="ruby-identifier">request_stats</span> = {<span class="ruby-identifier">:discoverytime</span> =<span class="ruby-operator">></span> <span class="ruby-value">0</span>,
1216 324: <span class="ruby-identifier">:discovered</span> =<span class="ruby-operator">></span> <span class="ruby-value">0</span>,
1217 325: <span class="ruby-identifier">:okcount</span> =<span class="ruby-operator">></span> <span class="ruby-value">0</span>,
1218 326: <span class="ruby-identifier">:failcount</span> =<span class="ruby-operator">></span> <span class="ruby-value">0</span>}.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">stats</span>.<span class="ruby-identifier">to_hash</span>)
1220 328: <span class="ruby-keyword kw">return</span> <span class="ruby-value">4</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">request_stats</span>[<span class="ruby-identifier">:discoverytime</span>] <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">request_stats</span>[<span class="ruby-identifier">:responses</span>] <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
1221 329: <span class="ruby-keyword kw">return</span> <span class="ruby-value">3</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">request_stats</span>[<span class="ruby-identifier">:discovered</span>] <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">request_stats</span>[<span class="ruby-identifier">:responses</span>] <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
1222 330: <span class="ruby-keyword kw">return</span> <span class="ruby-value">2</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">request_stats</span>[<span class="ruby-identifier">:discovered</span>] <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">request_stats</span>[<span class="ruby-identifier">:failcount</span>] <span class="ruby-operator">></span> <span class="ruby-value">0</span>
1223 331: <span class="ruby-keyword kw">return</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">request_stats</span>[<span class="ruby-identifier">:discovered</span>] <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
1224 332: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">request_stats</span>[<span class="ruby-identifier">:discoverytime</span>] <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">request_stats</span>[<span class="ruby-identifier">:discovered</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">request_stats</span>[<span class="ruby-identifier">:okcount</span>]
1225 333: <span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">request_stats</span>[<span class="ruby-identifier">:discovered</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">request_stats</span>[<span class="ruby-identifier">:okcount</span>]
1226 334: <span class="ruby-keyword kw">end</span></pre>
1235 <div id="help-method" class="method-detail ">
1236 <a name="M000022"></a>
1238 <div class="method-heading">
1240 <span class="method-name">help</span><span
1241 class="method-args">()</span>
1242 <span class="method-click-advice">click to toggle source</span>
1246 <div class="method-description">
1248 <p class="missing-docs">(Not documented)</p>
1252 <div class="method-source-code"
1255 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 288</span>
1256 288: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">help</span>
1257 289: <span class="ruby-identifier">application_parse_options</span>(<span class="ruby-keyword kw">true</span>)
1258 290: <span class="ruby-keyword kw">end</span></pre>
1267 <div id="main-method" class="method-detail ">
1268 <a name="M000026"></a>
1270 <div class="method-heading">
1272 <span class="method-name">main</span><span
1273 class="method-args">()</span>
1274 <span class="method-click-advice">click to toggle source</span>
1278 <div class="method-description">
1281 Fake abstract class that logs if the user tries to use an application
1282 without supplying a main override method.
1287 <div class="method-source-code"
1290 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 317</span>
1291 317: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">main</span>
1292 318: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"Applications need to supply a 'main' method"</span>
1293 319: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
1294 320: <span class="ruby-keyword kw">end</span></pre>
1303 <div id="options-method" class="method-detail ">
1304 <a name="M000010"></a>
1306 <div class="method-heading">
1308 <span class="method-name">options</span><span
1309 class="method-args">()</span>
1310 <span class="method-click-advice">click to toggle source</span>
1314 <div class="method-description">
1317 The active options hash used for MC::Client and other configuration
1322 <div class="method-source-code"
1323 id="options-source">
1325 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 94</span>
1326 94: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">options</span>
1327 95: <span class="ruby-ivar">@options</span>
1328 96: <span class="ruby-keyword kw">end</span></pre>
1337 <div id="rpcclient-method" class="method-detail ">
1338 <a name="M000030"></a>
1340 <div class="method-heading">
1342 <span class="method-name">rpcclient</span><span
1343 class="method-args">(agent, flags = {})</span>
1344 <span class="method-click-advice">click to toggle source</span>
1348 <div class="method-description">
1351 Wrapper around MC::RPC#rpcclient that forcably supplies our options hash if
1352 someone forgets to pass in options in an application the filters and other
1353 cli options wouldnt take effect which could have a disasterous outcome
1358 <div class="method-source-code"
1359 id="rpcclient-source">
1361 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 352</span>
1362 352: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">rpcclient</span>(<span class="ruby-identifier">agent</span>, <span class="ruby-identifier">flags</span> = {})
1363 353: <span class="ruby-identifier">flags</span>[<span class="ruby-identifier">:options</span>] = <span class="ruby-identifier">options</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">flags</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">:options</span>)
1364 354: <span class="ruby-identifier">flags</span>[<span class="ruby-identifier">:exit_on_failure</span>] = <span class="ruby-keyword kw">false</span>
1366 356: <span class="ruby-keyword kw">super</span>
1367 357: <span class="ruby-keyword kw">end</span></pre>
1376 <div id="run-method" class="method-detail ">
1377 <a name="M000023"></a>
1379 <div class="method-heading">
1381 <span class="method-name">run</span><span
1382 class="method-args">()</span>
1383 <span class="method-click-advice">click to toggle source</span>
1387 <div class="method-description">
1390 The main logic loop, builds up the options, validate configuration and
1391 calls the main as supplied by the user. Disconnects when done and pass any
1392 exception onto the <a
1393 href="Application.html#M000019">application_failure</a> helper
1398 <div class="method-source-code"
1401 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 295</span>
1402 295: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">run</span>
1403 296: <span class="ruby-identifier">application_parse_options</span>
1405 298: <span class="ruby-identifier">validate_configuration</span>(<span class="ruby-identifier">configuration</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:validate_configuration</span>)
1407 300: <span class="ruby-constant">Util</span>.<span class="ruby-identifier">setup_windows_sleeper</span> <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Util</span>.<span class="ruby-identifier">windows?</span>
1409 302: <span class="ruby-identifier">main</span>
1411 304: <span class="ruby-identifier">disconnect</span>
1413 306: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">e</span>
1414 307: <span class="ruby-identifier">application_failure</span>(<span class="ruby-identifier">e</span>)
1415 308: <span class="ruby-keyword kw">end</span></pre>
1424 <div id="validate-cli-options-method" class="method-detail ">
1425 <a name="M000014"></a>
1427 <div class="method-heading">
1429 <span class="method-name">validate_cli_options</span><span
1430 class="method-args">()</span>
1431 <span class="method-click-advice">click to toggle source</span>
1435 <div class="method-description">
1437 <p class="missing-docs">(Not documented)</p>
1441 <div class="method-source-code"
1442 id="validate-cli-options-source">
1444 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 207</span>
1445 207: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">validate_cli_options</span>
1446 208: <span class="ruby-comment cmt"># Check all required parameters were set</span>
1447 209: <span class="ruby-identifier">validation_passed</span> = <span class="ruby-keyword kw">true</span>
1448 210: <span class="ruby-identifier">application_cli_arguments</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">carg</span><span class="ruby-operator">|</span>
1449 211: <span class="ruby-comment cmt"># Check for required arguments</span>
1450 212: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:required</span>]
1451 213: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">configuration</span>[ <span class="ruby-identifier">carg</span>[<span class="ruby-identifier">:name</span>] ]
1452 214: <span class="ruby-identifier">validation_passed</span> = <span class="ruby-keyword kw">false</span>
1453 215: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">"The #{carg[:name]} option is mandatory"</span>
1454 216: <span class="ruby-keyword kw">end</span>
1455 217: <span class="ruby-keyword kw">end</span>
1456 218: <span class="ruby-keyword kw">end</span>
1458 220: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">validation_passed</span>
1459 221: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\nPlease run with --help for detailed help"</span>
1460 222: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
1461 223: <span class="ruby-keyword kw">end</span>
1464 226: <span class="ruby-keyword kw">end</span></pre>
1473 <div id="validate-option-method" class="method-detail ">
1474 <a name="M000011"></a>
1476 <div class="method-heading">
1478 <span class="method-name">validate_option</span><span
1479 class="method-args">(blk, name, value)</span>
1480 <span class="method-click-advice">click to toggle source</span>
1484 <div class="method-description">
1487 Calls the supplied block in an option for validation, an error raised will
1488 log to STDERR and exit the application
1493 <div class="method-source-code"
1494 id="validate-option-source">
1496 <span class="ruby-comment cmt"># File lib/mcollective/application.rb, line 100</span>
1497 100: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">validate_option</span>(<span class="ruby-identifier">blk</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>)
1498 101: <span class="ruby-identifier">validation_result</span> = <span class="ruby-identifier">blk</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">value</span>)
1500 103: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">validation_result</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">true</span>
1501 104: <span class="ruby-constant">STDERR</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">"Validation of #{name} failed: #{validation_result}"</span>
1502 105: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
1503 106: <span class="ruby-keyword kw">end</span>
1504 107: <span class="ruby-keyword kw">end</span></pre>
1519 <div id="rdoc-debugging-section-dump" class="debugging-section">
1521 <p>Disabled; run with --debug to generate this.</p>
1525 <div id="validator-badges">
1526 <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
1527 <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
1528 Rdoc Generator</a> 1.1.6</small>.</p>