Sha256: f65ec7e3ba77c8cabe56c716efb08b9ba524a25d16f6ef07ca19e11e1d8fe4ab
Contents?: true
Size: 1.4 KB
Versions: 1
Compression:
Stored size: 1.4 KB
Contents
require 'fog/core/model' require 'fog/qingcloud/core' module Fog module QingCloud class Model < Fog::Model # Define a common modify_attributes method for some resources def self.inherited(child) resource_type = Fog::QingCloud.underscore_string(child.to_s.split(':').last) aliased_resource_type = { 'server' => 'instance', 'address' => 'eip', 'key_pair' => 'keypair' } resource_type = aliased_resource_type.fetch(resource_type, resource_type) attributes_modifable_resources = ['instance', 'volume', 'vxnet', 'eip', 'security_group', 'keypair', 'image'] if attributes_modifable_resources.include?(resource_type) child.class_eval <<-EOS, __FILE__, __LINE__ def modify_attributes(name, description) requires :id raise Fog::QingCloud::Errors::CommonClientError, "name or description must be specified" unless name || description service.modify_resource_attributes(id, '#{resource_type}', name, description) merge_attributes('#{resource_type}_name' => name, 'description' => description) true end EOS end end def wait_for(&block) wait_policy = lambda { |retries| retries < 8 ? 9 - retries : 1 } timeout = 80 super(timeout, wait_policy, &block) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ns-fog-1.22.2 | lib/fog/qingcloud/model.rb |