1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
require 'fog/openstack/models/model'
module Fog
module OpenStack
class Compute
class Flavor < Fog::OpenStack::Model
identity :id
attribute :name
attribute :ram
attribute :disk
attribute :vcpus
attribute :links
attribute :swap
attribute :rxtx_factor
attribute :metadata
attribute :ephemeral, :aliases => 'OS-FLV-EXT-DATA:ephemeral'
attribute :is_public, :aliases => 'os-flavor-access:is_public'
attribute :disabled, :aliases => 'OS-FLV-DISABLED:disabled'
def save
requires :name, :ram, :vcpus, :disk
attributes[:ephemeral] = ephemeral || 0
attributes[:is_public] = is_public || false
attributes[:disabled] = disabled || false
attributes[:swap] = swap || 0
attributes[:rxtx_factor] = rxtx_factor || 1.0
merge_attributes(service.create_flavor(attributes).body['flavor'])
self
end
def destroy
requires :id
service.delete_flavor(id)
true
end
def metadata
service.get_flavor_metadata(id).body['extra_specs']
rescue Fog::OpenStack::Compute::NotFound
nil
end
def create_metadata(metadata)
service.create_flavor_metadata(id, metadata)
rescue Fog::OpenStack::Compute::NotFound
nil
end
def update_metadata(key, value)
service.update_flavor_metadata(id, key, value)
rescue Fog::OpenStack::Compute::NotFound
nil
end
def delete_metadata(key)
service.delete_flavor_metadata(id, key)
rescue Fog::OpenStack::Compute::NotFound
nil
end
end
end
end
end
|