Class: OneviewSDK::Volume
- Defined in:
- lib/oneview-sdk/resource/volume.rb
Overview
Volume resource implementation
Constant Summary collapse
- BASE_URI =
'/rest/storage-volumes'.freeze
Instance Attribute Summary
Attributes inherited from Resource
#api_version, #client, #data, #logger
Class Method Summary collapse
-
.get_attachable_volumes(client) ⇒ Array<OneviewSDK::Volume>
Gets all the attachable volumes managed by the appliance.
-
.get_extra_managed_volume_paths(client) ⇒ Object
Gets the list of extra managed storage volume paths.
Instance Method Summary collapse
-
#create ⇒ Resource
Creates the volume.
-
#create_snapshot(snapshot, description = nil) ⇒ true
Creates a snapshot of the volume.
-
#delete(flag = :all) ⇒ true
Deletes the resource from OneView or from Oneview and storage system.
-
#delete_snapshot(name) ⇒ true
Deletes a snapshot of the volume.
-
#get_snapshot(name) ⇒ Hash
Retrieves a snapshot by name.
-
#get_snapshots ⇒ Array
Gets all the snapshots of this volume.
-
#repair ⇒ Object
Removes extra presentation from the volume.
-
#set_snapshot_pool(storage_pool) ⇒ Object
Sets the snapshot pool to the volume.
-
#set_storage_pool(storage_pool) ⇒ Object
Sets the storage pool to the volume.
-
#set_storage_system(storage_system) ⇒ Object
Sets the storage system to the volume.
-
#set_storage_volume_template(storage_volume_template) ⇒ Object
Adds the storage volume template to the volume.
Methods inherited from Resource
#==, #[], #[]=, build_query, #create!, #each, #eql?, #exists?, find_by, from_file, get_all, #initialize, #like?, #refresh, #retrieve!, #schema, schema, #set, #set_all, #to_file, #update
Constructor Details
This class inherits a constructor from OneviewSDK::Resource
Class Method Details
.get_attachable_volumes(client) ⇒ Array<OneviewSDK::Volume>
Gets all the attachable volumes managed by the appliance
150 151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/oneview-sdk/resource/volume.rb', line 150 def self.get_attachable_volumes(client) results = [] uri = "#{BASE_URI}/attachable-volumes" loop do response = client.rest_get(uri) body = client.response_handler(response) members = body['members'] members.each { |member| results.push(OneviewSDK::Volume.new(client, member)) } break unless body['nextPageUri'] uri = body['nextPageUri'] end results end |
.get_extra_managed_volume_paths(client) ⇒ Object
Gets the list of extra managed storage volume paths
167 168 169 170 |
# File 'lib/oneview-sdk/resource/volume.rb', line 167 def self.get_extra_managed_volume_paths(client) response = client.rest_get(BASE_URI + '/repair?alertFixType=ExtraManagedStorageVolumePaths') client.response_handler(response) end |
Instance Method Details
#create ⇒ Resource
provisioning parameters are required for creation, but not afterwards; after creation, they will be removed.
Creates the volume
30 31 32 33 34 35 36 37 |
# File 'lib/oneview-sdk/resource/volume.rb', line 30 def create ensure_client response = @client.rest_post(self.class::BASE_URI, { 'body' => @data }, @api_version) body = @client.response_handler(response) set_all(body) @data.delete('provisioningParameters') self end |
#create_snapshot(snapshot, description = nil) ⇒ true
Creates a snapshot of the volume
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/oneview-sdk/resource/volume.rb', line 90 def create_snapshot(snapshot, description = nil) ensure_uri && ensure_client if snapshot.is_a?(OneviewSDK::Resource) || snapshot.is_a?(Hash) name = snapshot[:name] || snapshot['name'] description ||= snapshot[:description] || snapshot['description'] else name = snapshot end data = { type: 'Snapshot', description: description, name: name } response = @client.rest_post("#{@data['uri']}/snapshots", { 'body' => data }, @api_version) @client.response_handler(response) true end |
#delete(flag = :all) ⇒ true
Deletes the resource from OneView or from Oneview and storage system
42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/oneview-sdk/resource/volume.rb', line 42 def delete(flag = :all) ensure_client && ensure_uri case flag when :oneview response = @client.rest_api(:delete, @data['uri'], { 'exportOnly' => true }, @api_version) @client.response_handler(response) when :all response = @client.rest_api(:delete, @data['uri'], {}, @api_version) @client.response_handler(response) else fail InvalidResource, 'Invalid flag value, use :oneview or :all' end true end |
#delete_snapshot(name) ⇒ true
Deletes a snapshot of the volume
111 112 113 114 115 116 |
# File 'lib/oneview-sdk/resource/volume.rb', line 111 def delete_snapshot(name) result = get_snapshot(name) response = @client.rest_api(:delete, result['uri'], {}, @api_version) @client.response_handler(response) true end |
#get_snapshot(name) ⇒ Hash
Retrieves a snapshot by name
121 122 123 124 125 126 |
# File 'lib/oneview-sdk/resource/volume.rb', line 121 def get_snapshot(name) results = get_snapshots results.each do |snapshot| return snapshot if snapshot['name'] == name end end |
#get_snapshots ⇒ Array
Gets all the snapshots of this volume
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/oneview-sdk/resource/volume.rb', line 130 def get_snapshots ensure_uri && ensure_client results = [] uri = "#{@data['uri']}/snapshots" loop do response = @client.rest_get(uri, @api_version) body = @client.response_handler(response) members = body['members'] members.each do |member| results.push(member) end break unless body['nextPageUri'] uri = body['nextPageUri'] end results end |
#repair ⇒ Object
Removes extra presentation from the volume
174 175 176 177 |
# File 'lib/oneview-sdk/resource/volume.rb', line 174 def repair response = client.rest_post(BASE_URI + '/repair', 'body' => { resourceUri: @data['uri'], type: 'ExtraManagedStorageVolumePaths' }) client.response_handler(response) end |
#set_snapshot_pool(storage_pool) ⇒ Object
Sets the snapshot pool to the volume
81 82 83 84 |
# File 'lib/oneview-sdk/resource/volume.rb', line 81 def set_snapshot_pool(storage_pool) assure_uri(storage_pool) set('snapshotPoolUri', storage_pool['uri']) end |
#set_storage_pool(storage_pool) ⇒ Object
Sets the storage pool to the volume
66 67 68 69 70 |
# File 'lib/oneview-sdk/resource/volume.rb', line 66 def set_storage_pool(storage_pool) assure_uri(storage_pool) self['provisioningParameters'] ||= {} self['provisioningParameters']['storagePoolUri'] = storage_pool['uri'] end |
#set_storage_system(storage_system) ⇒ Object
Sets the storage system to the volume
59 60 61 62 |
# File 'lib/oneview-sdk/resource/volume.rb', line 59 def set_storage_system(storage_system) assure_uri(storage_system) set('storageSystemUri', storage_system['uri']) end |
#set_storage_volume_template(storage_volume_template) ⇒ Object
Adds the storage volume template to the volume
74 75 76 77 |
# File 'lib/oneview-sdk/resource/volume.rb', line 74 def set_storage_volume_template(storage_volume_template) assure_uri(storage_volume_template) set('templateUri', storage_volume_template['uri']) end |