pdc 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/test_no_ssl_verification.rb +16 -0
- data/lib/pdc/config.rb +11 -5
- data/lib/pdc/http/request/pdc_token.rb +1 -1
- data/lib/pdc/http/request/token_fetcher.rb +31 -12
- data/lib/pdc/version.rb +1 -1
- data/spec/pdc/config_spec.rb +24 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd047fc7a9762e173273f35116a7ba835cdaa219
|
4
|
+
data.tar.gz: 627c88b0bd6f4c5ad0a0192b5e47055fec975499
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d6b3965169451b4903d7e00dda6a067df65eeda6e6c944391db1c159f06953b2ea42ec42c7816125eafe25d3fb5184e8f98f49e5c42cd51fb3650890fff3724
|
7
|
+
data.tar.gz: 00f4ec8818140c9031cd748c1280e60b279724984e5a3fdcc26a1123e4f65cbea714ed5bdadb8e66c6a5a9ffa8b32cfd96432d8eff8d7cfefbab16f6fd5f0cd4
|
@@ -0,0 +1,16 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
|
+
|
3
|
+
require 'ap'
|
4
|
+
require 'pdc'
|
5
|
+
|
6
|
+
def main
|
7
|
+
PDC.configure do |config|
|
8
|
+
config.site = 'https://pdc.engineering.redhat.com/'
|
9
|
+
config.log_level = :debug
|
10
|
+
config.ssl_verify_mode = OpenSSL::SSL::VERIFY_NONE
|
11
|
+
end
|
12
|
+
|
13
|
+
puts "Release count: #{PDC::V1::Release.count}"
|
14
|
+
end
|
15
|
+
|
16
|
+
main if __FILE__ == $PROGRAM_NAME
|
data/lib/pdc/config.rb
CHANGED
@@ -9,7 +9,6 @@ module PDC
|
|
9
9
|
#
|
10
10
|
# :site => 'http://localhost:2990',
|
11
11
|
# :ssl_verify_mode => OpenSSL::SSL::VERIFY_PEER,
|
12
|
-
# :use_ssl => true,
|
13
12
|
# :username => nil,
|
14
13
|
# :password => nil,
|
15
14
|
# :auth_type => :oauth
|
@@ -24,7 +23,6 @@ module PDC
|
|
24
23
|
:site,
|
25
24
|
:api_root,
|
26
25
|
|
27
|
-
:use_ssl,
|
28
26
|
:ssl_verify_mode,
|
29
27
|
|
30
28
|
:requires_token,
|
@@ -42,7 +40,6 @@ module PDC
|
|
42
40
|
# site config
|
43
41
|
self.site = 'http://localhost:8000'
|
44
42
|
self.api_root = 'rest_api/'
|
45
|
-
self.use_ssl = true
|
46
43
|
self.ssl_verify_mode = OpenSSL::SSL::VERIFY_PEER
|
47
44
|
|
48
45
|
# token and authentication
|
@@ -90,13 +87,15 @@ module PDC
|
|
90
87
|
end
|
91
88
|
|
92
89
|
def token
|
93
|
-
|
90
|
+
return unless config.requires_token
|
91
|
+
config.token || Request::TokenFetcher.fetch
|
94
92
|
end
|
95
93
|
|
96
94
|
private
|
97
95
|
|
98
96
|
def apply_config
|
99
97
|
reset_logger
|
98
|
+
reset_token_fetcher
|
100
99
|
reset_base_connection
|
101
100
|
end
|
102
101
|
|
@@ -105,6 +104,13 @@ module PDC
|
|
105
104
|
logger.level = Logger.const_get(config.log_level.upcase)
|
106
105
|
end
|
107
106
|
|
107
|
+
def reset_token_fetcher
|
108
|
+
Request::TokenFetcher.configure do |c|
|
109
|
+
c.url = token_url
|
110
|
+
c.ssl_verify_mode = config.ssl_verify_mode
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
108
114
|
# resets and returns the +Faraday+ +connection+ object
|
109
115
|
def reset_base_connection
|
110
116
|
|
@@ -116,7 +122,7 @@ module PDC
|
|
116
122
|
|
117
123
|
PDC::Base.connection = Faraday.new(faraday_config) do |c|
|
118
124
|
c.request :append_slash_to_path
|
119
|
-
c.request :pdc_token, token: config.token
|
125
|
+
c.request :pdc_token, token: config.token if config.requires_token
|
120
126
|
|
121
127
|
c.response :logger, config.logger
|
122
128
|
c.response :pdc_paginator
|
@@ -4,23 +4,30 @@ require 'json'
|
|
4
4
|
module PDC::Request
|
5
5
|
module TokenFetcher
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
PDC.logger.debug "Fetch token from: #{token_url}"
|
10
|
-
curl = Curl::Easy.new(token_url.to_s) do |request|
|
11
|
-
request.headers['Accept'] = 'application/json'
|
12
|
-
request.http_auth_types = :gssnegotiate
|
7
|
+
module Configuration
|
8
|
+
VALID_KEYS = [:ssl_verify_mode, :url].freeze
|
13
9
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
10
|
+
attr_accessor(*VALID_KEYS)
|
11
|
+
|
12
|
+
def options
|
13
|
+
Hash[*VALID_KEYS.map { |k| [k, send(k)] }.flatten]
|
14
|
+
end
|
15
|
+
|
16
|
+
def configure
|
17
|
+
yield self
|
18
18
|
end
|
19
|
+
end
|
20
|
+
extend Configuration
|
19
21
|
|
22
|
+
# uses kerberos token to obtain token from pdc
|
23
|
+
def self.fetch
|
24
|
+
PDC.logger.debug "Fetch token from: #{url}"
|
25
|
+
|
26
|
+
curl = curl_easy
|
20
27
|
curl.perform
|
21
28
|
if curl.response_code != 200
|
22
|
-
PDC.logger.info "Obtain token from #{
|
23
|
-
error = {
|
29
|
+
PDC.logger.info "Obtain token from #{url} failed: #{curl.body_str}"
|
30
|
+
error = { url: url, body: curl.body, code: curl.response_code }
|
24
31
|
raise PDC::TokenFetchFailed, error
|
25
32
|
end
|
26
33
|
result = JSON.parse(curl.body_str)
|
@@ -28,5 +35,17 @@ module PDC::Request
|
|
28
35
|
result['token']
|
29
36
|
end
|
30
37
|
|
38
|
+
def self.curl_easy
|
39
|
+
Curl::Easy.new(url.to_s) do |request|
|
40
|
+
request.ssl_verify_peer = ssl_verify_mode != OpenSSL::SSL::VERIFY_NONE
|
41
|
+
request.headers['Accept'] = 'application/json'
|
42
|
+
request.http_auth_types = :gssnegotiate
|
43
|
+
|
44
|
+
# The curl man page (http://curl.haxx.se/docs/manpage.html)
|
45
|
+
# specifes setting a fake username when using Negotiate auth,
|
46
|
+
# and use ':' in their example.
|
47
|
+
request.username = ':'
|
48
|
+
end
|
49
|
+
end
|
31
50
|
end
|
32
51
|
end
|
data/lib/pdc/version.rb
CHANGED
data/spec/pdc/config_spec.rb
CHANGED
@@ -57,6 +57,30 @@ describe PDC do
|
|
57
57
|
assert_requested releases, times: 3
|
58
58
|
end
|
59
59
|
|
60
|
+
it 'will not cache PDC.token call' do
|
61
|
+
token = stub_request(:get, token_url).to_return_json(token: 'foobar')
|
62
|
+
|
63
|
+
PDC.configure { |pdc| pdc.site = site }
|
64
|
+
assert_not_requested token
|
65
|
+
|
66
|
+
PDC.token.must_equal 'foobar'
|
67
|
+
PDC.token.must_equal 'foobar'
|
68
|
+
|
69
|
+
assert_requested token, times: 2
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'will not fetch token if already set' do
|
73
|
+
token = stub_request(:get, token_url).to_return_json(token: 'foobar')
|
74
|
+
|
75
|
+
PDC.configure do |pdc|
|
76
|
+
pdc.site = site
|
77
|
+
pdc.token = :a_known_token
|
78
|
+
end
|
79
|
+
|
80
|
+
PDC.token.must_equal :a_known_token
|
81
|
+
assert_not_requested token
|
82
|
+
end
|
83
|
+
|
60
84
|
it 'raises TokenFetchFailed when fails' do
|
61
85
|
token = stub_request(:get, token_url).to_return_json(
|
62
86
|
{ detail: 'Not found' },
|
@@ -84,7 +108,6 @@ describe PDC do
|
|
84
108
|
it 'allows default site to be overridden ' do
|
85
109
|
PDC.configure do |config|
|
86
110
|
config.site = 'http://localhost:8888'
|
87
|
-
config.token = :foo
|
88
111
|
end
|
89
112
|
PDC.config.site.must_equal 'http://localhost:8888'
|
90
113
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pdc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sunil Thaha
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-09-
|
12
|
+
date: 2016-09-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -163,6 +163,7 @@ files:
|
|
163
163
|
- examples/pdc_test_cache.rb
|
164
164
|
- examples/prod_failures.rb
|
165
165
|
- examples/prod_pdc.rb
|
166
|
+
- examples/test_no_ssl_verification.rb
|
166
167
|
- lib/pdc.rb
|
167
168
|
- lib/pdc/base.rb
|
168
169
|
- lib/pdc/config.rb
|