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.

Documentation

Lim Agent Daemon
Lim CLI Interface