fleet-api 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e76824863766406ea4fa859149d71e42147f7509
4
- data.tar.gz: 4fc476f3c9c283b7cc91f22f67ecb87fc8e4e6d6
3
+ metadata.gz: 432b71f5c32088d0776432ac6b6461e6572a1b8e
4
+ data.tar.gz: 95f6d020f76071b07ef7588286f1b17ec1ae96c9
5
5
  SHA512:
6
- metadata.gz: b14298bc17e6aaf575e0fa1b7d130420c5345f808e66f38c23bb8ea9c4ee93359d4315ff13507f368825fda568016c659d587cbe0fa232fa5fe00ee89fe29971
7
- data.tar.gz: 1fde940443cf548edd7e1255e7f654dfaffc1922fd65f13642785347b07cf8e252f4ff7551912ebc3ed1afe6ee2315554b0c2a51ef586393129a58d8dd6dbc65
6
+ metadata.gz: 813b9b6a98b6bbbddd0147339712b2d1487240a730be884f620572f896f91063ce48a0532173c4553c7e078ec13a1d0f6c1d39b6fffa2b5e2226ea6253b9efe1
7
+ data.tar.gz: a1c4e1e8c50f5edb6a7ae2b64cf166bd39fc0b1ab3ed5f079c2ce106b5d76c7e29ee5f486a948913ecb8212ced0fa941970575c51cde0420cd27a5206debddd5
@@ -1,6 +1,12 @@
1
1
  # Changelog
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ 1.2.0 - 2015-08-13
5
+ ------------------
6
+
7
+ ### Added
8
+ - Support for paginated responses (robholland)
9
+
4
10
  1.1.0 - 2015-02-19
5
11
  ------------------
6
12
 
data/README.md CHANGED
@@ -2,12 +2,16 @@ fleet-api
2
2
  =========
3
3
 
4
4
  [![Gem Version](https://badge.fury.io/rb/fleet-api.svg)](http://badge.fury.io/rb/fleet-api)
5
- [![Build Status](https://api.shippable.com/projects/540e7b283479c5ea8f9ebd66/badge?branchName=master)](https://app.shippable.com/projects/540e7b283479c5ea8f9ebd66/builds/latest)
5
+ [![Circle CI](https://circleci.com/gh/CenturyLinkLabs/fleet-api.svg?style=svg)](https://circleci.com/gh/CenturyLinkLabs/fleet-api)
6
6
 
7
7
  Provides a Ruby wrapper around the CoreOS Fleet API.
8
8
 
9
9
  The client allows programmatic access to most of the *fleetctl* commands including the ability to load, start, stop, unload and destroy unit files.
10
10
 
11
+ **Important Note:** As of version 1.0.0, this gem is now using the official Fleet REST API. Previous versions of this gem communicated with Fleet by reading/writing directly from/to the etcd key-value store. While this approach was functional, it was extremely brittle due to the fact that we were essentially using a private API. Now that the Fleet API has hit version 1.0 and is presumably stable it makes more sense to leverage the official API.
12
+
13
+ Users migrating from an older version of the Gem will simply need to make sure they configure it with the Fleet API endpoint instead of the etcd API endpoint.
14
+
11
15
  ### Installation
12
16
 
13
17
  Install the gem directly:
@@ -0,0 +1,13 @@
1
+ dependencies:
2
+ override:
3
+ - 'rvm-exec 1.9.3 bundle install'
4
+ - 'rvm-exec 2.0.0 bundle install'
5
+ - 'rvm-exec 2.1.5 bundle install'
6
+ - 'rvm-exec 2.2.0 bundle install'
7
+
8
+ test:
9
+ override:
10
+ - 'rvm-exec 1.9.3 bundle exec rake'
11
+ - 'rvm-exec 2.0.0 bundle exec rake'
12
+ - 'rvm-exec 2.1.5 bundle exec rake'
13
+ - 'rvm-exec 2.2.0 bundle exec rake'
@@ -13,6 +13,22 @@ module Fleet
13
13
  end
14
14
 
15
15
  def request(connection, method, path, options)
16
+ response = perform_request(connection, method, path, options)
17
+ return response if method != :get
18
+
19
+ next_page_token = response.delete('nextPageToken')
20
+ while next_page_token
21
+ next_options = options.merge('nextPageToken' => next_page_token)
22
+ next_response = perform_request(connection, method, path, next_options)
23
+ next_page_token = next_response.delete('nextPageToken')
24
+ next_response.each { |k, v| response[k] += v }
25
+ end
26
+ response
27
+ end
28
+
29
+ private
30
+
31
+ def perform_request(connection, method, path, options)
16
32
  req = {
17
33
  path: escape_path(path),
18
34
  }
@@ -41,8 +57,6 @@ module Fleet
41
57
  raise Fleet::ConnectionError, ex.message
42
58
  end
43
59
 
44
- private
45
-
46
60
  def escape_path(path)
47
61
  URI.escape(path).gsub(/@/, '%40')
48
62
  end
@@ -1,3 +1,3 @@
1
1
  module Fleet
2
- VERSION = '1.1.0'.freeze unless defined?(Fleet::VERSION)
2
+ VERSION = '1.2.0'.freeze unless defined?(Fleet::VERSION)
3
3
  end
@@ -34,6 +34,28 @@ describe Fleet::Request do
34
34
  expect(subject.send(:get, path, options)).to eq('name' => 'foo')
35
35
  end
36
36
 
37
+ context 'when there is pagination' do
38
+ let(:first_response) do
39
+ double(:first_response, body: '{"things":[{"name":"foo"}], "nextPageToken":"123"}', status: 200)
40
+ end
41
+ let(:second_response) do
42
+ double(:second_response, body: '{"things":[{"name":"bah"}], "nextPageToken":"456"}', status: 200)
43
+ end
44
+ let(:third_response) do
45
+ double(:second_response, body: '{"things":[{"name":"tah"}]}', status: 200)
46
+ end
47
+
48
+ it 'merges the responses' do
49
+ expect(connection).to receive(:send).with(:get, anything).and_return(first_response)
50
+ expect(connection).to receive(:send).with(:get, hash_including(query: { 'nextPageToken' => '123' })).and_return(second_response)
51
+ expect(connection).to receive(:send).with(:get, hash_including(query: {'nextPageToken' => '456'})).and_return(third_response)
52
+
53
+ expect(subject.send(:get, path)).to eql(
54
+ 'things' => [{ 'name' => 'foo' }, { 'name' => 'bah' }, { 'name' => 'tah' }]
55
+ )
56
+ end
57
+ end
58
+
37
59
  context 'when there is a SocketError' do
38
60
  before do
39
61
  allow(connection).to receive(:send)
@@ -58,13 +80,13 @@ describe Fleet::Request do
58
80
 
59
81
  describe '#put' do
60
82
 
61
- let(:options) do
62
- { foo: 'bar' }
83
+ let(:options) do
84
+ { foo: 'bar' }
63
85
  end
64
86
 
65
87
  it 'invokes #put on the connection with the correct params' do
66
- opts = {
67
- path: '/foo%20bar%40',
88
+ opts = {
89
+ path: '/foo%20bar%40',
68
90
  headers: { 'Content-Type' => 'application/json' },
69
91
  body: JSON.dump(options)
70
92
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fleet-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.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-02-19 00:00:00.000000000 Z
11
+ date: 2015-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: excon
@@ -95,6 +95,7 @@ files:
95
95
  - LICENSE
96
96
  - README.md
97
97
  - Rakefile
98
+ - circle.yml
98
99
  - fleet-api.gemspec
99
100
  - lib/fleet.rb
100
101
  - lib/fleet/client.rb