mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
71 lines
1.6 KiB
Ruby
71 lines
1.6 KiB
Ruby
|
require 'fog/cloudsigma/nested_model'
|
||
|
|
||
|
module Fog
|
||
|
module Compute
|
||
|
class CloudSigma
|
||
|
class Volume < Fog::CloudSigma::CloudsigmaModel
|
||
|
identity :uuid
|
||
|
|
||
|
attribute :status, :type => :string
|
||
|
attribute :jobs
|
||
|
attribute :name, :type => :string
|
||
|
attribute :tags
|
||
|
attribute :media, :type => :string
|
||
|
attribute :mounted_on
|
||
|
attribute :owner
|
||
|
attribute :meta
|
||
|
attribute :allow_multimount, :type => :boolean
|
||
|
attribute :licenses
|
||
|
attribute :affinities, :type => :array
|
||
|
attribute :size, :type => :integer
|
||
|
attribute :resource_uri, :type => :string
|
||
|
|
||
|
|
||
|
def save
|
||
|
if persisted?
|
||
|
update
|
||
|
else
|
||
|
create
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def create
|
||
|
requires :name, :size, :media
|
||
|
data = attributes
|
||
|
|
||
|
response = service.create_volume(data)
|
||
|
new_attributes = response.body['objects'].first
|
||
|
merge_attributes(new_attributes)
|
||
|
end
|
||
|
|
||
|
def update
|
||
|
requires :identity, :name, :size, :media
|
||
|
|
||
|
data = attributes()
|
||
|
|
||
|
response = service.update_volume(identity, data)
|
||
|
new_attributes = response.body
|
||
|
merge_attributes(new_attributes)
|
||
|
|
||
|
end
|
||
|
|
||
|
def destroy
|
||
|
requires :identity
|
||
|
|
||
|
service.delete_volume(identity)
|
||
|
|
||
|
true
|
||
|
end
|
||
|
|
||
|
alias :delete :destroy
|
||
|
|
||
|
def clone(clone_params={})
|
||
|
requires :identity
|
||
|
response = service.clone_volume(identity, clone_params)
|
||
|
|
||
|
self.class.new(response.body['objects'].first)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|