Sha256: c214821ac58bb9780bb377e490ddfc6507450cea5f1bc9983ca2a8ef234be0a0

Contents?: true

Size: 1.35 KB

Versions: 42

Compression:

Stored size: 1.35 KB

Contents

module Convection
  module Model
    ##
    # Manage parameters and attributes across stacks
    ##
    class Attributes
      class Stack
        attr_accessor :resources
        attr_accessor :outputs
        attr_reader :parameters

        def initialize
          @resources = {}
          @outputs = {}
          @parameters = {}
        end

        def include?(key)
          @parameters.include?(key) || @outputs.include?(key) || @resources.include?(key)
        end

        def [](key)
          @parameters[key.to_s] || @outputs[key.to_s] || @resources[key.to_s]
        end

        def []=(key, value)
          @parameters[key.to_s] = value
        end
      end

      attr_reader :stacks

      def initialize
        @stacks = Hash.new do |hash, key|
          hash[key] = Stack.new
        end
      end

      def include?(stack, key)
        @stacks.include?(stack) && @stacks[stack].include?(key)
      end

      def get(stack, key, default = nil)
        include?(stack, key) ? @stacks[stack.to_s][key.to_s] : default
      end

      def set(stack, key, value)
        @stacks[stack.to_s][key.to_s] = value
      end

      def load_outputs(stack)
        @stacks[stack.name.to_s].outputs = stack.outputs
      end

      def load_resources(stack)
        @stacks[stack.name.to_s].resources = stack.attribute_mapping_values
      end
    end
  end
end

Version data entries

42 entries across 42 versions & 1 rubygems

Version Path
convection-0.4.3 lib/convection/model/attributes.rb
convection-0.4.2 lib/convection/model/attributes.rb
convection-0.4.1 lib/convection/model/attributes.rb
convection-0.4.0 lib/convection/model/attributes.rb
convection-0.3.3.pre.beta.1 lib/convection/model/attributes.rb
convection-0.3.2 lib/convection/model/attributes.rb
convection-0.3.1 lib/convection/model/attributes.rb
convection-0.3.0 lib/convection/model/attributes.rb
convection-0.2.34.pre.beta.1 lib/convection/model/attributes.rb
convection-0.2.33 lib/convection/model/attributes.rb
convection-0.2.32 lib/convection/model/attributes.rb
convection-0.2.31 lib/convection/model/attributes.rb
convection-0.2.30 lib/convection/model/attributes.rb
convection-0.2.29 lib/convection/model/attributes.rb
convection-0.2.28 lib/convection/model/attributes.rb
convection-0.2.27 lib/convection/model/attributes.rb
convection-0.2.26 lib/convection/model/attributes.rb
convection-0.2.25 lib/convection/model/attributes.rb
convection-0.2.24 lib/convection/model/attributes.rb
convection-0.2.23 lib/convection/model/attributes.rb