oneview-sdk 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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