redfish_client 0.5.0 → 0.5.4

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,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 845f7a73083c73f8fe2ce79f8968332dd605aa87
4
- data.tar.gz: 5e1e8056e6618c11428e0907050ef874242b78d3
2
+ SHA256:
3
+ metadata.gz: 685c1b4535b5934f7683db9bdb964e5961962c9d85fc3d83ef5c97051568d58b
4
+ data.tar.gz: f60cc0d54626c4ab2c55f84e2179a507ff95d8732a40d99bb300bde7666f40f2
5
5
  SHA512:
6
- metadata.gz: f2957a2b7baf789ef346b22e74e7cddb0894704eb30ae225ac4cd17cf95adf4e7f93d619859d2b3fb41c240bf2f34f1ffe09e2c3bc33110f11129d2664e19ca4
7
- data.tar.gz: b3d582a79ce5a8bfe435d5d08d63977414c426a00b68cd1ac02555297c0000480a2dc6bdb1c6027e17585858304633f031d46e31a52f04f9f4d4ab2b346cc7b9
6
+ metadata.gz: f5b8378d17b32e736e1007c51a3e22a5ad746e816acdb5e586cf91552c07ca5153a5140923a70ae8364c7b7435fb84b9010756157269e2d88d053b692dd055b3
7
+ data.tar.gz: 5711720aa89461803460a09d323d043505ee54b6cef50183abddb336364f5145a030c6e0050723c22d85e706476e0a49c5f55a357a613a800c55b0e05be62e3d
@@ -0,0 +1,21 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - name: Clone repo
13
+ uses: actions/checkout@v2
14
+ - name: Set up Ruby
15
+ uses: ruby/setup-ruby@v1
16
+ with:
17
+ ruby-version: 2.6
18
+ - name: Install dependencies
19
+ run: bundle install
20
+ - name: Run tests
21
+ run: bundle exec rake
@@ -29,6 +29,7 @@ module RedfishClient
29
29
  # Basic and token authentication header names
30
30
  BASIC_AUTH_HEADER = "Authorization"
31
31
  TOKEN_AUTH_HEADER = "X-Auth-Token"
32
+ LOCATION_HEADER = "Location"
32
33
 
33
34
  # Create new connector.
34
35
  #
@@ -82,13 +83,11 @@ module RedfishClient
82
83
  # @param data [Hash] data to be sent over the socket
83
84
  # @return [Response] response object
84
85
  def request(method, path, data = nil)
85
- params = prepare_request_params(method, path, data)
86
- r = @connection.request(params)
87
- if r.status == 401
88
- login
89
- r = @connection.request(params)
86
+ return @cache[path] if method == :get && @cache[path]
87
+
88
+ do_request(method, path, data).tap do |r|
89
+ @cache[path] = r if method == :get && r.status == 200
90
90
  end
91
- Response.new(r.status, downcase_headers(r.data[:headers]), r.data[:body])
92
91
  end
93
92
 
94
93
  # Issue GET request to service.
@@ -100,9 +99,7 @@ module RedfishClient
100
99
  # @param path [String] path to the resource, relative to the base url
101
100
  # @return [Response] response object
102
101
  def get(path)
103
- return @cache[path] if @cache[path]
104
-
105
- request(:get, path).tap { |r| @cache[path] = r if r.status == 200 }
102
+ request(:get, path)
106
103
  end
107
104
 
108
105
  # Issue POST requests to the service.
@@ -188,6 +185,16 @@ module RedfishClient
188
185
 
189
186
  private
190
187
 
188
+ def do_request(method, path, data)
189
+ params = prepare_request_params(method, path, data)
190
+ r = @connection.request(params)
191
+ if r.status == 401
192
+ login
193
+ r = @connection.request(params)
194
+ end
195
+ Response.new(r.status, downcase_headers(r.data[:headers]), r.data[:body])
196
+ end
197
+
191
198
  def downcase_headers(headers)
192
199
  headers.each_with_object({}) { |(k, v), obj| obj[k.downcase] = v }
193
200
  end
@@ -212,9 +219,21 @@ module RedfishClient
212
219
  r = @connection.request(params)
213
220
  raise_invalid_auth_error unless r.status == 201
214
221
 
215
- token = r.data[:headers][TOKEN_AUTH_HEADER]
216
- add_headers(TOKEN_AUTH_HEADER => token)
217
- @session_oid = JSON.parse(r.data[:body])["@odata.id"]
222
+ body = JSON.parse(r.data[:body])
223
+ headers = r.data[:headers]
224
+
225
+ add_headers(TOKEN_AUTH_HEADER => headers[TOKEN_AUTH_HEADER])
226
+ save_session_oid!(body, headers)
227
+ end
228
+
229
+ def save_session_oid!(body, headers)
230
+ @session_oid = body["@odata.id"] if body.key?("@odata.id")
231
+ return if @session_oid
232
+
233
+ return unless headers.key?(LOCATION_HEADER)
234
+
235
+ location = URI.parse(headers[LOCATION_HEADER])
236
+ @session_oid = [location.path, location.query].compact.join("?")
218
237
  end
219
238
 
220
239
  def basic_login
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "uri"
4
+
3
5
  module RedfishClient
4
6
  # Response struct.
5
7
  #
@@ -20,13 +22,20 @@ module RedfishClient
20
22
  end
21
23
 
22
24
  def monitor
23
- done? ? nil : headers["location"]
25
+ return nil if done?
26
+
27
+ uri = URI.parse(headers["location"])
28
+ [uri.path, uri.query].compact.join("?")
24
29
  end
25
30
 
26
31
  def to_h
27
32
  { "status" => status, "headers" => headers, "body" => body }
28
33
  end
29
34
 
35
+ def to_s
36
+ "Response[status=#{status}, headers=#{headers}, body='#{body}']"
37
+ end
38
+
30
39
  def self.from_hash(data)
31
40
  new(*data.values_at("status", "headers", "body"))
32
41
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RedfishClient
4
- VERSION = "0.5.0"
4
+ VERSION = "0.5.4"
5
5
  end
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["tadej.borovsak@xlab.si"]
11
11
 
12
12
  spec.summary = "Simple Redfish client library"
13
- spec.homepage = "https://github.com/xlab-si/redfish-client-ruby"
13
+ spec.homepage = "https://github.com/xlab-steampunk/redfish-client-ruby"
14
14
  spec.license = "Apache-2.0"
15
15
 
16
16
  if spec.respond_to?(:metadata)
@@ -27,9 +27,9 @@ Gem::Specification.new do |spec|
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ["lib"]
29
29
 
30
- spec.required_ruby_version = "~> 2.1"
30
+ spec.required_ruby_version = ">= 2.1"
31
31
 
32
- spec.add_runtime_dependency "excon", "~> 0.60"
32
+ spec.add_runtime_dependency "excon", "~> 0.71"
33
33
  spec.add_runtime_dependency "server_sent_events", "~> 0.1"
34
34
 
35
35
  spec.add_development_dependency "rake", ">= 11.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redfish_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tadej Borovšak
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-03 00:00:00.000000000 Z
11
+ date: 2021-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: excon
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.60'
19
+ version: '0.71'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.60'
26
+ version: '0.71'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: server_sent_events
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -136,7 +136,7 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
- description:
139
+ description:
140
140
  email:
141
141
  - tadej.borovsak@xlab.si
142
142
  executables: []
@@ -144,11 +144,11 @@ extensions: []
144
144
  extra_rdoc_files: []
145
145
  files:
146
146
  - ".codeclimate.yml"
147
+ - ".github/workflows/ci.yml"
147
148
  - ".gitignore"
148
149
  - ".rspec"
149
150
  - ".rubocop.yml"
150
151
  - ".simplecov"
151
- - ".travis.yml"
152
152
  - ".yardopts"
153
153
  - Gemfile
154
154
  - README.md
@@ -164,18 +164,18 @@ files:
164
164
  - lib/redfish_client/root.rb
165
165
  - lib/redfish_client/version.rb
166
166
  - redfish_client.gemspec
167
- homepage: https://github.com/xlab-si/redfish-client-ruby
167
+ homepage: https://github.com/xlab-steampunk/redfish-client-ruby
168
168
  licenses:
169
169
  - Apache-2.0
170
170
  metadata:
171
171
  allowed_push_host: https://rubygems.org
172
- post_install_message:
172
+ post_install_message:
173
173
  rdoc_options: []
174
174
  require_paths:
175
175
  - lib
176
176
  required_ruby_version: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - "~>"
178
+ - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '2.1'
181
181
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -184,9 +184,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
184
  - !ruby/object:Gem::Version
185
185
  version: '0'
186
186
  requirements: []
187
- rubyforge_project:
188
- rubygems_version: 2.6.14
189
- signing_key:
187
+ rubygems_version: 3.2.3
188
+ signing_key:
190
189
  specification_version: 4
191
190
  summary: Simple Redfish client library
192
191
  test_files: []
data/.travis.yml DELETED
@@ -1,31 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
-
4
- rvm:
5
- - 2.4.3
6
-
7
- env:
8
- global:
9
- - CC_TEST_REPORTER_ID=64aae57d1a096aebb16347cbc64d418352f3ec38ebbe4d002bc84c2ceda837b3
10
-
11
- before_script:
12
- - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
13
- - chmod +x ./cc-test-reporter
14
- - ./cc-test-reporter before-build
15
-
16
- after_script:
17
- - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
18
-
19
- branches:
20
- only:
21
- - master
22
- - /^\d+\.\d+(\.\d+)?(-\S*)?$/
23
-
24
- deploy:
25
- provider: rubygems
26
- api_key:
27
- secure: NdOd7EA9XQZNbnkzLFNXeJcOoaTi93uuwzjADS+fxFJ2HYGJs/T+gi98f742Oj4j187lBQjwICkdduGQjVn3BA/8YZD7sOkdywDSELupTjJmugf/hks6MiKJ0fex5GmHwspjZ7P+9iLPXGcaYWbGamWlSDL+Z/79s4bi8b5sBVwJ01YnIJvFn32/I5vPFwbwUzvH0n3HAjYHZ/kpZ122Zp/DhSpGam2azWF0Tynu7RNMsQrGamAH0mC1DzAscSD6VTyMcSMkD6XUr3GX7w7yvVO0qo7e6EcjrsJKMRC8/s2C/SWQ4pRDAldhQpd4C7/QSaHE0mmQcEYi2qsBmrbFb7cAfRmS5BKn8LSv7YPVH0VFl3fwYAycwqA068TZ68t99YPw7uVcJpDOWBODCQWA1wgV1tXHop7CJOcQW4MoXzyaRbbpF+6lyxXEgTz8Me8zEucMsHWzS9dI1E5x/bWl3TgEM9n+/G6BAcBj/mZv/dxC6H7kWp0ubKw0bRsdET/YmG53vxISaFbnLxNhsHzeE2mFeF+JL7a1amlC4aTiSBnxDgRzDdnoo42Hu8SUg/mp0xLjyoTME1w1zaB+GvmWCdrpkLQL2kNDgQUvBfOp+Zqfb37tKgc15zb7v2sru5acixkSG9UVElleDW8K4R1QcqXwLxCYccCi/ExVR1zSvSM=
28
- gem: redfish_client
29
- on:
30
- tags: true
31
- repo: xlab-si/redfish-client-ruby