oneview-sdk 1.0.0 → 2.0.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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -0
  3. data/CHANGELOG.md +81 -2
  4. data/README.md +118 -113
  5. data/Rakefile +11 -0
  6. data/lib/oneview-sdk/cli.rb +21 -15
  7. data/lib/oneview-sdk/client.rb +34 -21
  8. data/lib/oneview-sdk/config_loader.rb +12 -1
  9. data/lib/oneview-sdk/exceptions.rb +55 -0
  10. data/lib/oneview-sdk/resource/connection_template.rb +48 -0
  11. data/lib/oneview-sdk/resource/datacenter.rb +77 -0
  12. data/lib/oneview-sdk/resource/enclosure.rb +46 -24
  13. data/lib/oneview-sdk/resource/enclosure_group.rb +20 -36
  14. data/lib/oneview-sdk/resource/ethernet_network.rb +19 -23
  15. data/lib/oneview-sdk/resource/fabric.rb +41 -0
  16. data/lib/oneview-sdk/resource/fc_network.rb +15 -16
  17. data/lib/oneview-sdk/resource/fcoe_network.rb +15 -12
  18. data/lib/oneview-sdk/resource/firmware_bundle.rb +23 -24
  19. data/lib/oneview-sdk/resource/firmware_driver.rb +21 -9
  20. data/lib/oneview-sdk/resource/interconnect.rb +29 -9
  21. data/lib/oneview-sdk/resource/lig_uplink_set.rb +22 -28
  22. data/lib/oneview-sdk/resource/logical_downlink.rb +53 -0
  23. data/lib/oneview-sdk/resource/logical_enclosure.rb +35 -33
  24. data/lib/oneview-sdk/resource/logical_interconnect.rb +29 -65
  25. data/lib/oneview-sdk/resource/logical_interconnect_group.rb +26 -6
  26. data/lib/oneview-sdk/resource/logical_switch.rb +184 -0
  27. data/lib/oneview-sdk/resource/logical_switch_group.rb +66 -0
  28. data/lib/oneview-sdk/resource/managed_san.rb +79 -0
  29. data/lib/oneview-sdk/resource/network_set.rb +64 -0
  30. data/lib/oneview-sdk/resource/power_device.rb +174 -0
  31. data/lib/oneview-sdk/resource/rack.rb +83 -0
  32. data/lib/oneview-sdk/resource/san_manager.rb +88 -0
  33. data/lib/oneview-sdk/resource/server_hardware.rb +139 -18
  34. data/lib/oneview-sdk/resource/server_hardware_type.rb +32 -1
  35. data/lib/oneview-sdk/resource/server_profile.rb +352 -9
  36. data/lib/oneview-sdk/resource/server_profile_template.rb +193 -4
  37. data/lib/oneview-sdk/resource/storage_pool.rb +42 -20
  38. data/lib/oneview-sdk/resource/storage_system.rb +64 -14
  39. data/lib/oneview-sdk/resource/switch.rb +86 -0
  40. data/lib/oneview-sdk/resource/unmanaged_device.rb +55 -0
  41. data/lib/oneview-sdk/resource/uplink_set.rb +24 -64
  42. data/lib/oneview-sdk/resource/volume.rb +29 -29
  43. data/lib/oneview-sdk/resource/volume_attachment.rb +79 -0
  44. data/lib/oneview-sdk/resource/volume_snapshot.rb +20 -1
  45. data/lib/oneview-sdk/resource/volume_template.rb +22 -33
  46. data/lib/oneview-sdk/resource.rb +66 -28
  47. data/lib/oneview-sdk/rest.rb +69 -24
  48. data/lib/oneview-sdk/ssl_helper.rb +20 -9
  49. data/lib/oneview-sdk/version.rb +12 -1
  50. data/lib/oneview-sdk.rb +12 -0
  51. data/oneview-sdk.gemspec +11 -0
  52. metadata +17 -2
@@ -1,37 +1,36 @@
1
+ # (C) Copyright 2016 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
+
1
12
  module OneviewSDK
2
13
  # Firmware bundle resource implementation
3
14
  class FirmwareBundle
4
15
  BASE_URI = '/rest/firmware-bundles'.freeze
5
- BOUNDARY = '---OneView-SDK-RubyFormBoundaryWzS4H31b7UMbKMCx'.freeze
16
+ BOUNDARY = '----011000010111000001101001'.freeze
6
17
 
7
- # Upload a firmware bundle file
8
- # @param [OneviewSDK::Client] client
18
+ # Uploads a firmware bundle file
19
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
9
20
  # @param [String] file_path
10
21
  # @return [OneviewSDK::FirmwareDriver] if the upload was sucessful, return a FirmwareDriver object
11
- def self.upload(client, file_path)
12
- fail "ERROR: File '#{file_path}' not found!" unless File.file?(file_path)
13
- type = case File.extname(file_path)
14
- when '.zip' then 'application/x-zip-compressed'
15
- when '.exe' then 'application/x-msdownload'
16
- else 'application/octet-stream'
17
- end
18
-
19
- body = "--#{BOUNDARY}\r\n"
20
- body << "Content-Disposition: form-data; name=\"file\"; filename=\"#{File.basename(file_path)}\"\r\n"
21
- body << "Content-Type: #{type}\r\n\r\n"
22
- body << File.read(file_path)
23
- body << "\r\n--#{BOUNDARY}--"
24
-
25
- options = {
26
- 'Content-Type' => "multipart/form-data; boundary=#{BOUNDARY}",
27
- 'uploadfilename' => File.basename(file_path),
28
- 'body' => body
29
- }
30
-
22
+ def self.add(client, file_path)
23
+ fail NotFound, "ERROR: File '#{file_path}' not found!" unless File.file?(file_path)
24
+ options = {}
25
+ options['Content-Type'] = "multipart/form-data; boundary=#{BOUNDARY}"
26
+ options['uploadfilename'] = File.basename(file_path)
27
+ options['body'] = "--#{BOUNDARY}\r\n"
28
+ options['body'] << "Content-Disposition: form-data; name=\"file\"; filename=\"#{File.basename(file_path)}\"\r\n"
29
+ options['body'] << "Content-Type: application/octet-stream; Content-Transfer-Encoding: binary\r\n\r\n"
30
+ options['body'] << "#{IO.binread(file_path)}\r\n--#{BOUNDARY}--"
31
31
  response = client.rest_post(BASE_URI, options)
32
32
  data = client.response_handler(response)
33
33
  OneviewSDK::FirmwareDriver.new(client, data)
34
34
  end
35
-
36
35
  end
37
36
  end
@@ -1,21 +1,33 @@
1
+ # (C) Copyright 2016 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
+
1
12
  module OneviewSDK
2
13
  # Firmware driver resource implementation
3
14
  class FirmwareDriver < Resource
4
15
  BASE_URI = '/rest/firmware-drivers'.freeze
5
16
 
6
- def initialize(client, params = {}, api_ver = nil)
7
- super
8
- # Default values
9
- @data['type'] ||= 'firmware-baselines'
10
- end
17
+ # Remove resource from OneView
18
+ # @return [true] if resource was removed successfully
19
+ alias remove delete
11
20
 
12
- def create
13
- fail 'Method not available for this resource!'
21
+ # Method is not available
22
+ # @raise [OneviewSDK::MethodUnavailable] method is not available
23
+ def delete
24
+ unavailable_method
14
25
  end
15
26
 
27
+ # Method is not available
28
+ # @raise [OneviewSDK::MethodUnavailable] method is not available
16
29
  def update
17
- create
30
+ unavailable_method
18
31
  end
19
-
20
32
  end
21
33
  end
@@ -1,35 +1,56 @@
1
+ # (C) Copyright 2016 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
+
1
12
  module OneviewSDK
2
13
  # Interconnect resource implementation
3
14
  class Interconnect < Resource
4
15
  BASE_URI = '/rest/interconnects'.freeze
5
16
  TYPE_URI = '/rest/interconnect-types'.freeze
6
17
 
18
+ # Create a resource object, associate it with a client, and set its properties.
19
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
20
+ # @param [Hash] params The options for this resource (key-value pairs)
21
+ # @param [Integer] api_ver The api version to use when interracting with this resource.
7
22
  def initialize(client, params = {}, api_ver = nil)
8
23
  super
9
24
  end
10
25
 
26
+ # Method is not available
27
+ # @raise [OneviewSDK::MethodUnavailable] method is not available
11
28
  def create
12
29
  unavailable_method
13
30
  end
14
31
 
32
+ # Method is not available
33
+ # @raise [OneviewSDK::MethodUnavailable] method is not available
15
34
  def update
16
35
  unavailable_method
17
36
  end
18
37
 
38
+ # Method is not available
39
+ # @raise [OneviewSDK::MethodUnavailable] method is not available
19
40
  def delete
20
41
  unavailable_method
21
42
  end
22
43
 
23
- # Retrieve interconnect types
24
- # @param [Client] client http client
44
+ # Retrieves interconnect types
45
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
25
46
  def self.get_types(client)
26
47
  response = client.rest_get(TYPE_URI)
27
48
  response = client.response_handler(response)
28
49
  response['members']
29
50
  end
30
51
 
31
- # Retrieve interconnect ype with name
32
- # @param [Client] client http client
52
+ # Retrieves the interconnect type with name
53
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
33
54
  # @param [String] name Interconnect type name
34
55
  # @return [Array] Interconnect type
35
56
  def self.get_type(client, name)
@@ -37,7 +58,7 @@ module OneviewSDK
37
58
  results.find { |interconnect_type| interconnect_type['name'] == name }
38
59
  end
39
60
 
40
- # Retrieve named servers for this interconnect
61
+ # Retrieves the named servers for this interconnect
41
62
  def name_servers
42
63
  response = @client.rest_get(@data['uri'] + '/nameServers')
43
64
  response.body
@@ -68,20 +89,19 @@ module OneviewSDK
68
89
  response.body
69
90
  end
70
91
 
71
- # Triggers a reset of port protection
92
+ # Triggers the reset port protection action
72
93
  def reset_port_protection
73
94
  response = @client.rest_put(@data['uri'] + '/resetportprotection')
74
95
  @client.response_handler(response)
75
96
  end
76
97
 
77
- # Update specific attributes of a given interconnect resource
98
+ # Updates specific attributes for a given interconnect resource
78
99
  # @param [String] operation operation to be performed
79
100
  # @param [String] path path
80
101
  # @param [String] value value
81
- def update_attribute(operation, path, value)
102
+ def patch(operation, path, value)
82
103
  response = @client.rest_patch(@data['uri'], 'body' => [{ op: operation, path: path, value: value }])
83
104
  @client.response_handler(response)
84
105
  end
85
-
86
106
  end
87
107
  end
@@ -1,8 +1,23 @@
1
+ # (C) Copyright 2016 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
+
1
12
  module OneviewSDK
2
- # Uplink Sets resource implementation to be used in Logical interconnect groups
13
+ # Uplink sets resource implementation to be used in logical interconnect groups
3
14
  class LIGUplinkSet < Resource
4
15
  BASE_URI = '/rest/logical-interconnect-groups'.freeze
5
16
 
17
+ # Create a resource object, associate it with a client, and set its properties.
18
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
19
+ # @param [Hash] params The options for this resource (key-value pairs)
20
+ # @param [Integer] api_ver The api version to use when interracting with this resource.
6
21
  def initialize(client, params = {}, api_ver = nil)
7
22
  super
8
23
  # Default values:
@@ -12,35 +27,15 @@ module OneviewSDK
12
27
  @data['networkUris'] ||= []
13
28
  end
14
29
 
15
- # @!group Validates
16
-
17
- VALID_NETWORK_TYPES = %w(FibreChannel Ethernet).freeze
18
- # Validate ethernetNetworkType request
19
- # @param [String] value FibreChannel, Ethernet
20
- def validate_networkType(value)
21
- fail 'Invalid network type' unless VALID_NETWORK_TYPES.include?(value)
22
- fail 'Attribute missing' if value == 'Ethernet' && !@data['ethernetNetworkType']
23
- fail 'Attribute not supported' if value == 'FibreChannel' && @data['ethernetNetworkType']
24
- end
25
-
26
- VALID_ETHERNET_NETWORK_TYPES = %w(NotApplicable Tagged Tunnel Unknown Untagged).freeze
27
- # Validate ethernetNetworkType request
28
- # @param [String] value Notapplicable, Tagged, Tunnel, Unknown, Untagged. Must exist if networkType is 'Ethernet', otherwise shouldn't.
29
- def validate_ethernetNetworkType(value)
30
- fail 'Invalid ethernetNetworkType' unless VALID_ETHERNET_NETWORK_TYPES.include?(value)
31
- end
32
-
33
- # @!endgroup
34
-
35
- # Add existing network to the network list.
30
+ # Add an existing network to the network list.
36
31
  # Ethernet and FibreChannel networks are allowed.
37
- # @param [OneviewSDK::Resource] network resource to be added to the list
32
+ # @param [OneviewSDK::Resource] network The resource to be added to the list
38
33
  def add_network(network)
39
- fail 'Resource not retrieved from server' unless network['uri']
34
+ network.retrieve! unless network['uri']
40
35
  @data['networkUris'] << network['uri']
41
36
  end
42
37
 
43
- # Specify one uplink passing the VC Bay and the port to be attached.
38
+ # Specify one uplink passing the virtual connect bay and the port to be attached.
44
39
  # @param [Fixnum] bay number to identify the VC
45
40
  # @param [String] port to attach the uplink. Allowed D1..D16 and X1..X10
46
41
  def add_uplink(bay, port)
@@ -57,7 +52,7 @@ module OneviewSDK
57
52
  @data['logicalPortConfigInfos'] << entry
58
53
  end
59
54
 
60
- # Set all params
55
+ # Sets all params
61
56
  # @overload sets networkType first
62
57
  def set_all(params = {})
63
58
  params = params.data if params.class <= Resource
@@ -77,10 +72,9 @@ module OneviewSDK
77
72
  offset = case identifier
78
73
  when 'D' then 0
79
74
  when 'X' then 16
80
- else fail "Port not supported: #{identifier} type not found"
75
+ else fail InvalidResource, "Port not supported: #{identifier} type not found"
81
76
  end
82
77
  port.to_i + offset
83
78
  end
84
-
85
79
  end
86
80
  end
@@ -0,0 +1,53 @@
1
+ # (C) Copyright 2016 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
+ module OneviewSDK
13
+ # Logical downlink resource implementation
14
+ class LogicalDownlink < Resource
15
+ BASE_URI = '/rest/logical-downlinks'.freeze
16
+
17
+ # Method is not available
18
+ # @raise [OneviewSDK::MethodUnavailable] method is not available
19
+ def create
20
+ unavailable_method
21
+ end
22
+
23
+ # Method is not available
24
+ # @raise [OneviewSDK::MethodUnavailable] method is not available
25
+ def update
26
+ unavailable_method
27
+ end
28
+
29
+ # Method is not available
30
+ # @raise [OneviewSDK::MethodUnavailable] method is not available
31
+ def delete
32
+ unavailable_method
33
+ end
34
+
35
+ # Gets a list of logical downlinks, excluding any existing ethernet network
36
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
37
+ # @return [Array<OneviewSDK::LogicalDownlink] Logical downlink array
38
+ def self.get_without_ethernet(client)
39
+ result = []
40
+ response = client.rest_get(BASE_URI + '/withoutEthernet')
41
+ members = client.response_handler(response)['members']
42
+ members.each { |member| result << new(client, member) }
43
+ result
44
+ end
45
+
46
+ # Gets a logical downlink, excluding any existing ethernet network
47
+ # @return [OneviewSDK::LogicalDownlink] Logical downlink array
48
+ def get_without_ethernet
49
+ response = @client.rest_get(@data['uri'] + '/withoutEthernet')
50
+ OneviewSDK::LogicalDownlink.new(@client, @client.response_handler(response))
51
+ end
52
+ end
53
+ end
@@ -1,31 +1,34 @@
1
+ # (C) Copyright 2016 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
+
1
12
  module OneviewSDK
2
13
  # Logical enclosure resource implementation
3
14
  class LogicalEnclosure < Resource
4
15
  BASE_URI = '/rest/logical-enclosures'.freeze
5
16
 
17
+ # Create a resource object, associate it with a client, and set its properties.
18
+ # @param [OneviewSDK::Client] client The client object for the OneView appliance
19
+ # @param [Hash] params The options for this resource (key-value pairs)
20
+ # @param [Integer] api_ver The api version to use when interracting with this resource.
6
21
  def initialize(client, params = {}, api_ver = nil)
7
22
  super
8
23
  # Default values
9
24
  @data['type'] ||= 'LogicalEnclosure'
10
25
  end
11
26
 
12
- # @!group Validates
13
-
14
- VALID_FABRIC_TYPES = %w(DirectAttach FabricAttach).freeze
15
- # Validate fabricType
16
- # @param [String] value DirectAttach, FabricAttach
17
- # @raise [RuntimeError] if value is not 'DirectAttach' or 'FabricAttach'
18
- def validate_fabricType(value)
19
- fail 'Invalid fabric type' unless VALID_FABRIC_TYPES.include?(value)
20
- end
21
-
22
- # @!endgroup
23
-
24
- # Reapplies the appliance's configuration on enclosures
25
- # @raise [RuntimeError] if the client is not set
26
- # @raise [RuntimeError] if the uri is not set
27
- # @raise [RuntimeError] if the reapply fails
28
- # @return [LogicalEnclosure] self
27
+ # Reapplies the appliance's configuration on the enclosures
28
+ # @raise [OneviewSDK::IncompleteResource] if the client is not set
29
+ # @raise [OneviewSDK::IncompleteResource] if the uri is not set
30
+ # @raise [StandardError] if the reapply fails
31
+ # @return [OneviewSDK::LogicalEnclosure] self
29
32
  def reconfigure
30
33
  ensure_client && ensure_uri
31
34
  response = @client.rest_put("#{@data['uri']}/configuration", {}, @api_version)
@@ -34,10 +37,10 @@ module OneviewSDK
34
37
  end
35
38
 
36
39
  # Makes this logical enclosure consistent with the enclosure group
37
- # @raise [RuntimeError] if the client is not set
38
- # @raise [RuntimeError] if the uri is not set
39
- # @raise [RuntimeError] if the process fails
40
- # @return [Resource] self
40
+ # @raise [OneviewSDK::IncompleteResource] if the client is not set
41
+ # @raise [OneviewSDK::IncompleteResource] if the uri is not set
42
+ # @raise [StandardError] if the process fails
43
+ # @return [OneviewSDK::LogicalEnclosure] self
41
44
  def update_from_group
42
45
  ensure_client && ensure_uri
43
46
  response = @client.rest_put("#{@data['uri']}/updateFromGroup", {}, @api_version)
@@ -46,9 +49,9 @@ module OneviewSDK
46
49
  end
47
50
 
48
51
  # Get the configuration script
49
- # @raise [RuntimeError] if the client is not set
50
- # @raise [RuntimeError] if the uri is not set
51
- # @raise [RuntimeError] if retrieving fails
52
+ # @raise [OneviewSDK::IncompleteResource] if the client is not set
53
+ # @raise [OneviewSDK::IncompleteResource] if the uri is not set
54
+ # @raise [StandardError] if retrieving fails
52
55
  # @return [String] script
53
56
  def get_script
54
57
  ensure_client && ensure_uri
@@ -57,10 +60,10 @@ module OneviewSDK
57
60
  end
58
61
 
59
62
  # Updates the configuration script for the logical enclosure
60
- # @raise [RuntimeError] if the client is not set
61
- # @raise [RuntimeError] if the uri is not set
62
- # @raise [RuntimeError] if the reapply fails
63
- # @return [Resource] self
63
+ # @raise [OneviewSDK::IncompleteResource] if the client is not set
64
+ # @raise [OneviewSDK::IncompleteResource] if the uri is not set
65
+ # @raise [StandardError] if the reapply fails
66
+ # @return [OneviewSDK::LogicalEnclosure] self
64
67
  def set_script(script)
65
68
  ensure_client && ensure_uri
66
69
  response = @client.rest_put("#{@data['uri']}/script", { 'body' => script }, @api_version)
@@ -69,16 +72,15 @@ module OneviewSDK
69
72
  end
70
73
 
71
74
  # Generates a support dump for the logical enclosure
72
- # @raise [RuntimeError] if the client is not set
73
- # @raise [RuntimeError] if the uri is not set
74
- # @raise [RuntimeError] if the process fails when generating the support dump
75
- # @return [Resource] self
75
+ # @raise [OneviewSDK::IncompleteResource] if the client is not set
76
+ # @raise [OneviewSDK::IncompleteResource] if the uri is not set
77
+ # @raise [StandardError] if the process fails when generating the support dump
78
+ # @return [OneviewSDK::LogicalEnclosure] self
76
79
  def support_dump(options)
77
80
  ensure_client && ensure_uri
78
81
  response = @client.rest_post("#{@data['uri']}/support-dumps", { 'body' => options }, @api_version)
79
82
  @client.wait_for(response.header['location'])
80
83
  self
81
84
  end
82
-
83
85
  end
84
86
  end
@@ -1,57 +1,21 @@
1
+ # (C) Copyright 2016 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
+
1
12
  module OneviewSDK
2
13
  # Logical interconnect resource implementation
3
14
  class LogicalInterconnect < Resource
4
15
  BASE_URI = '/rest/logical-interconnects'.freeze
5
16
  LOCATION_URI = '/rest/logical-interconnects/locations/interconnects'.freeze
6
17
 
7
- # @!group Validates
8
-
9
- # Validate ethernet trap categories
10
- VALID_ENET_TRAP_CATEGORIES = %w(Other PortStatus PortThresholds).freeze
11
- def validate_enet_trap_categories(enet_trap_categories)
12
- enet_trap_categories.uniq!
13
- enet_trap_categories.each do |cat|
14
- fail "Ethernet Trap Category #{cat} is not one of the allowed values: #{VALID_ENET_TRAP_CATEGORIES}" unless
15
- VALID_ENET_TRAP_CATEGORIES.include?(cat)
16
- end
17
- end
18
-
19
- # Validate fc trap categories
20
- VALID_FC_TRAP_CATEGORIES = %w(Other PortStatus).freeze
21
- def validate_fc_trap_categories(fc_trap_categories)
22
- fc_trap_categories.uniq!
23
- fc_trap_categories.each do |cat|
24
- fail "FC Trap Category #{cat} is not one of the allowed values: #{VALID_FC_TRAP_CATEGORIES}" unless VALID_FC_TRAP_CATEGORIES.include?(cat)
25
- end
26
- end
27
-
28
- # Validate vcm trap categories
29
- VALID_VCM_TRAP_CATEGORIES = %w(Legacy).freeze
30
- def validate_vcm_trap_categories(vcm_trap_categories)
31
- vcm_trap_categories.uniq!
32
- vcm_trap_categories.each do |cat|
33
- fail "VCM Trap Category #{cat} is not one of the allowed values: #{VALID_VCM_TRAP_CATEGORIES}" unless VALID_VCM_TRAP_CATEGORIES.include?(cat)
34
- end
35
- end
36
-
37
- # Validate trap severities
38
- VALID_TRAP_SEVERITIES = %w(Critical Info Major Minor Normal Unknown Warning).freeze
39
- def validate_trap_severities(trap_severities)
40
- trap_severities.uniq!
41
- trap_severities.each do |cat|
42
- fail "Trap Severities #{cat} is not one of the allowed values: #{VALID_TRAP_SEVERITIES}" unless VALID_TRAP_SEVERITIES.include?(cat)
43
- end
44
- end
45
-
46
- # Validate snmp trap format
47
- VALID_TRAP_FORMATS = %w(SNMPv1 SNMPv2 SNMPv3).freeze
48
- def validate_trap_format(trap_format)
49
- fail "Trap Format #{trap_format} is not one of the allowed values: #{VALID_TRAP_FORMATS}" unless VALID_TRAP_FORMATS.include?(trap_format)
50
- end
51
-
52
- # @!endgroup
53
-
54
- # Create an Interconnect in the desired Bay in a specified enclosure
18
+ # Creates an Interconnect in the desired bay in a specified enclosure
55
19
  # WARN: It does not create the LOGICAL INTERCONNECT itself.
56
20
  # It will fail if no interconnect is already present on the specified position
57
21
  # @param [Fixnum] bay_number Number of the bay to put the interconnect
@@ -69,9 +33,10 @@ module OneviewSDK
69
33
  end
70
34
 
71
35
  # Deletes an INTERCONNECT
72
- # WARN: This won't delete the LOGICAL INTERCONNECT itself, and may cause inconsistency between the enclosure and LIG
73
- # @param [Fixnum] bay_number Number of the bay to locate the logical interconnect
74
- # @param [OneviewSDK::Resource] enclosure Enclosure to remove the logical interconnect
36
+ # WARN: This will not delete the LOGICAL INTERCONNECT itself, and may cause inconsistency between the enclosure and LIG
37
+ # @param [Fixnum] bay_number The bay number to locate the logical interconnect
38
+ # @param [OneviewSDK::Enclosure] enclosure Enclosure to remove the logical interconnect
39
+ # @return [OneviewSDK::LogicalInterconnect] self
75
40
  def delete(bay_number, enclosure)
76
41
  enclosure.ensure_uri
77
42
  delete_uri = self.class::LOCATION_URI + "?location=Enclosure:#{enclosure['uri']},Bay:#{bay_number}"
@@ -114,12 +79,12 @@ module OneviewSDK
114
79
  internal_networks
115
80
  end
116
81
 
117
- # Updates ethernet settings of the Logical Interconnect
82
+ # Updates ethernet settings of the logical interconnect
118
83
  # @note The attribute is defined inside the instance of the Logical Interconnect
119
84
  # @return Updated instance of the Logical Interconnect
120
85
  def update_ethernet_settings
121
86
  ensure_client && ensure_uri
122
- fail 'Please retrieve the Logical Interconnect before trying to update' unless @data['ethernetSettings']
87
+ fail IncompleteResource, 'Please retrieve the Logical Interconnect before trying to update' unless @data['ethernetSettings']
123
88
  update_options = {
124
89
  'If-Match' => @data['ethernetSettings'].delete('eTag'),
125
90
  'body' => @data['ethernetSettings']
@@ -129,7 +94,7 @@ module OneviewSDK
129
94
  set_all(body)
130
95
  end
131
96
 
132
- # Updates settings of the Logical Interconnect
97
+ # Updates settings of the logical interconnect
133
98
  # @param options Options to update the Logical Interconnect
134
99
  # @return Updated instance of the Logical Interconnect
135
100
  def update_settings(options = {})
@@ -169,7 +134,7 @@ module OneviewSDK
169
134
  # @note The attribute is defined inside the instance of the Logical Interconnect
170
135
  # @return Updated instance of the Logical Interconnect
171
136
  def update_port_monitor
172
- fail 'Please retrieve the Logical Interconnect before trying to update' unless @data['portMonitor']
137
+ fail IncompleteResource, 'Please retrieve the Logical Interconnect before trying to update' unless @data['portMonitor']
173
138
  update_options = {
174
139
  'If-Match' => @data['portMonitor'].delete('eTag'),
175
140
  'body' => @data['portMonitor']
@@ -183,7 +148,7 @@ module OneviewSDK
183
148
  # @note The attribute is defined inside the instance of the Logical Interconnect
184
149
  # @return Updated instance of the Logical Interconnect
185
150
  def update_qos_configuration
186
- fail 'Please retrieve the Logical Interconnect before trying to update' unless @data['qosConfiguration']
151
+ fail IncompleteResource, 'Please retrieve the Logical Interconnect before trying to update' unless @data['qosConfiguration']
187
152
  update_options = {
188
153
  'If-Match' => @data['qosConfiguration'].delete('eTag'),
189
154
  'body' => @data['qosConfiguration']
@@ -197,7 +162,7 @@ module OneviewSDK
197
162
  # @note The attribute is defined inside the instance of the Logical Interconnect
198
163
  # @return Updated instance of the Logical Interconnect
199
164
  def update_telemetry_configuration
200
- fail 'Please retrieve the Logical Interconnect before trying to update' unless @data['telemetryConfiguration']
165
+ fail IncompleteResource, 'Please retrieve the Logical Interconnect before trying to update' unless @data['telemetryConfiguration']
201
166
  update_options = {
202
167
  'If-Match' => @data['telemetryConfiguration'].delete('eTag'),
203
168
  'body' => @data['telemetryConfiguration']
@@ -212,7 +177,7 @@ module OneviewSDK
212
177
  # Use helper methods to add the trap destination values: #add_snmp_trap_destination and #generate_trap_options
213
178
  # @return Updated instance of the Logical Interconnect
214
179
  def update_snmp_configuration
215
- fail 'Please retrieve the Logical Interconnect before trying to update' unless @data['snmpConfiguration']
180
+ fail IncompleteResource, 'Please retrieve the Logical Interconnect before trying to update' unless @data['snmpConfiguration']
216
181
  update_options = {
217
182
  'If-Match' => @data['snmpConfiguration'].delete('eTag'),
218
183
  'body' => @data['snmpConfiguration']
@@ -225,10 +190,9 @@ module OneviewSDK
225
190
  # It will add one trap destination to the Logical Interconnect SNMP configuration
226
191
  # @param trap_format [String] SNMP version for this trap destination, `'SNMPv1'` or `'SNMPv2'` or `'SNMPv3'`
227
192
  # @param trap_destination [String] The trap destination IP address or host name
228
- # @param community_string [String] Authentication string for the trap destination
193
+ # @param community_string [String] The Authentication string for the trap destination
229
194
  # @param trap_options [Hash] Hash with the options of the trap. Create it using generate_trap_options method
230
195
  def add_snmp_trap_destination(trap_destination, trap_format = 'SNMPv1', community_string = 'public', trap_options = {})
231
- validate_trap_format(trap_format)
232
196
  trap_options['communityString'] = community_string
233
197
  trap_options['trapDestination'] = trap_destination
234
198
  trap_options['trapFormat'] = trap_format
@@ -245,10 +209,6 @@ module OneviewSDK
245
209
  # can contain, `'Critical'` or `'Info'` or `'Major'` or `'Minor'` or `'Normal'` or `'Unknown'` or `'Warning'`
246
210
  # @return [Hash] Contains all trap options for one SNMP destination
247
211
  def generate_trap_options(enet_trap_categories = [], fc_trap_categories = [], vcm_trap_categories = [], trap_severities = [])
248
- validate_enet_trap_categories(enet_trap_categories)
249
- validate_fc_trap_categories(fc_trap_categories)
250
- validate_vcm_trap_categories(vcm_trap_categories)
251
- validate_trap_severities(trap_severities)
252
212
  options = {
253
213
  'enetTrapCategories' => enet_trap_categories,
254
214
  'vcmTrapCategories' => vcm_trap_categories,
@@ -266,6 +226,11 @@ module OneviewSDK
266
226
  @client.response_handler(response)
267
227
  end
268
228
 
229
+ # Update firmware
230
+ # @param [String] command
231
+ # @param [OneviewSDK::FirmwareDriver] firmware_driver
232
+ # @param [Hash] firmware_options
233
+ # @raise [OneviewSDK::IncompleteResource] if the client or uri is not set
269
234
  def firmware_update(command, firmware_driver, firmware_options)
270
235
  ensure_client && ensure_uri
271
236
  firmware_options['command'] = command
@@ -278,6 +243,5 @@ module OneviewSDK
278
243
  response = @client.rest_put(@data['uri'] + '/firmware', update_json)
279
244
  @client.response_handler(response)
280
245
  end
281
-
282
246
  end
283
247
  end