1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/cloudsigma/models/snapshot.rb
zephyrean 0eea58de12 [CloudSigma] add snapshots (#3491)
* [CloudSigma] add snapshots
2016-08-12 10:26:17 -03:00

77 lines
1.7 KiB
Ruby

require 'fog/cloudsigma/nested_model'
require 'fog/cloudsigma/models/volume'
module Fog
module Compute
class CloudSigma
class Snapshot < Fog::CloudSigma::CloudsigmaModel
identity :uuid
attribute :allocated_size, :type => :integer
attribute :drive
attribute :grantees, :type => :array
attribute :meta
attribute :name, :type => :string
attribute :owner
attribute :permissions, :type => :array
attribute :resource_uri, :type => :string
attribute :status, :type => :string
attribute :tags
attribute :timestamp, :type => :string
def save
if persisted?
update
else
create
end
end
def create
requires :name, :drive
data = attributes
response = service.create_snapshot(data)
new_attributes = response.body['objects'].first
merge_attributes(new_attributes)
end
def update
requires :identity, :name
data = attributes
response = service.update_snapshot(identity, data)
new_attributes = response.body
merge_attributes(new_attributes)
end
def destroy
requires :identity
service.delete_snapshot(identity)
true
end
alias_method :delete, :destroy
def clone(clone_params={})
requires :identity
response = service.clone_snapshot(identity, clone_params)
Volume.new(response.body)
end
alias_method :promote, :clone
def available?
status == 'available'
end
end
end
end
end