Sha256: 92ea6292df8ddc3648a9b991920c13d978d90ba0ef81e8a50deff98a6e3ee87b
Contents?: true
Size: 1.84 KB
Versions: 29
Compression:
Stored size: 1.84 KB
Contents
require 'fog/core/model' module Fog module HP class BlockStorageV2 class Snapshot < Fog::Model identity :id attribute :name, :aliases => 'display_name' attribute :description, :aliases => 'display_description' attribute :size attribute :status attribute :created_at attribute :volume_id attribute :metadata def initialize(attributes = {}) # assign these attributes first to prevent race condition with persisted? self.force = attributes.delete(:force) # force snapshotting of attached volumes super end def destroy requires :id service.delete_snapshot(id) true end def force=(new_force) @force = new_force end def ready? self.status == 'available' end def save identity ? update : create end private def create requires :volume_id options = { 'display_name' => name, 'display_description' => description, 'force' => @force, 'metadata' => metadata } options = options.reject {|_, value| value.nil?} data = service.create_snapshot(volume_id, options) merge_attributes(data.body['snapshot']) true end def update requires :id options = { 'display_name' => name, 'display_description' => description, 'metadata' => metadata } options = options.reject {|_, value| value.nil?} data = service.update_snapshot(id, options) merge_attributes(data.body['snapshot']) true end end end end end
Version data entries
29 entries across 29 versions & 4 rubygems