oneview-sdk 5.5.0 → 5.6.0

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
2
  SHA1:
3
- metadata.gz: 07152fbade09de6bccc4077a3a17602c4c8705a5
4
- data.tar.gz: 66d087bf3b22dcd35011801e35591c27ae8d2a9d
3
+ metadata.gz: 89a7a5cef6278ff47b14edb0528fcd85385ec26d
4
+ data.tar.gz: f2dde091e8be1f8c0c240ebcce1c26ff7165e74d
5
5
  SHA512:
6
- metadata.gz: 9c88f8021a2dd818843e610acbadacd17ad57a654728c45cd8e36d44d4fabae1ee608aa6ff468e35a282fd784d32d3a1648c852d506b35e4eb11fcd097e536be
7
- data.tar.gz: 2d3605fc700804ef84386b5154d54801bd152b139f1b4fd5eb12f287de796c61c55cb3fd3a255b227bb643ed6022a8c2ea7d04cc5bdada1c20fba58c29dedaa5
6
+ metadata.gz: ac0a41f7b1ef587d2c7ab787bd799f9dee42beaaf5337d6af1f1fe3fc99b7a39c22eba5cf64c889ca5f5fe4624e4c1abba6518313e1b5fe83e35f8fdbff1ce24
7
+ data.tar.gz: bd1df4efd63393891d648c27d18ce4564acc8b84f44e37e9bcf2899ae1dad2b22a5e5c22d3dd4cf7b3dce31fb880a6b04f21336237aa2d51751bed2670b5ff5d
@@ -1,3 +1,17 @@
1
+ ## v5.6.0
2
+
3
+ #### Notes
4
+ This release fixes few bugs which are listed below.
5
+
6
+ #### New Resource
7
+ Alerts
8
+
9
+ #### Bug fixes & Enhancements
10
+ - [#362](https://github.com/HewlettPackard/oneview-sdk-ruby/issues/362) Added helper method to change request body for Server Profile for API600.
11
+ - [#354](https://github.com/HewlettPackard/oneview-sdk-ruby/issues/354) Input data has be to be a part of body, but not the header for import certificate method in enclosure.
12
+ - [#356](https://github.com/HewlettPackard/oneview-sdk-ruby/issues/356) Not able to add and remove scopes from a resource in a single API call.
13
+ - [#359](https://github.com/HewlettPackard/oneview-sdk-ruby/issues/359) Interconnect link topologies endpoints not available for api600. Fixed by inheriting from API500.
14
+
1
15
  ## v5.5.0
2
16
 
3
17
  #### Notes
@@ -13,7 +27,6 @@ Extended support to Image Streamer Rest API version 500 and 600 to the already e
13
27
  - Golden Image
14
28
  - OS Volume
15
29
 
16
-
17
30
  ## v5.4.0
18
31
 
19
32
  #### Notes
@@ -41,6 +54,8 @@ This release adds support to OneView Rest API version 600 for the hardware varia
41
54
  - SAS Interconnect Type
42
55
  - SAS Logical Interconnect
43
56
  - SAS Logical Interconnect Group
57
+ - SAS Logical JBODs
58
+ - SAS Logical JBOD attachment
44
59
  - Scope
45
60
  - Server Hardware
46
61
  - Server Hardware Types
data/README.md CHANGED
@@ -348,9 +348,12 @@ The CLI does not expose everything in the SDK, but it is great for doing simple
348
348
  ##### List ServerProfiles:
349
349
 
350
350
  ```bash
351
+ # Output a list of ServerProfile names:
351
352
  $ oneview-sdk-ruby list ServerProfiles
352
353
  # Or to show in yaml format (json is also supported):
353
354
  $ oneview-sdk-ruby list ServerProfiles -f yaml
355
+ # Or to show specific attributes only:
356
+ $ oneview-sdk-ruby list ServerProfiles -a uri,state,bios.overriddenSettings
354
357
  ```
355
358
 
356
359
  ##### Show details for a specific resource:
@@ -369,6 +372,8 @@ $ oneview-sdk-ruby search ServerProfiles --filter state:Normal affinity:Bay
369
372
  # but again, you can show only certain attributes by using the -a option
370
373
  # You can also chain keys together to search in nested hashes:
371
374
  $ oneview-sdk-ruby search ServerProfiles --filter state:Normal boot.manageBoot:true
375
+ # Or to show specific attributes only:
376
+ $ oneview-sdk-ruby search ServerProfile --filter state:Normal -a name,uri,enclosureBay
372
377
  ```
373
378
 
374
379
  ##### Create or delete resource by file:
@@ -24,13 +24,13 @@ OneviewSDK::Datacenter.find_by(@client, width: 11000).map(&:remove)
24
24
 
25
25
  | Endpoints | Verb | V200 | V300 | V500 | V600 |
26
26
  | --------------------------------------------------------------------------------------- | -------- | :------------------: | :------------------: | :------------------: | :------------------: |
27
- | **Alerts** |
28
- |<sub>/rest/alerts </sub> |GET | | |
29
- |<sub>/rest/alerts </sub> |DELETE | | |
30
- |<sub>/rest/alerts/{id} </sub> |GET | | |
31
- |<sub>/rest/alerts/{id} </sub> |PUT | | |
32
- |<sub>/rest/alerts/{id} </sub> |DELETE | | |
33
- |<sub>/rest/alerts/AlertChangeLog/{id}</sub> |DELETE | | |
27
+ | **Alerts** |
28
+ |<sub>/rest/alerts</sub> |GET | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
29
+ |<sub>/rest/alerts</sub> |DELETE | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: |
30
+ |<sub>/rest/alerts/{id}</sub> |GET | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
31
+ |<sub>/rest/alerts/{id}</sub> |PUT | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
32
+ |<sub>/rest/alerts/{id}</sub> |DELETE | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
33
+ |<sub>/rest/alerts/AlertChangeLog/{id}</sub> |DELETE | :white_check_mark: | :white_check_mark: |:white_check_mark: | :white_check_mark: |
34
34
  | **Appliance Time and Locale Configuration** |
35
35
  |<sub>/rest/appliance/configuration/time-locale</sub> |GET | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: |
36
36
  |<sub>/rest/appliance/configuration/time-locale</sub> |POST | :heavy_multiplication_x: | :heavy_multiplication_x: | :heavy_multiplication_x: |
@@ -402,11 +402,11 @@ OneviewSDK::Datacenter.find_by(@client, width: 11000).map(&:remove)
402
402
  |<sub>/rest/sas-logical-interconnects/{id}/replaceDriveEnclosure</sub> | POST | :heavy_minus_sign: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
403
403
  | **SAS Logical JBOD Attachments** |
404
404
  |<sub>/rest/sas-logical-jbod-attachments</sub> | GET | :heavy_minus_sign: | :white_check_mark: | :white_check_mark: |
405
- |<sub>/rest/sas-logical-jbod-attachments/{id}</sub> | GET | :heavy_minus_sign: | :white_check_mark: | :white_check_mark: |
405
+ |<sub>/rest/sas-logical-jbod-attachments/{id}</sub> | GET | :heavy_minus_sign: | :white_check_mark: | :white_check_mark: | :white_check_mark:
406
406
  | **SAS Logical JBODs** |
407
- |<sub>/rest/sas-logical-jbods</sub> | GET | :heavy_minus_sign: | :white_check_mark: | :white_check_mark: |
408
- |<sub>/rest/sas-logical-jbods/{id}</sub> | GET | :heavy_minus_sign: | :white_check_mark: | :white_check_mark: |
409
- |<sub>/rest/sas-logical-jbods/{id}/drives</sub> | GET | :heavy_minus_sign: | :white_check_mark: | :white_check_mark: |
407
+ |<sub>/rest/sas-logical-jbods</sub> | GET | :heavy_minus_sign: | :white_check_mark: | :white_check_mark: | :white_check_mark:
408
+ |<sub>/rest/sas-logical-jbods/{id}</sub> | GET | :heavy_minus_sign: | :white_check_mark: | :white_check_mark: | :white_check_mark:
409
+ |<sub>/rest/sas-logical-jbods/{id}/drives</sub> | GET | :heavy_minus_sign: | :white_check_mark: | :white_check_mark: | :white_check_mark:
410
410
  | **Scopes** |
411
411
  |<sub>/rest/scopes</sub> | POST | :heavy_minus_sign: | :white_check_mark: | :white_check_mark: | :white_check_mark:
412
412
  |<sub>/rest/scopes</sub> | GET | :heavy_minus_sign: | :white_check_mark: | :white_check_mark: | :white_check_mark:
@@ -137,14 +137,26 @@ module OneviewSDK
137
137
  aliases: '-f',
138
138
  enum: %w[json yaml human],
139
139
  default: 'human'
140
- desc 'list TYPE', 'List names of resources'
141
- # List names of resources
140
+ method_option :attribute,
141
+ type: :string,
142
+ desc: 'Comma-separated list of attributes to show. Supports nesting/chaining with periods',
143
+ aliases: '-a'
144
+ list_examples = "\n oneview-sdk-ruby list ServerProfiles"
145
+ list_examples << "\n oneview-sdk-ruby list ServerHardware -a serialNumber,mpHostInfo.mpHostName"
146
+ desc 'list TYPE', "List resources. Examples:#{list_examples}"
147
+ # List names of resources (and optionally, specific attributes)
142
148
  def list(type)
143
149
  resource_class = parse_type(type)
144
150
  client_setup
145
- data = []
146
- resource_class.get_all(@client).each { |r| data.push(r[:name]) }
147
- output data
151
+ all = resource_class.get_all(@client)
152
+ if options['attribute']
153
+ data = select_attributes_from_multiple(options['attribute'], all)
154
+ output data, -2 # Shift left by 2 so things look right
155
+ else # List names only by default
156
+ names = []
157
+ all.each { |r| names.push(r['name']) }
158
+ output names
159
+ end
148
160
  end
149
161
 
150
162
  method_option :format,
@@ -154,9 +166,12 @@ module OneviewSDK
154
166
  default: 'human'
155
167
  method_option :attribute,
156
168
  type: :string,
157
- desc: 'Comma-seperated list of attributes to show',
169
+ desc: 'Comma-separated list of attributes to show. Supports nesting/chaining with periods',
158
170
  aliases: '-a'
159
171
  desc 'show TYPE NAME', 'Show resource details'
172
+ show_examples = "\n oneview-sdk-ruby show ServerProfile 'Profile 1'"
173
+ show_examples << "\n oneview-sdk-ruby show ServerHardware 'Rack1, bay 1' -a serialNumber,mpHostInfo.mpHostName"
174
+ desc 'show TYPE NAME', "Show resource details. Examples:#{show_examples}"
160
175
  # Show resource details
161
176
  def show(type, name)
162
177
  resource_class = parse_type(type)
@@ -165,11 +180,7 @@ module OneviewSDK
165
180
  fail_nice 'Not Found' if matches.empty?
166
181
  data = matches.first.data
167
182
  if options['attribute']
168
- new_data = {}
169
- options['attribute'].split(',').each do |attr|
170
- new_data[attr] = data[attr]
171
- end
172
- data = new_data
183
+ data = select_attributes(options['attribute'], data)
173
184
  end
174
185
  output data
175
186
  end
@@ -181,13 +192,16 @@ module OneviewSDK
181
192
  default: 'human'
182
193
  method_option :attribute,
183
194
  type: :string,
184
- desc: 'Comma-seperated list of attributes to show',
195
+ desc: 'Comma-separated list of attributes to show. Supports nesting/chaining with periods',
185
196
  aliases: '-a'
186
197
  method_option :filter,
187
198
  type: :hash,
188
199
  desc: 'Hash of key/value pairs to filter on',
189
200
  required: true
190
- desc 'search TYPE', 'Search for resource by key/value pair(s)'
201
+ search_examples = "\n oneview-sdk-ruby search ServerProfiles --filter=status:Critical"
202
+ search_examples << "\n oneview-sdk-ruby search ServerHardware --filter=state:ProfileApplied -a mpHostInfo.mpHostName"
203
+ desc 'search TYPE', "Search for resource by key/value pair(s). Examples:#{search_examples}"
204
+
191
205
  # Search for resource by key/value pair(s)
192
206
  def search(type)
193
207
  resource_class = parse_type(type)
@@ -199,14 +213,7 @@ module OneviewSDK
199
213
  matches = resource_class.find_by(@client, filter) unless filter == options['filter']
200
214
  end
201
215
  if options['attribute']
202
- data = []
203
- matches.each do |d|
204
- temp = {}
205
- options['attribute'].split(',').each do |attr|
206
- temp[attr] = d[attr]
207
- end
208
- data.push(d['name'] => temp)
209
- end
216
+ data = select_attributes_from_multiple(options['attribute'], matches)
210
217
  output data, -2 # Shift left by 2 so things look right
211
218
  else # List names only by default
212
219
  names = []
@@ -537,6 +544,57 @@ module OneviewSDK
537
544
  new_hash
538
545
  end
539
546
 
547
+ # Select a subset of attributes from a given resource
548
+ # @param attributes [String, Array<Array<String>>] Comma-separated string or array of array of strings
549
+ # The reason it's a nested array is to allow retrieval of nested keys.
550
+ # For example, the following 2 attribute params will return the same result:
551
+ # - [['key1'], ['key2', 'subKey3']]
552
+ # - 'key1,key2.subKey3'
553
+ # @param data [Hash, OneviewSDK::Resource]
554
+ # @return [Hash] A Hash is returned. For example:
555
+ # { 'key1' => 'val1', 'key2' => { 'subKey3' => 'val2' } }
556
+ def select_attributes(attributes, data = {})
557
+ attributes = attributes.split(',').map(&:strip).reject(&:empty?).map { |a| a.split('.') } if attributes.is_a?(String)
558
+ r_data = data.is_a?(Hash) ? data : data.data
559
+ temp = {}
560
+ attributes.each do |attr|
561
+ temp_level = temp
562
+ attr = [attr] if attr.is_a?(String)
563
+ attr.each_with_index do |a, index|
564
+ # Safely retrieving and setting nested keys is not as easy, so loop to build a nested Hash structure for the result
565
+ if index == attr.size - 1
566
+ # Use r_data.dig(*attr) if we ever drop support for Ruby < 2.3
567
+ temp_level[a] = [*attr].reduce(r_data) { |m, k| m && m[k] } rescue nil
568
+ else
569
+ temp_level[a] ||= {}
570
+ temp_level = temp_level[a]
571
+ end
572
+ end
573
+ end
574
+ temp
575
+ end
576
+
577
+ # Select a subset of attributes from a given set of resources
578
+ # @param attributes [String, Array<Array<String>>] Comma-separated string or array of array of strings
579
+ # The reason it's a nested array is to allow retrieval of nested keys.
580
+ # For example, the following 2 attribute params will return the same result:
581
+ # - [['key1'], ['key2', 'subKey3']]
582
+ # - 'key1,key2.subKey3'
583
+ # @param data [Array<Hash>, Array<OneviewSDK::Resource>]
584
+ # @return [Array<Hash>] An Array of Hashes is returned. For example:
585
+ # [
586
+ # { 'resource_name1' => { 'key1' => 'val1', 'key2' => { 'subKey3' => 'val2' } } },
587
+ # { 'resource_name2' => { 'key1' => 'val3', 'key2' => { 'subKey3' => 'val4' } } },
588
+ # ]
589
+ def select_attributes_from_multiple(attributes, data = [])
590
+ attributes = attributes.split(',').map(&:strip).reject(&:empty?).map { |a| a.split('.') } if attributes.is_a?(String)
591
+ result = []
592
+ data.each do |r|
593
+ result.push(r['name'] => select_attributes(attributes, r))
594
+ end
595
+ result
596
+ end
597
+
540
598
  # Print output in a given format.
541
599
  def output(data = {}, indent = 0)
542
600
  case @options['format']
@@ -0,0 +1,39 @@
1
+ # (C) Copyright 2018 Hewlett Packard Enterprise Development LP
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # You may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software distributed
8
+ # under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
9
+ # CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
10
+ # language governing permissions and limitations under the License.
11
+
12
+ require_relative 'resource'
13
+
14
+ module OneviewSDK
15
+ module API200
16
+ # Event resource implementation
17
+ class Alerts < Resource
18
+ BASE_URI = '/rest/alerts'.freeze
19
+ # Create a resource object, associate it with a client, and set its properties.
20
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
21
+ # @param [Hash] params The options for this resource (key-value pairs)
22
+ # @param [Integer] api_ver The api version to use when interracting with this resource.
23
+ def initialize(client, params = {}, api_ver = nil)
24
+ super
25
+ # Default values:
26
+ @data['type'] ||= 'AlertResourceV3'
27
+ end
28
+
29
+ def update(attributes = {})
30
+ set_all(attributes)
31
+ ensure_client && ensure_uri
32
+ data = @data.select { |k, _v| %w[alertState alertUrgency assignedToUser notes eTag].include?(k) }
33
+ response = @client.rest_put(@data['uri'], { 'body' => data }, @api_version)
34
+ @client.response_handler(response)
35
+ self
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,22 @@
1
+ # (C) Copyright 2018 Hewlett Packard Enterprise Development LP
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # You may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software distributed
8
+ # under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
9
+ # CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
10
+ # language governing permissions and limitations under the License.
11
+
12
+ require_relative '../../api200/alerts'
13
+
14
+ module OneviewSDK
15
+ module API300
16
+ module C7000
17
+ # Alert resource implementation for API300 C7000
18
+ class Alerts < OneviewSDK::API200::Alerts
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # (C) Copyright 2018 Hewlett Packard Enterprise Development LP
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # You may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software distributed
8
+ # under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
9
+ # CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
10
+ # language governing permissions and limitations under the License.
11
+
12
+ require_relative '../../api200/alerts'
13
+
14
+ module OneviewSDK
15
+ module API300
16
+ module Synergy
17
+ # Alerts resource implementation for API300 Synergy
18
+ class Alerts < OneviewSDK::API200::Alerts
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # (C) Copyright 2018 Hewlett Packard Enterprise Development LP
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # You may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software distributed
8
+ # under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
9
+ # CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
10
+ # language governing permissions and limitations under the License.
11
+
12
+ require_relative '../../api300/c7000/alerts'
13
+
14
+ module OneviewSDK
15
+ module API500
16
+ module C7000
17
+ # Alerts resource implementation for API500 C7000
18
+ class Alerts < OneviewSDK::API300::C7000::Alerts
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # (C) Copyright 2018 Hewlett Packard Enterprise Development LP
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # You may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software distributed
8
+ # under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
9
+ # CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
10
+ # language governing permissions and limitations under the License.
11
+
12
+ require_relative '../../api300/synergy/alerts'
13
+
14
+ module OneviewSDK
15
+ module API500
16
+ module Synergy
17
+ # Alerts resource implementation for API500 Synergy
18
+ class Alerts < OneviewSDK::API300::Synergy::Alerts
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # (C) Copyright 2018 Hewlett Packard Enterprise Development LP
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # You may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software distributed
8
+ # under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
9
+ # CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
10
+ # language governing permissions and limitations under the License.
11
+
12
+ require_relative '../../api500/c7000/alerts'
13
+
14
+ module OneviewSDK
15
+ module API600
16
+ module C7000
17
+ # Alerts resource implementation for API600 C7000
18
+ class Alerts < OneviewSDK::API500::C7000::Alerts
19
+ end
20
+ end
21
+ end
22
+ end
@@ -62,7 +62,7 @@ module OneviewSDK
62
62
  ensure_client && ensure_uri
63
63
  uri = "#{@data['uri']}/https/certificaterequest"
64
64
  uri += "?bayNumber=#{bay_number}" if bay_number
65
- response = @client.rest_put(uri, options, @api_version)
65
+ response = @client.rest_put(uri, { 'body' => options }, @api_version)
66
66
  @client.response_handler(response)
67
67
  end
68
68
  end
@@ -30,17 +30,19 @@ module OneviewSDK
30
30
 
31
31
  # Gets a resource's scope, containing a list of the scopes to which
32
32
  # the resource is assigned.
33
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
33
34
  # @param [OneviewSDK::API600::C7000::Resource] resource Resource object
34
- def get_resource_scopes(resource)
35
+ def self.get_resource_scopes(client, resource)
35
36
  scopes_uri = resource['scopesUri']
36
- response = @client.rest_get(scopes_uri)
37
- @client.response_handler(response)
37
+ response = client.rest_get(scopes_uri)
38
+ client.response_handler(response)
38
39
  end
39
40
 
40
41
  # Replaces a resource's assigned scopes using the specified list of scope URIs.
42
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
41
43
  # @param [OneviewSDK::API600::C7000::Resource] resource Resource object
42
44
  # @param [Array<OneviewSDK::API600::C7000::Scope>] scopes Array of scopes objects
43
- def replace_resource_assigned_scopes(resource, scopes: [])
45
+ def self.replace_resource_assigned_scopes(client, resource, scopes: [])
44
46
  resource_uri = resource['uri']
45
47
  scope_uris = scopes.map { |scope| scope['uri'] }
46
48
  scopes_uri = resource['scopesUri']
@@ -49,42 +51,51 @@ module OneviewSDK
49
51
  'body' => { 'type' => 'ScopedResource',
50
52
  'resourceUri' => resource_uri,
51
53
  'scopeUris' => scope_uris } }
52
- response = @client.rest_put(scopes_uri, options)
53
- @client.response_handler(response)
54
+ response = client.rest_put(scopes_uri, options)
55
+ client.response_handler(response)
54
56
  end
55
57
 
56
58
  # Performs a specific patch operation.
57
- # @param [String] scopes_uri resource's scopes uri
58
- # @param [String] operation The operation to be performed
59
- # @param [String] path The path of operation
60
- # @param [String] value The value
61
- def resource_patch(scopes_uri, operation, path, value = nil)
62
- ensure_client && ensure_uri
63
- body = { 'op' => operation,
64
- 'path' => path,
65
- 'value' => value }
59
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
60
+ # @param [OneviewSDK::API600::C7000::Resource] resource Any resource object
61
+ # @param [Array<OneviewSDK::API600::C7000::Scope>] scopes Array of scopes objects
62
+ def self.resource_patch(client, resource, add_scopes: [], remove_scopes: [])
63
+ scopes_body = []
64
+ scopes_uri = resource['scopesUri']
65
+ unless add_scopes.empty?
66
+ add_scopes.each do |scope|
67
+ add_body = { 'op' => 'add', 'path' => '/scopeUris/-', 'value' => scope['uri'] }
68
+ scopes_body.push(add_body)
69
+ end
70
+ end
71
+ unless remove_scopes.empty?
72
+ remove_scopes.each do |scope|
73
+ scope_uris = get_resource_scopes(client, resource)['scopeUris']
74
+ scope_index = scope_uris.find_index { |uri| uri == scope['uri'] }
75
+ remove_body = { 'op' => 'remove', 'path' => "/scopeUris/#{scope_index}" }
76
+ scopes_body.push(remove_body)
77
+ end
78
+ end
66
79
  options = { 'Content-Type' => 'application/json-patch+json',
67
- 'If-Match' => '*', 'body' => [body] }
68
- response = @client.rest_patch(scopes_uri, options, @api_version)
69
- @client.response_handler(response)
80
+ 'If-Match' => '*', 'body' => scopes_body }
81
+ response = client.rest_patch(scopes_uri, options, client.api_version)
82
+ client.response_handler(response)
70
83
  end
71
84
 
72
85
  # Add a scope to resource's scope list
86
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
73
87
  # @param [OneviewSDK::API600::C7000::Resource] resource Any resource object
74
- # @param [OneviewSDK::API600::C7000::Scope] scope Scope object
75
- def add_resource_scope(resource, scope)
76
- scopes_uri = resource['scopesUri']
77
- resource_patch(scopes_uri, 'add', '/scopeUris/-', scope['uri'])
88
+ # @param [Array] scopes The array of scopes (or any number of scopes separated by comma)
89
+ def self.add_resource_scope(client, resource, scopes: [])
90
+ resource_patch(client, resource, add_scopes: scopes)
78
91
  end
79
92
 
80
93
  # Remove a scope from resource's scope list.
94
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
81
95
  # @param [OneviewSDK::API600::C7000::Resource] resource Any resource object
82
- # @param [OneviewSDK::API600::C7000::Scope] scope Scope object
83
- def remove_resource_scope(resource, scope)
84
- scope_uris = get_resource_scopes(resource)['scopeUris']
85
- scope_index = scope_uris.find_index { |uri| uri == scope['uri'] }
86
- resource_uri = resource['scopesUri']
87
- resource_patch(resource_uri, 'remove', "/scopeUris/#{scope_index}", nil)
96
+ # @param [Array] scopes The array of scopes (or any number of scopes separated by comma)
97
+ def self.remove_resource_scope(client, resource, scopes: [])
98
+ resource_patch(client, resource, remove_scopes: scopes)
88
99
  end
89
100
  end
90
101
  end
@@ -44,6 +44,38 @@ module OneviewSDK
44
44
  def get_messages(*)
45
45
  unavailable_method
46
46
  end
47
+
48
+ # Adds a connection entry to server profile
49
+ # @param [OneviewSDK::EthernetNetwork, OneviewSDK::FCNetwork] network Network associated with the connection
50
+ # @param [Hash<String,String>] connection_options Hash containing the configuration of the connection
51
+ # @option connection_options [Boolean] 'boot' Indicates that the server will attempt to boot from this connection.
52
+ # @option connection_options [String] 'functionType' Type of function required for the connection. Values: Ethernet, FibreChannel, iSCSI.
53
+ # @option connection_options [Integer] 'id' A unique identifier for this connection. If 0, id is automatically assigned.
54
+ # @option connection_options [String] 'ipv4' The IP information for a connection. This is only used for iSCSI connections.
55
+ # @option connection_options [String] 'name' Name of the connection.
56
+ # @option connection_options [String] 'portId' Identifies the port (FlexNIC) used for this connection.
57
+ # @option connection_options [String] 'requestedMbps' The transmit throughput (mbps) that should be allocated to this connection.
58
+ # @option connection_options [String] 'requestedVFs' This value can be "Auto" or 0.
59
+ def add_connection(network, connection_options = {})
60
+ connection_options = Hash[connection_options.map { |k, v| [k.to_s, v] }]
61
+ self['connectionSettings'] = {} unless self['connectionSettings']
62
+ self['connectionSettings']['connections'] = [] unless self['connectionSettings']['connections']
63
+ connection_options['id'] ||= 0
64
+ connection_options['networkUri'] = network['uri'] if network['uri'] || network.retrieve!
65
+ self['connectionSettings']['connections'] << connection_options
66
+ end
67
+
68
+ # Removes a connection entry in server profile
69
+ # @param [String] connection_name Name of the connection
70
+ # @return Returns the connection hash if found, otherwise returns nil
71
+ def remove_connection(connection_name)
72
+ desired_connection = nil
73
+ return desired_connection unless self['connectionSettings']['connections']
74
+ self['connectionSettings']['connections'].each do |con|
75
+ desired_connection = self['connectionSettings']['connections'].delete(con) if con['name'] == connection_name
76
+ end
77
+ desired_connection
78
+ end
47
79
  end
48
80
  end
49
81
  end
@@ -0,0 +1,22 @@
1
+ # (C) Copyright 2018 Hewlett Packard Enterprise Development LP
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # You may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software distributed
8
+ # under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
9
+ # CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
10
+ # language governing permissions and limitations under the License.
11
+
12
+ require_relative '../../api500/synergy/alerts'
13
+
14
+ module OneviewSDK
15
+ module API600
16
+ module Synergy
17
+ # Alerts resource implementation for API600 Synergy
18
+ class Alerts < OneviewSDK::API500::Synergy::Alerts
19
+ end
20
+ end
21
+ end
22
+ end
@@ -62,7 +62,7 @@ module OneviewSDK
62
62
  ensure_client && ensure_uri
63
63
  uri = "#{@data['uri']}/https/certificaterequest"
64
64
  uri += "?bayNumber=#{bay_number}" if bay_number
65
- response = @client.rest_put(uri, options, @api_version)
65
+ response = @client.rest_put(uri, { 'body' => options }, @api_version)
66
66
  @client.response_handler(response)
67
67
  end
68
68
  end
@@ -17,6 +17,21 @@ module OneviewSDK
17
17
  module Synergy
18
18
  # Interconnect resource implementation on API600 Synergy
19
19
  class Interconnect < OneviewSDK::API600::C7000::Interconnect
20
+
21
+ # Retrieves the interconnect link topologies
22
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
23
+ # @return [Array] All the Interconnect Link Topologies
24
+ def self.get_link_topologies(client)
25
+ OneviewSDK::API300::Synergy::Interconnect.get_link_topologies(client)
26
+ end
27
+
28
+ # Retrieves the interconnect link topology with the name
29
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
30
+ # @param [String] name Switch type name
31
+ # @return [Array] Switch type
32
+ def self.get_link_topology(client, name)
33
+ OneviewSDK::API300::Synergy::Interconnect.get_link_topology(client, name)
34
+ end
20
35
  end
21
36
  end
22
37
  end
@@ -11,5 +11,5 @@
11
11
 
12
12
  # Gem version defined here
13
13
  module OneviewSDK
14
- VERSION = '5.5.0'.freeze
14
+ VERSION = '5.6.0'.freeze
15
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oneview-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.5.0
4
+ version: 5.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henrique Diomede
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2018-05-02 00:00:00.000000000 Z
14
+ date: 2018-06-15 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: thor
@@ -245,6 +245,7 @@ files:
245
245
  - lib/oneview-sdk/image_streamer.rb
246
246
  - lib/oneview-sdk/resource.rb
247
247
  - lib/oneview-sdk/resource/api200.rb
248
+ - lib/oneview-sdk/resource/api200/alerts.rb
248
249
  - lib/oneview-sdk/resource/api200/client_certificate.rb
249
250
  - lib/oneview-sdk/resource/api200/connection_template.rb
250
251
  - lib/oneview-sdk/resource/api200/datacenter.rb
@@ -291,6 +292,7 @@ files:
291
292
  - lib/oneview-sdk/resource/api200/web_server_certificate.rb
292
293
  - lib/oneview-sdk/resource/api300.rb
293
294
  - lib/oneview-sdk/resource/api300/c7000.rb
295
+ - lib/oneview-sdk/resource/api300/c7000/alerts.rb
294
296
  - lib/oneview-sdk/resource/api300/c7000/client_certificate.rb
295
297
  - lib/oneview-sdk/resource/api300/c7000/connection_template.rb
296
298
  - lib/oneview-sdk/resource/api300/c7000/datacenter.rb
@@ -338,6 +340,7 @@ files:
338
340
  - lib/oneview-sdk/resource/api300/c7000/volume_template.rb
339
341
  - lib/oneview-sdk/resource/api300/c7000/web_server_certificate.rb
340
342
  - lib/oneview-sdk/resource/api300/synergy.rb
343
+ - lib/oneview-sdk/resource/api300/synergy/alerts.rb
341
344
  - lib/oneview-sdk/resource/api300/synergy/client_certificate.rb
342
345
  - lib/oneview-sdk/resource/api300/synergy/connection_template.rb
343
346
  - lib/oneview-sdk/resource/api300/synergy/datacenter.rb
@@ -389,6 +392,7 @@ files:
389
392
  - lib/oneview-sdk/resource/api300/synergy/web_server_certificate.rb
390
393
  - lib/oneview-sdk/resource/api500.rb
391
394
  - lib/oneview-sdk/resource/api500/c7000.rb
395
+ - lib/oneview-sdk/resource/api500/c7000/alerts.rb
392
396
  - lib/oneview-sdk/resource/api500/c7000/client_certificate.rb
393
397
  - lib/oneview-sdk/resource/api500/c7000/connection_template.rb
394
398
  - lib/oneview-sdk/resource/api500/c7000/datacenter.rb
@@ -436,6 +440,7 @@ files:
436
440
  - lib/oneview-sdk/resource/api500/c7000/volume_template.rb
437
441
  - lib/oneview-sdk/resource/api500/c7000/web_server_certificate.rb
438
442
  - lib/oneview-sdk/resource/api500/synergy.rb
443
+ - lib/oneview-sdk/resource/api500/synergy/alerts.rb
439
444
  - lib/oneview-sdk/resource/api500/synergy/client_certificate.rb
440
445
  - lib/oneview-sdk/resource/api500/synergy/connection_template.rb
441
446
  - lib/oneview-sdk/resource/api500/synergy/datacenter.rb
@@ -487,6 +492,7 @@ files:
487
492
  - lib/oneview-sdk/resource/api500/synergy/web_server_certificate.rb
488
493
  - lib/oneview-sdk/resource/api600.rb
489
494
  - lib/oneview-sdk/resource/api600/c7000.rb
495
+ - lib/oneview-sdk/resource/api600/c7000/alerts.rb
490
496
  - lib/oneview-sdk/resource/api600/c7000/client_certificate.rb
491
497
  - lib/oneview-sdk/resource/api600/c7000/connection_template.rb
492
498
  - lib/oneview-sdk/resource/api600/c7000/datacenter.rb
@@ -534,6 +540,7 @@ files:
534
540
  - lib/oneview-sdk/resource/api600/c7000/volume_template.rb
535
541
  - lib/oneview-sdk/resource/api600/c7000/web_server_certificate.rb
536
542
  - lib/oneview-sdk/resource/api600/synergy.rb
543
+ - lib/oneview-sdk/resource/api600/synergy/alerts.rb
537
544
  - lib/oneview-sdk/resource/api600/synergy/client_certificate.rb
538
545
  - lib/oneview-sdk/resource/api600/synergy/connection_template.rb
539
546
  - lib/oneview-sdk/resource/api600/synergy/datacenter.rb
@@ -609,7 +616,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
609
616
  version: '0'
610
617
  requirements: []
611
618
  rubyforge_project:
612
- rubygems_version: 2.6.14
619
+ rubygems_version: 2.6.11
613
620
  signing_key:
614
621
  specification_version: 4
615
622
  summary: Gem to interact with the HPE OneView API