berkshelf-api 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/berkshelf-api.gemspec +1 -1
- data/lib/berkshelf/api/application.rb +2 -0
- data/lib/berkshelf/api/cache_builder/worker/github.rb +1 -1
- data/lib/berkshelf/api/endpoint/v1.rb +10 -0
- data/lib/berkshelf/api/version.rb +1 -1
- data/spec/unit/berkshelf/api/endpoint/v1_spec.rb +32 -10
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce86ff18c66c5969773219d3ca52057c3a26f7e9
|
4
|
+
data.tar.gz: bc4ec3d58c036d345bcd87a2ecc0e884b9747137
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9843ba1124acbebff0cdf228974e21b92737396dc5bcd7e91dd5cae4b40a915f551970ccadd3555ae49b5c36c4827a283011329b7a7adc56fdac5a2ebd48faae
|
7
|
+
data.tar.gz: 45e259721177024b33d2a80fc74c289ac2082ac1f19c1c79922cac06741880dc6c6400e171cd3a216124e3d5945b03e6fb06ad1401960b01a28b33b3fa13eab8
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
# master
|
2
|
+
|
3
|
+
* Enhancements
|
4
|
+
*
|
5
|
+
|
6
|
+
* Bug Fixes
|
7
|
+
*
|
8
|
+
|
9
|
+
# 1.1.1
|
10
|
+
|
11
|
+
* Enhancements
|
12
|
+
* Added /status endpoint to REST API
|
13
|
+
|
14
|
+
* Bug Fixes
|
15
|
+
* Github cache builder will autopaginate to get all repos
|
16
|
+
* Fix dependency issues with Faraday
|
17
|
+
|
1
18
|
# 1.1.0
|
2
19
|
|
3
20
|
* Enhancements
|
data/berkshelf-api.gemspec
CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_dependency 'reel', '>= 0.4.0'
|
25
25
|
spec.add_dependency 'grape', '~> 0.5.0'
|
26
26
|
spec.add_dependency 'hashie', '>= 2.0.4'
|
27
|
-
spec.add_dependency 'faraday'
|
27
|
+
spec.add_dependency 'faraday', '~> 0.8.0'
|
28
28
|
spec.add_dependency 'retryable', '~> 1.3.3'
|
29
29
|
spec.add_dependency 'archive', '= 0.0.2'
|
30
30
|
spec.add_dependency 'buff-config', '~> 0.1'
|
@@ -28,6 +28,7 @@ module Berkshelf::API
|
|
28
28
|
include Berkshelf::API::Logging
|
29
29
|
include Berkshelf::API::Mixin::Services
|
30
30
|
|
31
|
+
attr_reader :start_time
|
31
32
|
def_delegators :registry, :[], :[]=
|
32
33
|
|
33
34
|
# @return [Berkshelf::API::Config]
|
@@ -113,6 +114,7 @@ module Berkshelf::API
|
|
113
114
|
# @option options [Boolean] :disable_http (false)
|
114
115
|
# run the application without the rest gateway
|
115
116
|
def run(options = {})
|
117
|
+
@start_time = Time.now.utc
|
116
118
|
loop do
|
117
119
|
supervisor = run!(options)
|
118
120
|
|
@@ -17,7 +17,7 @@ module Berkshelf::API
|
|
17
17
|
# authentication token for accessing the Github organization. This is necessary
|
18
18
|
# since Github throttles unauthenticated API requests
|
19
19
|
def initialize(options = {})
|
20
|
-
@connection = Octokit::Client.new(access_token: options[:access_token])
|
20
|
+
@connection = Octokit::Client.new(access_token: options[:access_token], auto_paginate: true)
|
21
21
|
@organization = options[:organization]
|
22
22
|
super(options)
|
23
23
|
end
|
@@ -19,6 +19,16 @@ module Berkshelf::API
|
|
19
19
|
status 503
|
20
20
|
end
|
21
21
|
end
|
22
|
+
|
23
|
+
desc "health check"
|
24
|
+
get 'status' do
|
25
|
+
{
|
26
|
+
status: 'ok',
|
27
|
+
version: Berkshelf::API::VERSION,
|
28
|
+
cache_status: cache_manager.warmed? ? 'ok' : 'warming',
|
29
|
+
uptime: Time.now.utc - Application.start_time,
|
30
|
+
}
|
31
|
+
end
|
22
32
|
end
|
23
33
|
end
|
24
34
|
end
|
@@ -4,28 +4,50 @@ describe Berkshelf::API::Endpoint::V1 do
|
|
4
4
|
include Rack::Test::Methods
|
5
5
|
include Berkshelf::API::Mixin::Services
|
6
6
|
|
7
|
-
before { Berkshelf::API::CacheManager.start }
|
8
7
|
let(:app) { described_class.new }
|
8
|
+
let(:cache_warm) { false }
|
9
|
+
|
10
|
+
before do
|
11
|
+
Berkshelf::API::CacheManager.start
|
12
|
+
cache_manager.set_warmed if cache_warm
|
13
|
+
end
|
14
|
+
|
15
|
+
subject { last_response }
|
9
16
|
|
10
17
|
describe "GET /universe" do
|
11
|
-
|
12
|
-
|
18
|
+
before { get '/universe' }
|
19
|
+
let(:app_cache) { cache_manager.cache }
|
13
20
|
|
14
|
-
|
15
|
-
let(:
|
21
|
+
context "the cache has been warmed" do
|
22
|
+
let(:cache_warm) { true }
|
16
23
|
|
17
24
|
its(:status) { should be(200) }
|
18
25
|
its(:body) { should eq(app_cache.to_json) }
|
19
26
|
end
|
20
27
|
|
21
28
|
context "the cache is still warming" do
|
22
|
-
before { get '/universe' }
|
23
|
-
|
24
|
-
subject { last_response }
|
25
|
-
let(:app_cache) { cache_manager.cache }
|
26
|
-
|
27
29
|
its(:status) { should be(503) }
|
28
30
|
its(:headers) { should have_key("Retry-After") }
|
29
31
|
end
|
30
32
|
end
|
33
|
+
|
34
|
+
describe "GET /status" do
|
35
|
+
before do
|
36
|
+
Berkshelf::API::Application.stub(:start_time) { Time.at(0) }
|
37
|
+
Time.stub(:now) { Time.at(100) }
|
38
|
+
get '/status'
|
39
|
+
end
|
40
|
+
|
41
|
+
context "the cache has been warmed" do
|
42
|
+
let(:cache_warm) { true }
|
43
|
+
|
44
|
+
its(:status) { should be(200) }
|
45
|
+
its(:body) { should eq({status: 'ok', version: Berkshelf::API::VERSION, cache_status: 'ok', uptime: 100.0}.to_json) }
|
46
|
+
end
|
47
|
+
|
48
|
+
context "the cache is still warming" do
|
49
|
+
its(:status) { should be(200) }
|
50
|
+
its(:body) { should eq({status: 'ok', version: Berkshelf::API::VERSION, cache_status: 'warming', uptime: 100.0}.to_json) }
|
51
|
+
end
|
52
|
+
end
|
31
53
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: berkshelf-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamie Winsor
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-02-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ridley
|
@@ -85,16 +85,16 @@ dependencies:
|
|
85
85
|
name: faraday
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- -
|
88
|
+
- - ~>
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
90
|
+
version: 0.8.0
|
91
91
|
type: :runtime
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
|
-
- -
|
95
|
+
- - ~>
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version:
|
97
|
+
version: 0.8.0
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: retryable
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|