1Nettest agent
2=============
3
4This is a simple agent that will execute a ping or remote connection test on mcollective hosts
5
6I often find myself logging onto boxes to ping different sites to diagnose local or remote network issues, this means I can now just issue a single command and get results from anywhere I’m running mcollective.
7
8Installation
9------------
10
11* Install RubyGem [Net::Ping](http://raa.ruby-lang.org/project/net-ping/)
12* Follow the [basic plugin install guide](http://projects.puppetlabs.com/projects/mcollective-plugins/wiki/InstalingPlugins)
13
14Usage
15-----
16
17ICMP ping test:
18
19    $ mco nettest ping hostname
20    Do you really want to perform network tests unfiltered? (y/n): y
21
22     * [ ============================================================> ] 11 / 11
23
24    node1.example.net                        time = 0.429
25    node8.example.net                        time = 0.388
26    node5.example.net                        time = 0.686
27    node4.example.net                        time = 1.858
28    middleware.example.net                   time = 2.697
29    node7.example.net                        time = 0.637
30    node0.example.net                        time = 16.455
31    node9.example.net                        time = 1.974
32    node6.example.net                        time = 0.415
33    node3.example.net                        time = 0.389
34    node2.example.net                        time = 0.4
35
36    Summary of RTT:
37
38       Min: 0.388ms  Max: 16.455ms  Average: 2.393ms
39
40
41    Finished processing 11 / 11 hosts in 85.76 ms
42
43TCP connection test to port 8140:
44
45    $ mco nettest connect hostname 8140
46
47Validator
48---------
49
50The nettest agent supplies an fqdn validator which will validate if a string is a valid uri.
51
52    validate :fqdn, :nettest_fqdn
53
54The nettest agent supplies a server address validator which will validate that a given string includes both a valid hostname and port number separated by a colon.
55
56    validate :serveraddress, :nettest_server_address
57
58Data Plugin
59-----------
60
61The nettest agent also supplies a data plugin which uses the nettest agent to check if a connection to a fqdn at a specific port can be made. The data plugin will return 'true' or 'false' and can be used during discovery or any other place where the MCollective discovery language is used.
62
63    $ mco rpc rpcutil -S "Nettest('myhost', '8080').connect=true"
64
65Mma Aggregate Plugin
66--------------------
67
68The nettest agent supplies a mma aggregate plugin which will determine the minimum value, maximum value and average value of a set of inputs determinted in a DDL.
69
70    summarize do
71      aggregate nettest_mma(:rtt, :format => "Min: %.3fms  Max: %.3fms  Average: %.3fms")
72    end
73