Sha256: e40140901fd2bf64941b61b544ab9d8152705881cd21c871e9e920fd17e0f13f

Contents?: true

Size: 913 Bytes

Versions: 100

Compression:

Stored size: 913 Bytes

Contents

require 'json'

module Convection
  module Model
    ##
    # CloudFormation ResourceTag set
    ##
    class Tags < Hash
      def render
        map do |t|
          {
            'Key' => t[0].to_s,
            'Value' => t[1]
          }
        end
      end
    end

    module Mixin
      ##
      # Add tag helpers to taddable resources
      ##
      module Taggable
        def tags
          @tags ||= Tags.new
        end

        def tag(key, value)
          tags[key] = value
        end

        ## Helper for Asgard
        def immutable_metadata(purpose, target = '')
          tag('immutable_metadata', JSON.generate(
            :purpose => purpose,
            :target => target
          ))
        end

        def render_tags(resource)
          resource.tap do |r|
            r['Properties']['Tags'] = tags.render unless tags.empty?
          end
        end
      end
    end
  end
end

Version data entries

100 entries across 100 versions & 1 rubygems

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