dawn-api 0.9.0 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -0
- data/README.md +49 -0
- data/lib/dawn/api/authenticate.rb +16 -5
- data/lib/dawn/api/base_api.rb +27 -6
- data/lib/dawn/api/hosts.rb +14 -2
- data/lib/dawn/api/models/account.rb +43 -0
- data/lib/dawn/api/{app → models/app}/domains.rb +12 -9
- data/lib/dawn/api/{app → models/app}/drains.rb +10 -7
- data/lib/dawn/api/{app → models/app}/env.rb +3 -7
- data/lib/dawn/api/{app → models/app}/gears.rb +11 -10
- data/lib/dawn/api/models/app/releases.rb +43 -0
- data/lib/dawn/api/models/app.rb +172 -0
- data/lib/dawn/api/models/domain.rb +64 -0
- data/lib/dawn/api/{drain.rb → models/drain.rb} +20 -37
- data/lib/dawn/api/models/gear.rb +79 -0
- data/lib/dawn/api/models/key.rb +63 -0
- data/lib/dawn/api/{login.rb → models/login.rb} +2 -4
- data/lib/dawn/api/models/release.rb +52 -0
- data/lib/dawn/api/models.rb +8 -0
- data/lib/dawn/api/safe/base_api.rb +9 -0
- data/lib/dawn/api/safe/safe_extension.rb +28 -0
- data/lib/dawn/api/safe.rb +2 -0
- data/lib/dawn/api/version.rb +3 -3
- data/lib/dawn/api.rb +2 -6
- metadata +21 -12
- data/lib/dawn/api/app.rb +0 -131
- data/lib/dawn/api/domain.rb +0 -80
- data/lib/dawn/api/gear.rb +0 -101
- data/lib/dawn/api/key.rb +0 -73
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe30248ae573868bf991429cda95c8dfceec4bf7
|
4
|
+
data.tar.gz: 161aa1267f3bbc2d5e4a08b79db80157a411033f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf6133ff0aa98e30f1d1f5b795b411e44aced402bcb524cdb836c01eb8978003b91f67c7038e1e4074761c1b2a1e673f2a5736d861c2b59ec80fb77b04c75309
|
7
|
+
data.tar.gz: 465a63b82801693130763868a26707871adbc88985e953c705d3bf9f54c0f9793cd488122b1c9d06bcc91913bf7215d45802ec47da26b75c6f4aef4852f0f4c3
|
data/CHANGELOG.md
ADDED
data/README.md
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
Dawn-API
|
2
|
+
========
|
3
|
+
[link](https://github.com/dawn/dawn-api)
|
4
|
+
|
5
|
+
[](https://gemnasium.com/dawn/dawn-api)
|
6
|
+
[](http://badge.fury.io/rb/dawn-api)
|
7
|
+
[](https://codeclimate.com/github/dawn/dawn-api)
|
8
|
+
|
9
|
+
API for [Dawn](https://github.com/dawn/dawn)
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
```shell
|
13
|
+
gem install dawn-api
|
14
|
+
```
|
15
|
+
|
16
|
+
## Building
|
17
|
+
```shell
|
18
|
+
gem pack dawn-api.gem
|
19
|
+
```
|
20
|
+
|
21
|
+
## Documentation:
|
22
|
+
[Rubydoc](http://rubydoc.info/gems/dawn-api)
|
23
|
+
|
24
|
+
[API Reference](http://dawn.github.io/docs/)
|
25
|
+
|
26
|
+
## Influential ENV variable
|
27
|
+
| VAR | API default | Description |
|
28
|
+
| ------------- | ------------- | ---------------------------------------------------------- |
|
29
|
+
| DAWN_HOST | dawn.dev | Main hostname |
|
30
|
+
| DAWN_SCHEME | http | |
|
31
|
+
| DAWN_API_HOST | api.dawn.dev | Dawn API hostname, if not given, api.$DAWN_HOST is used |
|
32
|
+
| DAWN_GIT_HOST | dawn.dev | Target for git push dawn, if not given, $DAWN_HOST is used |
|
33
|
+
| DAWN_LOG_HOST | dawn.dev:8001 | Dawn logs hostname, if not given, $DAWN_HOST:8001 is used |
|
34
|
+
|
35
|
+
## What is this?
|
36
|
+
This is the ruby API interface for [Dawn](https://github.com/dawn/dawn),
|
37
|
+
- It is not a standalone gem.
|
38
|
+
- It requires a dawn server.
|
39
|
+
- It is not a CLI, look at [Dawn-CLI](https://github.com/dawn/dawn-cli) instead
|
40
|
+
|
41
|
+
## Usage
|
42
|
+
One day I'll write this properly, however for now:
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
Dawn.authenticate
|
46
|
+
my_app = Dawn::App.create
|
47
|
+
my_app.update(name: "DawnIsAwesome")
|
48
|
+
my_app.gears.restart
|
49
|
+
```
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'dawn/api/version'
|
2
|
+
require 'base64'
|
2
3
|
require 'excon'
|
3
4
|
require 'netrc'
|
4
5
|
|
@@ -15,21 +16,29 @@ module Dawn
|
|
15
16
|
|
16
17
|
OPTIONS = {
|
17
18
|
headers: {},
|
18
|
-
host: 'api.dawn.dev',
|
19
19
|
nonblock: false,
|
20
|
-
scheme: 'http'
|
21
20
|
}
|
22
21
|
|
23
22
|
class AuthenticationError < RuntimeError
|
24
23
|
end
|
25
24
|
|
25
|
+
class << self
|
26
|
+
attr_accessor :last_response_body
|
27
|
+
end
|
28
|
+
|
26
29
|
def self.request(options)
|
27
30
|
Dawn.authenticate unless @connection
|
28
|
-
|
31
|
+
expects = options.delete(:expects)
|
32
|
+
response = @connection.request(options)
|
33
|
+
self.last_response_body = response.body
|
34
|
+
if expects && response.status != expects
|
35
|
+
raise Excon::Errors.status_error(options.merge(expects: expects), response)
|
36
|
+
end
|
37
|
+
response
|
29
38
|
end
|
30
39
|
|
31
40
|
def self.authenticate(options={})
|
32
|
-
options = OPTIONS.merge options
|
41
|
+
options = OPTIONS.merge(host: dawn_api_host, scheme: dawn_scheme).merge(options)
|
33
42
|
options[:headers] = options[:headers].merge(HEADERS)
|
34
43
|
@api_key = options.delete(:api_key) || ENV['DAWN_API_KEY']
|
35
44
|
|
@@ -59,7 +68,9 @@ module Dawn
|
|
59
68
|
end
|
60
69
|
end
|
61
70
|
end
|
62
|
-
@headers = HEADERS.merge
|
71
|
+
@headers = HEADERS.merge(
|
72
|
+
'Authorization' => "Basic #{::Base64.strict_encode64("#{username}:#{@api_key}")}"
|
73
|
+
)
|
63
74
|
@connection = Excon.new "#{options[:scheme]}://#{options[:host]}", headers: @headers
|
64
75
|
end
|
65
76
|
|
data/lib/dawn/api/base_api.rb
CHANGED
@@ -3,21 +3,42 @@ require 'json'
|
|
3
3
|
|
4
4
|
module Dawn
|
5
5
|
module BaseApi
|
6
|
-
module
|
6
|
+
module RequestExtension
|
7
7
|
def request(options)
|
8
|
-
|
8
|
+
options[:expects] = 200 unless options.key?(:expects)
|
9
|
+
JSON.load Dawn.request(options).body
|
9
10
|
end
|
10
11
|
|
11
|
-
|
12
|
-
|
12
|
+
[:get, :post, :put, :patch, :delete].each do |key|
|
13
|
+
define_method(key) { |options| request options.merge(method: key) }
|
13
14
|
end
|
14
15
|
end
|
15
16
|
|
16
|
-
|
17
|
+
module ClassExtension
|
18
|
+
include RequestExtension
|
19
|
+
|
20
|
+
def id_param(options)
|
21
|
+
options.delete(:id)
|
22
|
+
end
|
23
|
+
|
24
|
+
def data_key(key_name, key_path=key_name)
|
25
|
+
route = key_path.to_s.split("/")
|
26
|
+
route_dp = route.dup
|
27
|
+
last_key = route_dp.pop
|
28
|
+
|
29
|
+
define_method(key_name) do
|
30
|
+
route.inject(@data) { |d, key| d[key] }
|
31
|
+
end
|
32
|
+
define_method(key_name.to_s+"=") do |v|
|
33
|
+
route_dp.inject(@data) { |d, key| d[key] }[last_key] = v
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
17
37
|
|
18
38
|
def self.included(mod)
|
19
|
-
mod.extend
|
39
|
+
mod.extend ClassExtension
|
20
40
|
end
|
21
41
|
|
42
|
+
include RequestExtension
|
22
43
|
end
|
23
44
|
end
|
data/lib/dawn/api/hosts.rb
CHANGED
@@ -1,11 +1,23 @@
|
|
1
1
|
module Dawn
|
2
2
|
|
3
|
+
def self.dawn_scheme
|
4
|
+
ENV["DAWN_SCHEME"] || "http"
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.dawn_host
|
8
|
+
ENV["DAWN_HOST"] || "dawn.dev"
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.dawn_api_host
|
12
|
+
ENV["DAWN_API_HOST"] || "api.#{dawn_host}"
|
13
|
+
end
|
14
|
+
|
3
15
|
def self.git_host
|
4
|
-
"
|
16
|
+
ENV["DAWN_GIT_HOST"] || dawn_host
|
5
17
|
end
|
6
18
|
|
7
19
|
def self.log_host
|
8
|
-
"
|
20
|
+
ENV["DAWN_LOG_HOST"] || "#{dawn_host}:8001"
|
9
21
|
end
|
10
22
|
|
11
23
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'dawn/api/base_api'
|
2
|
+
|
3
|
+
module Dawn
|
4
|
+
class Account
|
5
|
+
|
6
|
+
include BaseApi
|
7
|
+
|
8
|
+
def initialize(hsh)
|
9
|
+
@data = hsh
|
10
|
+
end
|
11
|
+
|
12
|
+
data_key :id
|
13
|
+
data_key :created_at
|
14
|
+
data_key :updated_at
|
15
|
+
data_key :username
|
16
|
+
data_key :email
|
17
|
+
data_key :api_key
|
18
|
+
|
19
|
+
def refresh(options={})
|
20
|
+
@data = get(
|
21
|
+
path: "/account",
|
22
|
+
query: options
|
23
|
+
)["account"]
|
24
|
+
end
|
25
|
+
|
26
|
+
def update(options={})
|
27
|
+
options.fetch(:account)
|
28
|
+
|
29
|
+
@data = patch(
|
30
|
+
path: "/account",
|
31
|
+
body: options.to_json
|
32
|
+
)["account"]
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.current(options={})
|
36
|
+
new get(
|
37
|
+
path: "/account",
|
38
|
+
query: options
|
39
|
+
)["account"]
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
@@ -1,11 +1,12 @@
|
|
1
1
|
require 'dawn/api/base_api'
|
2
|
-
require 'dawn/api/domain'
|
2
|
+
require 'dawn/api/models/domain'
|
3
3
|
|
4
4
|
module Dawn
|
5
5
|
class App
|
6
6
|
class Domains
|
7
7
|
|
8
8
|
include BaseApi
|
9
|
+
include Enumerable
|
9
10
|
|
10
11
|
attr_reader :app
|
11
12
|
|
@@ -13,25 +14,27 @@ module Dawn
|
|
13
14
|
@app = app
|
14
15
|
end
|
15
16
|
|
16
|
-
def
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
def each(&block)
|
18
|
+
all.each(&block)
|
19
|
+
end
|
20
|
+
|
21
|
+
def create(options)
|
22
|
+
options.fetch(:domain)
|
23
|
+
|
24
|
+
Domain.new(post(
|
20
25
|
path: "/apps/#{app.id}/domains",
|
21
26
|
body: options.to_json
|
22
27
|
)["domain"]).tap { |d| d.app = @app }
|
23
28
|
end
|
24
29
|
|
25
30
|
def all(options={})
|
26
|
-
|
27
|
-
expects: 200,
|
28
|
-
method: :get,
|
31
|
+
get(
|
29
32
|
path: "/apps/#{app.id}/domains",
|
30
33
|
query: options
|
31
34
|
).map { |hsh| Domain.new(hsh["domain"]).tap { |d| d.app = @app } }
|
32
35
|
end
|
33
36
|
|
34
|
-
def find(options
|
37
|
+
def find(options)
|
35
38
|
Domain.find(options).tap { |d| d.app = @app }
|
36
39
|
end
|
37
40
|
|
@@ -1,11 +1,12 @@
|
|
1
1
|
require 'dawn/api/base_api'
|
2
|
-
require 'dawn/api/drain'
|
2
|
+
require 'dawn/api/models/drain'
|
3
3
|
|
4
4
|
module Dawn
|
5
5
|
class App
|
6
6
|
class Drains
|
7
7
|
|
8
8
|
include BaseApi
|
9
|
+
include Enumerable
|
9
10
|
|
10
11
|
attr_reader :app
|
11
12
|
|
@@ -13,19 +14,21 @@ module Dawn
|
|
13
14
|
@app = app
|
14
15
|
end
|
15
16
|
|
17
|
+
def each(&block)
|
18
|
+
all.each(&block)
|
19
|
+
end
|
20
|
+
|
16
21
|
def create(options={})
|
17
|
-
|
18
|
-
|
19
|
-
|
22
|
+
options.fetch(:drain)
|
23
|
+
|
24
|
+
Drain.new(post(
|
20
25
|
path: "/apps/#{app.id}/drains",
|
21
26
|
body: options.to_json
|
22
27
|
)["drain"]).tap { |d| d.app = @app }
|
23
28
|
end
|
24
29
|
|
25
30
|
def all(options={})
|
26
|
-
|
27
|
-
expects: 200,
|
28
|
-
method: :get,
|
31
|
+
get(
|
29
32
|
path: "/apps/#{app.id}/drains",
|
30
33
|
query: options
|
31
34
|
).map { |hsh| Drain.new(hsh["drain"]).tap { |d| d.app = @app } }
|
@@ -15,20 +15,16 @@ module Dawn
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def refresh(options={})
|
18
|
-
replace
|
19
|
-
expects: 200,
|
20
|
-
method: :get,
|
18
|
+
replace get(
|
21
19
|
path: "/apps/#{app.id}/env",
|
22
20
|
query: options
|
23
21
|
)["env"]
|
24
22
|
end
|
25
23
|
|
26
24
|
def save(options={})
|
27
|
-
replace
|
28
|
-
expects: 200,
|
29
|
-
method: :post,
|
25
|
+
replace post(
|
30
26
|
path: "/apps/#{app.id}/env",
|
31
|
-
body: { env: merge(options) }.to_json
|
27
|
+
body: { app: { env: merge(options) } }.to_json
|
32
28
|
)["env"]
|
33
29
|
end
|
34
30
|
|
@@ -1,11 +1,12 @@
|
|
1
1
|
require 'dawn/api/base_api'
|
2
|
-
require 'dawn/api/gear'
|
2
|
+
require 'dawn/api/models/gear'
|
3
3
|
|
4
4
|
module Dawn
|
5
5
|
class App
|
6
6
|
class Gears
|
7
7
|
|
8
8
|
include BaseApi
|
9
|
+
include Enumerable
|
9
10
|
|
10
11
|
attr_reader :app
|
11
12
|
|
@@ -13,19 +14,21 @@ module Dawn
|
|
13
14
|
@app = app
|
14
15
|
end
|
15
16
|
|
17
|
+
def each(&block)
|
18
|
+
all.each(&block)
|
19
|
+
end
|
20
|
+
|
16
21
|
def create(options={})
|
17
|
-
|
18
|
-
|
19
|
-
|
22
|
+
options.fetch(:gear)
|
23
|
+
|
24
|
+
Gear.new(post(
|
20
25
|
path: "/apps/#{app.id}/gears",
|
21
26
|
body: options.to_json
|
22
27
|
)["gear"]).tap { |d| d.app = @app }
|
23
28
|
end
|
24
29
|
|
25
30
|
def all(options={})
|
26
|
-
|
27
|
-
expects: 200,
|
28
|
-
method: :get,
|
31
|
+
get(
|
29
32
|
path: "/apps/#{app.id}/gears",
|
30
33
|
query: options
|
31
34
|
).map { |hsh| Gear.new(hsh["gear"]).tap { |d| d.app = @app } }
|
@@ -36,9 +39,7 @@ module Dawn
|
|
36
39
|
end
|
37
40
|
|
38
41
|
def restart(options={})
|
39
|
-
|
40
|
-
expects: 200,
|
41
|
-
method: :post,
|
42
|
+
post(
|
42
43
|
path: "/apps/#{app.id}/gears/restart",
|
43
44
|
body: options.to_json
|
44
45
|
)
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'dawn/api/base_api'
|
2
|
+
require 'dawn/api/models/release'
|
3
|
+
|
4
|
+
module Dawn
|
5
|
+
class App
|
6
|
+
class Releases
|
7
|
+
|
8
|
+
include BaseApi
|
9
|
+
include Enumerable
|
10
|
+
|
11
|
+
attr_reader :app
|
12
|
+
|
13
|
+
def initialize(app)
|
14
|
+
@app = app
|
15
|
+
end
|
16
|
+
|
17
|
+
def each(&block)
|
18
|
+
all.each(&block)
|
19
|
+
end
|
20
|
+
|
21
|
+
def create(options={})
|
22
|
+
options.fetch(:release)
|
23
|
+
|
24
|
+
Release.new(post(
|
25
|
+
path: "/apps/#{app.id}/releases",
|
26
|
+
body: options.to_json
|
27
|
+
)["release"]).tap { |d| d.app = @app }
|
28
|
+
end
|
29
|
+
|
30
|
+
def all(options={})
|
31
|
+
get(
|
32
|
+
path: "/apps/#{app.id}/releases",
|
33
|
+
query: options
|
34
|
+
).map { |hsh| Release.new(hsh["release"]).tap { |d| d.app = @app } }
|
35
|
+
end
|
36
|
+
|
37
|
+
def find(options={})
|
38
|
+
Release.find(options).tap { |d| d.app = @app }
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,172 @@
|
|
1
|
+
require 'dawn/api/hosts'
|
2
|
+
require 'dawn/api/base_api'
|
3
|
+
require 'dawn/api/models/app/env'
|
4
|
+
require 'dawn/api/models/app/gears'
|
5
|
+
require 'dawn/api/models/app/drains'
|
6
|
+
require 'dawn/api/models/app/domains'
|
7
|
+
require 'dawn/api/models/app/releases'
|
8
|
+
|
9
|
+
module Dawn
|
10
|
+
class App
|
11
|
+
|
12
|
+
include BaseApi
|
13
|
+
|
14
|
+
attr_reader :data
|
15
|
+
attr_reader :env
|
16
|
+
|
17
|
+
def initialize(hsh)
|
18
|
+
@data = hsh
|
19
|
+
@env = Env.new(self, @data.delete("env"))
|
20
|
+
end
|
21
|
+
|
22
|
+
data_key :id
|
23
|
+
data_key :created_at
|
24
|
+
data_key :updated_at
|
25
|
+
data_key :name
|
26
|
+
data_key :formation
|
27
|
+
data_key :git
|
28
|
+
|
29
|
+
def gears
|
30
|
+
@gears ||= Gears.new self
|
31
|
+
end
|
32
|
+
|
33
|
+
def drains
|
34
|
+
@drains ||= Drains.new self
|
35
|
+
end
|
36
|
+
|
37
|
+
def domains
|
38
|
+
@domains ||= Domains.new self
|
39
|
+
end
|
40
|
+
|
41
|
+
def releases
|
42
|
+
@releases ||= Releases.new self
|
43
|
+
end
|
44
|
+
|
45
|
+
def refresh(options={})
|
46
|
+
@data = get(
|
47
|
+
path: "/apps/#{id}",
|
48
|
+
query: options
|
49
|
+
)["app"]
|
50
|
+
end
|
51
|
+
|
52
|
+
def update(options={})
|
53
|
+
options.fetch(:app)
|
54
|
+
|
55
|
+
@data = patch(
|
56
|
+
path: "/apps/#{id}",
|
57
|
+
body: options.to_json
|
58
|
+
)["app"]
|
59
|
+
end
|
60
|
+
|
61
|
+
def destroy(options={})
|
62
|
+
self.class.destroy(options.merge(id: id))
|
63
|
+
end
|
64
|
+
|
65
|
+
def run(options={})
|
66
|
+
self.class.run(options.merge(id: id))
|
67
|
+
end
|
68
|
+
|
69
|
+
def logs(options={})
|
70
|
+
self.class.logs(options.merge(id: id))
|
71
|
+
end
|
72
|
+
|
73
|
+
def scale(options={})
|
74
|
+
self.class.scale(options.merge(id: id))
|
75
|
+
end
|
76
|
+
|
77
|
+
def restart(options={})
|
78
|
+
self.class.restart(options.merge(id: id))
|
79
|
+
end
|
80
|
+
|
81
|
+
def self.id_param(options)
|
82
|
+
options.delete(:id) ||
|
83
|
+
options.delete(:name) ||
|
84
|
+
raise
|
85
|
+
end
|
86
|
+
|
87
|
+
def self.create(options)
|
88
|
+
options.fetch(:app)
|
89
|
+
|
90
|
+
new post(
|
91
|
+
path: "/apps",
|
92
|
+
body: options.to_json
|
93
|
+
)["app"]
|
94
|
+
end
|
95
|
+
|
96
|
+
def self.all(options={})
|
97
|
+
get(
|
98
|
+
path: "/apps",
|
99
|
+
query: options
|
100
|
+
).map { |d| new d["app"] }
|
101
|
+
end
|
102
|
+
|
103
|
+
def self.find(options)
|
104
|
+
id = id_param(options)
|
105
|
+
|
106
|
+
new get(
|
107
|
+
path: "/apps/#{id}",
|
108
|
+
query: options
|
109
|
+
)["app"]
|
110
|
+
end
|
111
|
+
|
112
|
+
def self.update(options)
|
113
|
+
id = id_param(options)
|
114
|
+
options.fetch(:app)
|
115
|
+
|
116
|
+
new patch(
|
117
|
+
path: "/apps/#{id}",
|
118
|
+
body: options.to_json
|
119
|
+
)["app"]
|
120
|
+
end
|
121
|
+
|
122
|
+
def self.destroy(options={})
|
123
|
+
id = id_param(options)
|
124
|
+
|
125
|
+
delete(
|
126
|
+
path: "/apps/#{id}",
|
127
|
+
query: options
|
128
|
+
)
|
129
|
+
end
|
130
|
+
|
131
|
+
def self.restart(options={})
|
132
|
+
id = id_param(options)
|
133
|
+
|
134
|
+
post(
|
135
|
+
path: "/apps/#{id}/gears/restart",
|
136
|
+
body: options.to_json
|
137
|
+
)
|
138
|
+
end
|
139
|
+
|
140
|
+
def self.logs(options={})
|
141
|
+
id = id_param(options)
|
142
|
+
|
143
|
+
url = get(
|
144
|
+
path: "/apps/#{id}/logs",
|
145
|
+
query: options
|
146
|
+
)["logs"]
|
147
|
+
|
148
|
+
"http://#{Dawn.log_host}#{url}"
|
149
|
+
end
|
150
|
+
|
151
|
+
def self.scale(options={})
|
152
|
+
id = id_param(options)
|
153
|
+
options.fetch(:app).fetch(:formation)
|
154
|
+
|
155
|
+
post(
|
156
|
+
path: "/apps/#{id}/scale",
|
157
|
+
body: options.to_json
|
158
|
+
)
|
159
|
+
end
|
160
|
+
|
161
|
+
def self.run(options={})
|
162
|
+
id = id_param(options)
|
163
|
+
options.fetch(:command)
|
164
|
+
|
165
|
+
post(
|
166
|
+
path: "/apps/#{id}/run",
|
167
|
+
body: options.to_json
|
168
|
+
)
|
169
|
+
end
|
170
|
+
|
171
|
+
end
|
172
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'dawn/api/base_api'
|
2
|
+
|
3
|
+
module Dawn
|
4
|
+
class Domain
|
5
|
+
|
6
|
+
include BaseApi
|
7
|
+
|
8
|
+
attr_reader :data
|
9
|
+
attr_writer :app
|
10
|
+
|
11
|
+
def initialize(data)
|
12
|
+
@app = nil
|
13
|
+
@data = data
|
14
|
+
end
|
15
|
+
|
16
|
+
data_key :id
|
17
|
+
data_key :created_at
|
18
|
+
data_key :updated_at
|
19
|
+
data_key :url
|
20
|
+
data_key :app_id, "app/id"
|
21
|
+
|
22
|
+
def app
|
23
|
+
@app ||= App.find(id: app_id)
|
24
|
+
end
|
25
|
+
|
26
|
+
def refresh
|
27
|
+
@data = get(
|
28
|
+
path: "/domains/#{id}",
|
29
|
+
query: options
|
30
|
+
)["domain"]
|
31
|
+
end
|
32
|
+
|
33
|
+
def destroy(options={})
|
34
|
+
self.class.destroy(options.merge(id: id))
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.id_param(options)
|
38
|
+
id = options.delete(:id) ||
|
39
|
+
options.delete(:name) ||
|
40
|
+
options.delete(:uri) ||
|
41
|
+
options.delete(:url) ||
|
42
|
+
raise
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.find(options)
|
46
|
+
id = id_param(options)
|
47
|
+
|
48
|
+
new get(
|
49
|
+
path: "/domains/#{id}",
|
50
|
+
query: options
|
51
|
+
)["domain"]
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.destroy(options)
|
55
|
+
id = id_param(options)
|
56
|
+
|
57
|
+
delete(
|
58
|
+
path: "/domains/#{id}",
|
59
|
+
query: options
|
60
|
+
)
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|