fleet-api 0.9.0 → 1.0.0
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/.travis.yml +1 -2
- data/CHANGELOG.md +10 -0
- data/Gemfile.lock +3 -8
- data/README.md +25 -27
- data/fleet-api.gemspec +1 -2
- data/lib/fleet/client/machines.rb +1 -2
- data/lib/fleet/client/state.rb +3 -8
- data/lib/fleet/client/unit.rb +16 -13
- data/lib/fleet/client.rb +39 -79
- data/lib/fleet/configuration.rb +5 -10
- data/lib/fleet/connection.rb +21 -12
- data/lib/fleet/error.rb +1 -2
- data/lib/fleet/request.rb +39 -36
- data/lib/fleet/service_definition.rb +20 -37
- data/lib/fleet/version.rb +1 -1
- data/spec/fleet/client/machines_spec.rb +1 -2
- data/spec/fleet/client/state_spec.rb +2 -25
- data/spec/fleet/client/unit_spec.rb +35 -20
- data/spec/fleet/client_spec.rb +84 -184
- data/spec/fleet/configuration_spec.rb +6 -6
- data/spec/fleet/connection_spec.rb +51 -47
- data/spec/fleet/error_spec.rb +1 -7
- data/spec/fleet/request_spec.rb +52 -85
- data/spec/fleet/service_definition_spec.rb +10 -51
- data/spec/fleet_spec.rb +8 -14
- metadata +7 -27
- data/lib/fleet/client/job.rb +0 -44
- data/lib/fleet/middleware/response/raise_error.rb +0 -37
- data/spec/fleet/client/job_spec.rb +0 -123
- data/spec/fleet/middleware/response/raise_error_spec.rb +0 -90
@@ -2,73 +2,77 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Fleet::Connection do
|
4
4
|
|
5
|
-
describe 'registered middleware' do
|
6
|
-
|
7
|
-
subject { Fleet::Client.new.connection }
|
8
|
-
|
9
|
-
handlers = [
|
10
|
-
Faraday::Request::UrlEncoded,
|
11
|
-
FaradayMiddleware::ParseJson,
|
12
|
-
Fleet::Middleware::Response::RaiseError,
|
13
|
-
FaradayMiddleware::FollowRedirects,
|
14
|
-
Faraday::Adapter::NetHttp
|
15
|
-
]
|
16
|
-
|
17
|
-
handlers.each do |handler|
|
18
|
-
it { expect(subject.builder.handlers).to include handler }
|
19
|
-
end
|
20
|
-
|
21
|
-
it "includes exactly #{handlers.count} handlers" do
|
22
|
-
expect(subject.builder.handlers.count).to eql handlers.count
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
5
|
describe 'connection options' do
|
27
6
|
|
28
|
-
let(:
|
29
|
-
let(:
|
30
|
-
let(:proxy) { 'http://proxy.com' }
|
7
|
+
let(:open_timeout) { 30 }
|
8
|
+
let(:read_timeout) { 40 }
|
31
9
|
|
32
10
|
subject do
|
33
11
|
Fleet::Client.new(
|
34
|
-
|
35
|
-
|
36
|
-
proxy: proxy).connection
|
12
|
+
open_timeout: open_timeout,
|
13
|
+
read_timeout: read_timeout).connection
|
37
14
|
end
|
38
15
|
|
39
|
-
describe '
|
40
|
-
it 'matches the
|
41
|
-
expect(subject.
|
16
|
+
describe 'open_timeout' do
|
17
|
+
it 'matches the the specified timeout value' do
|
18
|
+
expect(subject.data[:connect_timeout]).to eq open_timeout
|
42
19
|
end
|
43
20
|
end
|
44
21
|
|
45
|
-
describe '
|
46
|
-
it 'matches the
|
47
|
-
expect(subject.
|
22
|
+
describe 'read_timeout' do
|
23
|
+
it 'matches the the specified timeout value' do
|
24
|
+
expect(subject.data[:read_timeout]).to eq read_timeout
|
48
25
|
end
|
49
26
|
end
|
50
27
|
|
51
|
-
|
52
|
-
|
53
|
-
|
28
|
+
context 'when URL is HTTP' do
|
29
|
+
let(:url) { 'http://foo.com/bar' }
|
30
|
+
|
31
|
+
subject do
|
32
|
+
Fleet::Client.new(fleet_api_url: url).connection
|
33
|
+
end
|
34
|
+
describe 'scheme' do
|
35
|
+
it 'matches the scheme of the URL' do
|
36
|
+
expect(subject.data[:scheme]).to eq 'http'
|
37
|
+
end
|
54
38
|
end
|
55
|
-
end
|
56
39
|
|
57
|
-
|
58
|
-
|
59
|
-
|
40
|
+
describe 'host' do
|
41
|
+
it 'matches the host of the URL' do
|
42
|
+
expect(subject.data[:host]).to eq 'foo.com'
|
43
|
+
end
|
60
44
|
end
|
61
|
-
end
|
62
45
|
|
63
|
-
|
64
|
-
|
65
|
-
|
46
|
+
describe 'port' do
|
47
|
+
it 'matches the port of the URL' do
|
48
|
+
expect(subject.data[:port]).to eq 80
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe 'prefix' do
|
53
|
+
it 'matches the path of the URL' do
|
54
|
+
expect(subject.data[:path]).to eq '/bar'
|
55
|
+
end
|
66
56
|
end
|
67
57
|
end
|
68
58
|
|
69
|
-
|
70
|
-
|
71
|
-
|
59
|
+
context 'when URL is UNIX' do
|
60
|
+
let(:url) { 'unix:///foo/bar.socket' }
|
61
|
+
|
62
|
+
subject do
|
63
|
+
Fleet::Client.new(fleet_api_url: url).connection
|
64
|
+
end
|
65
|
+
|
66
|
+
describe 'scheme' do
|
67
|
+
it 'matches the scheme of the URL' do
|
68
|
+
expect(subject.data[:scheme]).to eq 'unix'
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe 'socket' do
|
73
|
+
it 'matches the port of the URL' do
|
74
|
+
expect(subject.data[:socket]).to eq '/foo/bar.socket'
|
75
|
+
end
|
72
76
|
end
|
73
77
|
end
|
74
78
|
|
data/spec/fleet/error_spec.rb
CHANGED
@@ -4,13 +4,11 @@ describe Fleet::Error do
|
|
4
4
|
|
5
5
|
let(:message) { 'some message' }
|
6
6
|
let(:error_code) { 12345 }
|
7
|
-
let(:cause) { 'user error' }
|
8
7
|
|
9
|
-
subject { Fleet::Error.new(message, error_code
|
8
|
+
subject { Fleet::Error.new(message, error_code) }
|
10
9
|
|
11
10
|
it { should respond_to(:message) }
|
12
11
|
it { should respond_to(:error_code) }
|
13
|
-
it { should respond_to(:cause) }
|
14
12
|
|
15
13
|
describe '#initialize' do
|
16
14
|
|
@@ -21,9 +19,5 @@ describe Fleet::Error do
|
|
21
19
|
it 'saves the passed-in error code' do
|
22
20
|
expect(subject.error_code).to eq error_code
|
23
21
|
end
|
24
|
-
|
25
|
-
it 'saves the passed-in cause' do
|
26
|
-
expect(subject.cause).to eq cause
|
27
|
-
end
|
28
22
|
end
|
29
23
|
end
|
data/spec/fleet/request_spec.rb
CHANGED
@@ -4,124 +4,91 @@ describe Fleet::Request do
|
|
4
4
|
|
5
5
|
subject { Fleet::Client.new }
|
6
6
|
|
7
|
-
let(:path) { '/
|
8
|
-
|
9
|
-
let(:request) do
|
10
|
-
double(:request,
|
11
|
-
options: {},
|
12
|
-
headers: {},
|
13
|
-
params: {},
|
14
|
-
'headers=' => nil,
|
15
|
-
'path=' => nil)
|
16
|
-
end
|
7
|
+
let(:path) { '/foo bar@' }
|
17
8
|
|
18
9
|
let(:response) do
|
19
|
-
double(:response, body: 'foo')
|
10
|
+
double(:response, body: '{"name":"foo"}', status: 200)
|
20
11
|
end
|
21
12
|
|
22
13
|
let(:connection) { double(:connection) }
|
23
14
|
|
24
15
|
before do
|
25
|
-
allow(connection).to receive(:send).
|
16
|
+
allow(connection).to receive(:send).and_return(response)
|
26
17
|
allow(subject).to receive(:connection).and_return(connection)
|
27
18
|
end
|
28
19
|
|
29
|
-
|
30
|
-
|
31
|
-
context "##{method}" do
|
20
|
+
describe '#get' do
|
32
21
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
end
|
22
|
+
let(:options) do
|
23
|
+
{ foo: 'bar' }
|
24
|
+
end
|
37
25
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
subject.send(method, path, {}, headers)
|
42
|
-
end
|
26
|
+
it 'invokes #get on the connection with the correct params' do
|
27
|
+
opts = { path: '/foo%20bar%40', query: options }
|
28
|
+
expect(connection).to receive(:send).with(:get, opts)
|
43
29
|
|
44
|
-
|
45
|
-
|
46
|
-
end
|
30
|
+
subject.send(:get, path, options)
|
31
|
+
end
|
47
32
|
|
48
|
-
|
33
|
+
it 'returns the parsed response body' do
|
34
|
+
expect(subject.send(:get, path, options)).to eq('name' => 'foo')
|
35
|
+
end
|
49
36
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
37
|
+
context 'when there is a SocketError' do
|
38
|
+
before do
|
39
|
+
allow(connection).to receive(:send)
|
40
|
+
.and_raise(Excon::Errors::SocketError, Excon::Errors::Error.new('oops'))
|
41
|
+
end
|
54
42
|
|
55
|
-
|
56
|
-
|
57
|
-
end
|
43
|
+
it 'raises a Fleet::ConnectionError' do
|
44
|
+
expect { subject.send(:get, path, options) }.to raise_error(Fleet::ConnectionError)
|
58
45
|
end
|
59
46
|
end
|
60
|
-
end
|
61
|
-
|
62
|
-
[:get, :delete, :head].each do |method|
|
63
|
-
|
64
|
-
context "##{method}" do
|
65
47
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
options = { a: :b }
|
70
|
-
expect(request).to receive(:params=).with(options)
|
71
|
-
subject.send(method, path, options)
|
72
|
-
end
|
48
|
+
context 'when a non-200 status code is returned' do
|
49
|
+
let(:response) do
|
50
|
+
double(:response, body: '{"error": {"message": "oops", "code": "400"}}', status: 400)
|
73
51
|
end
|
74
52
|
|
75
|
-
|
76
|
-
|
77
|
-
it 'does not set options on the request' do
|
78
|
-
expect(request).to_not receive(:params=)
|
79
|
-
subject.send(method, path)
|
80
|
-
end
|
53
|
+
it 'raises a Fleet::ConnectionError' do
|
54
|
+
expect { subject.send(:get, path, options) }.to raise_error(Fleet::BadRequest, 'oops')
|
81
55
|
end
|
82
56
|
end
|
83
57
|
end
|
84
58
|
|
85
|
-
|
86
|
-
|
87
|
-
context "##{method}" do
|
59
|
+
describe '#put' do
|
88
60
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
options = { a: :b }
|
93
|
-
expect(request).to receive(:body=).with(options)
|
94
|
-
subject.send(method, path, options)
|
95
|
-
end
|
96
|
-
end
|
61
|
+
let(:options) do
|
62
|
+
{ foo: 'bar' }
|
63
|
+
end
|
97
64
|
|
98
|
-
|
65
|
+
it 'invokes #put on the connection with the correct params' do
|
66
|
+
opts = {
|
67
|
+
path: '/foo%20bar%40',
|
68
|
+
headers: { 'Content-Type' => 'application/json' },
|
69
|
+
body: JSON.dump(options)
|
70
|
+
}
|
71
|
+
expect(connection).to receive(:send).with(:put, opts)
|
99
72
|
|
100
|
-
|
101
|
-
|
102
|
-
subject.send(method, path)
|
103
|
-
end
|
104
|
-
end
|
73
|
+
subject.send(:put, path, options)
|
74
|
+
end
|
105
75
|
|
106
|
-
|
107
|
-
|
76
|
+
it 'returns true' do
|
77
|
+
expect(subject.send(:put, path, options)).to eq(true)
|
78
|
+
end
|
79
|
+
end
|
108
80
|
|
109
|
-
|
110
|
-
allow(request).to receive(:params=)
|
111
|
-
allow(request).to receive(:body=)
|
112
|
-
end
|
81
|
+
describe '#delete' do
|
113
82
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
end
|
83
|
+
it 'invokes #get on the connection with the correct params' do
|
84
|
+
opts = { path: '/foo%20bar%40' }
|
85
|
+
expect(connection).to receive(:send).with(:delete, opts)
|
118
86
|
|
119
|
-
|
120
|
-
|
121
|
-
subject.send(method, path, options)
|
122
|
-
end
|
123
|
-
end
|
87
|
+
subject.send(:delete, path, nil)
|
88
|
+
end
|
124
89
|
|
90
|
+
it 'returns true' do
|
91
|
+
expect(subject.send(:delete, path, nil)).to eq(true)
|
125
92
|
end
|
126
93
|
end
|
127
94
|
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Fleet::ServiceDefinition do
|
4
4
|
|
5
|
-
let(:name) { '
|
5
|
+
let(:name) { 'foo.service' }
|
6
6
|
|
7
7
|
let(:service_hash) do
|
8
8
|
{
|
@@ -16,64 +16,23 @@ describe Fleet::ServiceDefinition do
|
|
16
16
|
}
|
17
17
|
end
|
18
18
|
|
19
|
-
subject { described_class.new(name) }
|
20
|
-
|
21
|
-
it { should respond_to :name }
|
22
|
-
|
23
|
-
describe '#initialize' do
|
24
|
-
|
25
|
-
subject { described_class.new(name) }
|
26
|
-
|
27
|
-
describe 'name' do
|
28
|
-
it 'should equal the passed-in name' do
|
29
|
-
expect(subject.name).to eq name
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
19
|
describe '#to_unit' do
|
35
20
|
|
36
|
-
subject { described_class.new(
|
21
|
+
subject { described_class.new(service_hash) }
|
37
22
|
|
38
23
|
it 'provides a fleet formatted unit definition' do
|
39
24
|
|
40
|
-
raw = <<UNIT_FILE
|
41
|
-
[Unit]
|
42
|
-
Description=#{service_hash['Unit']['Description']}
|
43
|
-
|
44
|
-
[Service]
|
45
|
-
ExecStartPre=#{service_hash['Service']['ExecStartPre'].first}
|
46
|
-
ExecStartPre=#{service_hash['Service']['ExecStartPre'].last}
|
47
|
-
ExecStart=#{service_hash['Service']['ExecStart']}
|
48
|
-
UNIT_FILE
|
49
|
-
|
50
|
-
expected = { 'Raw' => raw }
|
51
|
-
|
52
|
-
expect(subject.to_unit).to eq expected
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
describe '#to_job' do
|
57
|
-
|
58
|
-
subject { described_class.new(name, service_hash) }
|
59
|
-
|
60
|
-
it 'generates the appropriate job definition' do
|
61
|
-
|
62
25
|
expected = {
|
63
|
-
|
64
|
-
|
26
|
+
"name" => name,
|
27
|
+
"options"=> [
|
28
|
+
{ "section" => "Unit", "name" => "Description", "value" => "infinite loop"},
|
29
|
+
{ "section" => "Service", "name" => "ExecStartPre", "value" => "foo" },
|
30
|
+
{ "section" => "Service", "name" => "ExecStartPre", "value" => "bar" },
|
31
|
+
{ "section" => "Service", "name" => "ExecStart", "value" => "/bin/bash -c \"while true; do sleep 1; done\"" }
|
32
|
+
]
|
65
33
|
}
|
66
34
|
|
67
|
-
expect(subject.
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
describe '#sha1' do
|
72
|
-
|
73
|
-
subject { described_class.new(name, service_hash) }
|
74
|
-
|
75
|
-
it 'generates the appropriate sha1 hash' do
|
76
|
-
expect(subject.sha1).to eq 'ada3139c17b806df4df0d0e6ee36b3c95093e459'
|
35
|
+
expect(subject.to_unit(name)).to eq expected
|
77
36
|
end
|
78
37
|
end
|
79
38
|
end
|
data/spec/fleet_spec.rb
CHANGED
@@ -38,15 +38,21 @@ describe Fleet do
|
|
38
38
|
let(:url) { 'http://foo.com/bar' }
|
39
39
|
|
40
40
|
before do
|
41
|
-
stub_const('Fleet::Configuration::
|
41
|
+
stub_const('Fleet::Configuration::DEFAULT_FLEET_API_URL', url)
|
42
42
|
Fleet.reset
|
43
43
|
end
|
44
44
|
|
45
|
-
it 'defaults to the value of
|
45
|
+
it 'defaults to the value of DEFAULT_FLEET_API_URL' do
|
46
46
|
expect(Fleet.fleet_api_url).to eq url
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
+
describe '.fleet_api_version' do
|
51
|
+
it 'defaults to v1' do
|
52
|
+
expect(Fleet.fleet_api_version).to eq 'v1'
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
50
56
|
describe '.open_timeout' do
|
51
57
|
it 'defaults to 2' do
|
52
58
|
expect(Fleet.open_timeout).to eq 2
|
@@ -59,18 +65,6 @@ describe Fleet do
|
|
59
65
|
end
|
60
66
|
end
|
61
67
|
|
62
|
-
describe '.ssl_options' do
|
63
|
-
it 'defaults to { verify: false }' do
|
64
|
-
expect(Fleet.ssl_options).to eq(verify: false)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
describe '.proxy' do
|
69
|
-
it 'defaults to nil' do
|
70
|
-
expect(Fleet.proxy).to be_nil
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
68
|
describe '.configure' do
|
75
69
|
it "accepts a block" do
|
76
70
|
expect { Fleet.configure {} }.to_not raise_error
|
metadata
CHANGED
@@ -1,43 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fleet-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- CenturyLink
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: excon
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 0.8.9
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - '='
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 0.8.9
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: faraday_middleware
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '='
|
17
|
+
- - ">="
|
32
18
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
19
|
+
version: 0.27.4
|
34
20
|
type: :runtime
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
|
-
- -
|
24
|
+
- - ">="
|
39
25
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
26
|
+
version: 0.27.4
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: rake
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,18 +98,15 @@ files:
|
|
112
98
|
- fleet-api.gemspec
|
113
99
|
- lib/fleet.rb
|
114
100
|
- lib/fleet/client.rb
|
115
|
-
- lib/fleet/client/job.rb
|
116
101
|
- lib/fleet/client/machines.rb
|
117
102
|
- lib/fleet/client/state.rb
|
118
103
|
- lib/fleet/client/unit.rb
|
119
104
|
- lib/fleet/configuration.rb
|
120
105
|
- lib/fleet/connection.rb
|
121
106
|
- lib/fleet/error.rb
|
122
|
-
- lib/fleet/middleware/response/raise_error.rb
|
123
107
|
- lib/fleet/request.rb
|
124
108
|
- lib/fleet/service_definition.rb
|
125
109
|
- lib/fleet/version.rb
|
126
|
-
- spec/fleet/client/job_spec.rb
|
127
110
|
- spec/fleet/client/machines_spec.rb
|
128
111
|
- spec/fleet/client/state_spec.rb
|
129
112
|
- spec/fleet/client/unit_spec.rb
|
@@ -131,7 +114,6 @@ files:
|
|
131
114
|
- spec/fleet/configuration_spec.rb
|
132
115
|
- spec/fleet/connection_spec.rb
|
133
116
|
- spec/fleet/error_spec.rb
|
134
|
-
- spec/fleet/middleware/response/raise_error_spec.rb
|
135
117
|
- spec/fleet/request_spec.rb
|
136
118
|
- spec/fleet/service_definition_spec.rb
|
137
119
|
- spec/fleet_spec.rb
|
@@ -161,7 +143,6 @@ signing_key:
|
|
161
143
|
specification_version: 4
|
162
144
|
summary: A simple REST client for the CoreOS Fleet API
|
163
145
|
test_files:
|
164
|
-
- spec/fleet/client/job_spec.rb
|
165
146
|
- spec/fleet/client/machines_spec.rb
|
166
147
|
- spec/fleet/client/state_spec.rb
|
167
148
|
- spec/fleet/client/unit_spec.rb
|
@@ -169,7 +150,6 @@ test_files:
|
|
169
150
|
- spec/fleet/configuration_spec.rb
|
170
151
|
- spec/fleet/connection_spec.rb
|
171
152
|
- spec/fleet/error_spec.rb
|
172
|
-
- spec/fleet/middleware/response/raise_error_spec.rb
|
173
153
|
- spec/fleet/request_spec.rb
|
174
154
|
- spec/fleet/service_definition_spec.rb
|
175
155
|
- spec/fleet_spec.rb
|
data/lib/fleet/client/job.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
module Fleet
|
2
|
-
class Client
|
3
|
-
module Job
|
4
|
-
|
5
|
-
JOB_RESOURCE = 'job'
|
6
|
-
|
7
|
-
def list_jobs
|
8
|
-
opts = { consistent: true, recursive: true, sorted: true }
|
9
|
-
get(job_path, opts)
|
10
|
-
end
|
11
|
-
|
12
|
-
def get_job(service_name)
|
13
|
-
opts = { consistent: true, recursive: true, sorted: false }
|
14
|
-
get(job_path(service_name, :object), opts)
|
15
|
-
end
|
16
|
-
|
17
|
-
def create_job(service_name, job)
|
18
|
-
opts = {
|
19
|
-
querystring: { 'prevExist' => false },
|
20
|
-
body: { value: job.to_json }
|
21
|
-
}
|
22
|
-
put(job_path(service_name, :object), opts)
|
23
|
-
end
|
24
|
-
|
25
|
-
def delete_job(service_name)
|
26
|
-
opts = { dir: false, recursive: true }
|
27
|
-
delete(job_path(service_name), opts)
|
28
|
-
end
|
29
|
-
|
30
|
-
# Valid values for state - :loaded, :launched, :inactive
|
31
|
-
def update_job_target_state(service_name, state)
|
32
|
-
opts = { value: state }
|
33
|
-
put(job_path(service_name, 'target-state'), opts)
|
34
|
-
end
|
35
|
-
|
36
|
-
private
|
37
|
-
|
38
|
-
def job_path(*parts)
|
39
|
-
resource_path(JOB_RESOURCE, *parts)
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'json'
|
3
|
-
require 'fleet/error'
|
4
|
-
|
5
|
-
module Fleet::Middleware
|
6
|
-
module Response
|
7
|
-
|
8
|
-
class RaiseError < Faraday::Response::Middleware
|
9
|
-
|
10
|
-
def on_complete(env)
|
11
|
-
status = env[:status].to_i
|
12
|
-
return unless (400..600).include?(status)
|
13
|
-
|
14
|
-
error = parse_error(env[:body])
|
15
|
-
|
16
|
-
# Find the error class that matches the HTTP status code. Default to
|
17
|
-
# Error if no matching class exists.
|
18
|
-
class_name = Fleet::Error::HTTP_CODE_MAP.fetch(status, 'Error')
|
19
|
-
|
20
|
-
fail Fleet.const_get(class_name).new(
|
21
|
-
error['message'],
|
22
|
-
error['errorCode'],
|
23
|
-
error['cause'])
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
def parse_error(body)
|
29
|
-
JSON.parse(body)
|
30
|
-
rescue StandardError
|
31
|
-
{ 'message' => body }
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
Faraday.register_middleware :response, raise_fleet_error: -> { RaiseError }
|
36
|
-
end
|
37
|
-
end
|