cirros-ds
cirros-query
cirros-apply
cirros-per

cirros-ds calls each of the datasources configured.  They're expected
to be in the path or in /lib/cirros/ds/.
 datasources are called with:
   mode: 'local' or 'net'
   out_d: directory to copy data to
 datasource should exit 0 on success.
 non-zero means failure.
 expect to populate out_d/result with '0' on success.
 exit of 0 without that means "no source found"

cirros-query
  datasource: list the datasource
  available: list available fields for datasource
  get field: dump field

cirros-apply
  take a mode of local or net
  for 'local' could do things like copy network interfaces
  basically this is something like cloud-init's boothooks

cirros-per
  run a command at given frequency
  this handles checking if the command name has already been
  run and running if not.

datasources:
 called in 1 of 4 modes:
   * local
   * apply-local
   * net
   * apply-net

 Each receives the second argument of a directory. 

 for 'local' and 'net' this is the output directory that should be populated.
 The ds should created a data/ directory underneith this

 for 'apply' and 'apply-net' this is the directory previously provided to
 'local' or 'net' respectively.

jobs in /etc/init.d
  - S35 cirros-ds-local
  - S36 cirros-apply-local
  - S40 network
  - S45 cirros-net-ds
  - S46 cirros-apply-net
  - S95 cirros-userdata    : run #!
  - S98 cirros-final       : print status info
  - S99 cirros-logo        : logo

kernel cmdline:
 - dslist=nocloud,nocloud-net,configdrive,configdrive-net,ec2

datasources:
 - nocloud
 - configdrive
 - ec2

config:
 - /etc/cirros/ds.conf
   DATA_PATH=/run/cirros/ds
   SOURCES=
