The following page serves as a wiki for my GSoC ‘14 project with the OSU OSL.
Some useful links
- Code and version history for this page can be found here.
- You can find my proposal here.
- Repository for the code under the OSU OSL Github organization.
TODO
- Until we move them under the OSUOSL organization, the repositories will be here: igor-rest-api, igor-cli
- OSL IPMI test machine.
TODO
Current Tasks
TODO
Get access to an IPMI-enabled machine- Hypervisors supporting IPMI? Until I get access to a physical machine, I supposed having a VM on a hypervisor that implements a virtual IPMI interface would be useful, but neither KVM/QEMU or Virtualbox support this.
- Discuss initial REST API and CLI design, REST service hosting
- An initial implementation is available here.
- Implement the
login
andpower
REST endpoints and CLI commandsTODO
- An implementation will be available soon here.
Design
The standard CLI for IPMI-enabled machines is ipmitool. Since we
expect access from devices that may not have ipmitool
available (eg. mobile phones), it makes sense to provide
a universal REST API that is served from an OSL machine.
REST API
In the REST paradigm, interactions are with resources via HTTP verbs. In our case, resources could be machines, machine devices/logs exposed by IPMI and users. The verbs are HTTP GET, PUT, POST etc. that define different interactions with these resources.
/login/
: Accepts a username/password combination, issues an auth token on success. All future IPMI requests reuse this auth token./power/
: Powers on, off or cycle the machine. This wraps theipmitool power status|on|off|cycle|reset
commands./console/
: Returns a persistent connection streaming the output of the SOL console. This wraps theipmitool sol activate|deactivate
commands./sensors/
: Provides sensor readings. This wraps theipmitool sdr
commands./log/
: Returns the sensor event log. This wraps theipmitool sel
commands.
CLI
I plan for the CLI to make calls to the REST API, retreive the JSON response and format the output in a suitable way for the screen. The CLI commands will look like the following:
igor login
igor power -h osl0[1-6] status|on|off|cycle|reset
igor console
igor sensors
igor log