Changes for version 0.20 - 2015-08-26
- Release 0.20
- BIG CHANGES:
- Change REST HTTP method convention, a HTTP POST is now mapped to Create and HTTP PUT is mapped to Update. This affects all non-Lim clients API calls.
- Gone with the old Module, in with the 'new' Name... for Lim::Component (affects all modules).
- Added transport for RabbitMQ.
- Added support for transports for clients.
- Add single option to RPC collection definition.
- Use UTF8 in JSON since we return the tag that its in UTF8.
- Merge arrays in configuration instead of overwriting allowing for plugin/module specific URI configurations etc.
- No default URI configured in agent.yaml.
- Object debug, RPC debug and debug logging is now default off.
- Other changes:
- Reworked handling groups for lim-agentd, trying to get all secondary groups in also. Use setsid when daemonizing the process and added user/group options to lim-agentd.
- Fixed plugins() call in Lim::Agent::CLI.
- Use hosts manually if AnyEvent < 6.01.
- Implement resolve helper functions that can be configured to skip DNS. Use them in Lim::RPC::Transport::HTTP and Lim::RPC::Client.
- Try to force detection of event backend for old AnyEvents (< 6.01).
- Lim::RPC::V() now gives the key where data is missing.
- Dump data on validation error in Lim::RPC::Call.
- Bugfix URIMaps, was not including call in map key so that same map could be used with different calls resulting in wrong call.
- Add more debug to Lim::Util::run_cmd.
- Only exit on INT in lim-agentd if we are foregrounded (not daemon).
- Allow alpha numeric in REST calls.
- Fix predata in URIMaps.
- Add config rpc.json.pretty to configure REST and JSONRPC transports to print pretty JSON.
- Add HTTP::Request object to Lim::RPC::Callback that all calls get and add X-Lim-Base-URL header to the request so it can be used in REST HATEOAS.
- Autoflush if foreground.
- Added serve() in Lim::RPC::Transport and called when serving a module.
- Handle Connection header and keep-alive more correct.
- Use correct Content-Type for REST requests
- Debug output for loaded modules
- Extract user/pass information from URI and give more information to the Transport for calls.
- Use localhost 80/443 as default values in HTTP Client Transport.
- Do not croak if the configuration directory isnt readable by the current user.
- New plugin.load_all setting to load all plugins, otherwise only load plugins in plugin.load.
- Add configuration option to specify what plugin should be served on which URI.
- Specify URI specific transport configuration.
- Server can now close Transports nicely.
- A bit better handling of Component calls CLI, Client and Server.
- Better error on RPC::Server->serve when a plugin only have client part installed.
- If there is no def and no data it should be ok.
- Make sure HTTP::Status code is integer.
- Use URI::Escape::XS if exists.
- Fix maximum request length check for HTTP.
- Fix Lim::Error::toString() return and Lim::Error handling of message.
- Do not start unless we got URIs.
- RabbitMQ transport will now re-resolve/connect on failure.
- Correct URI::Escape::XS/URI::Escape use to prevent redefined warnings.
- Use auto_delete for RabbitMQ exchanges and channels instead of trying to cleanup that ourselves. This prevents one lim-agentd to prematurely end exchanges and channels that others might use.
- Reopen RabbitMQ channels if they are cancels outside our control.
- Weaken logger object in all classes to hopefully prevent weird situations where logger still exists in global destruction (Log4perl: Seems like no initialization happened.).
- Use class as category for all logger to enable better filtering.
Modules
Framework for RESTful JSON/XML, JSON-RPC, XML-RPC and SOAP
The command line interface to Lim
Base class for plugins
Encapsulate an error within Lim
Lim's plugin loader and container
Utilities for Lim's RPC
Base class of all RPC callbacks
Lim's RPC protocol loader and container
Lim's RPC transport client loader and container
Lim's RPC transport loader and container
Utilities for plugins
Create a DBH that is executed in a forked process