MCollective is a framework for writing feature full agents and clients and provides a rich system to do that. MCollective’s native Client though is very low level, a bit like TCP/IP is to HTTP. Like TCP/IP the native client does not provide any Authentication, Authorization etc.
MCollective Simple RPC is a framework on top of the standard client that abstracts away a lot of the complexity and provides a lot of convention and standards. It’s a bit like using HTTP ontop of TCP/IP to create REST services.
SimpleRPC is a framework that provides the following:
Provide simple conventions for writing agents and clients, favoring convention over custom design
Very easy to write agents including input validation and a sensible feedback mechanism in case of error
The provided generic calling tool should be able to speak to most compliant agents
Should you need to you can still write your own clients, this should be very easy too
Return data should be easy to print, in most cases the framework should be able to print a sensible output with a single, provided, function. The DDL is used here to improve the standard one-size-fits-all methods.
The full capabilities of the standard Client classes should still be exposed in case you want to write advanced agents and clients
A bit of code probably says more than lots of English, so here’s a simple hello world Agent, it just echo’s back everything you send it in the :msg argument:
The nice thing about using a standard abstraction for clients is that you often won’t even need to write a client for it, we ship a standard client that you can use to call the agent above:
Note: This example is not complete. Please see the agents and clients pages for a walkthrough.
You could also use mco rpc like this and achieve the same result:
For multiple options just add more key=val pairs at the end
But you can still write your own clients, it’s incredibly simple, full details of a client is out of scope for the introduction - see the SimpleRPCClients page instead for full details - but here is some sample code to do the same call as above including full discovery and help output: