Version 1 of a Go library for interacting with the Aurora Scheduler
Find a file
2016-08-09 16:29:37 -07:00
docs Starting point for getting started 2016-08-09 16:29:37 -07:00
examples Updating documentation for release 2016-08-09 16:20:40 -07:00
vendor Updating vendored apache thrift library 2016-08-09 13:31:41 -07:00
.gitignore Adding gitignore 2016-08-02 11:45:55 -07:00
AURORA.VER Fixed copy paste error on command. Added AURORA.VER to keep track of which Aurora version library has been tested with 2016-08-09 13:29:28 -07:00
auroraAPI.thrift Public release of gorealis 2016-08-02 11:42:00 -07:00
generateBindings.sh Public release of gorealis 2016-08-02 11:42:00 -07:00
job.go Updating documentation for release 2016-08-09 16:20:40 -07:00
LICENSE Public release of gorealis 2016-08-02 11:42:00 -07:00
README.md Adding to todo 2016-08-09 16:25:07 -07:00
realis.go Updating documentation for release 2016-08-09 16:20:40 -07:00
updatejob.go Updating documentation for release 2016-08-09 16:20:40 -07:00

gorealis GoDoc

Go library for communicating with Apache Aurora. Named after the northern lights (Aurora Borealis).

Aurora Compatible version

Please see AURORA.VER to see the latest Aurora version against which this library has been tested against. Vendoring a working version is highly recommended.

Usage

Using the Sample client with Thermos

Clone Aurora:

$ git clone  git://git.apache.org/aurora.git

Bring up the vagrant image:

$ cd aurora
$ vagrant up

Download and run the Client to create a Thermos Job:

$ go get github.com/rdelval/gorealis
$ cd $GOPATH/src/github.com/rdelval/gorealis
$ go run examples/client.go -executor=thermos -url=http://192.168.33.7:8081 -cmd=create

Using the Sample client with Docker Compose executor

Clone modified version of Aurora repo and checkout the right branch:

$ git clone git@github.com:rdelval/aurora.git
$ git checkout DockerComposeExecutor

Bring up the vagrant image:

$ cd aurora
$ vagrant up

Download and run the Client to create a Docker-Compose Job:

$ go get github.com/rdelval/gorealis
$ go run $GOPATH/src/github.com/rdelval/gorealis/examples/client.go -executor=compose -url=http://192.168.33.7:8081 -cmd=create

From the Aurora web UI, create struct dump by clicking on the task ID. In the struct dump, find the port assigned to the task (named "port0").

Navigate to the 192.168.33.7:<assigned port>. If the page is not found, wait a few minutes while the docker image is downloaded and the container is deployed.

Finally, terminate the job:

$ go run $GOPATH/src/github.com/rdelval/gorealis.git/examples/client.go -executor=compose -url=http://192.168.33.7:8081 -cmd=kill

How to leverage the library (based on the sample client)

Create a default configuration file (alternatively, manually create your own Config):

config, err := realis.NewDefaultConfig(*url)

Create a new Realis struct by passing the configuration struct in:

r := realis.NewClient(config)
defer r.Close()

Construct a job using an AuroraJob struct.

job = realis.NewJob().Environment("prod").
    Role("vagrant").
    Name("hello_world_from_gorealis").
    ExecutorName("docker-compose-executor").
    ExecutorData("{}").
    NumCpus(1).
    Ram(64).
    SetDisk(100).
    IsService(false).
    InstanceCount(1).
    AddPorts(1).
    AddLabel("fileName", "sample-app/sample-app.yml").
    AddURI("https://dl.bintray.com/rdelvalle/mesos-compose-executor/sample-app.tar.gz", true, true)

Use client to send a job to Aurora:

r.CreateJob(job)

Killing an Aurora Job:

r.KillJob(job.GetKey())

Restarting all instances of an Aurora Job:

r.RestartJob(job.GetKey())

Adding instances (based on config of instance 0) to Aurora:

r.AddInstances(&aurora.InstanceKey{job.GetKey(),0}, 5)

Updating the job configuration of a service job:

updateJob := realis.NewUpdateJob(job)
updateJob.InstanceCount(1)
updateJob.Ram(128)

msg, err := r.UpdateJob(updateJob, "")

To Do

  • Create or import a custom transport that uses https://github.com/jmcvetta/napping to improve efficiency
  • Allow library to use ZK to find the master
  • End to end testing with Vagrant setup

Contributions

Contributions are very much welcome. Please raise an issue so that the contribution may be discussed before it's made.