We already use Oxidized with Observium (pro version). I don't think there's any code update required - it works with the existing rancid code.
$config['rancid_version'] = '3'; // In generate-rancid.php use delimeter ':' (by default) and ';' for v3
$config['rancid_configs'] = array('/usr/local/share/oxidized/obsconfigs');
$config['rancid_ignorecomments'] = 0; // Ignore lines starting with #
$config['rancid']['os_map']['h3c'] = 'comware';
$config['rancid']['os_map']['hh3c'] = 'comware';
We need this Oxidized update hook:
git_update_hook:
type: exec
events: [post_store]
cmd: 'sh -c "cd /usr/local/share/oxidized/obsconfigs && git pull"'
async: true
timeout: 300
So Oxidized checks the new code into git, and then immediately pulls it into a dir that contains the latest config, and Observium picks that up.
The existing API is the formal API. The correct way to implement this would be using a format modifier on the /devices/ endpoint to return the data in the correct format.