GridInfo...or: client auto-configuration

mana janus suggested last week on opensim-dev that it would be rather useful to have a grid info mechanism that would allow smart clients to obtain useful grid related parameters such as

  • login server (-loginuri parameter for the SecondLife® client)
  • grid welcome page (-loginpage)
  • URI of the economy subsystem (-helperuri)
  • URL of the grid’s about page
  • URL of the web page to register a new account
  • URL of a help web page

and more…

…once we had such a mechanism, we could simply point any enabled client at http://osgrid.org:8002/ and it would figure out the rest via GridInfo.

as we were also looking for a simpler mechanism to start up the client and have it connect to the various internal grids, i jumped on this idea and quickly did a proof-of-concept as an application plugin to OpenSim providing the get_grid_info XmlRpc call..

…which worked nicely with standalone mode, but not quite with grid mode — for that the GridInfoPlugin logic had to be refactored into a service for both grid and standalone mode instead of being a plugin. i’m pleased to announce that as of subversion release 5692 that code is now working:

  • if your OpenSim.ini config file contains a [GridInfo] section, all key–value pairs will be used to populate the response
  • if your OpenSim.ini config file does not contain such a section, then some reasonable defaults will be used, so that a client would at least get the login server.

so, a simple HTTP GET to the standalone server’s URL or the userserver’s URL will provide all the information needed to your client — once it’s smart enough and knows about GridInfo.

have a look at the OpenSim GridInfo wiki entry and also at the OpenSim OpenSim.ini entry for more information and sample output.

the fact that GridInfoService uses whatever you provide in the [GridInfo] section of OpenSim.ini allow us to extend the configuration data as needed and do so in a backward compatible way: we could, for example, provide the address of the VoIP server that we are using for voice support; or, …