Sha256: 79d23eda2c8cf910b31997af5f3b0c5c60fca88ebe86c064291acf84333673c8

Contents?: true

Size: 1.54 KB

Versions: 21

Compression:

Stored size: 1.54 KB

Contents

module Kubes::Compiler::Dsl::Syntax
  class Resource < Kubes::Compiler::Dsl::Core::Base
    include Kubes::Compiler::Util::Normalize

    fields :apiVersion,  # <string>
           :kind,        # <string>
           :metadata,    # <Object>
           :result,      # <Object>
           :spec         # <Object>

    # kubectl explain deployment.metadata
    fields "annotations:hash",  # <map[string]string>
           "labels:hash",       # <map[string]string>
           :namespace           # <string>

    attr_accessor :kind_from_block

    # top-level of resource is quite common
    def default_result
      data = top.merge(default_top)
      Kubes.deep_merge!(data, default_result_append)
      data.deep_stringify_keys!
      HashSqueezer.squeeze(data)
    end

    # Where to set fields for generic kind
    def top
      @top ||= {}
    end

    def default_top
      {
        apiVersion: apiVersion,
        kind: kind,
        metadata: metadata,
        spec: spec,
      }
    end

    # can be overridden by subclasses. IE: secret
    def default_result_append
      {}
    end

    def default_apiVersion
      "v1"
    end

    def default_metadata
      {
        annotations: annotations,
        name: name,
        labels: labels,
        namespace: namespace,
      }
    end

    def default_kind
      return @kind_from_block if @kind_from_block
      normalize_kind(@path)
    end
    alias_method :resource_kind, :default_kind

    # For generic kind
    def field(name, data)
      Kubes.deep_merge!(top, {name => data})
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
kubes-0.9.3 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.9.2 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.9.1 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.9.0 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.8.10 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.8.9 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.8.8 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.8.7 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.8.6 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.8.5 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.8.4 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.8.3 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.8.2 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.8.1 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.8.0 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.7.10 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.7.9 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.7.8 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.7.7 lib/kubes/compiler/dsl/syntax/resource.rb
kubes-0.7.6 lib/kubes/compiler/dsl/syntax/resource.rb