Sha256: dd7feccf28a4173f2bda1bc8eabde8a58ea47cfd91dbab9512bb2b8c33791dfb

Contents?: true

Size: 1.68 KB

Versions: 4

Compression:

Stored size: 1.68 KB

Contents

require 'leeroy'
require 'leeroy/types/dash'
require 'leeroy/types/mash'
require 'leeroy/types/phase'
require 'leeroy/types/userdata'
require 'leeroy/helpers/dumpable'
require 'leeroy/helpers/logging'

module Leeroy
  module Types
    class Instance < Leeroy::Types::Dash

      include Leeroy::Helpers::Dumpable
      include Leeroy::Helpers::Logging

      property :phase, required: true, coerce: lambda {|x| Leeroy::Types::Phase.from_s(x.to_s)}
      property :aws_params

      # AWS-specific params
      property :iam_instance_profile, required: true
      property :image_id, required: true
      property :instance_type, required: true
      property :key_name, required: true
      property :max_count, required: true
      property :min_count, required: true
      property :security_group_ids, required: true
      property :subnet_id, required: true
      property :user_data, default: '', coerce: Leeroy::Types::UserData

      def initialize(*args, &block)
        self.aws_params = [
          :iam_instance_profile,
          :image_id,
          :instance_type,
          :key_name,
          :max_count,
          :min_count,
          :security_group_ids,
          :subnet_id,
          :user_data,
        ]

        self.dump_properties = self.aws_params

        super
      end

      def run_params
        begin
          params_hash = Leeroy::Types::Mash.new

          self.aws_params.each {|param| params_hash.store(param.to_s, self.fetch(param.to_s))}

          # UserData is special!

          params_hash.store('user_data', self.fetch('user_data').encoded_for_ec2)

          params_hash

        rescue StandardError => e
          raise e
        end
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
leeroy_app-0.5.4 lib/leeroy/types/instance.rb
leeroy_app-0.4.0 lib/leeroy/types/instance.rb
leeroy_app-0.3.1 lib/leeroy/types/instance.rb
leeroy_app-0.3.0 lib/leeroy/types/instance.rb