oneview-sdk 5.5.0 → 5.6.0

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: 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