Sha256: eb9ae8138a0571c7b8f777482ea8fa37a22b96ca938fb05d7caf15876c0495da

Contents?: true

Size: 1.39 KB

Versions: 1

Compression:

Stored size: 1.39 KB

Contents

# frozen_string_literal: true

module Metatron
  module Templates
    # Template for basic Pod k8s resource
    class Pod < Template
      include Concerns::Annotated
      include Concerns::PodProducer

      def initialize(name)
        super(name)
        @kind = "Pod"
      end

      # rubocop:disable Metrics/MethodLength
      # rubocop:disable Metrics/AbcSize
      def render
        {
          apiVersion:,
          kind:,
          metadata: {
            labels: { "#{label_namespace}/name": name }.merge(additional_labels),
            name:
          }.merge(formatted_annotations),
          spec: {
            terminationGracePeriodSeconds:,
            containers: [
              {
                name: "app",
                image:,
                imagePullPolicy:,
                stdin: true,
                tty: true,
                resources: { limits: resource_limits, requests: resource_requests }
              }.merge(probes)
                .merge(formatted_environment)
                .merge(formatted_envfrom)
                .merge(formatted_ports)
                .merge(formatted_volume_mounts)
                .merge(formatted_container_security_context)
            ] + additional_containers
          }.merge(formatted_volumes).merge(formatted_security_context)
        }
      end
      # rubocop:enable Metrics/AbcSize
      # rubocop:enable Metrics/MethodLength
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
metatron-0.1.3 lib/metatron/templates/pod.rb