gorealis-v2/README.md

128 lines
3.5 KiB
Markdown
Raw Normal View History

# gorealis [![GoDoc](https://godoc.org/github.com/rdelval/gorealis?status.svg)](https://godoc.org/github.com/rdelval/gorealis)
2016-08-02 11:42:00 -07:00
Go library for communicating with Apache Aurora.
Named after the northern lights (Aurora Borealis).
### Aurora Compatible version
Please see [AURORA.VER](./AURORA.VER) to see the latest Aurora version against which this
library has been tested against. Vendoring a working version is highly recommended.
2016-08-02 11:42:00 -07:00
## 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
2016-08-02 11:42:00 -07:00
```
### 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
2016-08-02 11:42:00 -07:00
```
From the [Aurora web UI](http://192.168.33.7:8081/scheduler/vagrant/prod/docker-compose/0), 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>`.
2016-08-02 11:42:00 -07:00
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
2016-08-02 11:42:00 -07:00
```
### How to leverage the library (based on the [sample client](examples/client.go))
2016-08-02 11:42:00 -07:00
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.
```
2016-08-02 13:06:36 -07:00
job = realis.NewJob().Environment("prod").
Role("vagrant").
Name("hello_world_from_gorealis").
ExecutorName("docker-compose-executor").
ExecutorData("{}").
NumCpus(1).
Ram(64).
2016-08-02 11:42:00 -07:00
SetDisk(100).
2016-08-02 13:06:36 -07:00
IsService(false).
InstanceCount(1).
2016-08-02 11:42:00 -07:00
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)
2016-08-02 11:42:00 -07:00
```
Updating the job configuration of a service job:
```
updateJob := realis.NewUpdateJob(job)
2016-08-02 13:06:36 -07:00
updateJob.InstanceCount(1)
updateJob.Ram(128)
2016-08-02 11:42:00 -07:00
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
2016-08-09 16:25:07 -07:00
* End to end testing with Vagrant setup
2016-08-02 11:42:00 -07:00
## Contributions
Contributions are very much welcome. Please raise an issue so that the contribution may be discussed before it's made.