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.
- checksums.yaml +4 -4
- data/.rubocop.yml +4 -0
- data/CHANGELOG.md +81 -2
- data/README.md +118 -113
- data/Rakefile +11 -0
- data/lib/oneview-sdk/cli.rb +21 -15
- data/lib/oneview-sdk/client.rb +34 -21
- data/lib/oneview-sdk/config_loader.rb +12 -1
- data/lib/oneview-sdk/exceptions.rb +55 -0
- data/lib/oneview-sdk/resource/connection_template.rb +48 -0
- data/lib/oneview-sdk/resource/datacenter.rb +77 -0
- data/lib/oneview-sdk/resource/enclosure.rb +46 -24
- data/lib/oneview-sdk/resource/enclosure_group.rb +20 -36
- data/lib/oneview-sdk/resource/ethernet_network.rb +19 -23
- data/lib/oneview-sdk/resource/fabric.rb +41 -0
- data/lib/oneview-sdk/resource/fc_network.rb +15 -16
- data/lib/oneview-sdk/resource/fcoe_network.rb +15 -12
- data/lib/oneview-sdk/resource/firmware_bundle.rb +23 -24
- data/lib/oneview-sdk/resource/firmware_driver.rb +21 -9
- data/lib/oneview-sdk/resource/interconnect.rb +29 -9
- data/lib/oneview-sdk/resource/lig_uplink_set.rb +22 -28
- data/lib/oneview-sdk/resource/logical_downlink.rb +53 -0
- data/lib/oneview-sdk/resource/logical_enclosure.rb +35 -33
- data/lib/oneview-sdk/resource/logical_interconnect.rb +29 -65
- data/lib/oneview-sdk/resource/logical_interconnect_group.rb +26 -6
- data/lib/oneview-sdk/resource/logical_switch.rb +184 -0
- data/lib/oneview-sdk/resource/logical_switch_group.rb +66 -0
- data/lib/oneview-sdk/resource/managed_san.rb +79 -0
- data/lib/oneview-sdk/resource/network_set.rb +64 -0
- data/lib/oneview-sdk/resource/power_device.rb +174 -0
- data/lib/oneview-sdk/resource/rack.rb +83 -0
- data/lib/oneview-sdk/resource/san_manager.rb +88 -0
- data/lib/oneview-sdk/resource/server_hardware.rb +139 -18
- data/lib/oneview-sdk/resource/server_hardware_type.rb +32 -1
- data/lib/oneview-sdk/resource/server_profile.rb +352 -9
- data/lib/oneview-sdk/resource/server_profile_template.rb +193 -4
- data/lib/oneview-sdk/resource/storage_pool.rb +42 -20
- data/lib/oneview-sdk/resource/storage_system.rb +64 -14
- data/lib/oneview-sdk/resource/switch.rb +86 -0
- data/lib/oneview-sdk/resource/unmanaged_device.rb +55 -0
- data/lib/oneview-sdk/resource/uplink_set.rb +24 -64
- data/lib/oneview-sdk/resource/volume.rb +29 -29
- data/lib/oneview-sdk/resource/volume_attachment.rb +79 -0
- data/lib/oneview-sdk/resource/volume_snapshot.rb +20 -1
- data/lib/oneview-sdk/resource/volume_template.rb +22 -33
- data/lib/oneview-sdk/resource.rb +66 -28
- data/lib/oneview-sdk/rest.rb +69 -24
- data/lib/oneview-sdk/ssl_helper.rb +20 -9
- data/lib/oneview-sdk/version.rb +12 -1
- data/lib/oneview-sdk.rb +12 -0
- data/oneview-sdk.gemspec +11 -0
- metadata +17 -2
@@ -0,0 +1,55 @@
|
|
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
|
+
# Contains all the custom Exception classes
|
13
|
+
module OneviewSDK
|
14
|
+
class ConnectionError < StandardError # Cannot connect to client/resource
|
15
|
+
end
|
16
|
+
|
17
|
+
class InvalidURL < StandardError # URL is invalid
|
18
|
+
end
|
19
|
+
|
20
|
+
class InvalidClient < StandardError # Client configuration is invalid
|
21
|
+
end
|
22
|
+
|
23
|
+
class InvalidResource < StandardError # Failed resource validations
|
24
|
+
end
|
25
|
+
|
26
|
+
class IncompleteResource < StandardError # Missing required resource data to complete action
|
27
|
+
end
|
28
|
+
|
29
|
+
class MethodUnavailable < StandardError # Resource does not support this method
|
30
|
+
end
|
31
|
+
|
32
|
+
class UnsupportedVersion < StandardError # Resource not supported on this API version
|
33
|
+
end
|
34
|
+
|
35
|
+
class InvalidRequest < StandardError # Could not make request
|
36
|
+
end
|
37
|
+
|
38
|
+
class BadRequest < StandardError # 400
|
39
|
+
end
|
40
|
+
|
41
|
+
class Unauthorized < StandardError # 401
|
42
|
+
end
|
43
|
+
|
44
|
+
class NotFound < StandardError # 404
|
45
|
+
end
|
46
|
+
|
47
|
+
class RequestError < StandardError # Other bad response codes
|
48
|
+
end
|
49
|
+
|
50
|
+
class TaskError < StandardError # Task ended in a bad state
|
51
|
+
end
|
52
|
+
|
53
|
+
class InvalidFormat < StandardError # File format is invalid
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,48 @@
|
|
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
|
+
# Connection template resource implementation
|
14
|
+
class ConnectionTemplate < Resource
|
15
|
+
BASE_URI = '/rest/connection-templates'.freeze
|
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.
|
21
|
+
def initialize(client, params = {}, api_ver = nil)
|
22
|
+
super
|
23
|
+
# Default values:
|
24
|
+
@data['bandwidth'] ||= {}
|
25
|
+
@data['type'] ||= 'connection-template'
|
26
|
+
end
|
27
|
+
|
28
|
+
# Method is not available
|
29
|
+
# @raise [OneviewSDK::MethodUnavailable] method is not available
|
30
|
+
def create
|
31
|
+
unavailable_method
|
32
|
+
end
|
33
|
+
|
34
|
+
# Method is not available
|
35
|
+
# @raise [OneviewSDK::MethodUnavailable] method is not available
|
36
|
+
def delete
|
37
|
+
unavailable_method
|
38
|
+
end
|
39
|
+
|
40
|
+
# Get the default network connection template
|
41
|
+
# @param [OneviewSDK::Client] client The client object for the OneView appliance
|
42
|
+
# @return [OneviewSDK::ConnectionTemplate] Connection template
|
43
|
+
def self.get_default(client)
|
44
|
+
response = client.rest_get(BASE_URI + '/defaultConnectionTemplate')
|
45
|
+
OneviewSDK::ConnectionTemplate.new(client, client.response_handler(response))
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,77 @@
|
|
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
|
10
|
+
# specific language governing permissions and limitations under the License.
|
11
|
+
|
12
|
+
module OneviewSDK
|
13
|
+
# Datacenter resource implementation
|
14
|
+
class Datacenter < Resource
|
15
|
+
BASE_URI = '/rest/datacenters'.freeze
|
16
|
+
|
17
|
+
# Add the resource on OneView using the current data
|
18
|
+
# @note Calls the refresh method to set additional data
|
19
|
+
# @raise [OneviewSDK::IncompleteResource] if the client is not set
|
20
|
+
# @raise [StandardError] if the resource creation fails
|
21
|
+
# @return [OneviewSDK::Datacenter] self
|
22
|
+
alias add create
|
23
|
+
|
24
|
+
# Remove resource from OneView
|
25
|
+
# @return [true] if resource was removed successfully
|
26
|
+
alias remove delete
|
27
|
+
|
28
|
+
# Create a resource object, associate it with a client, and set its properties.
|
29
|
+
# @param [OneviewSDK::Client] client The client object for the OneView appliance
|
30
|
+
# @param [Hash] params The options for this resource (key-value pairs)
|
31
|
+
# @param [Integer] api_ver The api version to use when interracting with this resource.
|
32
|
+
def initialize(client, params = {}, api_ver = nil)
|
33
|
+
super
|
34
|
+
# Default values:
|
35
|
+
@data['contents'] ||= []
|
36
|
+
end
|
37
|
+
|
38
|
+
# Method is not available
|
39
|
+
# @raise [OneviewSDK::MethodUnavailable] method is not available
|
40
|
+
def create
|
41
|
+
unavailable_method
|
42
|
+
end
|
43
|
+
|
44
|
+
# Method is not available
|
45
|
+
# @raise [OneviewSDK::MethodUnavailable] method is not available
|
46
|
+
def delete
|
47
|
+
unavailable_method
|
48
|
+
end
|
49
|
+
|
50
|
+
# Adds an existing rack to the datacenter
|
51
|
+
# @param [OneviewSDK::Rack] rack rack
|
52
|
+
# @param [Decimal] pos_x x position
|
53
|
+
# @param [Decimal] pos_y y position
|
54
|
+
# @param [Decimal] rotation Rotation degrees (0-359) around the center of the resource
|
55
|
+
def add_rack(rack, pos_x, pos_y, rotation = 0)
|
56
|
+
@data['contents'] << {
|
57
|
+
'resourceUri' => rack['uri'],
|
58
|
+
'x' => pos_x,
|
59
|
+
'y' => pos_y,
|
60
|
+
'rotation' => rotation
|
61
|
+
}
|
62
|
+
end
|
63
|
+
|
64
|
+
# Removes a rack from the datacenter
|
65
|
+
# @param [OneviewSDK::Rack] rack rack
|
66
|
+
def remove_rack(rack)
|
67
|
+
@data['contents'].reject! { |resource| resource['resourceUri'] == rack['uri'] }
|
68
|
+
end
|
69
|
+
|
70
|
+
# Gets a list of the visual content objects
|
71
|
+
# @return [Hash]
|
72
|
+
def get_visual_content
|
73
|
+
response = @client.rest_get(@data['uri'] + '/visualContent')
|
74
|
+
@client.response_handler(response)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -1,3 +1,14 @@
|
|
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
|
require 'time'
|
2
13
|
require 'date'
|
3
14
|
|
@@ -6,31 +17,40 @@ module OneviewSDK
|
|
6
17
|
class Enclosure < Resource
|
7
18
|
BASE_URI = '/rest/enclosures'.freeze
|
8
19
|
|
20
|
+
# Remove resource from OneView
|
21
|
+
# @return [true] if resource was removed successfully
|
22
|
+
alias remove delete
|
23
|
+
|
24
|
+
# Create a resource object, associate it with a client, and set its properties.
|
25
|
+
# @param [OneviewSDK::Client] client The client object for the OneView appliance
|
26
|
+
# @param [Hash] params The options for this resource (key-value pairs)
|
27
|
+
# @param [Integer] api_ver The api version to use when interracting with this resource.
|
9
28
|
def initialize(client, params = {}, api_ver = nil)
|
10
29
|
super
|
11
30
|
# Default values:
|
12
31
|
@data['type'] ||= 'EnclosureV200'
|
13
32
|
end
|
14
33
|
|
15
|
-
# @!group Validates
|
16
34
|
|
17
|
-
|
18
|
-
|
19
|
-
|
35
|
+
# Method is not available
|
36
|
+
# @raise [OneviewSDK::MethodUnavailable] method is not available
|
37
|
+
def create
|
38
|
+
unavailable_method
|
20
39
|
end
|
21
40
|
|
22
|
-
|
23
|
-
|
24
|
-
|
41
|
+
# Method is not available
|
42
|
+
# @raise [OneviewSDK::MethodUnavailable] method is not available
|
43
|
+
def delete
|
44
|
+
unavailable_method
|
25
45
|
end
|
26
46
|
|
27
|
-
# @!endgroup
|
28
|
-
|
29
47
|
# Claim/configure the enclosure and its components to the appliance
|
30
|
-
|
48
|
+
# @note Calls the refresh method to set additional data
|
49
|
+
# @return [OneviewSDK::Enclosure] self
|
50
|
+
def add
|
31
51
|
ensure_client
|
32
52
|
required_attributes = %w(enclosureGroupUri hostname username password licensingIntent)
|
33
|
-
required_attributes.each { |k| fail "Missing required attribute: '#{k}'" unless @data.key?(k) }
|
53
|
+
required_attributes.each { |k| fail IncompleteResource, "Missing required attribute: '#{k}'" unless @data.key?(k) }
|
34
54
|
|
35
55
|
optional_attrs = %w(enclosureUri firmwareBaselineUri force forceInstallFirmware state unmanagedEnclosure updateFirmwareOn)
|
36
56
|
temp_data = @data.select { |k, _v| required_attributes.include?(k) || optional_attrs.include?(k) }
|
@@ -44,7 +64,9 @@ module OneviewSDK
|
|
44
64
|
self
|
45
65
|
end
|
46
66
|
|
47
|
-
#
|
67
|
+
# Overrides the update operation because only the name and rackName can be updated (and it uses PATCH).
|
68
|
+
# @param [Hash] attributes attributes to be updated
|
69
|
+
# @return [OneviewSDK::Enclosure] self
|
48
70
|
def update(attributes = {})
|
49
71
|
set_all(attributes)
|
50
72
|
ensure_client && ensure_uri
|
@@ -62,7 +84,7 @@ module OneviewSDK
|
|
62
84
|
self
|
63
85
|
end
|
64
86
|
|
65
|
-
#
|
87
|
+
# Reapplies the enclosure configuration
|
66
88
|
def configuration
|
67
89
|
ensure_client && ensure_uri
|
68
90
|
response = @client.rest_put(@data['uri'] + '/configuration', {}, @api_version)
|
@@ -71,13 +93,12 @@ module OneviewSDK
|
|
71
93
|
end
|
72
94
|
|
73
95
|
|
74
|
-
#
|
96
|
+
# Refreshes the enclosure along with all of its components
|
75
97
|
# @param [String] state NotRefreshing, RefreshFailed, RefreshPending, Refreshing
|
76
98
|
# @param [Hash] options Optional force fields for refreshing the enclosure
|
77
99
|
def set_refresh_state(state, options = {})
|
78
100
|
ensure_client && ensure_uri
|
79
101
|
s = state.to_s rescue state
|
80
|
-
validate_refreshState(s) # Validate refreshState
|
81
102
|
requestBody = {
|
82
103
|
'body' => {
|
83
104
|
refreshState: s,
|
@@ -89,7 +110,7 @@ module OneviewSDK
|
|
89
110
|
set_all(new_data)
|
90
111
|
end
|
91
112
|
|
92
|
-
#
|
113
|
+
# Gets the enclosure script content
|
93
114
|
# @return [String] Script content
|
94
115
|
def script
|
95
116
|
ensure_client && ensure_uri
|
@@ -97,7 +118,8 @@ module OneviewSDK
|
|
97
118
|
@client.response_handler(response)
|
98
119
|
end
|
99
120
|
|
100
|
-
#
|
121
|
+
# Gets the enclosure settings that describe the environmental configuration
|
122
|
+
# @return [Hash] The enclosure envirnomental configuration
|
101
123
|
def environmental_configuration
|
102
124
|
ensure_client && ensure_uri
|
103
125
|
response = @client.rest_get(@data['uri'] + '/environmentalConfiguration', @api_version)
|
@@ -133,37 +155,37 @@ module OneviewSDK
|
|
133
155
|
@client.response_handler(response)
|
134
156
|
end
|
135
157
|
|
136
|
-
#
|
158
|
+
# Updates specific attributes of a given enclosure resource
|
137
159
|
# @param [String] operation operation to be performed
|
138
160
|
# @param [String] path path
|
139
161
|
# @param [String] value value
|
140
|
-
def
|
162
|
+
def patch(operation, path, value)
|
141
163
|
ensure_client && ensure_uri
|
142
164
|
response = @client.rest_patch(@data['uri'], { 'body' => [{ op: operation, path: path, value: value }] }, @api_version)
|
143
165
|
@client.response_handler(response)
|
144
166
|
end
|
145
167
|
|
146
|
-
# Associates
|
168
|
+
# Associates an enclosure group to the enclosure
|
147
169
|
# @param [OneviewSDK<Resource>] eg Enclosure Group associated
|
148
170
|
def set_enclosure_group(eg)
|
149
171
|
eg.retrieve! unless eg['uri']
|
150
172
|
@data['enclosureGroupUri'] = eg['uri']
|
151
173
|
end
|
152
174
|
|
153
|
-
|
154
175
|
private
|
155
176
|
|
156
|
-
#
|
177
|
+
# Converts Date, Time, or String objects to iso8601 string
|
178
|
+
# @raise [InvalidResource] if time is not formatted correctly
|
157
179
|
def convert_time(t)
|
158
180
|
case t
|
159
181
|
when nil then nil
|
160
182
|
when Date then t.to_time.utc.iso8601(3)
|
161
183
|
when Time then t.utc.iso8601(3)
|
162
184
|
when String then Time.parse(t).utc.iso8601(3)
|
163
|
-
else fail "Invalid time format '#{t.class}'. Valid options are Time, Date, or String"
|
185
|
+
else fail InvalidResource, "Invalid time format '#{t.class}'. Valid options are Time, Date, or String"
|
164
186
|
end
|
165
187
|
rescue StandardError => e
|
166
|
-
raise "Failed to parse time value '#{t}'. #{e.message}"
|
188
|
+
raise InvalidResource, "Failed to parse time value '#{t}'. #{e.message}"
|
167
189
|
end
|
168
190
|
end
|
169
191
|
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
13
|
# Enclosure group resource implementation
|
3
14
|
class EnclosureGroup < Resource
|
4
15
|
BASE_URI = '/rest/enclosure-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:
|
@@ -11,47 +26,16 @@ module OneviewSDK
|
|
11
26
|
create_interconnect_bay_mapping unless @data['interconnectBayMappings']
|
12
27
|
end
|
13
28
|
|
14
|
-
# @!group Validates
|
15
|
-
|
16
|
-
VALID_INTERCONNECT_BAY_MAPPING_COUNTS = (1..8).freeze
|
17
|
-
def validate_interconnectBayMappingCount(value)
|
18
|
-
fail 'Interconnect Bay Mapping Count out of range 1..8' unless VALID_INTERCONNECT_BAY_MAPPING_COUNTS.include?(value)
|
19
|
-
end
|
20
|
-
|
21
|
-
VALID_IP_ADDRESSING_MODES = %w(DHCP External IpPool).freeze
|
22
|
-
def validate_ipAddressingMode(value)
|
23
|
-
return if !@data['enclosureTypeUri'] || /c7000/ =~ @data['enclosureTypeUri']
|
24
|
-
is_not_a_c7000_without_ip_addressing_mode = !(/c7000/ =~ @data['enclosureTypeUri']) && !value
|
25
|
-
fail "Invalid ip AddressingMode: #{value}" if !VALID_IP_ADDRESSING_MODES.include?(value) || is_not_a_c7000_without_ip_addressing_mode
|
26
|
-
end
|
27
|
-
|
28
|
-
VALID_PORT_MAPPING_COUNTS = (0..8).freeze
|
29
|
-
def validate_portMappingCount(value)
|
30
|
-
fail 'Port Mapping Count out of range 0..8' unless VALID_PORT_MAPPING_COUNTS.include?(value)
|
31
|
-
end
|
32
|
-
|
33
|
-
VALID_POWER_MODES = ['RedundantPowerFeed', 'RedundantPowerSupply', nil].freeze
|
34
|
-
def validate_powerMode(value)
|
35
|
-
fail 'Invalid powerMode' unless VALID_POWER_MODES.include?(value)
|
36
|
-
end
|
37
|
-
|
38
|
-
VALID_STACKING_MODES = %w(Enclosure MultiEnclosure None SwitchPairs).freeze
|
39
|
-
def validate_stackingMode(value)
|
40
|
-
fail 'Invalid stackingMode' unless VALID_STACKING_MODES.include?(value)
|
41
|
-
end
|
42
|
-
|
43
|
-
# @!endgroup
|
44
|
-
|
45
29
|
# Get the script executed by enclosures in this enclosure group
|
46
|
-
# @return [String] script for this enclosure group
|
30
|
+
# @return [String] The script for this enclosure group
|
47
31
|
def get_script
|
48
32
|
ensure_client && ensure_uri
|
49
33
|
response = @client.rest_get(@data['uri'] + '/script', @api_version)
|
50
34
|
@client.response_handler(response)
|
51
35
|
end
|
52
36
|
|
53
|
-
#
|
54
|
-
# @param [String] body script to be executed
|
37
|
+
# Changes the script executed by the enclosures in this enclosure group
|
38
|
+
# @param [String] body The script to be executed
|
55
39
|
# @return true if set successfully
|
56
40
|
def set_script(body)
|
57
41
|
ensure_client && ensure_uri
|
@@ -60,7 +44,7 @@ module OneviewSDK
|
|
60
44
|
true
|
61
45
|
end
|
62
46
|
|
63
|
-
#
|
47
|
+
# Adds the logical interconnect group
|
64
48
|
# @param [OneviewSDK::LogicalInterconnectGroup] lig Logical Interconnect Group
|
65
49
|
def add_logical_interconnect_group(lig)
|
66
50
|
lig.retrieve! unless lig['uri']
|
@@ -71,7 +55,7 @@ module OneviewSDK
|
|
71
55
|
end
|
72
56
|
end
|
73
57
|
|
74
|
-
#
|
58
|
+
# Creates the interconnect bay mapping
|
75
59
|
def create_interconnect_bay_mapping
|
76
60
|
@data['interconnectBayMappings'] = []
|
77
61
|
1.upto(@data['interconnectBayMappingCount']) do |bay_number|
|
@@ -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
13
|
# Ethernet network resource implementation
|
3
14
|
class EthernetNetwork < Resource
|
4
15
|
BASE_URI = '/rest/ethernet-networks'.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:
|
@@ -10,26 +25,8 @@ module OneviewSDK
|
|
10
25
|
@data['type'] ||= 'ethernet-networkV3'
|
11
26
|
end
|
12
27
|
|
13
|
-
#
|
14
|
-
|
15
|
-
VALID_ETHERNET_NETWORK_TYPES = %w(NotApplicable Tagged Tunnel Unknown Untagged).freeze
|
16
|
-
# Validate ethernetNetworkType
|
17
|
-
# @param [String] value Notapplicable, Tagged, Tunnel, Unknown, Untagged
|
18
|
-
def validate_ethernetNetworkType(value)
|
19
|
-
fail 'Invalid network type' unless VALID_ETHERNET_NETWORK_TYPES.include?(value)
|
20
|
-
end
|
21
|
-
|
22
|
-
VALID_PURPOSES = %w(FaultTolerance General Management VMMigration).freeze
|
23
|
-
# Validate purpose
|
24
|
-
# @param [String] value FaultTolerance, General, Management, VMMigration
|
25
|
-
def validate_purpose(value)
|
26
|
-
fail 'Invalid ethernet purpose' unless VALID_PURPOSES.include?(value)
|
27
|
-
end
|
28
|
-
|
29
|
-
# @!endgroup
|
30
|
-
|
31
|
-
# Bulk create ethernet networks
|
32
|
-
# @param [Client] client client to connect with OneView
|
28
|
+
# Bulk create the ethernet networks
|
29
|
+
# @param [OneviewSDK::Client] client The client object for the OneView appliance
|
33
30
|
# @param [Hash] options information necessary to create networks
|
34
31
|
# @return [Array] list of ethernet networks created
|
35
32
|
def self.bulk_create(client, options)
|
@@ -42,19 +39,18 @@ module OneviewSDK
|
|
42
39
|
OneviewSDK::EthernetNetwork.get_all(client).select { |network| network_names.include?(network['name']) }
|
43
40
|
end
|
44
41
|
|
45
|
-
#
|
42
|
+
# Gets the associated profiles
|
46
43
|
def get_associated_profiles
|
47
44
|
ensure_client && ensure_uri
|
48
45
|
response = @client.rest_get("#{@data['uri']}/associatedProfiles", @api_version)
|
49
46
|
response.body
|
50
47
|
end
|
51
48
|
|
52
|
-
#
|
49
|
+
# Gets the associated uplink groups
|
53
50
|
def get_associated_uplink_groups
|
54
51
|
ensure_client && ensure_uri
|
55
52
|
response = @client.rest_get("#{@data['uri']}/associatedUplinkGroups", @api_version)
|
56
53
|
response.body
|
57
54
|
end
|
58
|
-
|
59
55
|
end
|
60
56
|
end
|
@@ -0,0 +1,41 @@
|
|
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
|
+
# FC network resource implementation
|
14
|
+
class Fabric < Resource
|
15
|
+
BASE_URI = '/rest/fabrics'.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
|
+
# Method is not available
|
36
|
+
# @raise [OneviewSDK::MethodUnavailable] method is not available
|
37
|
+
def refresh
|
38
|
+
unavailable_method
|
39
|
+
end
|
40
|
+
end
|
41
|
+
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
13
|
# FC network resource implementation
|
3
14
|
class FCNetwork < Resource
|
4
15
|
BASE_URI = '/rest/fc-networks'.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
|
@@ -11,21 +26,5 @@ module OneviewSDK
|
|
11
26
|
@data['linkStabilityTime'] ||= 30
|
12
27
|
@data['fabricType'] ||= 'FabricAttach'
|
13
28
|
end
|
14
|
-
|
15
|
-
# @!group Validates
|
16
|
-
|
17
|
-
VALID_FABRIC_TYPES = %w(DirectAttach FabricAttach).freeze
|
18
|
-
def validate_fabricType(value)
|
19
|
-
fail 'Invalid fabric type' unless VALID_FABRIC_TYPES.include?(value)
|
20
|
-
end
|
21
|
-
|
22
|
-
VALID_LINK_STABILITY_TIMES = (1..1800).freeze
|
23
|
-
def validate_linkStabilityTime(value)
|
24
|
-
return unless @data['fabricType'] && @data['fabricType'] == 'FabricAttach'
|
25
|
-
fail 'Link stability time out of range 1..1800' unless VALID_LINK_STABILITY_TIMES.include?(value)
|
26
|
-
end
|
27
|
-
|
28
|
-
# @!endgroup
|
29
|
-
|
30
29
|
end
|
31
30
|
end
|
@@ -1,25 +1,28 @@
|
|
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
|
# FCoE network resource implementation
|
3
14
|
class FCoENetwork < Resource
|
4
15
|
BASE_URI = '/rest/fcoe-networks'.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['connectionTemplateUri'] ||= nil
|
10
25
|
@data['type'] ||= 'fcoe-network'
|
11
26
|
end
|
12
|
-
|
13
|
-
# @!group Validates
|
14
|
-
|
15
|
-
VALID_VLAN_IDS = (1..4094).freeze
|
16
|
-
# Validate vlanId
|
17
|
-
# @param [Fixnum] value 1..4094
|
18
|
-
def validate_vlanId(value)
|
19
|
-
fail 'vlanId out of range 1..4094' unless VALID_VLAN_IDS.include?(value)
|
20
|
-
end
|
21
|
-
|
22
|
-
# @!endgroup
|
23
|
-
|
24
27
|
end
|
25
28
|
end
|