Sha256: b51573998a8455863cb30f0a8260d83bf572199cab54dbdf43bb2055b5964b1a
Contents?: true
Size: 1.17 KB
Versions: 28
Compression:
Stored size: 1.17 KB
Contents
# typed: false require 'set' module Kuby module Kubernetes class Manifest include Enumerable def initialize(resources) @resources = resources ensure_all_resources_unique! end def each(&block) @resources.each(&block) end def find(kind, name) @resources.find do |resource| matches?(resource, kind, name) end end def delete(kind, name) idx = @resources.index do |resource| matches?(resource, kind, name) end resources.delete(idx) if idx end def <<(resource) @resources << resource end private def matches?(resource, kind, name) resource.kind_sym == kind && resource.metadata.name == name end def ensure_all_resources_unique! seen = Set.new @resources.each do |resource| key = "#{resource.kind_sym}-#{resource.metadata.name}" if seen.include?(key) raise DuplicateResourceError, "found more than one #{resource.kind.downcase} "\ "resource named '#{resource.metadata.name}'" end end end end end end
Version data entries
28 entries across 28 versions & 1 rubygems