iron_core 1.0.5 → 1.0.7

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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZDYwYzFhNTg0YmUzYzRmN2EzM2RhMGVkMDE4Yzg0NGVmNjE2ODk1OQ==
5
- data.tar.gz: !binary |-
6
- ODFhMmIzYmVjNjIwYTFhZmQ2ZDhjNmZkZGEzN2IwMDZhYmUzODE0ZA==
2
+ SHA1:
3
+ metadata.gz: d4242d46932aaa5d4631b63ef7ca271d8b8e8e4d
4
+ data.tar.gz: b711a9caed69077007f64e94f89fa952e1d890d2
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- Y2Q4MzIxNjQ2MzZkODUyMjc0YzU4ZDM1N2MwNDIxZTkzZjA4YjIwOGFkYzQz
10
- MTEzMjBjOGZlZWVmMDAzM2EzNjEzYjMyOGVlZGI5YjU2MTQ3NGY2MTZiYTU0
11
- NDYxZTVkOTBhMzU2OTliMjA1ODVjODY0ZjY4NGU2ZmY2ZDVjMjg=
12
- data.tar.gz: !binary |-
13
- YzJmZWNjNTE4MDI2NDM0NGFiYjRkZDg4M2VjMGFlNDYxNzJlYjY1Y2NjMzBl
14
- YWUwYTQ1MzI3N2YzNjdhMDc0YWNhYmM4Zjk1Njk5YmVlNTAwMTI1ODc1MjFk
15
- NzhiZGVhYzI4MjFkOTJjMzUwNDZhMmQ5NDRmYmU2NDJhYTgwOWQ=
6
+ metadata.gz: e05d8fcf5d06d2371411478aee9f98d8d0cba40f80b6146b0835269f81f733a909e5d514a09bad2c11afcdf34df18ce8e54233018d38813dfef6229bdab2cb8b
7
+ data.tar.gz: 546cdfa1320532b6a33b261edac03043c7ba58415304733efd6f0363b72d46f7ea460a2bd1f641e885b275884b6819b70d936e1d32fb439975fca1b7134009b4
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  .idea
2
2
  .bundle
3
3
  pkg
4
+ *.gem
data/Gemfile.lock CHANGED
@@ -1,22 +1,22 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- iron_core (1.0.0)
5
- rest (>= 2.2.0)
4
+ iron_core (1.0.5)
5
+ rest (>= 3.0.3)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
- mime-types (1.23)
11
- minitest (5.0.6)
12
- net-http-persistent (2.9)
13
- rake (10.1.0)
14
- rest (2.6.3)
15
- net-http-persistent
16
- rest-client (>= 0.3.0)
17
- rest-client (1.6.7)
18
- mime-types (>= 1.16)
19
- test-unit (2.5.5)
10
+ minitest (5.5.1)
11
+ net-http-persistent (2.9.4)
12
+ netrc (0.10.3)
13
+ power_assert (0.2.2)
14
+ rake (10.4.2)
15
+ rest (3.0.3)
16
+ net-http-persistent (>= 2.9.1)
17
+ netrc
18
+ test-unit (3.0.9)
19
+ power_assert
20
20
 
21
21
  PLATFORMS
22
22
  ruby
data/iron_core.gemspec CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |gem|
16
16
 
17
17
  gem.required_rubygems_version = ">= 1.3.6"
18
18
  gem.required_ruby_version = Gem::Requirement.new(">= 1.8")
19
- gem.add_runtime_dependency "rest", ">= 2.6.4"
19
+ gem.add_runtime_dependency "rest", ">= 3.0.4"
20
20
 
21
21
  gem.add_development_dependency "test-unit"
22
22
  gem.add_development_dependency "minitest"
data/lib/iron_core.rb CHANGED
@@ -1,3 +1,5 @@
1
1
  require 'iron_core/version'
2
2
  require 'iron_core/iron_logger'
3
3
  require 'iron_core/client'
4
+ require 'iron_core/iron_token_provider'
5
+ require 'iron_core/keystone_token_provider'
@@ -8,9 +8,10 @@ module IronCore
8
8
  class Client
9
9
  attr_accessor :content_type
10
10
  attr_accessor :env
11
+ attr_reader :rest
11
12
 
12
13
  def initialize(company, product, options = {}, default_options = {}, extra_options_list = [])
13
- @options_list = [:scheme, :host, :port, :user_agent, :http_gem] + extra_options_list
14
+ @options_list = [:scheme, :host, :port, :user_agent, :http_gem, :keystone, :http_proxy] + extra_options_list
14
15
 
15
16
  metaclass = class << self
16
17
  self
@@ -75,11 +76,35 @@ module IronCore
75
76
  default_http_gem = RUBY_VERSION.split('.')[1].to_i == 8 ? :rest_client : nil
76
77
  http_gem = @http_gem.nil? ? default_http_gem : @http_gem.to_sym
77
78
 
78
- @rest = Rest::Client.new(:gem => http_gem)
79
+ rest_options = {:gem => http_gem}
80
+ rest_options[:http_proxy] = options[:http_proxy] if options[:http_proxy]
81
+ @rest = Rest::Client.new(rest_options)
82
+
83
+ if self.keystone && self.keystone.is_a?(Hash)
84
+ raise_keystone_config_error('server') if self.keystone[:server].nil?
85
+ raise_keystone_config_error('tenant') if self.keystone[:tenant].nil?
86
+ if self.keystone[:token].nil? && self.keystone[:tenant_token].nil? &&
87
+ (self.keystone[:username].nil? && self.keystone[:password].nil?)
88
+ raise_keystone_config_error('username, password or token')
89
+ end
90
+
91
+ @token_provider = IronCore::KeystoneTokenProvider.new(@rest, self.keystone)
92
+ else
93
+ @token_provider = IronCore::IronTokenProvider.new(@token)
94
+ end
79
95
  end
80
96
 
81
97
  def set_option(source, name, value)
82
98
  if send(name.to_s).nil? && (not value.nil?)
99
+ if value.class == Hash
100
+ value.keys.each do |key|
101
+ if key.class == String
102
+ value[key.to_sym] = value[key]
103
+ value.delete(key)
104
+ end
105
+ end
106
+ end
107
+
83
108
  IronCore::Logger.debug 'IronCore', "Setting #{name} to '#{value}' from #{source}"
84
109
 
85
110
  send(name.to_s + '=', value)
@@ -227,7 +252,7 @@ module IronCore
227
252
  IronCore::Logger.debug 'IronCore', "PUT #{base_url + method} with params='#{request_hash.to_s}'"
228
253
 
229
254
  begin
230
- @rest.put(base_url + method, request_hash)
255
+ @rest.put(base_url + method, request_hash)
231
256
  rescue Rest::HttpError => ex
232
257
  extract_error_msg(ex)
233
258
  end
@@ -318,5 +343,10 @@ module IronCore
318
343
  IronCore::Logger.error 'IronCore', "Expecting #{length} symbol #{name} string", IronCore::Error
319
344
  end
320
345
  end
346
+
347
+ def raise_keystone_config_error(missing)
348
+ IronCore::Logger.error 'IronCore', "Keystone keys missing: #{missing}", IronCore::Error
349
+ raise IronCore::ConfigurationError.new("Keystone keys missing: #{missing}")
350
+ end
321
351
  end
322
352
  end
@@ -0,0 +1,9 @@
1
+ require 'iron_core/error'
2
+
3
+ module IronCore
4
+ class ConfigurationError < IronCore::Error
5
+ def initialize(message)
6
+ super(message)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ module IronCore
2
+ class IronTokenProvider
3
+ def initialize(token)
4
+ @token = token
5
+ end
6
+
7
+ def token
8
+ @token
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,51 @@
1
+ module IronCore
2
+ class KeystoneTokenProvider
3
+ def initialize(client, options)
4
+ @rest_client = client.dup
5
+ @token = options[:tenant_token] # Way to bypass fetching a token from keystone api
6
+ @server = options[:server]
7
+ @tenant = options[:tenant]
8
+ @username = options[:username]
9
+ @password = options[:password]
10
+ @user_token = options[:token]
11
+ end
12
+
13
+ def token
14
+ if @token.nil? || (@local_expires_at && (Time.now - @local_expires_at > -10))
15
+ payload = {
16
+ auth: {
17
+ tenantId: @tenant,
18
+ }
19
+ }
20
+ if @username.to_s != ''
21
+ payload[:auth][:passwordCredentials] = {
22
+ username: @username,
23
+ password: @password
24
+ }
25
+ elsif @user_token.to_s != ''
26
+ payload[:auth][:token] = {id: @user_token}
27
+ end
28
+
29
+ response = post(@server + 'tokens', payload)
30
+ result = JSON.parse(response.body)
31
+ token_data = result['access']['token']
32
+
33
+ issued_at = Time.parse(token_data['issued_at'] + " UTC")
34
+ expires = Time.parse(token_data['expires'] + " UTC")
35
+ duration = (expires - issued_at).to_i
36
+
37
+ @local_expires_at = Time.now + duration
38
+ @token = token_data['id']
39
+ end
40
+
41
+ @token
42
+ end
43
+
44
+ def post(path, params = {})
45
+ request_hash = {}
46
+ request_hash[:headers] = {'Content-Type' => 'application/json', 'Accept' => 'application/json'}
47
+ request_hash[:body] = params.to_json
48
+ @rest_client.post(path, request_hash)
49
+ end
50
+ end
51
+ end
@@ -1,5 +1,5 @@
1
1
  module IronCore
2
- VERSION = "1.0.5"
2
+ VERSION = "1.0.7"
3
3
 
4
4
  def self.version
5
5
  VERSION
data/test/test_base.rb ADDED
@@ -0,0 +1,25 @@
1
+ require 'test/unit'
2
+ require 'yaml'
3
+ begin
4
+ require File.join(File.dirname(__FILE__), '../lib/iron_core')
5
+ rescue Exception => ex
6
+ puts "Could NOT load gem: " + ex.message
7
+ raise ex
8
+ end
9
+
10
+ class TestBase < Test::Unit::TestCase
11
+
12
+ def setup
13
+ puts 'setup'
14
+ @core = IronCore::Client.new("iron", "product", :gem => :net_http_persistent, :log_level=>Logger::DEBUG,
15
+ :http_proxy=>"http://whatever"
16
+ )
17
+ end
18
+
19
+ def test_fake
20
+ end
21
+
22
+ ALL_OPS = [:get, :put, :post, :delete]
23
+
24
+
25
+ end
data/test/tmp.rb ADDED
@@ -0,0 +1,17 @@
1
+ require 'test/unit'
2
+ require 'yaml'
3
+ require_relative 'test_base'
4
+
5
+ class TestTemp < TestBase
6
+ def setup
7
+ super
8
+
9
+ end
10
+
11
+
12
+ def test_post_file
13
+
14
+ end
15
+
16
+ end
17
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iron_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kirilenko
@@ -9,62 +9,62 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-08-15 00:00:00.000000000 Z
12
+ date: 2015-02-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ! '>='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 2.6.4
20
+ version: 3.0.4
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ! '>='
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 2.6.4
27
+ version: 3.0.4
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: test-unit
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ! '>='
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ! '>='
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: minitest
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ! '>='
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ! '>='
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rake
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ! '>='
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ! '>='
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  description: Core library for Iron products
@@ -74,7 +74,7 @@ executables: []
74
74
  extensions: []
75
75
  extra_rdoc_files: []
76
76
  files:
77
- - .gitignore
77
+ - ".gitignore"
78
78
  - Gemfile
79
79
  - Gemfile.lock
80
80
  - LICENSE
@@ -83,10 +83,15 @@ files:
83
83
  - iron_core.gemspec
84
84
  - lib/iron_core.rb
85
85
  - lib/iron_core/client.rb
86
+ - lib/iron_core/configuration_error.rb
86
87
  - lib/iron_core/error.rb
87
88
  - lib/iron_core/iron_logger.rb
89
+ - lib/iron_core/iron_token_provider.rb
90
+ - lib/iron_core/keystone_token_provider.rb
88
91
  - lib/iron_core/response_error.rb
89
92
  - lib/iron_core/version.rb
93
+ - test/test_base.rb
94
+ - test/tmp.rb
90
95
  homepage: https://github.com/iron-io/iron_core_ruby
91
96
  licenses: []
92
97
  metadata: {}
@@ -96,18 +101,20 @@ require_paths:
96
101
  - lib
97
102
  required_ruby_version: !ruby/object:Gem::Requirement
98
103
  requirements:
99
- - - ! '>='
104
+ - - ">="
100
105
  - !ruby/object:Gem::Version
101
106
  version: '1.8'
102
107
  required_rubygems_version: !ruby/object:Gem::Requirement
103
108
  requirements:
104
- - - ! '>='
109
+ - - ">="
105
110
  - !ruby/object:Gem::Version
106
111
  version: 1.3.6
107
112
  requirements: []
108
113
  rubyforge_project:
109
- rubygems_version: 2.2.2
114
+ rubygems_version: 2.4.2
110
115
  signing_key:
111
116
  specification_version: 4
112
117
  summary: Core library for Iron products
113
- test_files: []
118
+ test_files:
119
+ - test/test_base.rb
120
+ - test/tmp.rb