Kernel service which provides a classic SCRUD interface (minus Update) for all running services in this environment (and functionality to ensure this matches what is actually running - starting/stopping services as required)
Interface
com.hailocab.kernel.provision.search (search for provisions which match a given name and/or running on this class of machine)
com.hailocab.kernel.provision.create (create a new provision)
com.hailocab.kernel.provision.read (read an existing provision)
com.hailocab.kernel.provision.delete (delete an exisitng provision)
There's no update endpoint because users just bring services up and down, they don't modify any of the fields.
Inner workings
This service will:
start services
stop services
ensure services running match what are supposed to be running
DB
We will store a provisioned_service record for every service which is running in Cassandra.
Each record will be an immutable record of a provision that is running, and will include:
service_name (fully qualified service name, eg: com.hailocab.kernel.discovery)
service_version (actually a date, eg: 20130618183200)
machine_class (the class of machine the service should be running on)
Setup
go get github.com/hailo-platform/H2O/goprotobuf/{proto,protoc-gen-go}
go get "github.com/pomack/thrift4go/lib/go/src/thrift"