examples | ||
vendor | ||
auroraAPI.thrift | ||
generateBindings.sh | ||
job.go | ||
LICENSE | ||
README.md | ||
realis.go | ||
updatejob.go |
GoRealis
Go library for communicating with Apache Aurora. Named after the northern lights (Aurora Borealis).
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
$ go run $GOPATH/src/github.com/rdelval/gorealis/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>
. Currently the redis image being deployed is broken, so an error is expected.
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
Leveraging the library
Commands available: create, kill, restart
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().SetEnvironment("prod").
SetRole("vagrant").
SetName("hello_world_from_gorealis").
SetExecutorName("docker-compose-executor").
SetExecutorData("{}").
SetNumCpus(1).
SetRam(64).
SetDisk(100).
SetIsService(false).
SetInstanceCount(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(job.GetKey(), 5)
Updating the job configuration of a service job:
updateJob := realis.NewUpdateJob(job)
updateJob.SetInstanceCount(1)
updateJob.SetRam(128)
msg, err := r.UpdateJob(updateJob, "")
Methods:
Method | Arguments | Description |
---|---|---|
CreateJob | *Job |
Sends a job create request to Apache Aurora |
KillJob | *aurora.JobKey |
Attempts to kill all active instances running in Aurora. Only needs environment, role, name |
RestartJob | *aurora.JobKey |
Attempts to restart all active instances running in Aurora |
AddInstances | *aurora.JobKey , int32 |
Launches the specified number of new instances based on existing job config |
StartUpdateJob | *UpdateJob , string |
Updates a service job with a new configuration |
AbortUpdateJob | *aurora.Jobkey , string , string |
Abort the job update that matches the ID |
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
Contributions
Contributions are very much welcome. Please raise an issue so that the contribution may be discussed before it's made.