Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Jan 9, 2012
  1. @ripienaar

    maint: The pluginlist returns keys from a hash which is not in any

    ripienaar authored
           guaranteed order especially on older ruby.  Sort the list
           while doing the test compare to avoid failures on 1.8.6
Commits on Nov 21, 2011
  1. @ripienaar

    10992 - ActiveMQ connector has an unresolved dependency on pp

    ripienaar authored
    For debugging purposes we log the headers for subscriptions and
    publishing in the ActiveMQ connector unfortunately this was done using
    pretty_inspect, this changes it to plain inspect
Commits on Nov 17, 2011
  1. @ripienaar

    9847 - Messages should support arbitrary destinations

    ripienaar authored
    Add reply_to handling to the message object, option parsing and
    rpc client.
    Messages with reply_to set will be treated like fire and forget
    ones since the clients will never get the results anyway
  2. @ripienaar

    10830 - Release 1.3.2

    ripienaar authored
    Fix release date
  3. @ripienaar

    10830 - Release 1.3.2

    ripienaar authored
    Update release notes and versions.  Also a small cosmetic fix to output
Commits on Nov 16, 2011
  1. @ripienaar

    10883 - Syntax errors in Applications not correctly parse and display…

    ripienaar authored
    …ed to the user
    Change the behavior of the PluginManager to raise errors as well as log
    errors when a file fails to load.  This behavior is optional so we're
    able to maintain old behavior in places where getting exceptions might
    be problematic.
    The Applications#run method now show a friendly error and backtrace
    which would hopefully help users get to the bottom of the problem
  2. @ripienaar

    10864 - Add an optional ping distribution graph to the ping application

    ripienaar authored
    Small update to the sparklines logic.  Add encoding hints to the top
    of the file needed for ruby 1.9 compat
  3. @ripienaar

    10864 - Add an optional ping distribution graph to the ping application

    ripienaar authored
    Allow the ping graph to be enabled using the config file
Commits on Nov 15, 2011
  1. @ripienaar

    7772 - Allow random pickup of discovered in the client class

    ripienaar authored
    Add a #limit_method= method to the RPC Client.  Add tests for
    limit_target= and some small optimizations to how that method works
  2. @ripienaar

    10864 - Add an optional ping distribution graph to the ping application

    ripienaar authored
    Add a --graph option that uses a small single line spark line to
    indicate response distribution
    The sparklines idea is initially from
    but this implimentation is using a slightly different algo
    main: fix some whitespace issues
  3. @ripienaar

    7899 - Create an ActiveMQ specific plugin

    ripienaar authored
    Small change to optimize the amount of queues being created, a process
    will now reuse the same queue for discovery and the eventual RPC request
    this is fine since it's not multi threaded anyway
Commits on Nov 14, 2011
  1. @ripienaar

    7899 - Create an ActiveMQ specific plugin

    ripienaar authored
    Update example ActiveMQ configs to support direct addressing and
    the ActiveMQ connector plugin.
    Remove the Mesh example as it's not working 100%
  2. @ripienaar

    7899 - Create an ActiveMQ specific plugin

    ripienaar authored
    Add an ActiveMQ connector, tests and docs.
    This connector use the following queues and topics:
     - A topic per agent and collective - <collective>.<agent name>.agent
     - Replies goes into short lived queues - <collective>.replies.<unique string>
     - Each node subscribe to a queue with a JMS selector matching its
       identify - <collective>.nodes
    The model of replies require the use of gcInactiveDestinations in
    ActiveMQ to purge old unused short lived queues.  The hope is that we
    will use actual temp queues in future but there's some issues
    configuring these reliably in ActiveMQ
    Each node subscribes to the nodes queue and use a JMS selector, this
    requires a queue specific connection for broker to broker comms that
    has conduitSubscriptions disabled.
Commits on Nov 12, 2011
  1. @ripienaar

    5939 - mc-rpc should have native batching

    ripienaar authored
    Add native batching to RPC::Client instances by adding a special case
    runner that use the new direct addressing mode.
    Clients can activate this in 2 ways:
       client = rpcclient("rpcutil")
       client.batch_size = 10
       client.batch_sleep_time = 1
    An alternative approach would be:
       client = rpcclient("rpcutil")
   => 10, :batch_sleep_time => 1)
  2. @ripienaar

    5939 - mc-rpc should have native batching

    ripienaar authored
    Move Array#in_groups_of monkey patch into main set of monkey patches
    that always gets applied.
    Avoid applying our monkey patches if ruby provides the functionality
    already - latest ruby has sortable symbols already.
    Add tests for our monkey patches
Commits on Nov 11, 2011
  1. @ripienaar

    10670 - MC::Client should unsubscribe from topics it does not need an…

    ripienaar authored
    The client subscribes to topics for replies but never unsubscribes,
    further each client instance track what it is subscribed too.
    This caused a few problems:
     - badly written connectors could in some cases have multiple
       subscriptions causing multiple replies to be received
     - while the client is idle messages are still being pushed into its
       buffer which would result in a lot of messages being processed we
       really should not care for
    We now unsubscribe from topics when we're done with them avoiding most
    of these problems
Commits on Nov 10, 2011
  1. @ripienaar

    10671 - Security plugins should not decrypt messages for other clients

    ripienaar authored
    Fix a failing test for ruby 1.9.2
  2. @ripienaar

    10671 - Security plugins should not decrypt messages for other clients

    ripienaar authored
    Create a helper function on the MC::Security::Base that security plugins
    can use to decide if they should do all the hard work.
    The basic structure of a security plugins decode phase is:
      msg = deserialize(payload)
      decrypt or decode(msg)
    the 2nd step is generally the really expensive step where SSL or RSA
    comes into play, these plugins can now use the should_process_msg?
    helper to raise an appropriate exception if the message is not for us
    before doing the expensive work
  3. @ripienaar

    10669 - Security plugins should know which msgid they are receiving

    ripienaar authored
    The MC::Message object can now store an expected_msgid for messages
    of type :reply.  This can later be read by security plugins as a hint
    but they should deal with the fact that it might be nil.
    The MC::Client sets this when appropriate
Commits on Nov 9, 2011
  1. @ripienaar

    10672 - tests fail on rspec 2.7.0

    ripienaar authored
    We used to do require for the spec_helper based on __FILE__ but this
    casues problems because ruby require will keep track of things it has
    required before based on the path passed to require.
    RSpec 2.7.0 has made calling its config blocks more than once a critical
    error so the combination of doing requires with different paths triggers
    this error.
    Switched to just using require 'spec_helper' instead
Commits on Oct 28, 2011
  1. @ripienaar

    10352 - Should support ruby-1.9.2-p290 and ruby-1.9.3-rc1

    ripienaar authored
    - Make the SSL test case less fragile by checking the exception
      type and not the text
    - Handle changes introduced in the SSL API in a way that should cover
      ruby 1.8.6 - 1.9.3
    - Update vendored systemu to the latest to avoid RbConfig warnings
      printed to STDERR
Commits on Oct 27, 2011
  1. @ripienaar

    10327 - callerids and identitied should only allow a limited set of c…

    ripienaar authored
    To be certain we never attempt to read/write files we shouldn't for
    example in naive registration plugins the framework now ensures that
    callerids and identities can only be /\w\.\-/
    There's a new method valid_callerid? on the security base class so
    if there's some weird and wonderful need a security plugin could
    override this check but generally the current setting should be
    left alone as is.
Commits on Oct 25, 2011
  1. @ripienaar

    10265 - When supplying discovery data to RPC::Client#discover always …

    ripienaar authored
    …call reset
    Improve test isolation by allowing mock STDERR and STDOUT in the client
  2. @ripienaar

    10265 - When supplying discovery data to RPC::Client#discover always …

    ripienaar authored
    …call reset
    - Always call reset when :json or :hosts is given
    - Add test coverage for the discover method
Commits on Oct 24, 2011
  1. @ripienaar

    10226 - ssl - replies fail TTL validation

    ripienaar authored
    When the security plugin is initiated by a client we should
    not validate the TTL and Message Times on incoming messages
    as we do not send them from the nodes.
  2. @ripienaar

    9902 - Support ruby primitive types in mcollective ddl

    ripienaar authored
    - Add :number, :integer and :float types to the DDL.
    - When the rpc application gets one of these on the CLI it
      will try to convert the string from the CLI to the right type
    - Provide test coverage for the ddl class
    - Fix various bugs found while writing tests
    - Improve some wording etc in DDL errors
Commits on Oct 22, 2011
  1. @ripienaar
  2. @ripienaar

    10133 - mcollective should stop discovery when discovered hosts == li…

    ripienaar authored
    When limit_targets is specified to the RPC client and the
    limit method is set to :first then short circuit the discovery
    process early realizing a significant speed up.
    We did this by adding a limit option to the Client#discover method
    and passing in the value when appropriate from the RPC::Client#discover
    In order to make this usable from the CLI the options parser now handles
    pure numeric arguments as integer
Commits on Oct 18, 2011
  1. @ripienaar

    10115 - providing hostlists for direct access mode doesnt work with l…

    ripienaar authored
    …arge host lists
    Previously when :auto was given to the call_agent it would do discover
    and then force direct_requests off.
    If discover was called before and an array was supplied this would
    effectively overrule that setting and so cause a broadcast to be done
    when it was not supposed to be done.
    Now we don't force that since discover will do the right thing and
    force direct requests if it feels thats whats needed
Commits on Oct 11, 2011
  1. @ripienaar

    Merge pull request #23 from daniel-pittman/feature/master/whitespace-…

    ripienaar authored
    Use 2-space indenting everywhere in MCollective.
Commits on Oct 6, 2011
  1. @daniel-pittman

    Use 2-space indenting everywhere in MCollective.

    daniel-pittman authored
    This brings the code into line with Puppet Labs coding standards.  There are
    no functional changes as part of this, just whitespace at the start of lines.
    Signed-off-by: Daniel Pittman <>
Commits on Oct 3, 2011
  1. @ripienaar
  2. @ninkendo @ripienaar

    Provide an option to not exit on rpcclient failure

    ninkendo authored ripienaar committed
  3. @ripienaar

    9399 - The TTL on message should be adjustable

    ripienaar authored
    Allow the TTL to be set on the cli using --ttl and on the SimpleRPC
    API using client.ttl.
    Fix some test isolation problems around the Config class
Commits on Sep 27, 2011
  1. @ripienaar

    9400 - Update security plugins where applicable to secure the TTL header

    ripienaar authored
    Track :ttl and :msgtime in the AES and SSL plugins
    Previously the :body property of the request was simply serialized and
    encrypted or signed.  This was expanded to force that the :body is a
    hash, inside this hash we store the :ttl and :msgtime of the main request
    Later on the servers when receiving the request we decrypt/validate and
    then verify that the :ttl and :msgtime properties are what was encrypted
    against, this way we can effectively avoid people tampering with these
    properties and detect any such tampering.
    In both cases this change is backward incompatible and security is enforced
    by default.  Both plugins have a setting that would make them only warn
    on recieving bad/old data and not actually deny those requests.
Something went wrong with that request. Please try again.