oneview-sdk 2.2.1 → 3.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/CHANGELOG.md +50 -0
- data/README.md +61 -15
- data/Rakefile +39 -1
- data/lib/oneview-sdk.rb +38 -3
- data/lib/oneview-sdk/cli.rb +85 -30
- data/lib/oneview-sdk/client.rb +21 -18
- data/lib/oneview-sdk/config_loader.rb +1 -1
- data/lib/oneview-sdk/resource.rb +44 -36
- data/lib/oneview-sdk/resource/api200.rb +34 -0
- data/lib/oneview-sdk/resource/api200/connection_template.rb +52 -0
- data/lib/oneview-sdk/resource/api200/datacenter.rb +81 -0
- data/lib/oneview-sdk/resource/api200/enclosure.rb +203 -0
- data/lib/oneview-sdk/resource/api200/enclosure_group.rb +86 -0
- data/lib/oneview-sdk/resource/api200/ethernet_network.rb +60 -0
- data/lib/oneview-sdk/resource/api200/fabric.rb +45 -0
- data/lib/oneview-sdk/resource/api200/fc_network.rb +34 -0
- data/lib/oneview-sdk/resource/api200/fcoe_network.rb +32 -0
- data/lib/oneview-sdk/resource/api200/firmware_bundle.rb +56 -0
- data/lib/oneview-sdk/resource/{fcoe_network.rb → api200/firmware_driver.rb} +21 -12
- data/lib/oneview-sdk/resource/api200/interconnect.rb +112 -0
- data/lib/oneview-sdk/resource/api200/lig_uplink_set.rb +84 -0
- data/lib/oneview-sdk/resource/api200/logical_downlink.rb +57 -0
- data/lib/oneview-sdk/resource/api200/logical_enclosure.rb +88 -0
- data/lib/oneview-sdk/resource/api200/logical_interconnect.rb +251 -0
- data/lib/oneview-sdk/resource/api200/logical_interconnect_group.rb +116 -0
- data/lib/oneview-sdk/resource/api200/logical_switch.rb +188 -0
- data/lib/oneview-sdk/resource/api200/logical_switch_group.rb +70 -0
- data/lib/oneview-sdk/resource/api200/managed_san.rb +83 -0
- data/lib/oneview-sdk/resource/api200/network_set.rb +68 -0
- data/lib/oneview-sdk/resource/api200/power_device.rb +178 -0
- data/lib/oneview-sdk/resource/api200/rack.rb +88 -0
- data/lib/oneview-sdk/resource/api200/resource.rb +18 -0
- data/lib/oneview-sdk/resource/api200/san_manager.rb +92 -0
- data/lib/oneview-sdk/resource/api200/server_hardware.rb +244 -0
- data/lib/oneview-sdk/resource/api200/server_hardware_type.rb +61 -0
- data/lib/oneview-sdk/resource/api200/server_profile.rb +385 -0
- data/lib/oneview-sdk/resource/api200/server_profile_template.rb +217 -0
- data/lib/oneview-sdk/resource/api200/storage_pool.rb +92 -0
- data/lib/oneview-sdk/resource/api200/storage_system.rb +157 -0
- data/lib/oneview-sdk/resource/api200/switch.rb +91 -0
- data/lib/oneview-sdk/resource/api200/unmanaged_device.rb +59 -0
- data/lib/oneview-sdk/resource/api200/uplink_set.rb +83 -0
- data/lib/oneview-sdk/resource/api200/volume.rb +192 -0
- data/lib/oneview-sdk/resource/api200/volume_attachment.rb +83 -0
- data/lib/oneview-sdk/resource/api200/volume_snapshot.rb +50 -0
- data/lib/oneview-sdk/resource/api200/volume_template.rb +99 -0
- data/lib/oneview-sdk/resource/api300.rb +66 -0
- data/lib/oneview-sdk/resource/api300/c7000.rb +27 -0
- data/lib/oneview-sdk/resource/api300/c7000/connection_template.rb +30 -0
- data/lib/oneview-sdk/resource/api300/c7000/datacenter.rb +22 -0
- data/lib/oneview-sdk/resource/api300/c7000/enclosure.rb +48 -0
- data/lib/oneview-sdk/resource/api300/c7000/enclosure_group.rb +37 -0
- data/lib/oneview-sdk/resource/api300/c7000/ethernet_network.rb +35 -0
- data/lib/oneview-sdk/resource/api300/c7000/fabric.rb +22 -0
- data/lib/oneview-sdk/resource/api300/c7000/fc_network.rb +37 -0
- data/lib/oneview-sdk/resource/api300/c7000/fcoe_network.rb +35 -0
- data/lib/oneview-sdk/resource/api300/c7000/firmware_bundle.rb +21 -0
- data/lib/oneview-sdk/resource/api300/c7000/firmware_driver.rb +22 -0
- data/lib/oneview-sdk/resource/api300/c7000/interconnect.rb +21 -0
- data/lib/oneview-sdk/resource/api300/c7000/lig_uplink_set.rb +21 -0
- data/lib/oneview-sdk/resource/api300/c7000/logical_downlink.rb +34 -0
- data/lib/oneview-sdk/resource/api300/c7000/logical_enclosure.rb +35 -0
- data/lib/oneview-sdk/resource/api300/c7000/logical_interconnect.rb +21 -0
- data/lib/oneview-sdk/resource/api300/c7000/logical_interconnect_group.rb +33 -0
- data/lib/oneview-sdk/resource/api300/c7000/logical_switch.rb +51 -0
- data/lib/oneview-sdk/resource/api300/c7000/logical_switch_group.rb +33 -0
- data/lib/oneview-sdk/resource/api300/c7000/managed_san.rb +36 -0
- data/lib/oneview-sdk/resource/api300/c7000/network_set.rb +37 -0
- data/lib/oneview-sdk/resource/api300/c7000/power_device.rb +21 -0
- data/lib/oneview-sdk/resource/api300/c7000/rack.rb +22 -0
- data/lib/oneview-sdk/resource/api300/c7000/resource.rb +21 -0
- data/lib/oneview-sdk/resource/api300/c7000/san_manager.rb +22 -0
- data/lib/oneview-sdk/resource/api300/c7000/server_hardware.rb +93 -0
- data/lib/oneview-sdk/resource/api300/c7000/server_hardware_type.rb +21 -0
- data/lib/oneview-sdk/resource/api300/c7000/server_profile.rb +33 -0
- data/lib/oneview-sdk/resource/api300/c7000/server_profile_template.rb +50 -0
- data/lib/oneview-sdk/resource/api300/c7000/storage_pool.rb +29 -0
- data/lib/oneview-sdk/resource/api300/c7000/storage_system.rb +21 -0
- data/lib/oneview-sdk/resource/api300/c7000/switch.rb +31 -0
- data/lib/oneview-sdk/resource/api300/c7000/unmanaged_device.rb +21 -0
- data/lib/oneview-sdk/resource/api300/c7000/uplink_set.rb +21 -0
- data/lib/oneview-sdk/resource/api300/c7000/volume.rb +22 -0
- data/lib/oneview-sdk/resource/api300/c7000/volume_attachment.rb +21 -0
- data/lib/oneview-sdk/resource/api300/c7000/volume_snapshot.rb +21 -0
- data/lib/oneview-sdk/resource/api300/c7000/volume_template.rb +32 -0
- data/lib/oneview-sdk/resource/api300/synergy.rb +27 -0
- data/lib/oneview-sdk/resource/api300/synergy/connection_template.rb +30 -0
- data/lib/oneview-sdk/resource/api300/synergy/datacenter.rb +22 -0
- data/lib/oneview-sdk/resource/api300/synergy/drive_enclosure.rb +71 -0
- data/lib/oneview-sdk/resource/api300/synergy/enclosure.rb +110 -0
- data/lib/oneview-sdk/resource/api300/synergy/enclosure_group.rb +43 -0
- data/lib/oneview-sdk/resource/api300/synergy/ethernet_network.rb +35 -0
- data/lib/oneview-sdk/resource/api300/synergy/fabric.rb +46 -0
- data/lib/oneview-sdk/resource/api300/synergy/fc_network.rb +37 -0
- data/lib/oneview-sdk/resource/api300/synergy/fcoe_network.rb +35 -0
- data/lib/oneview-sdk/resource/api300/synergy/firmware_bundle.rb +21 -0
- data/lib/oneview-sdk/resource/api300/synergy/firmware_driver.rb +22 -0
- data/lib/oneview-sdk/resource/api300/synergy/interconnect.rb +43 -0
- data/lib/oneview-sdk/resource/api300/synergy/lig_uplink_set.rb +21 -0
- data/lib/oneview-sdk/resource/api300/synergy/logical_downlink.rb +34 -0
- data/lib/oneview-sdk/resource/api300/synergy/logical_enclosure.rb +59 -0
- data/lib/oneview-sdk/resource/api300/synergy/logical_interconnect.rb +21 -0
- data/lib/oneview-sdk/resource/api300/synergy/logical_interconnect_group.rb +119 -0
- data/lib/oneview-sdk/resource/api300/synergy/logical_switch.rb +33 -0
- data/lib/oneview-sdk/resource/api300/synergy/logical_switch_group.rb +45 -0
- data/lib/oneview-sdk/resource/{firmware_driver.rb → api300/synergy/managed_san.rb} +7 -17
- data/lib/oneview-sdk/resource/api300/synergy/network_set.rb +37 -0
- data/lib/oneview-sdk/resource/api300/synergy/power_device.rb +21 -0
- data/lib/oneview-sdk/resource/api300/synergy/rack.rb +22 -0
- data/lib/oneview-sdk/resource/api300/synergy/resource.rb +21 -0
- data/lib/oneview-sdk/resource/api300/synergy/san_manager.rb +22 -0
- data/lib/oneview-sdk/resource/api300/synergy/sas_interconnect.rb +87 -0
- data/lib/oneview-sdk/resource/api300/synergy/sas_logical_interconnect.rb +110 -0
- data/lib/oneview-sdk/resource/api300/synergy/sas_logical_interconnect_group.rb +87 -0
- data/lib/oneview-sdk/resource/api300/synergy/server_hardware.rb +30 -0
- data/lib/oneview-sdk/resource/api300/synergy/server_hardware_type.rb +21 -0
- data/lib/oneview-sdk/resource/api300/synergy/server_profile.rb +78 -0
- data/lib/oneview-sdk/resource/api300/synergy/server_profile_template.rb +34 -0
- data/lib/oneview-sdk/resource/api300/synergy/storage_pool.rb +22 -0
- data/lib/oneview-sdk/resource/api300/synergy/storage_system.rb +21 -0
- data/lib/oneview-sdk/resource/api300/synergy/switch.rb +37 -0
- data/lib/oneview-sdk/resource/api300/synergy/unmanaged_device.rb +21 -0
- data/lib/oneview-sdk/resource/api300/synergy/uplink_set.rb +21 -0
- data/lib/oneview-sdk/resource/api300/synergy/volume.rb +22 -0
- data/lib/oneview-sdk/resource/api300/synergy/volume_attachment.rb +21 -0
- data/lib/oneview-sdk/resource/api300/synergy/volume_snapshot.rb +21 -0
- data/lib/oneview-sdk/resource/api300/synergy/volume_template.rb +32 -0
- data/lib/oneview-sdk/rest.rb +7 -10
- data/lib/oneview-sdk/ssl_helper.rb +3 -3
- data/lib/oneview-sdk/version.rb +1 -1
- data/oneview-sdk.gemspec +5 -5
- metadata +126 -47
- data/.gitattributes +0 -2
- data/.gitignore +0 -29
- data/.rubocop.yml +0 -80
- data/.travis.yml +0 -12
- data/lib/oneview-sdk/resource/connection_template.rb +0 -48
- data/lib/oneview-sdk/resource/datacenter.rb +0 -77
- data/lib/oneview-sdk/resource/enclosure.rb +0 -191
- data/lib/oneview-sdk/resource/enclosure_group.rb +0 -82
- data/lib/oneview-sdk/resource/ethernet_network.rb +0 -56
- data/lib/oneview-sdk/resource/fabric.rb +0 -41
- data/lib/oneview-sdk/resource/fc_network.rb +0 -30
- data/lib/oneview-sdk/resource/firmware_bundle.rb +0 -50
- data/lib/oneview-sdk/resource/interconnect.rb +0 -107
- data/lib/oneview-sdk/resource/lig_uplink_set.rb +0 -80
- data/lib/oneview-sdk/resource/logical_downlink.rb +0 -53
- data/lib/oneview-sdk/resource/logical_enclosure.rb +0 -86
- data/lib/oneview-sdk/resource/logical_interconnect.rb +0 -247
- data/lib/oneview-sdk/resource/logical_interconnect_group.rb +0 -112
- data/lib/oneview-sdk/resource/logical_switch.rb +0 -184
- data/lib/oneview-sdk/resource/logical_switch_group.rb +0 -66
- data/lib/oneview-sdk/resource/managed_san.rb +0 -79
- data/lib/oneview-sdk/resource/network_set.rb +0 -64
- data/lib/oneview-sdk/resource/power_device.rb +0 -174
- data/lib/oneview-sdk/resource/rack.rb +0 -83
- data/lib/oneview-sdk/resource/san_manager.rb +0 -88
- data/lib/oneview-sdk/resource/server_hardware.rb +0 -209
- data/lib/oneview-sdk/resource/server_hardware_type.rb +0 -58
- data/lib/oneview-sdk/resource/server_profile.rb +0 -380
- data/lib/oneview-sdk/resource/server_profile_template.rb +0 -213
- data/lib/oneview-sdk/resource/storage_pool.rb +0 -63
- data/lib/oneview-sdk/resource/storage_system.rb +0 -113
- data/lib/oneview-sdk/resource/switch.rb +0 -86
- data/lib/oneview-sdk/resource/unmanaged_device.rb +0 -55
- data/lib/oneview-sdk/resource/uplink_set.rb +0 -79
- data/lib/oneview-sdk/resource/volume.rb +0 -188
- data/lib/oneview-sdk/resource/volume_attachment.rb +0 -79
- data/lib/oneview-sdk/resource/volume_snapshot.rb +0 -46
- data/lib/oneview-sdk/resource/volume_template.rb +0 -95
|
@@ -1,63 +0,0 @@
|
|
|
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
|
-
# Storage pool resource implementation
|
|
14
|
-
class StoragePool < Resource
|
|
15
|
-
BASE_URI = '/rest/storage-pools'.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::StoragePool] 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['type'] ||= 'StoragePoolV2'
|
|
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
|
-
# Method is not available
|
|
51
|
-
# @raise [OneviewSDK::MethodUnavailable] method is not available
|
|
52
|
-
def update
|
|
53
|
-
unavailable_method
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# Sets the storage system
|
|
57
|
-
# @param [OneviewSDK::StorageSystem] storage_system
|
|
58
|
-
def set_storage_system(storage_system)
|
|
59
|
-
fail IncompleteResource, 'Please set the storage system\'s uri attribute!' unless storage_system['uri']
|
|
60
|
-
set('storageSystemUri', storage_system['uri'])
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
@@ -1,113 +0,0 @@
|
|
|
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
|
-
# Storage system resource implementation
|
|
14
|
-
class StorageSystem < Resource
|
|
15
|
-
BASE_URI = '/rest/storage-systems'.freeze
|
|
16
|
-
|
|
17
|
-
# Remove resource from OneView
|
|
18
|
-
# @return [true] if resource was removed successfully
|
|
19
|
-
alias remove delete
|
|
20
|
-
|
|
21
|
-
# Create a resource object, associate it with a client, and set its properties.
|
|
22
|
-
# @param [OneviewSDK::Client] client The client object for the OneView appliance
|
|
23
|
-
# @param [Hash] params The options for this resource (key-value pairs)
|
|
24
|
-
# @param [Integer] api_ver The api version to use when interracting with this resource.
|
|
25
|
-
def initialize(client, params = {}, api_ver = nil)
|
|
26
|
-
super
|
|
27
|
-
# Default values:
|
|
28
|
-
@data['type'] ||= 'StorageSystemV3'
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# Method is not available
|
|
32
|
-
# @raise [OneviewSDK::MethodUnavailable] method is not available
|
|
33
|
-
def create
|
|
34
|
-
unavailable_method
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# Method is not available
|
|
38
|
-
# @raise [OneviewSDK::MethodUnavailable] method is not available
|
|
39
|
-
def delete
|
|
40
|
-
unavailable_method
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# Adds the resource to OneView using the current data
|
|
44
|
-
# @note Calls the refresh method to set additional data
|
|
45
|
-
# @return [OneviewSDK::StorageSystem] self
|
|
46
|
-
def add
|
|
47
|
-
ensure_client
|
|
48
|
-
task = @client.rest_post(self.class::BASE_URI, { 'body' => self['credentials'] }, @api_version)
|
|
49
|
-
temp = @data.clone
|
|
50
|
-
task = @client.wait_for(task['uri'] || task['location'])
|
|
51
|
-
@data['uri'] = task['associatedResource']['resourceUri']
|
|
52
|
-
refresh
|
|
53
|
-
temp.delete('credentials')
|
|
54
|
-
update(temp)
|
|
55
|
-
self
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# Checks if the resource already exists
|
|
59
|
-
# @note name,uri or ip_hostname must be specified inside resource
|
|
60
|
-
# @return [Boolean] Whether or not resource exists
|
|
61
|
-
def exists?
|
|
62
|
-
ip_hostname = self['credentials'][:ip_hostname] || self['credentials']['ip_hostname'] if self['credentials']
|
|
63
|
-
return true if @data['name'] && self.class.find_by(@client, name: @data['name']).size == 1
|
|
64
|
-
return true if @data['uri'] && self.class.find_by(@client, uri: @data['uri']).size == 1
|
|
65
|
-
return true if ip_hostname && self.class.find_by(@client, credentials: { ip_hostname: ip_hostname }).size == 1
|
|
66
|
-
unless @data['name'] || @data['uri'] || ip_hostname
|
|
67
|
-
fail IncompleteResource, 'Must set resource name, uri or ip_hostname before trying to retrieve!'
|
|
68
|
-
end
|
|
69
|
-
false
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
# Retrieves the resource details based on this resource's name or URI.
|
|
73
|
-
# @note Name,URI or ip_hostname must be specified inside resource
|
|
74
|
-
# @return [Boolean] Whether or not retrieve was successful
|
|
75
|
-
# @raise [OneviewSDK::IncompleteResource] if attributes are not filled
|
|
76
|
-
def retrieve!
|
|
77
|
-
ip_hostname = self['credentials'][:ip_hostname] || self['credentials']['ip_hostname'] if self['credentials']
|
|
78
|
-
return super if @data['name'] || @data['uri']
|
|
79
|
-
|
|
80
|
-
fail IncompleteResource, 'Must set resource name, uri or ip_hostname before trying to retrieve!' unless ip_hostname
|
|
81
|
-
results = self.class.find_by(@client, credentials: { ip_hostname: ip_hostname })
|
|
82
|
-
return false unless results.size == 1
|
|
83
|
-
set_all(results[0].data)
|
|
84
|
-
true
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
# Gets the host types for the storage system resource
|
|
88
|
-
# @param [OneviewSDK::Client] client The client object for the OneView appliance
|
|
89
|
-
# @return [String] response body
|
|
90
|
-
def self.get_host_types(client)
|
|
91
|
-
response = client.rest_get(BASE_URI + '/host-types')
|
|
92
|
-
response.body
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
# Lists the storage pools
|
|
96
|
-
def get_storage_pools
|
|
97
|
-
response = @client.rest_get(@data['uri'] + '/storage-pools')
|
|
98
|
-
response.body
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
# Lists all managed target ports for the specified storage system,
|
|
102
|
-
# or only the one specified
|
|
103
|
-
# @param [String] port Target port
|
|
104
|
-
def get_managed_ports(port = nil)
|
|
105
|
-
response = if port.nil?
|
|
106
|
-
@client.rest_get("#{@data['uri']}/managedPorts")
|
|
107
|
-
else
|
|
108
|
-
@client.rest_get("#{@data['uri']}/managedPorts/#{port}")
|
|
109
|
-
end
|
|
110
|
-
response.body
|
|
111
|
-
end
|
|
112
|
-
end
|
|
113
|
-
end
|
|
@@ -1,86 +0,0 @@
|
|
|
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
|
-
# Switch resource implementation
|
|
14
|
-
class Switch < Resource
|
|
15
|
-
BASE_URI = '/rest/switches'.freeze
|
|
16
|
-
TYPE_URI = '/rest/switch-types'.freeze
|
|
17
|
-
|
|
18
|
-
# Remove resource from OneView
|
|
19
|
-
# @return [true] if resource was removed successfully
|
|
20
|
-
alias remove delete
|
|
21
|
-
|
|
22
|
-
# Method is not available
|
|
23
|
-
# @raise [OneviewSDK::MethodUnavailable] method is not available
|
|
24
|
-
def create
|
|
25
|
-
unavailable_method
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# Method is not available
|
|
29
|
-
# @raise [OneviewSDK::MethodUnavailable] method is not available
|
|
30
|
-
def update
|
|
31
|
-
unavailable_method
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# Method is not available
|
|
35
|
-
# @raise [OneviewSDK::MethodUnavailable] method is not available
|
|
36
|
-
def refresh
|
|
37
|
-
unavailable_method
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# Method is not available
|
|
41
|
-
# @raise [OneviewSDK::MethodUnavailable] method is not available
|
|
42
|
-
def delete
|
|
43
|
-
unavailable_method
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# Retrieves the switch types
|
|
47
|
-
# @param [OneviewSDK::Client] client The client object for the OneView appliance
|
|
48
|
-
# @return [Array] All the Switch types
|
|
49
|
-
def self.get_types(client)
|
|
50
|
-
response = client.rest_get(TYPE_URI)
|
|
51
|
-
response = client.response_handler(response)
|
|
52
|
-
response['members']
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# Retrieves the switch type with the name
|
|
56
|
-
# @param [OneviewSDK::Client] client The client object for the OneView appliance
|
|
57
|
-
# @param [String] name Switch type name
|
|
58
|
-
# @return [Array] Switch type
|
|
59
|
-
def self.get_type(client, name)
|
|
60
|
-
results = get_types(client)
|
|
61
|
-
results.find { |switch_type| switch_type['name'] == name }
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
# Get statistics for an interconnect, for the specified port or subport
|
|
65
|
-
# @param [String] port_name port to retrieve statistics
|
|
66
|
-
# @param [String] subport_number subport to retrieve statistics
|
|
67
|
-
# @return [Hash] Switch statistics
|
|
68
|
-
def statistics(port_name = nil, subport_number = nil)
|
|
69
|
-
uri = if subport_number
|
|
70
|
-
"#{@data['uri']}/statistics/#{port_name}/subport/#{subport_number}"
|
|
71
|
-
else
|
|
72
|
-
"#{@data['uri']}/statistics/#{port_name}"
|
|
73
|
-
end
|
|
74
|
-
response = @client.rest_get(uri)
|
|
75
|
-
response.body
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
# Get settings that describe the environmental configuration
|
|
79
|
-
# @return [Hash] Configuration parameters
|
|
80
|
-
def environmental_configuration
|
|
81
|
-
ensure_client && ensure_uri
|
|
82
|
-
response = @client.rest_get(@data['uri'] + '/environmentalConfiguration', @api_version)
|
|
83
|
-
@client.response_handler(response)
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|
|
@@ -1,55 +0,0 @@
|
|
|
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
|
-
# Storage system resource implementation
|
|
14
|
-
class UnmanagedDevice < Resource
|
|
15
|
-
BASE_URI = '/rest/unmanaged-devices'.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::UnmanagedDevice] 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
|
-
# 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
|
-
# Gets a list of unmanaged devices
|
|
41
|
-
# @param [OneviewSDK::Client] client The client object for the OneView appliance
|
|
42
|
-
# @return [Array] list of unmanaged devices
|
|
43
|
-
def self.get_devices(client)
|
|
44
|
-
response = client.rest_get(BASE_URI)
|
|
45
|
-
client.response_handler(response)['members']
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# Get settings that describe the environmental configuration
|
|
49
|
-
def environmental_configuration
|
|
50
|
-
ensure_client && ensure_uri
|
|
51
|
-
response = @client.rest_get(@data['uri'] + '/environmentalConfiguration')
|
|
52
|
-
@client.response_handler(response)
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
@@ -1,79 +0,0 @@
|
|
|
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
|
-
# Uplink set resource implementation
|
|
14
|
-
class UplinkSet < Resource
|
|
15
|
-
BASE_URI = '/rest/uplink-sets'.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['fcNetworkUris'] ||= []
|
|
25
|
-
@data['fcoeNetworkUris'] ||= []
|
|
26
|
-
@data['networkUris'] ||= []
|
|
27
|
-
@data['portConfigInfos'] ||= []
|
|
28
|
-
@data['primaryPortLocation'] = nil
|
|
29
|
-
@data['type'] ||= 'uplink-setV3'
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# Adds the portConfigInfos to the array
|
|
33
|
-
# @param [String] portUri
|
|
34
|
-
# @param [String] speed
|
|
35
|
-
# @param [Hash] locationEntries
|
|
36
|
-
def add_port_config(portUri, speed, locationEntries)
|
|
37
|
-
entry = {
|
|
38
|
-
'portUri' => portUri,
|
|
39
|
-
'desiredSpeed' => speed,
|
|
40
|
-
'location' => {
|
|
41
|
-
'locationEntries' => locationEntries
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
@data['portConfigInfos'] << entry
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# Sets the logical interconnect uri
|
|
48
|
-
# @param [OneviewSDK::LogicalInterconnect, Hash] logical_interconnect
|
|
49
|
-
def set_logical_interconnect(logical_interconnect)
|
|
50
|
-
uri = logical_interconnect[:uri] || logical_interconnect['uri']
|
|
51
|
-
fail IncompleteResource, 'Invalid object' unless uri
|
|
52
|
-
@data['logicalInterconnectUri'] = uri
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# Adds an ethernet network to the uplink set
|
|
56
|
-
# @param [OneviewSDK::EthernetNetwork, Hash] network
|
|
57
|
-
def add_network(network)
|
|
58
|
-
uri = network[:uri] || network['uri']
|
|
59
|
-
fail IncompleteResource, 'Must set network uri attribute' unless uri
|
|
60
|
-
@data['networkUris'].push(uri)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
# Adds an fc network to the uplink set
|
|
64
|
-
# @param [OneviewSDK::FCNetwork, Hash] network must accept hash syntax
|
|
65
|
-
def add_fcnetwork(network)
|
|
66
|
-
uri = network[:uri] || network['uri']
|
|
67
|
-
fail IncompleteResource, 'Must set network uri attribute' unless uri
|
|
68
|
-
@data['fcNetworkUris'].push(uri)
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
# Adds an fcoe network to the uplink set
|
|
72
|
-
# @param [OneviewSDK::FCoENetwork, Hash] network must accept hash syntax
|
|
73
|
-
def add_fcoenetwork(network)
|
|
74
|
-
uri = network[:uri] || network['uri']
|
|
75
|
-
fail IncompleteResource, 'Must set network uri attribute' unless uri
|
|
76
|
-
@data['fcoeNetworkUris'].push(uri)
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
|
@@ -1,188 +0,0 @@
|
|
|
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
|
-
# Volume resource implementation
|
|
14
|
-
class Volume < Resource
|
|
15
|
-
BASE_URI = '/rest/storage-volumes'.freeze
|
|
16
|
-
|
|
17
|
-
# It's possible to create the volume in 6 different ways:
|
|
18
|
-
# 1) Common = Storage System + Storage Pool
|
|
19
|
-
# 2) Template = Storage Volume Template
|
|
20
|
-
# 3) Common with snapshots = Storage System + Storage Pool + Snapshot Pool
|
|
21
|
-
# 4) Management = Storage System + wwn
|
|
22
|
-
# 5) Management by name = Storage System + Storage System Volume Name
|
|
23
|
-
# 6) Snapshot = Snapshot Pool + Storage Pool + Snapshot
|
|
24
|
-
|
|
25
|
-
# Creates the volume
|
|
26
|
-
# @note provisioning parameters are required for creation, but not afterwards; after creation, they will be removed.
|
|
27
|
-
# @raise [OneviewSDK::IncompleteResource] if the client is not set
|
|
28
|
-
# @raise [StandardError] if the resource creation fails
|
|
29
|
-
# @return [Resource] self
|
|
30
|
-
def create
|
|
31
|
-
ensure_client
|
|
32
|
-
response = @client.rest_post(self.class::BASE_URI, { 'body' => @data }, @api_version)
|
|
33
|
-
body = @client.response_handler(response)
|
|
34
|
-
set_all(body)
|
|
35
|
-
@data.delete('provisioningParameters')
|
|
36
|
-
self
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
# Deletes the resource from OneView or from Oneview and storage system
|
|
40
|
-
# @param [Symbol] flag Delete storage system from Oneview only or in storage system as well
|
|
41
|
-
# @return [true] if resource was deleted successfully
|
|
42
|
-
def delete(flag = :all)
|
|
43
|
-
ensure_client && ensure_uri
|
|
44
|
-
case flag
|
|
45
|
-
when :oneview
|
|
46
|
-
response = @client.rest_api(:delete, @data['uri'], { 'exportOnly' => true }, @api_version)
|
|
47
|
-
@client.response_handler(response)
|
|
48
|
-
when :all
|
|
49
|
-
response = @client.rest_api(:delete, @data['uri'], {}, @api_version)
|
|
50
|
-
@client.response_handler(response)
|
|
51
|
-
else
|
|
52
|
-
fail InvalidResource, 'Invalid flag value, use :oneview or :all'
|
|
53
|
-
end
|
|
54
|
-
true
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
# Sets the storage system to the volume
|
|
58
|
-
# @param [OneviewSDK::StorageSystem] storage_system Storage System
|
|
59
|
-
def set_storage_system(storage_system)
|
|
60
|
-
assure_uri(storage_system)
|
|
61
|
-
set('storageSystemUri', storage_system['uri'])
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
# Sets the storage pool to the volume
|
|
65
|
-
# @param [OneviewSDK::StoragePool] storage_pool Storage pool
|
|
66
|
-
def set_storage_pool(storage_pool)
|
|
67
|
-
assure_uri(storage_pool)
|
|
68
|
-
self['provisioningParameters'] ||= {}
|
|
69
|
-
self['provisioningParameters']['storagePoolUri'] = storage_pool['uri']
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
# Adds the storage volume template to the volume
|
|
73
|
-
# @param [OneviewSDK::VolumeTemplate] storage_volume_template Storage Volume Template
|
|
74
|
-
def set_storage_volume_template(storage_volume_template)
|
|
75
|
-
assure_uri(storage_volume_template)
|
|
76
|
-
set('templateUri', storage_volume_template['uri'])
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# Sets the snapshot pool to the volume
|
|
80
|
-
# @param [OneviewSDK::StoragePool] storage_pool Storage Pool to use for snapshots
|
|
81
|
-
def set_snapshot_pool(storage_pool)
|
|
82
|
-
assure_uri(storage_pool)
|
|
83
|
-
set('snapshotPoolUri', storage_pool['uri'])
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
# Creates a snapshot of the volume
|
|
87
|
-
# @param [String, OneviewSDK::VolumeSnapshot] snapshot String or OneviewSDK::VolumeSnapshot object
|
|
88
|
-
# @param [String] description Provide a description
|
|
89
|
-
# @return [true] if snapshot was created successfully
|
|
90
|
-
def create_snapshot(snapshot, description = nil)
|
|
91
|
-
ensure_uri && ensure_client
|
|
92
|
-
if snapshot.is_a?(OneviewSDK::Resource) || snapshot.is_a?(Hash)
|
|
93
|
-
name = snapshot[:name] || snapshot['name']
|
|
94
|
-
description ||= snapshot[:description] || snapshot['description']
|
|
95
|
-
else
|
|
96
|
-
name = snapshot
|
|
97
|
-
end
|
|
98
|
-
data = {
|
|
99
|
-
type: 'Snapshot',
|
|
100
|
-
description: description,
|
|
101
|
-
name: name
|
|
102
|
-
}
|
|
103
|
-
response = @client.rest_post("#{@data['uri']}/snapshots", { 'body' => data }, @api_version)
|
|
104
|
-
@client.response_handler(response)
|
|
105
|
-
true
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
# Deletes a snapshot of the volume
|
|
109
|
-
# @param [String] name snapshot name
|
|
110
|
-
# @return [true] if snapshot was created successfully
|
|
111
|
-
def delete_snapshot(name)
|
|
112
|
-
result = get_snapshot(name)
|
|
113
|
-
response = @client.rest_api(:delete, result['uri'], {}, @api_version)
|
|
114
|
-
@client.response_handler(response)
|
|
115
|
-
true
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
# Retrieves a snapshot by name
|
|
119
|
-
# @param [String] name
|
|
120
|
-
# @return [Hash] snapshot data
|
|
121
|
-
def get_snapshot(name)
|
|
122
|
-
results = get_snapshots
|
|
123
|
-
results.each do |snapshot|
|
|
124
|
-
return snapshot if snapshot['name'] == name
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
# Gets all the snapshots of this volume
|
|
129
|
-
# @return [Array] Array of snapshots
|
|
130
|
-
def get_snapshots
|
|
131
|
-
ensure_uri && ensure_client
|
|
132
|
-
results = []
|
|
133
|
-
uri = "#{@data['uri']}/snapshots"
|
|
134
|
-
loop do
|
|
135
|
-
response = @client.rest_get(uri, @api_version)
|
|
136
|
-
body = @client.response_handler(response)
|
|
137
|
-
members = body['members']
|
|
138
|
-
members.each do |member|
|
|
139
|
-
results.push(member)
|
|
140
|
-
end
|
|
141
|
-
break unless body['nextPageUri']
|
|
142
|
-
uri = body['nextPageUri']
|
|
143
|
-
end
|
|
144
|
-
results
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
# Gets all the attachable volumes managed by the appliance
|
|
148
|
-
# @param [OneviewSDK::Client] client The client object for the OneView appliance
|
|
149
|
-
# @return [Array<OneviewSDK::Volume>] Array of volumes
|
|
150
|
-
def self.get_attachable_volumes(client)
|
|
151
|
-
results = []
|
|
152
|
-
uri = "#{BASE_URI}/attachable-volumes"
|
|
153
|
-
loop do
|
|
154
|
-
response = client.rest_get(uri)
|
|
155
|
-
body = client.response_handler(response)
|
|
156
|
-
members = body['members']
|
|
157
|
-
members.each { |member| results.push(OneviewSDK::Volume.new(client, member)) }
|
|
158
|
-
break unless body['nextPageUri']
|
|
159
|
-
uri = body['nextPageUri']
|
|
160
|
-
end
|
|
161
|
-
results
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
# Gets the list of extra managed storage volume paths
|
|
165
|
-
# @param [OneviewSDK::Client] client The client object for the OneView appliance
|
|
166
|
-
# @return response
|
|
167
|
-
def self.get_extra_managed_volume_paths(client)
|
|
168
|
-
response = client.rest_get(BASE_URI + '/repair?alertFixType=ExtraManagedStorageVolumePaths')
|
|
169
|
-
client.response_handler(response)
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
# Removes extra presentation from the volume
|
|
173
|
-
# @return response
|
|
174
|
-
def repair
|
|
175
|
-
response = client.rest_post(BASE_URI + '/repair', 'body' => { resourceUri: @data['uri'], type: 'ExtraManagedStorageVolumePaths' })
|
|
176
|
-
client.response_handler(response)
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
private
|
|
180
|
-
|
|
181
|
-
# Verify if the resource has a URI
|
|
182
|
-
# If not, first it tries to retrieve, and then verify for its existence
|
|
183
|
-
def assure_uri(resource)
|
|
184
|
-
resource.retrieve! unless resource['uri']
|
|
185
|
-
fail IncompleteResource, "#{resource.class}: #{resource['name']} not found" unless resource['uri']
|
|
186
|
-
end
|
|
187
|
-
end
|
|
188
|
-
end
|