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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 00fbbdefda724c9caf02b454baeddf35e2da8744
4
- data.tar.gz: b71657d7e5e315e63c82d543d93eaefae3f6348c
3
+ metadata.gz: ce86ff18c66c5969773219d3ca52057c3a26f7e9
4
+ data.tar.gz: bc4ec3d58c036d345bcd87a2ecc0e884b9747137
5
5
  SHA512:
6
- metadata.gz: c871060bd3057105ddcd5266c29ad8947eb1e42c5b2c91048076da25c564c1bdeefb46270adadec74f0f8d3429974a4d90e89b62bbfe8752735e0bfcf40e6af8
7
- data.tar.gz: 905361134b015f6c4d8ccd4cbbbdb7d767bd79866ed3a8bcc72cd68bb65e6321332616ce7d93383af1ebf5a84a5baf53a7abef56604e8eeb79acaffa3c7971bc
6
+ metadata.gz: 9843ba1124acbebff0cdf228974e21b92737396dc5bcd7e91dd5cae4b40a915f551970ccadd3555ae49b5c36c4827a283011329b7a7adc56fdac5a2ebd48faae
7
+ data.tar.gz: 45e259721177024b33d2a80fc74c289ac2082ac1f19c1c79922cac06741880dc6c6400e171cd3a216124e3d5945b03e6fb06ad1401960b01a28b33b3fa13eab8
@@ -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
@@ -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
@@ -1,5 +1,5 @@
1
1
  module Berkshelf
2
2
  module API
3
- VERSION = "1.1.0"
3
+ VERSION = "1.1.1"
4
4
  end
5
5
  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
- context "the cache has been warmed" do
12
- before { cache_manager.set_warmed; get '/universe' }
18
+ before { get '/universe' }
19
+ let(:app_cache) { cache_manager.cache }
13
20
 
14
- subject { last_response }
15
- let(:app_cache) { cache_manager.cache }
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.0
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: 2013-12-26 00:00:00.000000000 Z
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: '0'
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: '0'
97
+ version: 0.8.0
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: retryable
100
100
  requirement: !ruby/object:Gem::Requirement