class Tengine::Resource::VirtualServer::LaunchValidator

launch_modeに関する実装

Public Instance Methods

validate(record) click to toggle source
# File lib/tengine/resource/virtual_server.rb, line 16
def validate(record)
  base_attrs = record.attributes.dup.freeze
  error_names = []
  (1..record.launch_count).each do |idx|
    # see also Tengine::Resource::Provider::Ec2#create_virtual_servers
    name = sprintf("%s%03d", record.name, idx) # 1 origin
    server = Tengine::Resource::VirtualServer.new(base_attrs.merge(
        :ignore_provided_id_uniqueness => true,
        :name => name
        ))
    next if server.valid?
    server.errors.each do |key, msg|
      if key == :name
        error_names << server.name
      else
        record.errors.add(key, msg)
      end
    end
  end
  unless error_names.empty?
    # record.name = error_names.join(",")
    # record.errors.add(:name, :taken)
    record.errors.add(:name, "に指定された%sは既に登録されています" % error_names.join(","))
  end
end