Sha256: f68a9511a1e9b12a74a19927ae2206fb578f8b20e9731c08a79156c7ca7aeb82
Contents?: true
Size: 1.55 KB
Versions: 3
Compression:
Stored size: 1.55 KB
Contents
# frozen_string_literal: true module Metatron module Templates # The Service Kubernetes resource class Service < Template include Concerns::Annotated include Concerns::Namespaced attr_accessor :type, :selector, :additional_labels, :ports, :additional_selector_labels, :publish_not_ready_addresses, :cluster_ip def initialize(name, port = nil) super(name) @type = "ClusterIP" @cluster_ip = nil @selector = base_labels @additional_labels = {} @additional_selector_labels = {} @publish_not_ready_addresses = false return unless port @ports = [ { port: port.to_i, targetPort: port.to_i, protocol: "TCP", name: } ] end # rubocop:disable Naming/MethodName def publishNotReadyAddresses = publish_not_ready_addresses def clusterIP = cluster_ip # rubocop:enable Naming/MethodName def formatted_ports ports&.any? ? { ports: } : {} end def render { apiVersion:, kind:, metadata: { name:, labels: base_labels.merge(additional_labels) }.merge(formatted_annotations).merge(formatted_namespace), spec: { type:, selector: selector.merge(additional_selector_labels), publishNotReadyAddresses:, clusterIP: }.compact.merge(formatted_ports) } end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
metatron-0.8.7 | lib/metatron/templates/service.rb |
metatron-0.8.6 | lib/metatron/templates/service.rb |
metatron-0.8.5 | lib/metatron/templates/service.rb |