Sha256: a7d01d244e3d54d169be5b80b7399483601e9e6f26606c27f9b441763c7c6c49

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

class Kubes::Compiler::Decorator::Hashable
  class Field
    # item is full wrapper structure
    #
    #     secretRef:  <--- wrapper
    #       name: demo-secret
    #
    def initialize(item)
      @item = item
    end

    def hashable?
      x = @item.keys & map.keys
      !x.empty?
    end

    def kind
      wrapper =~ /configMap/ ? "ConfigMap" : "Secret"
    end

    # The key of the hashable value.
    #
    #     envFrom:
    #     - secretRef:
    #         name: demo-secret    <--- wrapper is 'name'
    #
    def key
      map[wrapper]
    end

    # The wrapper field is nested right above the item with the hashable value.
    #
    #     envFrom:
    #     - secretRef:  <--- wrapper
    #         name: demo-secret
    #
    def wrapper
      @item.keys.first
    end

    # wrapper element to key that stores the hashable value
    def map
      {
        'configMapRef' => 'name',
        'configMapKeyRef' => 'name',
        'configMap' => 'name',
        'secretRef' => 'name',
        'secretKeyRef' => 'name',
        'secret' => 'secretName',
        'tls' => 'secretName',
      }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
kubes-0.7.7 lib/kubes/compiler/decorator/hashable/field.rb